from machine import Pin
import network
import dht
import time
import urequests
import utime

# === WiFi 設定 ===
sta = network.WLAN(network.STA_IF)
sta.active(True)
sta.connect('Wokwi-GUEST','')  # 使用您提供的Wi-Fi名稱和密碼
while not sta.isconnected():
    print(".", end="")
    time.sleep(0.1)
print("✅ WiFi Connected!")

# === 裝置設定 ===
sensor = dht.DHT11(Pin(12))  # DHT11溫濕度感測器接GPIO12
led_red = Pin(25, Pin.OUT)    # 紅色LED接GPIO25
led_blue = Pin(26, Pin.OUT)   # 藍色LED接GPIO26
sw1 = Pin(33, Pin.IN, Pin.PULL_UP)  # 誤觸偵測按鍵SW1接GPIO33

# === ThingSpeak 設定 ===
API_KEY = "795VKPTBAXIYU4VJ"  # 您的API密鑰
URL = "https://api.thingspeak.com/update"

# === 紀錄設定 ===
record_count = 0
temp_sum = 0
hum_sum = 0
start_time = utime.time()

# === 函式:紅藍 LED 交錯閃爍 ===
def flash_leds():
    for _ in range(5):
        led_red.value(1)
        led_blue.value(0)
        time.sleep(0.1)
        led_red.value(0)
        led_blue.value(1)
        time.sleep(0.1)

# === 主程式迴圈 ===
while True:
    # 讀取溫濕度資料
    sensor.measure()
    temp = sensor.temperature()
    hum = sensor.humidity()
    print('Temperature: ', temp, '°C', 'Humidity: ', hum, '%')

    # 上傳資料至 ThingSpeak
    url = f"{URL}?api_key={API_KEY}&field1={temp}&field2={hum}"
    urequests.get(url)
    
    # 環境資料紀錄與計算平均值
    temp_sum += temp
    hum_sum += hum
    record_count += 1

    if record_count == 10:  # 每10次紀錄後顯示平均值
        avg_temp = temp_sum / 10
        avg_hum = hum_sum / 10
        print(f"Average Temperature: {avg_temp} °C")
        print(f"Average Humidity: {avg_hum} %")
        # 重置計數器
        record_count = 0
        temp_sum = 0
        hum_sum = 0

    # 誤觸偵測
    if not sw1.value():  # 如果按鍵SW1被按下
        print("Warning! SW Touched!")
        flash_leds()  # 紅藍交替閃爍

    # 每15秒紀錄一次
    time.sleep(15)  # 讓每次上傳間隔15秒