#coding:utf-8
from machine import UART,Pin,RTC
import machine
import time,network
import ntptime
import os
led1=Pin(12,Pin.OUT)
led2=Pin(13,Pin.OUT)
rtc = RTC()
k=0
def linedetect():
uart=UART(1,baudrate=115200,tx=6,rx=7,timeout=1) #设置Pin6=tx,Pin7=rx
idsend='huanghe'
idreceive='changjiang'
uart.write(idsend)
time.sleep(5) #树莓派启动需要的时间,否则会反复重启
receive_data=uart.readline()
if (idreceive in str(receive_data)):
return 1
else:
return 0
def onoff1(pinnum):
p = Pin(pinnum, Pin.OUT)
p.on()
# p.off()
def onoff0(pinnum):
p = Pin(pinnum, Pin.OUT)
p.off()
def createconfigfile(filename):
uart=UART(1,baudrate=115200,tx=6,rx=7,timeout=1)
time.sleep(5)
readmsg = uart.readline()
if 'SSID' and 'PWD' and 'START' and 'END' and 'changjiang' in str(readmsg):
content = readmsg
with open(filename,mode='w',encoding='utf-8') as f:
f.write(content)
def readconfigfile(filename):
with open(filename,mode='r',encoding='utf-8') as f:
s=f.read().strip('\n').split(',')
if 'SSID' and 'PWD' and 'START' and 'END' and 'changjiang' in s:
ssid=s[0].split(':')[1]
pwd=s[1].split(':')[1]
startt=s[2].split(':')[1]
endt=s[3].split(':')[1]
return ssid,pwd,startt,endt
else:
print('config file format error,will drop it')
os.remove(filename)
# 同步时间
def sync_ntp():
ntptime.NTP_DELTA = 3155644800 # 可选 UTC+8偏移时间(秒),不设置就是UTC0
ntptime.host = 'ntp1.aliyun.com' # 可选,ntp服务器,默认是"pool.ntp.org"
try:
ntptime.settime() # 修改设备时间,到这就已经设置好了
except:
for i in range(6):
led1.value(1) #turn off 0是亮
time.sleep(0.1)
led1.value(0)
time.sleep(0.1)
print('同步失败')
# 联WIFI
def WIFI_Connect(ssid,pwd):
wlan = network.WLAN(network.STA_IF) #STA模式
wlan.active(True) #激活接口
start_time=time.time() #记录时间做超时判断
if not wlan.isconnected():
print('connecting to network...'+ssid)
wlan.connect(ssid, pwd) #输入WIFI账号密码
time.sleep(1)
while not wlan.isconnected():
if time.time()-start_time > 15 :
print('wifi Connected Timeout!')
os.remove('config.txt')
machine.reset()
if wlan.isconnected():
print('wifi was connected!')
try:
a,b,c,d=readconfigfile('config.txt')
except:
print('can not find config.txt,will create it!')
createconfigfile('config.txt')
time.sleep(2)
machine.reset()
WIFI_Connect(a,b)
print(a,b,c,d)
dt=time.localtime()
po=dt[2]
iflag=0
for i in range(5):
sync_ntp()
time.sleep(1)
while True:
led2.value(1)
time.sleep(1)
led2.value(0)
time.sleep(1)
dt=time.localtime()
print(dt)
if (po==dt[2] and iflag==0):
if (dt[3]>=6):
onoff1(2)
time.sleep(120)
onoff0(2)
iflag=1
elif po!=dt[2]:
machine.reset()
放在循环里,这么每天不需要重新启动
#coding:utf-8
from machine import UART,Pin,RTC
import machine
import time,network
import ntptime
import os
led1=Pin(12,Pin.OUT)
led2=Pin(13,Pin.OUT)
rtc = RTC()
k=0
def linedetect():
uart=UART(1,baudrate=115200,tx=6,rx=7,timeout=1) #设置Pin6=tx,Pin7=rx
idsend='huanghe'
idreceive='changjiang'
uart.write(idsend)
time.sleep(5) #树莓派启动需要的时间,否则会反复重启
receive_data=uart.readline()
if (idreceive in str(receive_data)):
return 1
else:
return 0
def onoff1(pinnum):
p = Pin(pinnum, Pin.OUT)
p.on()
# p.off()
def onoff0(pinnum):
p = Pin(pinnum, Pin.OUT)
p.off()
def createconfigfile(filename):
uart=UART(1,baudrate=115200,tx=6,rx=7,timeout=1)
time.sleep(5)
readmsg = uart.readline()
if 'SSID' and 'PWD' and 'START' and 'END' and 'changjiang' in str(readmsg):
content = readmsg
with open(filename,mode='w',encoding='utf-8') as f:
f.write(content)
def readconfigfile(filename):
with open(filename,mode='r',encoding='utf-8') as f:
s=f.read().strip('\n').split(',')
if 'SSID' and 'PWD' and 'START' and 'END' and 'changjiang' in s:
ssid=s[0].split(':')[1]
pwd=s[1].split(':')[1]
startt=s[2].split(':')[1]
endt=s[3].split(':')[1]
return ssid,pwd,startt,endt
else:
print('config file format error,will drop it')
os.remove(filename)
# 同步时间
def sync_ntp():
ntptime.NTP_DELTA = 3155644800 # 可选 UTC+8偏移时间(秒),不设置就是UTC0
ntptime.host = 'ntp1.aliyun.com' # 可选,ntp服务器,默认是"pool.ntp.org"
try:
ntptime.settime() # 修改设备时间,到这就已经设置好了
except:
for i in range(6):
led1.value(1) #turn off 0是亮
time.sleep(0.1)
led1.value(0)
time.sleep(0.1)
print('同步失败')
# 联WIFI
def WIFI_Connect(ssid,pwd):
wlan = network.WLAN(network.STA_IF) #STA模式
wlan.active(True) #激活接口
start_time=time.time() #记录时间做超时判断
if not wlan.isconnected():
print('connecting to network...'+ssid)
wlan.connect(ssid, pwd) #输入WIFI账号密码
time.sleep(1)
while not wlan.isconnected():
if time.time()-start_time > 15 :
print('wifi Connected Timeout!')
os.remove('config.txt')
machine.reset()
if wlan.isconnected():
print('wifi was connected!')
try:
a,b,c,d=readconfigfile('config.txt')
except:
print('can not find config.txt,will create it!')
createconfigfile('config.txt')
time.sleep(2)
machine.reset()
WIFI_Connect(a,b)
print(a,b,c,d)
while True:
dt=time.localtime()
po=dt[2]
iflag=0
for i in range(5):
sync_ntp()
time.sleep(1)
while True:
led2.value(1)
time.sleep(1)
led2.value(0)
time.sleep(1)
dt=time.localtime()
print(dt)
if (po==dt[2] and iflag==0):
if (dt[3]>=6):
onoff1(2)
led2.value(1)
time.sleep(120)
onoff0(2)
led2.value(0)
iflag=1
elif po!=dt[2]:
break
获取天气
https://zhuanlan.zhihu.com/p/187577492
未来15天逐日天气预报和昨日天气 · 语雀 (yuque.com)
天气预报(城市级) · 语雀 (yuque.com)