bch-mqtt2influxdb icon indicating copy to clipboard operation
bch-mqtt2influxdb copied to clipboard

Bugfix variable_to_jsonpath: Param is a string, not an object

Open mahiso opened this issue 2 years ago • 1 comments

mahiso avatar Nov 03 '22 20:11 mahiso

Hi, this helped me a lot. Just discovered same problem trying to recalculate payload (number, non-json) using expression:

2023-01-23 00:33:08,040 DEBUG: mqtt_on_message zigbee2mqtt/pir-chodba/battery b'100'
Traceback (most recent call last):
  File "/usr/bin/mqtt2influxdb", line 11, in <module>
    load_entry_point('mqtt2influxdb==1.5.2', 'console_scripts', 'mqtt2influxdb')()
  File "/usr/lib/python3.7/site-packages/mqtt2influxdb/cli.py", line 57, in main
    raise e
  File "/usr/lib/python3.7/site-packages/mqtt2influxdb/cli.py", line 45, in main
    m2i.run()
  File "/usr/lib/python3.7/site-packages/mqtt2influxdb/mqtt2influxdb.py", line 67, in run
    self._mqtt.loop_forever()
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 1779, in loop_forever
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 1181, in loop
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 1572, in loop_read
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 2310, in _packet_read
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 2936, in _packet_handle
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 3216, in _handle_publish
  File "/usr/lib/python3.7/site-packages/paho/mqtt/client.py", line 3444, in _handle_on_message
  File "/usr/lib/python3.7/site-packages/mqtt2influxdb/mqtt2influxdb.py", line 145, in _on_mqtt_message
    val = self._get_value_from_str_or_JSONPath(point['fields'][key]['value'], msg)
  File "/usr/lib/python3.7/site-packages/mqtt2influxdb/mqtt2influxdb.py", line 218, in _get_value_from_str_or_JSONPath
    json_field = variable_to_jsonpath(var)
  File "/usr/lib/python3.7/site-packages/mqtt2influxdb/expr.py", line 14, in variable_to_jsonpath
    return p.var.replace('JSON_', '$').replace('_', '.')
AttributeError: 'str' object has no attribute 'var'

Config:

# ...
  - measurement: voltage
    topic: zigbee2mqtt/+/voltage
    fields:
      value: = $.payload / 1000
    tags:
      id: $.topic[1]

With this patch mqtt message is precesed as expected.

kapitan-iglu avatar Jan 23 '23 00:01 kapitan-iglu