Files

96 lines
2.0 KiB
Python

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()