主要做了一下工作:
- mqtt.json里mapping配置项映射到__mapping_sub_topics字典,键名是主题(topicFilter),键值是消息转换器对象集合(converter),并且订阅相关主题(设备数据上传)
```python
构建转换器对象
default_converter_class_name = “JsonMqttUplinkConverter” converter_class_name = mapping[“converter”].get(“extension”, default_converter_class_name) module = TBModuleLoader.import_module(self._connector_type, converter_class_name) converter = module(mapping)
regex_topic = TBUtility.topic_to_regex(mapping[“topicFilter”]) if not self.mapping_sub_topics.get(regex_topic): self.mapping_sub_topics[regex_topic] = []
建立映射
self.__mapping_sub_topics[regex_topic].append(converter)
订阅消息
self.__subscribe(mapping[“topicFilter”], mapping.get(“subscriptionQos”, 1))
```json{'sensor/data': [<JsonMqttUplinkConverter.JsonMqttUplinkConverter object at 0x0000024D73697A48>]}
mqtt.json里connectRequests配置项映射到__connect_requests_sub_topics字典,键名是主题(topicFilter),键值是mqtt.json里的connectRequests配置项,并且订阅相关主题(设备连接)
self.__subscribe(request["topicFilter"], request.get("subscriptionQos", 1))topic_filter = TBUtility.topic_to_regex(request.get("topicFilter"))self.__connect_requests_sub_topics[topic_filter] = request
{'sensor/connect':{'topicFilter': 'sensor/connect', 'deviceNameJsonExpression': '${serialNumber}'}}
mqtt.json里disconnectRequests配置项映射到__disconnect_requests_sub_topics字典,键名是主题(topicFilter),键值是mqtt.json里的disconnectRequests配置项,并且订阅相关主题(设备断开连接)
{'sensor/disconnect': {'topicFilter': 'sensor/disconnect', 'deviceNameJsonExpression': '${serialNumber}'}}
mqtt.json里attributeRequests配置项映射到__attribute_requests_sub_topics字典,键名是主题(topicFilter),键值是mqtt.json里的attributeRequests配置项,并且订阅相关主题(设备属性相关)
{'v1/devices/me/attributes/request': {'retain': false,'topicFilter': 'v1/devices/me/attributes/request','deviceNameTopicExpression": "${SerialNumber}','attributeNameJsonExpression": "${sensorModel}'}}
