- Read temperature sensor on Arduino periodically,
- Send the data to gateway server using
CoAP
protocol - gateway server record the temperature to
MongoDB
- Front-End Web Client using
REST API
to get the records from database - Display the data and render to line chart using
CanvasJS
- Hardware
- pinA0 -> temperature sensor
- pin13 -> LED
- pin4 -> ESP8266 TX
- pin5 -> ESP8266 RX
- 5V -> ESP8266 VCC & CH_PD
- GND -> ESP GND
- Setup
- 設定ESP8266與電腦的serial port的baudrate
- 利用AT指令集使ESP8266連上Wifi
- 將LED預設為關
- 製作一個buffer,其內容為CoAP的封包格式
- Loop
- 讀取溫度sensor
- 自動偵測模式下,溫度超過30度會觸發LED亮起
- 更改封包的內容,將溫度、LED狀態與message id改成現在的狀態
- 利用ESP8266送出CoAP封包後等待回應
- 依照回應的內容決定是否要更新LED的狀態
- CoAP Server
- 接收來自Arduino的CoAP封包
- 讀取溫度與LED燈資料
- 更新MongoDB資料庫資料
- 傳送Web API控制LED的回應給Arduino
- 接收來自Arduino的CoAP封包
- Web API Server
- GET 最近20筆Arduino的溫度與LED資料
- GET Arduino歷史最高溫/最低溫資料
- GET Arduino最近(x小時)的最高溫/最低溫資料
- PUT 控制Arduino LED的模式(開/關/自動偵測)
- 最近20筆Arduino的溫度動態折線圖
- 歷史/最近十秒內的最高溫最低溫動態資料
- 顯示LED燈狀態
- 以開關切換LED的模式(開/關/自動偵測)
- 溫度超過30度會提示警告訊息
-
Arduino Dev.
-
CoAP
-
sensor
-
Wifi
-
-
Node.JS Dev.