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