◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻
2. 繼電器模組
3. WS2812 LED x60
4. Arduino UNO
5. PC or Raspberry PI 3B
◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻◻
- 準備好上述材料
- 將Arduino 線路接好 (腳位配置於Arduino code)
- Trig Pin = 10
- Echo Pin = 9
- Relay Pin = 8
- WE2812 LED Pin = 5
- 目前僅開源至此 (API及其他功能目前因需google帳號,故僅供個人使用)
v2.0 為減輕電腦負擔,將上傳資料工作交由 Raspberry PI 3B
========================================
🟦 Arduino負責軟硬體:
- 依據模式不同配置WS2812 LEDs
- 開燈時根據距離變換顏色(離螢幕越近越紅,越遠越綠);
前20顆保持閃爍浪漫黃燈 - 關燈時整條顯示弱光同色浪漫燈光,持續變色約1小時候關閉
- 開燈時根據距離變換顏色(離螢幕越近越紅,越遠越綠);
- 在觸發開/關燈時透過序列阜送出狀態
- 獨立運作僅需供電即可使用
🔴🔴🔴🔴🔴🔴 v2.0 功能 目前僅開源至以上功能 🔴🔴🔴🔴🔴🔴
========================================
🟥 Raspberry PI 負責溝通:
- 所有功能已包裝成Docker Image並上傳Docker Hub - 灌好PI OS僅需運行container即可動作
docker run -d --restart always -p 8080:8080 --privileged --device=/dev/ttyUSB0 dongdonghsu/dormpiapp:lastest
- 需透過NAT技術打穿外網請求(8080 port),推薦使用 PiTunnel(後來發現僅14天免費試用)
- 可以使用cpolar,雖然IP會浮動,但是可以透過爬蟲更新
- 透過USB序列阜和 Arduino持續溝通
- 收到新狀態則發送HTTP GET request to GAP API
- 本身作為外部的一台API server可供外部做GET Request觸發pyhton script(sw.py)

========================================
🟧 雲端Google App Script (GAS) 負責 API端口:
- 接收資料串入做判斷
- 加上 Time code 後將資料輸出至Google sheet
- 透過 Google 自家生態鏈利用 GAS 排版 Google Sheet
🟩 Google Sheet
-
轉換累計分鐘數為易讀公式: =TEXT(SUM(D3:D)/60,"0")&"小時:"&MOD(SUM(D3:D),60)&"分"
-
判斷離開時間條件格式設定公式: =IF(AND(C5=1,C4=0), "true", "false")="true"
-
判斷坐下時間條件格式設定公式: =IF(AND(C5=0,C4=1), "true", "false")="true"
========================================
DEMO:

利用試算表條件格式設定公式分辨,🟥紅色:坐下時間、⬜灰色:離開時間以及單次所待的時間長度







