1

我的 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'

我还应该怎么做才能让它发挥作用?

这些值在哪里处理?

我用https://pythex.org/检查了我的表达

4

0 回答 0