作者归档:admin

股票信息查询函数

# 股票查询
class gp(object):
    def __init__(self,code="000858",ty="sz"):
        self.code=str(code)
        self.ty=ty
        self.get_url()
        self.get_info()
    def get_url(self):
        init_url="http://qt.gtimg.cn/q="
        self.url=init_url+self.ty+str(self.code)
    def get_info(self):
        try:
            self.re_obj=requests.get(self.url)
            self.tr_info()
            return self.re_obj
        except:
           return False
    def tr_info(self):
        d=self.re_obj.content
        li=d.split(b"~")
        self.name=li[1] #编码问题 无法str
        self.now=li[3]
        self.yestday=li[4]
        self.start=li[5]
        self.ud=li[31] #涨跌
        self.rate=li[32] #涨跌率
        self.top=li[33]
        self.down=li[34]
        self.buy_n=li[36]
        self.buy_m=li[37] #万元
        self.change=li[38] #成交率

TIPS

每次请求大概599B到617B数据之间,约等于0.65KB一次,可以假定1KB一次访问请求

NTP校时间及本地化时间 micropython

import ntptime,time
#本地话时间 东八区
def datetime():
    date=time.localtime(time.time()+28800)
    #(2024, 4, 29, 9, 58, 14, 0, 120) 年 月 日 时 分 秒 周 全年的第几天
    return date



# 定义NTP服务器列表
ntp_servers = [
    'ntp.ntsc.ac.cn',
    'ntp1.aliyun.com',
    'ntp.tencent.com',
    'pool.ntp.org'
]

#NTP同步
def ntp(ntp_servers):
    for server in ntp_servers:
        try:
            # 尝试从当前服务器同步时间
            ntptime.host = server
            ntptime.settime()
            print("时间已从 {} 同步".format(server))
            return
        except Exception as e:
            print("从 {} 同步时间失败: {}".format(server, e))
            continue
    print("无法从任何服务器同步时间")

ntp(ntp_servers)

micropython WDT看门狗Timer 时间中断喂狗;回调函数lambda传参数



from machine import WDT
wdt=WDT(timeout=10000)

#设置10秒
wdt.feed()

#喂狗 10秒不喂狗 自动重启

自动化喂狗

from machine import WDT,Timer
wdt=WDT(timeout=10000)
tdog=Timer(1)
tdog.init(mode=Timer.PERIODIC, period=5000, callback=lambda x:wdt.feed())

自动喂狗 ,开启一个Timer 1 每5000ms,5秒 喂一次狗·,如果Timer 1 不能运行,就重启

ESP32拥有4个定时器 0 1 2 3

  • Timer.ONE_SHOT:只执行一次定时任务。
  • Timer.PERIODIC:循环执行定时任务。

tdog.init(mode=Timer.PERIODIC, period=5000, callback=lambda x:wdt.feed())

callback=lambda x:mkmk(1)
回调函数 默认传参数是timer对象本身
,所以其他参数必须使用lambda匿名函数传参数

心知天气API使用

import urequests
 
def weather(key,city):
        url="http://api.seniverse.com/v3/weather/now.json?key=%s&location=%s&language=zh-Hans&unit=c" % (key,city)
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE' }
        ba=[]
        print(url)
        re=urequests.get(url,headers=headers)
        my=re.json()
        weather_status=["晴","晴","晴","晴","多云","晴间多云","晴间多云","大部多云","大部多云","阴","阵雨","雷阵雨","雷阵雨伴有冰雹","小雨","中雨","大雨","暴雨","大暴雨","特大暴雨","冻雨","雨夹雪","阵雪","小雪","中雪","大雪","暴雪","浮尘","扬沙","沙尘暴","强沙尘暴","雾","霾","风","大风","飓风","热带风暴","龙卷风","冷","热","未知"]
        code=my['results'][0]['now']['code']#天气代码
        tep=my['results'][0]['now']['temperature']#温度
        return [tep,code,weather_status[int(code)]]
key="私钥"

#参数key,城市拼音
weather(key,"suzhou")

micropython rtc NTP同步时间

import ntptime,time
from machine import RTC
#必须已经联网
ntptime.host="ntp1.aliyun.com"
ntptime.settime()
#同步NTP时间
rtc=RTC()
datetime=rtc.datetime()
print(datetime)

$ (2024, 4, 28, 6, 15, 7, 56, 487580)
0 年 
1 月 
2 日 
3 周几(从0开始 6为周日) 
4 小时 东八区+8
5 分钟 
6 秒

#下面返回当前时间
def datetime():
#     返回UTC0
    date=time.localtime(time.time()+3600*8)
    #(2024, 4, 29, 9, 58, 14, 0, 120) 年 月 日 时 分 秒 周 全年的第几天
    return date 

#数据格式
0 年 
1 月 
2 日 
3 时
4 分钟
5 秒
6 周
7 全年的第几天