| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Sites; |
| | | import com.doumee.dao.business.web.request.SitesMonitorBikeDTO; |
| | | import com.doumee.dao.business.web.request.SitesMonitorDTO; |
| | | import com.doumee.service.business.SitesService; |
| | | import io.swagger.annotations.Api; |
| | |
| | | @Override |
| | | @PostConstruct |
| | | public void startSubcribe() { |
| | | mqttToolService.subscribe(new String[]{ Constants.MqttTopic.lockInfo, Constants.MqttTopic.closeLock}); |
| | | mqttToolService.subscribe(new String[]{ Constants.MqttTopic.sub_lockInfo, Constants.MqttTopic.sub_closeLock}); |
| | | } |
| | | } |
| | |
| | | public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE"; |
| | | public static String REDIS_DEBUG_STR="test_"; |
| | | public interface MqttTopic{ |
| | | //å¼éï¼åå¸ï¼ |
| | | |
| | | String topic_index = "device/lock/"; |
| | | String openLock = "device/lock/+/unlock"; |
| | | //å¼éï¼åå¸ï¼ |
| | | String pub_openLock = "device/lock/{siteId}/{lockId}/unlock"; |
| | | //éä¿¡æ¯ï¼å¨åå§åãç¶æåæ´æ¶ä¼æ¨ééç宿´ç¶æ(订é
ï¼ |
| | | String lockInfo = "device/lock/+/info"; |
| | | String sub_lockInfo = "device/lock/+/+/info"; |
| | | //è¿è½¦é头ï¼è®¢é
ï¼ |
| | | String closeLock = "device/lock/+/bike"; |
| | | String sub_closeLock = "device/lock/+/+/bike"; |
| | | //宿¶è·åéä¿¡æ¯ï¼åå¸ï¼ |
| | | String getLockInfo = "device/lock/+/getInfo"; |
| | | String pub_getLockInfo = "device/lock/{siteId}/{lockId}/getInfo"; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public MqttLog openLock(Locks locks) { |
| | | String topic = Constants.MqttTopic.openLock.replace("+", locks.getId()); |
| | | String topic = Constants.MqttTopic.pub_openLock.replace("+", locks.getId()); |
| | | int result = mqttToolService.pubMessage("{}",topic); |
| | | MqttLog mqttLog = createPushLog(topic,result,"请æ±å¼é_"+locks.getId()); |
| | | return mqttLog; |
| | |
| | | */ |
| | | @Override |
| | | public MqttLog getLockInfo(Locks locks) { |
| | | String topic = Constants.MqttTopic.getLockInfo.replace("+", locks.getId()); |
| | | String topic = Constants.MqttTopic.pub_getLockInfo.replace("+", locks.getId()); |
| | | int result = mqttToolService.pubMessage("{}",topic); |
| | | MqttLog mqttLog = createPushLog(topic,result,"宿¶æ¥è¯¢éä¿¡æ¯_"+locks.getId()); |
| | | return mqttLog; |
| | |
| | | @Override |
| | | public void listener(String msgId,String param,String topic) { |
| | | log.info("mqttæ¶æ¯è®¢é
==================="+param); |
| | | String info = Constants.MqttTopic.lockInfo.substring(Constants.MqttTopic.lockInfo.lastIndexOf("/")+1) ; |
| | | String closeLock = Constants.MqttTopic.closeLock.substring(Constants.MqttTopic.closeLock.lastIndexOf("/")+1) ; |
| | | String info = Constants.MqttTopic.sub_lockInfo.substring(Constants.MqttTopic.sub_lockInfo.lastIndexOf("/")+1) ; |
| | | String closeLock = Constants.MqttTopic.sub_closeLock.substring(Constants.MqttTopic.sub_closeLock.lastIndexOf("/")+1) ; |
| | | if(topic.indexOf(Constants.MqttTopic.topic_index)!=0 |
| | | ||topic.split("/").length < 5 |
| | | || (!StringUtils.contains(topic, info) |
| | | &&!StringUtils.contains(topic,closeLock))){ |
| | | log.error("mqttæ¶æ¯è®¢é
===========æ ææ°æ®========"+param); |
| | | return; |
| | | } |
| | | String lockid = getLockIdFromTopic(topic); |
| | | if(StringUtils.isBlank(lockid)){ |
| | | |
| | | String[] ss = topic.split("/"); |
| | | String siteid = ss[2];//ç«ç¹ç¼ç |
| | | String lockid = ss[3];//é头ç¼ç |
| | | if(StringUtils.isBlank(siteid)||StringUtils.isBlank(lockid)){ |
| | | //妿é头ç¼ç 为空 |
| | | log.error("mqttæ¶æ¯è®¢é
==============æ ææ°æ®====="+param); |
| | | return; |
| | |
| | | |
| | | # WEBæå¡å¨é
ç½® |
| | | server: |
| | | port: 10013 |
| | | port: 10025 |
| | | |
| | | mqtt: |
| | | clientid: doumeetestweb |
| | |
| | | # èªè¡è½¦ mqtt åè®®ææ¡£ |
| | | |
| | | ## {"bikeCode":"1234567890","id":"kjflksjlkfsjdlk","siteId": 456,"status":0,"code":"789"} |
| | | |
| | | ## {"bikeCode":"1234567890","lockId":789,"siteId": 456,"time":"2023-10-13 10:12:90"} |
| | | ## éä¿¡è§è |
| | | - æ¯ä¸ªç«ç¹ä¸ä¸ª mqtt è¿æ¥ï¼clientId 为 SITE_ç«ç¹ç¼å· |
| | | - ä¸ä¸ªç«ç¹ç±é¨ç½²å¨ä¸ä½æºä¸ç软件éè¿canæ»çº¿ä¸å¤ä¸ªééä¿¡ï¼å¹¶ä¸æå¡å¨éè¿mqttåæ¶æ¯è½¬å |
| | | |
| | | |
| | | ## sub: device/lock/{id}/info |
| | | ## sub: device/lock/{siteId}/{lockId}/info |
| | | > **éä¿¡æ¯ï¼å¨åå§åãç¶æåæ´æ¶ä¼æ¨ééç宿´ç¶æ** |
| | | - æ°æ® |
| | | ```json |
| | | { |
| | | "siteId": "1015", // ç«ç¹ç¼å· |
| | | "code": "01", // éç¼å· |
| | | "id": "123456789103", // éå¯ä¸id,å主é¢{id} |
| | | "status": 1, // ç¶æï¼0éå, 1æå¼ï¼2è¿è¡ä¸, 3å¼å¸¸ |
| | | "bikeCode": "1234567890" // èªè¡è½¦icå¡å·ï¼æ 车为空 |
| | | "siteId": "1015", // ç«ç¹ç¼å·,å主é¢{siteId} |
| | | "lockId": 2, // éç¼å·,å主é¢{lockId} |
| | | "status": 1, // ç¶æï¼0éå, 1æå¼ï¼2è¿è¡ä¸, 3å¼å¸¸, -1èªæ£ä¸ |
| | | "bikeCode": "12345678" // èªè¡è½¦icå¡å·ï¼8使°å,å¦ï¼10000012ï¼æ 车为空 |
| | | } |
| | | |
| | | ## {"bikeCode":"1234567890","id":"kjflksjlkfsjdlk","siteId": 456,"status":0,"code":"789"} |
| | | ``` |
| | | |
| | | ## pub: device/lock/{id}/getInfo |
| | | ## pub: device/lock/{siteId}/{lockId}/getInfo |
| | | > 宿¶è·åéä¿¡æ¯ |
| | | - æ°æ® |
| | | ```json |
| | | {} |
| | | ``` |
| | | |
| | | ## pub: device/lock/{id}/unlock |
| | | ## pub: device/lock/{siteId}/{lockId}/unlock |
| | | > å¼éï¼æå失败å¯å
³æ³¨infoæ¶æ¯æ¨é |
| | | - æ°æ® |
| | | ```json |
| | | {} |
| | | ``` |
| | | |
| | | ## sub: device/lock/{id}/bike |
| | | ## sub: device/lock/{siteId}/{lockId}/bike |
| | | > è¿è½¦, è¿è½¦æåæ¶ï¼è·å¾æè¿è½¦è¾icå¡å·æ¨é |
| | | - æ°æ® |
| | | ```json |
| | | { |
| | | "bikeCode": "1234567890", |
| | | "lockId": 123, |
| | | "siteId": 234, |
| | | "time": "2023-10-13 10:12:90" |
| | | "bikeCode": "12345678", |
| | | "lockId": 2, |
| | | "siteId": "1050", |
| | | "time": "2023-10-13 10:12:90" // ç«ç¹ä¸ä½æºæ¶å°è¿è½¦æä»¤çæ¶é´ï¼ä»
ååèï¼è¯·ä»¥æå¡å¨æ¶é´ä¸ºå |
| | | } |
| | | ## {"bikeCode":"1234567890","lockId":789,"siteId": 456,"time":"2023-10-13 10:12:90"} |
| | | ``` |
| | | ``` |
| | | |
| | | |