| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # ç©èè®¾å¤æ¥å£æ°å¢åæ¾ä½ç½®å段å端èè°ææ¡£ |
| | | |
| | | ## åæ´æ¦è¿° |
| | | |
| | | æ¬æ¬¡åæ´å¨ä¸¤ä¸ªç©è设å¤ç¸å
³æ¥å£çè¿åæ°æ®ä¸æ°å¢äº `storageLocation`ï¼åæ¾ä½ç½®ï¼å段ï¼ä¾å端å±ç¤ºè®¾å¤æå¨çç©çä½ç½®ä¿¡æ¯ã |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãæ°éæ¥å£ - getRealData |
| | | |
| | | ### æ¥å£ä¿¡æ¯ |
| | | |
| | | | é¡¹ç® | å¼ | |
| | | |------|-----| |
| | | | æ¥å£è·¯å¾ | `/iot/getRealData` | |
| | | | è¯·æ±æ¹å¼ | GET | |
| | | | æ¥å£æè¿° | 宿¶è·åç©è设å¤ç温湿度ãäºæ°§åç¢³çæ°éæ°æ® | |
| | | |
| | | ### 请æ±åæ° |
| | | |
| | | æ åæ° |
| | | |
| | | ### è¿åæ°æ®ç»æ |
| | | |
| | | ```json |
| | | { |
| | | "code": 200, |
| | | "msg": "æä½æå", |
| | | "data": [ |
| | | { |
| | | "guid": "设å¤å¤é¨ç¼ç ", |
| | | "deviceName": "设å¤åç§°", |
| | | "storageLocation": "åæ¾ä½ç½®ãæ°å¢ã", |
| | | "status": "å¨çº¿/离线/error", |
| | | "statusMessage": "ç¶æè¯´æï¼ä»
å¨å¼å¸¸æ¶è¿åï¼", |
| | | "light": "å
ç
§å¼+åä½ï¼å¦ï¼150Luxï¼", |
| | | "temperature": "温度å¼+åä½ï¼å¦ï¼25.5âï¼", |
| | | "humidity": "湿度å¼+åä½ï¼å¦ï¼60%RHï¼", |
| | | "co2": "äºæ°§å碳å¼+åä½ï¼å¦ï¼400ppmï¼", |
| | | "battery": "çµæ± çµé+åä½ï¼å¦ï¼85%ï¼" |
| | | } |
| | | ] |
| | | } |
| | | ``` |
| | | |
| | | ### è¿ååæ®µè¯´æ |
| | | |
| | | | åæ®µå | ç±»å | 说æ | æ¯å¦æ°å¢ | |
| | | |--------|------|------|----------| |
| | | | guid | String | 设å¤å¤é¨ç¼ç ï¼externalCodeï¼ | å¦ | |
| | | | deviceName | String | 设å¤åç§° | å¦ | |
| | | | **storageLocation** | String | **设å¤åæ¾ä½ç½®** | **æ¯** | |
| | | | status | String | 设å¤ç¶æï¼å¨çº¿ã离线ãerror | å¦ | |
| | | | statusMessage | String | ç¶æè¡¥å
说æï¼ä»
å¨å¼å¸¸æ¶åå¨ï¼ | å¦ | |
| | | | light | String | å
ç
§å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | temperature | String | 温度å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | humidity | String | 湿度å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | co2 | String | äºæ°§å碳å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | battery | String | çµæ± çµéï¼å¸¦åä½ï¼ | å¦ | |
| | | |
| | | ### å端èè°ç¤ºä¾ |
| | | |
| | | ```javascript |
| | | // è°ç¨æ¥å£ |
| | | axios.get('/iot/getRealData').then(res => { |
| | | const devices = res.data; |
| | | devices.forEach(device => { |
| | | console.log(`设å¤ï¼${device.deviceName}`); |
| | | console.log(`åæ¾ä½ç½®ï¼${device.storageLocation}`); // æ°å¢å段 |
| | | console.log(`温度ï¼${device.temperature}`); |
| | | console.log(`湿度ï¼${device.humidity}`); |
| | | console.log(`CO2ï¼${device.co2}`); |
| | | console.log(`ç¶æï¼${device.status}`); |
| | | }); |
| | | }); |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## äºãåºåç©èè®¾å¤æ¥å£ - iotRealtime |
| | | |
| | | ### æ¥å£ä¿¡æ¯ |
| | | |
| | | | é¡¹ç® | å¼ | |
| | | |------|-----| |
| | | | æ¥å£è·¯å¾ | `/stockInventory/iotRealtime` | |
| | | | è¯·æ±æ¹å¼ | POST | |
| | | | Content-Type | application/json | |
| | | | æ¥å£æè¿° | è·ååºåç»å®çç©è设å¤å®æ¶æ°éæ°æ® | |
| | | |
| | | ### 请æ±åæ° |
| | | |
| | | ```json |
| | | [设å¤ID1, 设å¤ID2, 设å¤ID3] |
| | | ``` |
| | | |
| | | **åæ°è¯´æï¼** |
| | | |
| | | | åæ°å | ç±»å | å¿
å¡« | 说æ | |
| | | |--------|------|------|------| |
| | | | - | List<Long> | æ¯ | ç©è设å¤IDæ°ç» | |
| | | |
| | | ### è¿åæ°æ®ç»æ |
| | | |
| | | ```json |
| | | { |
| | | "code": 200, |
| | | "msg": "æä½æå", |
| | | "data": { |
| | | "devices": [ |
| | | { |
| | | "deviceId": "设å¤ID", |
| | | "deviceName": "设å¤åç§°", |
| | | "deviceModel": "设å¤è§æ ¼åå·", |
| | | "externalCode": "设å¤å¤é¨ç¼ç ", |
| | | "storageLocation": "åæ¾ä½ç½®ãæ°å¢ã", |
| | | "guid": "设å¤å¤é¨ç¼ç ", |
| | | "status": "å¨çº¿/离线/error", |
| | | "statusMessage": "ç¶æè¯´æï¼ä»
å¨å¼å¸¸æ¶è¿åï¼", |
| | | "light": "å
ç
§å¼+åä½", |
| | | "temperature": "温度å¼+åä½", |
| | | "humidity": "湿度å¼+åä½", |
| | | "co2": "äºæ°§å碳å¼+åä½", |
| | | "battery": "çµæ± çµé+åä½" |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### è¿ååæ®µè¯´æï¼devices æ°ç»å
ç´ ï¼ |
| | | |
| | | | åæ®µå | ç±»å | 说æ | æ¯å¦æ°å¢ | |
| | | |--------|------|------|----------| |
| | | | deviceId | String | 设å¤ID | å¦ | |
| | | | deviceName | String | 设å¤åç§° | å¦ | |
| | | | deviceModel | String | 设å¤è§æ ¼åå· | å¦ | |
| | | | externalCode | String | 设å¤å¤é¨ç¼ç | å¦ | |
| | | | **storageLocation** | String | **设å¤åæ¾ä½ç½®** | **æ¯** | |
| | | | guid | String | 设å¤å¤é¨ç¼ç ï¼æ¥èªæ°éå¹³å°ï¼ | å¦ | |
| | | | status | String | 设å¤ç¶æï¼å¨çº¿ã离线ãerror | å¦ | |
| | | | statusMessage | String | ç¶æè¡¥å
说æï¼ä»
å¨å¼å¸¸æ¶åå¨ï¼ | å¦ | |
| | | | light | String | å
ç
§å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | temperature | String | 温度å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | humidity | String | 湿度å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | co2 | String | äºæ°§å碳å¼ï¼å¸¦åä½ï¼ | å¦ | |
| | | | battery | String | çµæ± çµéï¼å¸¦åä½ï¼ | å¦ | |
| | | |
| | | ### å端èè°ç¤ºä¾ |
| | | |
| | | ```javascript |
| | | // è°ç¨æ¥å£ |
| | | const deviceIds = [1, 2, 3]; |
| | | axios.post('/stockInventory/iotRealtime', deviceIds).then(res => { |
| | | const result = res.data; |
| | | result.devices.forEach(device => { |
| | | console.log(`设å¤IDï¼${device.deviceId}`); |
| | | console.log(`设å¤åç§°ï¼${device.deviceName}`); |
| | | console.log(`åæ¾ä½ç½®ï¼${device.storageLocation}`); // æ°å¢å段 |
| | | console.log(`è§æ ¼åå·ï¼${device.deviceModel}`); |
| | | console.log(`温度ï¼${device.temperature}`); |
| | | console.log(`湿度ï¼${device.humidity}`); |
| | | console.log(`ç¶æï¼${device.status}`); |
| | | }); |
| | | }); |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãå端æ¹é è¦ç¹ |
| | | |
| | | ### 1. å表/å¡çå±ç¤ºæ¹é |
| | | |
| | | è¥å端æè®¾å¤å表æå¡çå±ç¤ºï¼éæ°å¢åæ¾ä½ç½®å±ç¤ºåºåï¼ |
| | | |
| | | ```html |
| | | <!-- 示ä¾ï¼è®¾å¤ä¿¡æ¯å¡ç --> |
| | | <div class="device-card"> |
| | | <div class="device-name">{{ device.deviceName }}</div> |
| | | <!-- æ°å¢åæ¾ä½ç½®å±ç¤º --> |
| | | <div class="storage-location">åæ¾ä½ç½®ï¼{{ device.storageLocation || 'ææ ' }}</div> |
| | | <div class="device-status">ç¶æï¼{{ device.status }}</div> |
| | | <div class="device-data"> |
| | | <span>温度ï¼{{ device.temperature }}</span> |
| | | <span>湿度ï¼{{ device.humidity }}</span> |
| | | <span>CO2ï¼{{ device.co2 }}</span> |
| | | </div> |
| | | </div> |
| | | ``` |
| | | |
| | | ### 2. è¡¨æ ¼åæ°å¢ |
| | | |
| | | è¥å端使ç¨è¡¨æ ¼å±ç¤ºè®¾å¤æ°æ®ï¼éæ°å¢åæ¾ä½ç½®åï¼ |
| | | |
| | | | åå | åæ®µ | 说æ | |
| | | |------|------|------| |
| | | | 设å¤åç§° | deviceName | - | |
| | | | **åæ¾ä½ç½®** | **storageLocation** | **æ°å¢å** | |
| | | | 温度 | temperature | - | |
| | | | 湿度 | humidity | - | |
| | | | CO2 | co2 | - | |
| | | | ç¶æ | status | - | |
| | | |
| | | ### 3. 空å¼å¤ç |
| | | |
| | | `storageLocation` åæ®µå¯è½ä¸ºç©ºå符串ï¼å端éåå
åºå¤çï¼ |
| | | |
| | | ```javascript |
| | | const location = device.storageLocation || 'ææ åæ¾ä½ç½®ä¿¡æ¯'; |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## åãæ°æ®æ¥æºè¯´æ |
| | | |
| | | `storageLocation` åæ®µæ¥æºäºè®¾å¤å°è´¦è¡¨ï¼`device_ledger`ï¼ç `storage_location` åæ®µï¼è¯¥å段å¨è®¾å¤å°è´¦ç®¡ç模åç»´æ¤ã |
| | | |
| | | --- |
| | | |
| | | ## äºãæµè¯è¦ç¹ |
| | | |
| | | 1. **æ£å¸¸åºæ¯**ï¼è®¾å¤å°è´¦ä¸å·²ç»´æ¤åæ¾ä½ç½®ï¼æ¥å£è¿ååºå
å«è¯¥åæ®µå¼ |
| | | 2. **空å¼åºæ¯**ï¼è®¾å¤å°è´¦ä¸åæ¾ä½ç½®ä¸ºç©ºï¼æ¥å£åºè¿å空å符串ï¼å端éå
åºå±ç¤ºï¼ |
| | | 3. **离线设å¤**ï¼è®¾å¤ç¦»çº¿æ¶ï¼`storageLocation` åæ®µä»åºæ£å¸¸è¿å |
| | | 4. **æ¹éæ¥è¯¢**ï¼å¤ä¸ªè®¾å¤IDæ¥è¯¢æ¶ï¼æ¯ä¸ªè®¾å¤é½åºè¿å `storageLocation` åæ®µ |
| | | |
| | | --- |
| | | |
| | | ## å
ãçæ¬è®°å½ |
| | | |
| | | | çæ¬ | æ¥æ | åæ´å
容 | |
| | | |------|------|----------| |
| | | | v1.0 | 2026-06-04 | æ°å¢ storageLocationï¼åæ¾ä½ç½®ï¼å段 | |