Hi. I have the following payload ;
[ {
"channel": 1,
"value": 22.54,
"type": "temp",
"unit": "c"
},
{
"channel": 2,
"value": 41.2,
"type": "rel_hum",
"unit": "p"
} ]
and the following telegraf config ;
data_format = "json"
json_string_fields = [ "type","unit" ]
[[inputs.mqtt_consumer.topic_parsing]]
topic = "+/+/+"
tags = "site/room/client_id"
Problem is that only the last item of the JSON array gets to my influxdb. How can I fix that and should I use json_v2 instead of json data_format?
Thanks
Franky1
2
Apart from the json parser configuration, that seems to be not a valid json!?
What are these values stemp
, shumi
under the value
key?
Franky1
3
This example should work, adjust it to your needs:
[[inputs.mqtt_consumer]]
# the mqtt plugin config here
# ....
data_format = "json_v2"
[[inputs.mqtt_consumer.json_v2]]
[[inputs.mqtt_consumer.json_v2.object]]
path = "@this"
tags = ["type"]
[inputs.mqtt_consumer.json_v2.object.fields]
channel = "int"
value = "float" # is this a float value?
unit = "string"
1 Like
stemp
, shumi
are variable holding the value for temperature and humidity, variable type is float.
why do you say itâs not a valid json?
Can I keep this?
I publish to this topic format âhouse/room/client_idâ to get the site, room and client unique id.
Franky1
6
Because the json parser need real values, not variables.
So i assume, what you showed was a template, not the real payload.
Yes, you have to keep this, because the mqtt topic parsing is independent from the json parsing of the payload.
1 Like
Great, your help is really appreciated!
made the changes and I still get only the ârel_humiâ data, no âtempâ in influxdbâŠ
I have a basic file output that is fine, each publish generate two lines of data.
I use influxdb 1.8.10 and I check the measurements with the following query ;
use mydatabase
select * from mqtt_consumer
Franky1
9
Then we need your full mqtt input plugin config and a sample snippet of your real json data.