# 公司程式1
### MQTT_TW & MQTT_SG
- 都是寫data進mysql資料庫
- TW和SG的區別在於MQTT的broker不同,分別為mqtt.emscloud.net和sg.evercomm.com
- MQTT_SubBACnetRaw_TW.py & MQTT_SubBACnetRaw_SG.py
- 去MQTT提取資料後寫入rawData.BACnet
- MQTTModbusRaw_TW.py & MQTTModbusRaw_SG.py
- 去MQTT提取資料後寫入rawData.Modbus
- MQTTSubZigBeeRaw_TW.py & MQTTSubZigBeeRaw_SG.py
- 去MQTT提取資料後寫入rawData.ZB
- MQTTSubM2MRaw_SG.py
- 去MQTT提取資料後寫入rawData.M2M
### MQTT_ISS
- 這邊的程式都是寫入sg.evercomm.com這個broker的
- 第一部分為8CL,寫data進mysql資料庫的rawData.mqttIAQ
- 第二部分為HBF,寫data進mysql資料庫的rawData.mqttIAQ
- 兩者區別為topic不一樣,前者為ISS8CL/iaqsensor,後者為ISSHBF/iaqsensor
### MQTT_PPSS
- 這邊的程式都是寫入mqtt.emscloud.net這個broker的
- 主要針對powerMeter、flowMeter和dTemperature的資料寫入
- 其對應的資料庫是 iotmgm.pm、iotmgmt.ultrasonicFlow2和iotmgmt.ultrasonicFlow2
### MQTT_TC
- 都是寫data進mysql資料庫
- 相對復雜一些,不太清楚
# iotmgmt(程式)
- iotmgmtFrom1. 41To6. 41 .py
- 更新資料庫(由於會動到的資料庫有點多,就不一一列出)
- ZigBee_raw2iotmgmt.py
- 寫資料進資料庫,裡面有多個資料庫
# dataETL(程式)
- airQuality_dataETL.py & co_dataETL
- 更新dataETL.airQuality的資料
- environment_dataETL.py
- 更新dataETL.environment的資料
- flow_API_dataETL.py
- 更新dataETL.flow的資料
- gas_dataETL.py
- 更新dataETL.gas的資料
- goCheck_dataETL.py
- 檢查多個資料庫(?)
- gpio_dataETL.py
- 更新dataETL.gpio的資料
- particle_dataETL.py
- 更新dataETL.airQuality的資料
- power_API_dataETL.py
- 更新dataETL.power的資料
- power_dataETL.py
- 更新dataETL.power的資料
- sigfox_API_dataETL.py
- 更新dataETL.power的資料
- sindcon_API_dataETL.py
- 更新dataETL.power的資料
- temp_API_dataETL.py
- 更新dataETL.temp的資料
- twoInOne_3-1_dataETL.py
- 更新dataETL.twoInOne的資料
- twoInOne_3-2_dataETL.py
- 更新dataETL.twoInOne的資料
- vibration.py
- 更新dataETL.vibration的資料
- wetness_dataETL.py
- 更新dataETL.wetness的資料
# API(程式)
- flow_API.py
- 寫資料進入iotmgmt.flowMR2RMT
- power_API.py
- 寫資料進入iotmgmt.pm
- sigfox_API.py
- 更新rawData.sigfoxAPI的資料
- sindcon_API.yp
- 更新rawData.sindconAPI的資料
# dataPlatform
- ammonia.py
- 更新dataPlatform.ammonia的資料
- ch2o.py
- 更新dataPlatform.ch2o的資料
- co.py
- 更新dataPlatform.co的資料
- co2.py
- 更新dataPlatform.co2的資料
- environment.py
- 更新dataPlatform.environment的資料
- flow_Chiller.py
- 更新dataPlatform.flow的資料
- flow_Name_API.py
- 更新dataPlatform.flow的資料
- flow_Name.py
- 更新dataPlatform.flow的資料
- flow.py
- 更新dataPlatform.flow的資料
- FlowLog.py
- 寫資料進mgmtETL.FLowLog
- flowU.py
- 更新dataPlatform.flow的資料
- gas.py
- 更新dataPlatform.gas的資料
- goCheck_dataPlatform.py
- **對多個table進行處理,但因為缺少一個toolkit無法閱讀**
- gpio.py
- 更新dataPlatform.gpio的資料
- humidity.py
- 更新dataPlatform.humidity的資料
- ion.py
- 更新dataPlatform.ion的資料
- particle.py
- 更新dataPlatform.particle的資料
- PMLog.py
- 寫資料進dataPlatform.PMLog
- power_API.py
- 更新dataPlatform.power的資料
- power.py
- 更新dataPlatform.power的資料
- pressure.py
- 更新dataPlatform.pressure的資料
- quality.py
- 更新dataPlatform.quality的資料
- temp_55.py
- 更新dataPlatform.temp的資料
- temp_API.py
- 更新dataPlatform.temp的資料
- temp.py
- 更新dataPlatform.temp的資料
- vibration.py
- 更新dataPlatform.vibration的資料
- voc.py
- 更新dataPlatform.voc的資料
- wetness.py
- 更新dataPlatform.wetness的資料
# reportPlatform2021
- 根據檔案名更新該reportPlatform2021對應的table
# Note
#### MQTT config TW
clientId = 自取,無需註冊,放自己英文名字
user = iotmqtt
password = ECTW4iot
port = 1883
IP1 = mqtt.emscloud.net
#### MQTT config SG
clientId = 自取,無需註冊,放自己英文名字
user = iotmqtt
password = ECTW4iot
port = 1883
IP1 = sg.evercomm.com # IP即broker
#### MQTT config TC
broker = 192.168.91.34
port = 1883
user = iotmqtt
passwd = ECTW4iot
clientid = SG41
#### MQTT路徑
以MQTT_SubBACnetRaw_TW.py的topic為例,bacnet/+/raw就是在台灣MQTT裡的某些資料,可參考 https://swf.com.tw/?p=1009
#### 流程圖的線
只要是從py-->table,線中間如果沒有文字,即是py執行insert,否則有replace的話就是py執行replace,以下為範例
#### mysql db的形狀
```mermaid
flowchart TD
A[41環境]
B[/42環境/]
```
- replace
```mermaid
flowchart TD
A[test.py] -->|replace| B[database.table]
```
- insert
```mermaid
flowchart TD
A[test.py] --> B[database.table]
```
# mysql 41的rawData資料來源
- rawData.BACnet
```mermaid
flowchart TD
A[MQTT_SubBACnetRaw_TW.py] -->AAAA
AAAA[rawData.BACnet]
B[MQTT_SubBACnetRaw_SG.py] --> AAAA
C[MQSubBacnetRaw_TC.py] --> AAAA
```
```
1. MQTT_SubBACnetRaw_TW.py
- 簡單來說就是當日之rawData.BACnet的資料產生
- subClient_rawdata: SubbacnetRawXXXXX (XXXXX為英文名字,就是Note的clientId)
- subTopic_rawdata: bacnet/+/raw
- subTopic_rawdata_Hank: rawdata/bacnet/raw
- subTopic_list: [(subTopic_rawdata, 2), (subTopic_rawdata_Hank, 2)]
2. MQTT_SubBACnetRaw_SG.py
- 其架構和MQTT_SubBACnetRaw_SG.py一樣,不同的是config的ip不一樣,其他subClient_rawdata、
subTopic_rawdata等等都是一樣的
3. MQSubBacnetRaw_TC.py
-* 從localFileSave讀取資料,如果第一行是INSERT開頭,則執行蓋sql,否則他就視為需放入資料庫的資料
-* 接下來還有一個寫入rawData.GWClockIn,但我並未看到該table
```
- rawData.M2M
```mermaid
flowchart TD
A[MQTT_SubM2MRaw_SG.py] -->AAAA
AAAA[rawData.BACnet]
B[MQSubM2M_JHP_TC.py] --> C[JHP_parsing]
C --> AAAA
D[MQSubM2M_TC.py] --> AAAA
```
```
1. MQTT_SubM2MRaw_SG.py
- 簡單來說就是當日之rawData.M2M的資料產生
- subClient_rawdata: Subm2mRawXXXXX (XXXXX為英文名字,就是Note的clientId)
- subTopic_rawdata: m2m/+/raw
- subTopic_list: [(subTopic_rawdata, 2)]
2. MQSubM2M_JHP_TC.py
- clientId: SUB065-165166
- topics: [("JHP/065166",2)]
-* 從localFileSave讀取資料,如果行數介於0至100(不含),就將localFileSave裡的內容複製到
tempFile,再將localFileSave的內容清空
-* 接下倆讀取temp內容。再將需要insert的query做JHPParsing後執行該query
-* 如果行數大於100,也是將localFileSave裡的內容複製到tempFile,再將localFileSave的內容清空。
接下來讀取tempFile的資料然後對其逐行做JHPParsing再執行query的處理。
3. MQSubM2M_TC.py
- clientId: SUBM2Mraw
- topic: rawdata/M2M/raw
- 與MQSubM2M_JHP_TC.py雷同,不同的地方在JHPParsing的部分
```
- rawData.Modbus
```mermaid
flowchart TD
A[MQTT_SubModbusRaw_TW.py] -->AAAA
AAAA[rawData.BACnet]
B[MQTT_SubModbusRaw_SG.py] --> AAAA
C[MQSubModbusRaw_TC.py] --> AAAA
```
```
1. MQTT_SubModbusRaw_TW.py
- 簡單來說就是當日之rawData.Modbus的資料產生
- subClient_rawdata: SubmodbusRawXXXXX (XXXXX為英文名字,就是Note的clientId)
- subTopic_rawdata: modbus/+/raw
- ubTopic_rawdata_Hank = rawdata/modbus/raw
- subTopic_list: [(subTopic_rawdata, 2), (subTopic_rawdata_Hank, 2)]
2. MQTT_SubModbusRaw_SG.py
- 其架構和MQTT_SubModbusRaw_TW.py一樣,不同的是config的ip不一樣,其他subClient_rawdata、
subTopic_rawdata等等都是一樣的
3. MQSubModbusRaw_TC.py
- 和MQSubM2M_TC.py架構一樣,只是寫入的table不一樣
```
- rawData.mqttIAQ
```mermaid
flowchart TD
A[airIAQ_ISS8CL_dataETL.py] -->AAAA
AAAA[rawData.mqttIAQ]
B[airIAQ_MQ_dataETL.py] --> AAAA
```
```
1. airIAQ_ISS8CL_dataETL.py
- MQTT 使用sg config
- 簡單來說就是當日之rawData.mqttIAQ的資料產生
- MQTTuser: SubzigbeeRawXXXXX (XXXXX為英文名字,就是Note的clientId)
- subTopic_rawdata: ISS8CL/iaqsensor
2. airIAQ_MQ_dataETL.py
- MQTT 使用sg config
- 其架構和airIAQ_ISS8CL_dataETL.py一樣,不一樣的是SubTopic為ISSHBF/iaqsensor
```
- rawData.RESAPI
- rawData.sigfoxAPI
```mermaid
flowchart TD
A[sigfox_API.py] -->|replace| AAAA
AAAA[rawData.sigfoxAPI]
B["https://api.sigfox.com/v2/devices/{dId}/messages<br>dId為deviceId"] --> A
```
```
1. sigfox_API.py
- 從url https://api.sigfox.com/v2/devices/{dId}/messages,取得data裡面後replace到
rawData.sigfoxAPI
```
- rawData.sindconAPI
```mermaid
flowchart TD
A[sindcon_API.py] -->|replace| AAAA
AAAA[rawData.sindconAPI]
B["getToken()"] --> C
C["getDevList(token)"]--> E
D["getUMG96Data(token)"] --> C
B --> D
E["getHistoricalData(dev_dict, token)"] --> A
```
- rawData.ZB
```mermaid
flowchart TD
A[MQTT_SubZigBeeRaw_TW.py] -->AAAA
AAAA[rawData.BACnet]
B[MQTT_SubZigBeeRaw_SG.py] --> AAAA
C[MQSubZBRaw_TC.py] -->AAAA
```
```
1. MQTT_SubZigBeeRaw_TW.py
- 簡單來說就是當日之rawData.Modbus的資料產生
- subClient_rawdata: SubzigbeeRawXXXXX (XXXXX為英文名字,就是Note的clientId)
- subTopic_rawdata: zigbee/+/raw
- subTopic_rawdata_Hank = rawdata/zb/raw
- subTopic_list: [(subTopic_rawdata, 2), (subTopic_rawdata_Hank, 2)]
2. MQTT_SubZigBeeRaw_SG.py
- 其架構和MQTT_SubZigBeeRaw_TW.py一樣,不同的是config的ip不一樣,
其他subClient_rawdata、subTopic_rawdata等等都是一樣的
3. MQSubZBRaw_TC.py
- 和MQSubM2M_TC.py架構一樣,只是寫入的table不一樣
```
# mysql 41的iotmgmt資料來源
- iotmgmt.pm
```mermaid
flowchart TD
A[MQTT_SubPPSSRaw.py] --> AAAA
AAAA[iotmgmt.pm]
B[iotmgmtFrom1.41To6.41.py] -->|replace| AAAA
C[ZigBee_raw2iotmgmt.py] --> AAAA
D[power_API.py] --> AAAA
E[rawData.ZB] --> C
F[iotmgmt.pm] --> B
G[rawData.RESTAPI2023<br>/rawData.RESTAPI] --> D
```
```
1. MQTT_SubPPSSRaw.py
- 簡單來說就是當日之iotmgmt.pm/iotmgmt.ultrasonicFlow2/iotmgmt.dTemperature的資料產生
- subClient_rawdata: SubppssRawXXXXX (XXXXX為英文名字,就是Note的clientId)
- subTopic_rawdata_pm: iotdata/+/powerMeter/#
- subTopic_rawdata_flow: iotdata/+/flowMeter/#
- subTopic_rawdata_temp: iotdata/+/dTemperature/#
- subTopic_list: [(subTopic_rawdata_pm, 2), (subTopic_rawdata_flow, 2),
(subTopic_rawdata_temp, 2)]
2. iotmgmtFrom1.41To6.41.py
-* 從資料庫host為tc.evercomm.com(?)讀取iotmgmt.XXX資料後更新到host為其他資料庫的
iotmgmt.XXX,其中XXX為某個table
3. ZigBee_raw2iotmgmt.py
- 從rawData.ZB讀取資料後更新到對應clusterId(cId)的table
4. power_API.py
- 如果是今天日期,就從rawData.RESTAPI,否則就從rawData2023.RESTAPI08讀取資料,然後經過一些
數據處理寫入iotmgmt.pm
```
- iotmgmt.ultrasonicFlow2
```mermaid
flowchart TD
AAAA[iotmgmt.ultrasonicFlow2]
A[MQTT_SubPPSSRaw.py] --> AAAA
B[iotmgmtFrom1.41To6.41.py] --> AAAA
C[ZigBee_raw2iotmgmt.py] --> AAAA
D[rawData.ZB] --> C
E[iotmgmt.ultrasonicFlow2] --> B
```
```
1. MQTT_SubPPSSRaw.py
- 參考iotmgmt.pm裡的解說
2. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
3. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.dTemperature
```mermaid
flowchart TD
AAAA[iotmgmt.dTemperature]
A[MQTT_SubPPSSRaw.py] --> AAAA
B[iotmgmtFrom1.41To6.41.py] -->|replace|AAAA
C[ZigBee_raw2iotmgmt.py] --> AAAA
D[rawData.ZB] --> C
E[iotmgmt.dTemperature] --> B
```
```
1. MQTT_SubPPSSRaw.py
- 參考iotmgmt.pm裡的解說
2. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
3. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.gpio
```mermaid
flowchart TD
AAAA[iotmgmt.gpio]
A[iotmgmtFrom1.41To6.41.py] -->|replace| AAAA
B[ZigBee_raw2iotmgmt.py] --> AAAA
C[rawData.ZB] -->B
D[iotmgmt.gpio] --> A
```
```
1. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
2. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.co2
```mermaid
flowchart TD
AAAA[iotmgmt.co2]
A[iotmgmtFrom1.41To6.41.py] -->|replace| AAAA
B[ZigBee_raw2iotmgmt.py] --> AAAA
C[rawData.ZB] -->B
D[iotmgmt.co2] --> A
```
```
1. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
2. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.zigbeeRawModbus
```mermaid
flowchart TD
AAAA[iotmgmt.zigbeeRawModbus]
A[iotmgmtFrom1.41To6.41.py] -->|replace|AAAA
B[ZigBee_raw2iotmgmt.py] --> AAAA
C[rawData.ZB] -->B
D[iotmgmt.zigbeeRawModbus] --> A
```
```
1. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
2. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.waterQuality
```mermaid
flowchart TD
AAAA[iotmgmt.waterQuality]
A[iotmgmtFrom1.41To6.41.py] -->|replace|AAAA
B[ZigBee_raw2iotmgmt.py] --> AAAA
C[rawData.ZB] -->B
D[iotmgmt.waterQuality] --> A
```
```
1. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
2. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.ain
```mermaid
flowchart TD
AAAA[iotmgmt.ain]
A[iotmgmtFrom1.41To6.41.py] -->|replace|AAAA
B[iotmgmt.ain] --> A
```
```
1. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.flowTMR2RMT
```mermaid
flowchart TD
AAAA[iotmgmt.flowTMR2RMT]
A[iotmgmtFrom1.41To6.41.py] -->|replace|AAAA
B[flow_API.py] --> AAAA
C[iotmgmt.flowTMR2RMT] --> A
D[rawData.RESTAPI2023<br>/rawData.RESTAPI] --> B
```
```
1. iotmgmtFrom1.41To6.41.py
- 參考iotmgmt.pm裡的解說
2. flow_API.py
- 如果是今天日期,就從rawData.RESTAPI,否則就從rawData2023.RESTAPI08讀取資料,然後經過一些數據
處理寫入iotmgmt.flowTMR2RMT
```
- iotmgmt.batTempHumidCo2
```mermaid
flowchart TD
AAAA[iotmgmt.batTempHumidCo2]
A[ZigBee_raw2iotmgmt.py] --> AAAA
B[rawData.ZB] -->A
```
```
1. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
- iotmgmt.solarInverter2
```mermaid
flowchart TD
AAAA[iotmgmt.solarInverter2]
A[ZigBee_raw2iotmgmt.py] --> AAAA
B[rawData.ZB] -->A
```
```
1. ZigBee_raw2iotmgmt.py
- 參考iotmgmt.pm裡的解說
```
# mysql 41的dataETL資料來源
- dataETL.airQuality
```mermaid
flowchart TD
AAAA[dataETL.airQuality]
A[airQuality_dataETL.py] -->|replace| AAAA
B[co_dataETL.py] -->|replace| AAAA
C[particle_dataETL.py] -->|replace| AAAA
D[mgmtETL.Device]
E["iotdata2023.zigbeeRawModbus_XX<br>/ iotmgmt.zigbeeRawModbus<br>(視日期而定)"] --> A
D ---|table用迴圈控制| E & F
E --> B
F[iotmgmt.particle] --> C
```
```
1. airQuality_dataETL.py
- 從mgmtETL.Device讀取name,ieee和gatewayId後,使用for回圈控制每個element,根據每個element的
ieee和gatewayId去iotmgmt.zigbeeRawModbus/iotdata2023.zigbeeRawModbus_08做讀取
- 接下來做一些數據處理後,replace到dataETL.airQuality
2. co_dataETL.py
- 與airQuality_dataETL.py差不多,但是差別在於數據處理的部分。
3. particle_dataETL.py
- 與airQuality_dataETL.py差不多,差別在於進入迴圈後的element讀取的table是iotmgmt.particle以及
數據處理不相同。
```
- dataETL.environment
```mermaid
flowchart TD
AAAA[dataETL.environment]
A[environment_dataETL.py] -->|replace| AAAA
B[iotmgmt.zigbeeRawModbus] -->A
```
```
1. environment_dataETL.py
- 根據特定ieee(['00124b0019309c19','00124b0019309e7b'])去iotmgmt.zigbeeRawModbus讀取資料
- 接下來做一些數據處理然後replace到dataETL.environment
```
- dataETL.flow
```mermaid
flowchart TD
AAAA[dataETL.flow]
A[flow_API_dataETL.py] -->|replace| AAAA
B[mgmtETL.vDeviceInfo] --> A
C[iotmgmt.flowTMR2RMT] --> A
C ---|table用迴圈控制| B
```
```
1. flow_API_dataETL.py
- 從mgmtETL.vDeiceInfo讀取siteId, name, nameList,ieee,dataTableRaw後,接著使用for迴圈根據
每個element的ieee從iotmgmt.flowTMR2RMT讀取資料
- 經過數據處理後將其replace搭配dataETL.flow
```
- dataETL.gas
```mermaid
flowchart TD
AAAA[dataETL.gas]
A[gas_dataETL.py] -->|replace| AAAA
B[mgmtETL.Device] --> A
C["iotdata2023.zigbeeRawModbus_XX<br>/ iotmgmt.zigbeeRawModbus<br>(視日期而定)"] --> A
B---|table用迴圈控制|C
```
```
1. gas_dataETL.py
- 從mgmtETL.Device裡讀取資料後根據每個element的gId、ieee以及modbusCmd去撈取
iodmgmt.zigbeeRawModbus/iotdate2023.zigbeeRawModbus_08的資料後,經過一些數據處理replace
到dataETL.gas
```
- dataETL.gpio
```mermaid
flowchart TD
AAAA[dataETL.gpio]
A[gpio_dataETL.py] -->|replace| AAAA
B[mgmtETL.Device] -->|table用迴圈控制| C
C[iotmgmt.gpio] --> A
```
```
1. gpio_dataETL.py
- 從mgmtETL.Device裡讀取資料後根據每個element的gId和ieee去撈取iotmgmt.gpio資料後,經過一些
數據處理replace到dataETL.gpio
```
- dataETL.power
```mermaid
flowchart TD
AAAA[dataETL.power]
A[power_API_dataETL.py] -->|replace| AAAA
B[power_dataETL.py] -->|replace| AAAA
C[sigfox_API_dataETL.py] -->|replace| AAAA
D[sindcon_API_dataETL.py] -->|replace| AAAA
E[mgmtETL.Device] -->|table用迴圈控制| F[iotmgmt.pm]
F --> A & B
G[sigfoxAPI] --> C
H[sindconAPI] --> D
```
```
1. power_API_dataETL.py
- 從mgmtETL.Device裡讀取資料後根據每個element的gId和ieee去撈取iotmgmt.pm資料後,經過一些
數據處理replace到dataETL.power
2. power_dataETL.py
- 和power_API_dataETL.py差不多,
- 區別
· power_dataETL.py的mgmtETL.Device取gatewayId>0,而power_API_dataETL.py去gatewaOd=170
· 數據處理方法不同
· replace的內容不同
3. sigfox_API_dataETL.py
- 根據指定的dev_dict去rawData.sigfoxAPI撈取資料後,做一些數據處理後replace到dataETL.power
4. sindcon_API_dataETL.py
- 跟sigfox_API_dataETL.py差不多
- 區別
· dev_dict不同
· table不同一個是rawData.sindconAPI,上面是rawData.sigfoxAPI
· replace的內容不同
```
- dataETL.temp
```mermaid
flowchart TD
AAAA[dataETL.temp]
A[temp_API_dataETL.py] -->|replace| AAAA
```
```
1. temp_API_dataETL.py
- 根據指定的uid_dict去data_url取得資料後,經過數據處理replace到dataETL.temp
```
- dataETL.twoInOne
```mermaid
flowchart TD
AAAA[dataETL.twoInOne]
A[twoInOne_3-1_dataETL.py] -->|replace| AAAA
B[twoInOne_3-2_dataETL.py] -->|replace| AAAA
C[mgmtETL.Device]
D[iotmgmt.co2]
C -->|table用迴圈控制| D
D --> A & B
```
```
1. twoInOne_3-1_dataETL.py
- 從mgmtETL.Device裡讀取資料後根據每個element的 name和ieee去iotmgmt.co2撈取資料後,做一些
數據處理replace到dataETL.twoInOne
2. twoInOne_3-2_dataETL.py
- 跟twoInOne_3-1_dataETL.py差不多
- 區別
· device logic不一樣,3-1是1,3-2是2
```
- dataETL.vibration
```mermaid
flowchart TD
AAAA[dataETL.vibration]
A[vibration.py] -->|replace| AAAA
B[mgmt.Device]
C[iotmgmt.vibration]
B -->|table用迴圈控制| C
C --> A
```
```
1. vibration.py
- 從mgmtETL.Device裡讀取資料後根據每個element的gId和ieee去iotmgmt.vibration撈取資料後,
做數據處理replace到dataETL.vibration
```
- dataETL.wetness
```mermaid
flowchart TD
AAAA[dataETL.wetness]
A[wetness_dataETL.py] -->|replace| AAAA
B[iotmgmt.zigbeeRawModbus] --> A
```
```
1. wetness_dataETL.py
- 根據特定的ieee去iotmgmt.zigbeeRawModbus撈取資料,做一些數據處理後replace到dataETL.wetness
```
# 公司程式2網址
https://hackmd.io/nBjlGsLAQ1Oz3CjR3aSbdg