from machine import deepsleep, Pin, wake_reason from esp32 import wake_on_ext0 from time import sleep from config import config from leds import led_blink def main(): pin_switch = Pin(config['sensor_pin'], Pin.IN, Pin.PULL_UP) wake_on_ext0(pin=pin_switch, level=Pin.WAKE_LOW) if wake_reason() == 0 and not config.get("config_button"): # Power on - Run on boot sleep(10) # Give 10 seconds to cancel from serial deepsleep() elif wake_reason() == 0 and config.get("config_button"): # Power on - Wait for button before starting pin_config = Pin(config["config_button"], Pin.IN, Pin.PULL_UP) while True: print('Waiting for button...') if not pin_config.value(): if config.get("config_led"): led_blink(config["config_led"], 2, interval=0.2) deepsleep() sleep(1) elif wake_reason() == 1: # Sensor triggered alarm (woke from deep sleep) import alarm import wifi wifi.connect() alarm.trigger_alert(config["device_name"], phue=config.get("phue"), smtp=config.get("smtp")) deepsleep() try: main() except KeyboardInterrupt: pass finally: led_blink(config["config_led"], 2, interval=0.2)