import time import network import urequests from machine import Pin, time_pulse_us DOOR_OPEN_THRESHOLD = 50 # in cm echoPin = Pin(0, Pin.IN) trigPin = Pin(1, Pin.OUT) led = Pin("LED", Pin.OUT) prevDoorStatus = 67 def getDistanceCM(): trigPin.value(0) time.sleep_us(2) trigPin.value(1) time.sleep_us(10) trigPin.value(0) pulse_time = time_pulse_us(echoPin, 1, 30000) if pulse_time < 0: return -1 distance = pulse_time / 58 return distance def sendDoorStatus(status): print("door status: " + str(status)) #requestURL = "http://10.69.70.1/status" #r = urequests.post(requestURL, data={"status", status}) def checkDoorDistance(): global prevDoorStatus # Tell Python to use the global variable dist = -1 timeoutTime = 10 while timeoutTime > 0 and dist == -1: dist = getDistanceCM() timeoutTime -= 1 time.sleep(1) status = 0; if dist < DOOR_OPEN_THRESHOLD: status = 1 # door open led.on() elif dist == -1: status = -1 # unknown else: status = 0 # door closed led.off() if status != prevDoorStatus: sendDoorStatus(status) prevDoorStatus = status def flashLED(): flashes = 10 while flashes > 0: led.toggle() time.sleep_ms(500) flashes -= 1 def connectToNet(): ssid = "ITRnet" password = "pink4bubble" wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) MAX_WIFI_CONNECT_WAIT = 30 while MAX_WIFI_CONNECT_WAIT > 0: if wlan.status() < 0 or wlan.status() >= 3: break MAX_WIFI_CONNECT_WAIT -= 1 print('waiting to connect...') time.sleep(1) if wlan.status() != 3: raise RuntimeError('network connection failed') else: flashLED() print('connected!') status = wlan.ifconfig() print('ip = ' + status[0]) # program connectToNet() while True: time.sleep(5) checkDoorDistance()