醬是創客的WebThings教學主題第1篇,以WebThings來實作教學,本篇教學將著重介紹WebThings Gateway與WebThings Framework,WebThings原先Mozilla專案,2020下半年Mozilla WebThings將更名成為WebThings,新網站將搬到webthings.io。它提供了免費IoT平台、Alarm、Log、Rule和各式程式語言供整合

WebThings Gateway可以當成簡易的平台,可以在樹莓派/Linux/Docker下跑,這個開源平台支援Alarm(EX: 當溫度設備觸發條件以後,可以透過E-mail、通訊App收到notification通知)、Log(紀錄連續時間的設備數值)、Rule(EX: 當溫度設備觸發條件以後,會讓某一台設備的relay動作)、人員管理

WebThings Framework可以當成資料挖掘或控制edge設備,舉例來說我們可以用import Arduino的WebThings Framework lib,並自行寫好對應的程式(可以寫ESP32與relay on/off控制、或透過ESP32抓回modbus溫濕度後拋往Gateway),並讓WebThings Gateway可以直接連線控制,目前支援Arduino、Node.js、Python、Java、Rust、MicroPython

我們來分析一下技術面

WebThings Gateway是以Node.js來寫的,並搭配sqlite3來儲存Log資料,我想大家也知道sqlite和MySQL和MSSQL的差別,簡單說WebThings Gateway就是定義存放少量設備的連續數值,因為它最主要的目的是拿來用Rule和Notification來控制IoT設備的運作與告警,如果你是用樹莓派來跑WebThings Gateway並開啟Log,就要小心長時間後Micro SD卡容易壞掉。WebThings Gateway會透過網路來控制/管理/推撥WebThings Framework的設備,那如果網路斷線怎麼辦?當然是全部都不會動,所以如何用出好的網路環境,是重要的課題,我想現在網路技術穩定性很高,坊間也有專做商用/工業網路的系統整合商,這應該不難。通常會選擇WebThings的解決方案,就是要為了高CP值省錢,通常不會把軟體/硬體規格搞得非常複雜。如果真的要防ESD、突波、雷擊、放在無塵室或工業環境,這種都會去找研華和Moxa並搭配它們的平台設計

我們來看實際應用

安橋聖科技將WebThings放於有預算限制的小型智慧農業,設備有一台樹莓派(WebThings Gateway)、數台ESP32搭配relay(WebThings Framework的設備)、數台ESP32搭配溫濕度計(WebThings Framework的設備)、網路設備,並透過溫溼度規則來控制風機,通常這些都可以很穩定的運作,但最重要的就是無線網路,無線網路在高濕度和低濕度的表現都會不同,這也是所提到的天氣與網路穩定性會影響是否能正常運作