基于ESP32(Micropython)的天气显示+B站粉丝数显示-v4

一.功能展示

1.天气显示

第一行:更新时间

第二行:实际温度,体感温度

第三行:风速,风向,降水量

第四行:实时天气状况描述,湿度

2.B站粉丝显示

第一行:B站up主“帅农鸟哥”粉丝数及其变化量

第二行:B站up主“刘墉干净又卫生”粉丝数及其变化量

二.代码实现

import uzlib as zlib
import network
import time
import os
import urequests
import ujson
 
from machine import Pin, I2C
import ssd1306
from font import Font
 
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=400000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
f=Font(oled)
 
# ssid = '0217'
# passwd ='18100000066'

ssid = ['0217','vivo X60']
passwd =['18100000066','123456']


FTEXT    = 1
FHCRC    = 2
FEXTRA   = 4
FNAME    = 8
FCOMMENT = 16


def decompress(data):                    #解压数据
    assert data[0] == 0x1f and data[1] == 0x8b
    assert data[2] == 8
    flg = data[3]
    assert flg & 0xe0 == 0
    i = 10
    if flg & FEXTRA:
        i += data[11] << 8 + data[10] + 2
    if flg & FNAME:
        while data[i]:
            i += 1
        i += 1
    if flg & FCOMMENT:
        while data[i]:
            i += 1
        i += 1
    if flg & FHCRC:
        i += 2
    return zlib.decompress(memoryview(data)[i:], -15)
    

wlan=0
def connectWiFi(ssid, passwd):          #连接WIFI
  j=0
  global wlan
  wlan=network.WLAN(network.STA_IF)
  wlan.active(True)
  wlan.disconnect()
  wlan.connect(ssid, passwd)
  while(wlan.ifconfig()[0]=='0.0.0.0'):
    time.sleep(1)
    j=j+1
    if(j>4):
        return False
  print("connected")
  f.text("READY",20,15,32)
  f.show()
  return True


def cycle():                    #主循环
  try:                          #防止程序卡死
     i=0
     f.text("ing..",20,15,32)
     f.show()
     while(connectWiFi(ssid[i], passwd[i]) != True):
         i+=1
     t1=0
     t2=0
     while True:
      res=urequests.get('https://devapi.qweather.com/v7/weather/now?location=101230207&key=8d5df776510c4a6fbf71656f5fbf8c21&lang=en')        #爬数据
      data=decompress(res.content).decode()           #解析数据
      j1=ujson.loads(data)
      oled.fill(0)                                    #显示到OLED
      f.text("update:"+j1['updateTime'][11:16]+'--'+j1['now']['obsTime'][8:10],0,0)
      f.text("T:"+j1['now']['temp']+"'C   fT:"+j1['now']['feelsLike']+"'C",0,15)
      f.text(j1['now']['windSpeed']+"kmh-"+j1['now']['windScale']+j1['now']['windDir'],0,30)
      f.text(j1['now']['precip']+"mm",78,30)
      f.text("H:"+j1['now']['humidity'],95,45)
      f.text(j1['now']['text'],0,45)
      f.show()
      time.sleep(6)
      oled.fill(0)
      oled.hline(0,32,128,1)
      req=urequests.get('https://api.bilibili.com/x/relation/stat?vmid=1838326986&jsonp=jsonp').text
      j1=ujson.loads(req)
      t=j1['data']['follower']
      x=t-t1
      if t1 !=0:
          f.text(str(x),85,0,32)
      t1=t
      f.text('SLNG:',0,0)
      f.text(str(j1['data']['follower']),0,15)
      req=urequests.get('https://api.bilibili.com/x/relation/stat?vmid=533459953&jsonp=jsonp').text
      j1=ujson.loads(req)
      t=j1['data']['follower']
      x=t-t2
      if t2 !=0:
          f.text(str(x),85,33,32)
      t2=t
      f.text('LYGJYWS:',0,35)
      f.text(str(j1['data']['follower']),0,48)
      f.show()
      time.sleep(1)
  except:

    f.text("BREAK",20,15,32)
    f.show()
    cycle()
    

cycle()










三.作品展示

基于ESP32的天气显示+B站粉丝显示

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值