Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import machine, network
- import socket, json, time
- LED_COUNT = 8
- SCHEDULE_COUNT = 8
- sta = network.WLAN( network.STA_IF )
- schedules = SCHEDULE_COUNT * [ ( 0, 0, -1 ) ]
- lampus = LED_COUNT * [0]
- rtc = machine.RTC()
- server = "http://172.245.184.159:83/"
- d0 = machine.Pin( 16, machine.Pin.OUT );
- d1 = machine.Pin( 5, machine.Pin.OUT );
- d2 = machine.Pin( 4, machine.Pin.OUT );
- d3 = machine.Pin( 0, machine.Pin.OUT );
- d4 = machine.Pin( 2, machine.Pin.OUT );
- d5 = machine.Pin( 14, machine.Pin.OUT );
- d6 = machine.Pin( 12, machine.Pin.OUT );
- d8 = machine.Pin( 15, machine.Pin.OUT );
- d7 = machine.Pin( 13, machine.Pin.IN, machine.Pin.PULL_UP );
- def lampout():
- d0.value(not lampus[0])
- d1.value(not lampus[1])
- d2.value(not lampus[2])
- d3.value(not lampus[3])
- d4.value(not lampus[4])
- d5.value(not lampus[5])
- d6.value(not lampus[6])
- d8.value(not lampus[7])
- #d7.value(not lampus[8])
- def to_ts( d ):
- y, m, d, h, i, s = tuple( d[0:6] )
- return 24 * 3600 * (
- 365 * y + y // 4 - y // 100 + y // 400 + 30 * m
- + ( ( m + ( 1 if m > 8 else 0 ) ) // 2 )
- + (
- 2 if
- ( 0 if y % 4 > 0 else 1 )
- - ( 0 if y % 100 > 0 else 1 )
- + ( 0 if y % 400 > 0 else 1 )
- == 0
- else 1
- ) * ( 1 if m < 3 else 0) + d - 719560
- ) + h * 3600 + i * 60 + s
- def http_get( url ):
- _, _, host, path = url.split( '/', 3 )
- host, port, _ = ( host + ":80:" ).split( ':', 2 )
- port = int( port )
- addr = socket.getaddrinfo( host, port )[0][-1]
- s = socket.socket()
- s.connect( addr )
- s.send( bytes( "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n" % ( path, host), 'utf8' ))
- data = bytes([])
- last = 0
- while True:
- data = data + s.recv( 2048 )
- if last == len(data) or len(data)>1000:
- break
- last = len(data)
- while( s.recv( 128 ) ):
- pass
- s.close()
- _, data = str( data, 'utf8' ).split( "\r\n\r\n", 2 )
- return data
- current = 'pins'
- while True:
- try:
- if not d7.value():
- break
- if not sta.isconnected():
- print( "Connecting" )
- sta.active( True )
- sta.connect( "Chittychitty", "silverfang" )
- time.sleep( 10 )
- else:
- now = json.loads( http_get( server + "?now=now" ) )
- rtc.datetime( ( now[0], now[1], now[2], 0, now[3], now[4], now[5], 0 ) )
- print( "Checking..." )
- current = http_get( server + "?mode=alarm¤t=%s" % ( current ) )
- new = json.loads( current )
- print( "Set lamps" )
- for i in range(0, LED_COUNT):
- lampus[ i ] = new['lampus'][i]
- for i in range(0, SCHEDULE_COUNT):
- schedule=new['schedules'][i]
- schedules[i]=(to_ts(schedule),int(schedule[6]),int(schedule[7]))
- lampout()
- now = rtc.datetime()
- now = to_ts( ( now[0], now[1], now[2], now[4], now[5], now[6] ) ) #ignore now[3]
- print("Set schedules")
- for i in range(0, SCHEDULE_COUNT):
- schedule = schedules[i]
- if schedule[0] < now and schedule[2] >= 0:
- lampus[ schedule[1] ] = schedule[2]
- http_get( server + "?lampu=%d&value=%d" % ( schedule[1], schedule[2] ) )
- http_get( server + "?clear_schedule=%d" % ( i ) )
- lampout()
- time.sleep(1)
- except:
- pass
Add Comment
Please, Sign In to add comment