Auto-Garden/main.py

78 lines
1.9 KiB
Python

from machine import Pin
import time
import network
import urequests as requests
from secrets import secrets
from scripts.discord_webhook import send_discord_message
# Initialize pins (LED light onboard)
led = Pin("LED", Pin.OUT)
# Initial state
led.low()
# Network connection
def connect_wifi():
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
print("Connecting to WiFi...", end="")
wifi.connect(secrets['ssid'], secrets['password'])
# Wait for connection with timeout
max_wait = 10
while max_wait > 0:
if wifi.status() < 0 or wifi.status() >= 3:
break
max_wait -= 1
print(".", end="")
time.sleep(1)
if wifi.isconnected():
print("\nConnected! Network config:", wifi.ifconfig())
led.on()
time.sleep(1)
led.off()
return wifi
else:
print("\nConnection failed!")
return None
# Connect to WiFi
wifi = connect_wifi()
# Send startup message if connected
if wifi and wifi.isconnected():
send_discord_message("Pico W online and connected ✅")
# Throttle reconnect attempts
RECONNECT_COOLDOWN_MS = 60000 # 60 seconds
last_attempt_ms = time.ticks_ms()
# Connection monitoring loop
while True:
if not wifi or not wifi.isconnected():
# Fast blink when disconnected
led.on()
time.sleep(0.2)
led.off()
time.sleep(0.2)
# Only try to reconnect after cooldown
if time.ticks_diff(time.ticks_ms(), last_attempt_ms) >= RECONNECT_COOLDOWN_MS:
last_attempt_ms = time.ticks_ms()
wifi = connect_wifi()
# Notify only when connection is restored
if wifi and wifi.isconnected():
send_discord_message("WiFi connection restored 🔄")
else:
# Slow blink when connected
led.on()
time.sleep(1)
led.off()
time.sleep(1)
time.sleep(0.1)