import network import socket import time import machine import config from machine import Pin relay1 = Pin(config.RELAY1_PIN, Pin.OUT) relay2 = Pin(config.RELAY2_PIN, Pin.OUT) door_sensor1 = Pin(config.DOOR1_SENSOR_PIN, Pin.IN, Pin.PULL_UP) door_sensor2 = Pin(config.DOOR2_SENSOR_PIN, Pin.IN, Pin.PULL_UP) relay1.value(config.RELAY_OFF) relay2.value(config.RELAY_OFF) last_press_time = {"door1": 0, "door2": 0} wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(config.WIFI_SSID, config.WIFI_PASSWORD) max_retries = 30 while not wlan.isconnected() and max_retries > 0: time.sleep(1) max_retries -= 1 if wlan.isconnected(): wlan.ifconfig((config.STATIC_IP, config.SUBNET, config.GATEWAY, config.DNS)) ip_address = config.STATIC_IP else: ip_address = None def toggle_door(door_num): current_time = int(time.time()) door_key = f"door{door_num}" if current_time - last_press_time[door_key] < config.PRESS_COOLDOWN: return False last_press_time[door_key] = current_time if door_num == 1: relay1.value(config.RELAY_ON) else: relay2.value(config.RELAY_ON) time.sleep(0.5) if door_num == 1: relay1.value(config.RELAY_OFF) else: relay2.value(config.RELAY_OFF) return True def get_door_status(door_num): if door_num == 1: sensor = door_sensor1 else: sensor = door_sensor2 return "open" if sensor.value() == config.DOOR_OPEN else "closed" def get_html(status1, status2, msg="", client_ip=""): return ( """