# Backend - Simple NodeJS backend + Containerize + Deploy to K8s + ingress ###### tags: `PETICU` `backend` ## CO2Module's data flow ### 開機 ```sequence IOT Device->Express server: call api\n(getModuleByDeviceId) Express server-->IOT Device: response module's info\n(including Remaining time (hr)) ``` ### 執行中 (有連上網) ```sequence IOT Device->Express server: update sensor and module remaing time \n(72..71..70..69..1) Express server-->CloudDB: get paired module's id Express server-->Express server: check if any module paired or not Express server-->CloudDB: update paired module's info ``` ## 換模組 ```sequence APP->Express Server:call api to exchange modle Express Server->CloudDB:update the paird info IOT Device->Express Server:call api to get new remaing time IOT Device->Express Server:update remaining time when WIFI is connected ``` ## 裝置離線重連 ```sequence APP->Express Server:post method to update modle's time Express Server->CloudDB:update the paird info IOT Device->Express Server:call api to get new remaing time IOT Device->Express Server:update remaining time when WIFI is connected ``` app 交換CO2 module's: - backend:更換pairs value - device: call getModuleByDeviceId 會拿到新的value 交換模組的時候 先檢查裝置是否連線 (確保device有上傳秒數) 接下來要做交換 坐之前我會給模組一個參數status :1 pending 此時是有人call getCO2ModuleByDDeviceId 會得到pending (這樣裝置舊知道有換過模組) 這時候硬體裝置要call post api 去上傳時間,然後再去getModuleById才會正常 上船後 我會將status 改為0 ok 裝置再去getModuleByDeviceId 等裝置上傳完數值後 會更新 這時候 tmp 秒數 --> 使用者要交換模組的時候會先呼叫這個職把它更新成realtime 再交換 post 方法會將 tmp time放進realtime裡面 real time ->(hr) -->前端