我的 MQTT 主题如下所示:
ABC123DE/devices/sensor1/controls/temperature
在哪里
sensor1
是设备名称,并且temperature
是设备类型
我希望他们都在 TB 中通过。
我的mqtt.json
:
...
"mapping": [
{
"topicFilter": "+/devices/+/controls/+",
"converter": {
"type": "custom",
"deviceNameTopicExpression": "(?<=/controls/)(.*?)(?=$)",
"deviceTypeTopicExpression": "(?<=devices\/)(.*?)(?=\/controls)",
"extension": "TestMqttConverter",
"extension-config": {}
}
}
],
...
我的test_mqtt_uplink_converter.py
:
...
class TestMqttConverter(MqttUplinkConverter):
def __init__(self, config):
self.__config = config.get('converter')
self.dict_result = {}
def convert(self, topic, body):
try:
self.dict_result["telemetry"] = [{"test": "123"}]
return self.dict_result
except Exception as e:
log.exception('Error in converter')
log.exception(e)
当我发布:
mosquitto_pub -t ABC123DE/devices/sensor1/controls/temperatire -m 100
我收到此错误:
''2020-07-01 13:38:03' - ERROR - tb_utility - 62 - deviceName is empty in data: {"telemetry": [{"test": "123"}]}'
''2020-07-01 13:38:03' - ERROR - tb_gateway_service - 263 - Data from MQTT Broker Connector connector is invalid.'
''2020-07-01 13:38:03' - INFO - mqtt_connector - 343 - Successfully converted message from topic ABC123DE/devices/sensor1/controls/temperatire'
我还应该怎么做才能让它发挥作用?
这些值在哪里处理?