Ok.
I think that I find the problem…
I move my test items to another file (rest are commented):
Number test1 "Napięcie L1: [%d V]" <voltage> (gSonoffVoltage, gSonoffMeasurement)
{ mqtt="<[broker:tele/sonoff35/SENSOR:state:JSONPATH($.ENERGY.Voltage.[0])]" }
Number test2 "Napięcie L1: [%d V]" <voltage> (gSonoffVoltage, gSonoffMeasurement)
{ mqtt="<[broker:tele/sonoff35/SENSOR:state:JSONPATH($.ENERGY.Voltage.0)]" }
Number test3 "Napięcie L1: [%d V]" <voltage> (gSonoffVoltage, gSonoffMeasurement)
{ mqtt="<[broker:tele/sonoff35/SENSOR:state:JSONPATH($.ENERGY.Voltage[0])]" }
Errors:
2020-05-26 18:47:25.958 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonoff2.items'
==> /opt/openhab/userdata/logs/events.log <==
2020-05-26 18:47:25.966 [vent.ItemStateChangedEvent] - test1 changed from NULL to 237.0
==> /opt/openhab/userdata/logs/openhab.log <==
2020-05-26 18:47:26.991 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'sonoff2.items'
2020-05-26 18:47:32.758 [WARN ] [.mqtt.internal.MqttMessageSubscriber] - Error processing MQTT message.
org.openhab.core.transform.TransformationException: Invalid path '$.ENERGY.Voltage.0' in '{"Time":"2020-05-26T18:47:32","ENERGY":{"TotalStartTime":"2020-05-26T18:47:21","Total":69.225,"Yesterday":10.070,"Today":8.053,"Period":0,"Power":[65,76,165],"ApparentPower":[141,267,200],"ReactivePower":[125,256,113],"Factor":[0.46,0.28,0.82],"Frequency":[50,50,50],"Voltage":[237,237,237],"Current":[0.595,1.129,0.845]},"DS18B20":{"Id":"0015232FE7EE","Temperature":25.9},"TempUnit":"C"}'
at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:71) ~[bundleFile:?]
at org.openhab.binding.mqtt.internal.MqttMessageSubscriber.processMessage(MqttMessageSubscriber.java:137) [bundleFile:?]
at org.openhab.io.transport.mqtt.internal.MqttBrokerConnection.messageArrived(MqttBrokerConnection.java:574) [bundleFile:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:475) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:379) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:183) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
==> /opt/openhab/userdata/logs/events.log <==
2020-05-26 18:47:32.762 [vent.ItemStateChangedEvent] - test3 changed from NULL to 237
And from karaf console it looks like the syntax of:
and
are correct:
openhab> smarthome:items list test*
test3 (Type=NumberItem, State=237, Label=Napięcie L1:, Category=voltage, Groups=[gSonoffVoltage, gSonoffMeasurement])
test1 (Type=NumberItem, State=237, Label=Napięcie L1:, Category=voltage, Groups=[gSonoffVoltage, gSonoffMeasurement])
test2 (Type=NumberItem, State=NULL, Label=Napięcie L1:, Category=voltage, Groups=[gSonoffVoltage, gSonoffMeasurement])
The problem is that I want to update value from two MQTT topic. When I change test1 definition to:
Number test1 "Napięcie L1: [%d V]" <voltage> (gSonoffVoltage, gSonoffMeasurement)
{ mqtt="<[broker:tele/sonoff35/SENSOR:state:JSONPATH($.ENERGY.Voltage.[0])],
<[broker:stat/sonoff35/STATUS8:state:JSONPATH($.StatusSNS.ENERGY.Voltage.[0])]" }
and remove other (test2 and test3) it’s stop working:
2020-05-26 18:58:59.818 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonoff2.items'
==> /opt/openhab/userdata/logs/events.log <==
2020-05-26 18:58:59.826 [vent.ItemStateChangedEvent] - test1 changed from NULL to 238.0
==> /opt/openhab/userdata/logs/openhab.log <==
2020-05-26 18:59:00.831 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'sonoff2.items'
2020-05-26 18:59:02.763 [WARN ] [.mqtt.internal.MqttMessageSubscriber] - Error processing MQTT message.
org.openhab.core.transform.TransformationException: An error occurred while transforming JSON expression.
at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:71) ~[bundleFile:?]
at org.openhab.binding.mqtt.internal.MqttMessageSubscriber.processMessage(MqttMessageSubscriber.java:137) [bundleFile:?]
at org.openhab.io.transport.mqtt.internal.MqttBrokerConnection.messageArrived(MqttBrokerConnection.java:574) [bundleFile:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:475) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:379) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:183) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
2020-05-26 18:59:12.717 [WARN ] [.mqtt.internal.MqttMessageSubscriber] - Error processing MQTT message.
org.openhab.core.transform.TransformationException: An error occurred while transforming JSON expression.
at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:71) ~[bundleFile:?]
at org.openhab.binding.mqtt.internal.MqttMessageSubscriber.processMessage(MqttMessageSubscriber.java:137) [bundleFile:?]
at org.openhab.io.transport.mqtt.internal.MqttBrokerConnection.messageArrived(MqttBrokerConnection.java:574) [bundleFile:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:475) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:379) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:183) [org.eclipse.paho.client.mqttv3-1.1.0.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
The MQTT looks like:
tele/sonoff35/STATE {"Time":"2020-05-26T19:01:22","Uptime":"2T21:47:00","UptimeSec":251220,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"atomix","BSSId":"BC:26:C7:E1:66:61","Channel":1,"RSSI":72,"Signal":-64,"LinkCount":2,"Downtime":"0T00:00:09"}}
tele/sonoff35/SENSOR {"Time":"2020-05-26T19:01:22","ENERGY":{"TotalStartTime":"2020-05-26T19:01:12","Total":69.296,"Yesterday":10.070,"Today":8.124,"Period":0,"Power":[80,101,170],"ApparentPower":[137,390,210],"ReactivePower":[112,377,124],"Factor":[0.58,0.26,0.81],"Frequency":[50,50,50],"Voltage":[238,238,238],"Current":[0.576,1.641,0.882]},"DS18B20":{"Id":"0015232FE7EE","Temperature":25.8},"TempUnit":"C"}
tele/sonoff35/STATE {"Time":"2020-05-26T19:01:32","Uptime":"2T21:47:10","UptimeSec":251230,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"atomix","BSSId":"BC:26:C7:E1:66:61","Channel":1,"RSSI":68,"Signal":-66,"LinkCount":2,"Downtime":"0T00:00:09"}}
tele/sonoff35/SENSOR {"Time":"2020-05-26T19:01:32","ENERGY":{"TotalStartTime":"2020-05-26T19:01:27","Total":69.297,"Yesterday":10.070,"Today":8.125,"Period":1,"Power":[83,100,170],"ApparentPower":[142,384,209],"ReactivePower":[115,370,122],"Factor":[0.58,0.26,0.81],"Frequency":[50,50,50],"Voltage":[238,238,238],"Current":[0.595,1.611,0.878]},"DS18B20":{"Id":"0015232FE7EE","Temperature":25.8},"TempUnit":"C"}
I just remove the second topic. But this syntax (with two topic) works for i.e. total energy:
Number Sonoff_3phase_Meter_Total_Energy "Całkowite zużycie energii: [%.3f kWh]" <power> (gSonoffTotalEnergy, gSonoffMeasurement)
{ mqtt="<[broker:tele/sonoff35/SENSOR:state:JSONPATH($.ENERGY.Total)],
<[broker:stat/sonoff35/STATUS8:state:JSONPATH($.StatusSNS.ENERGY.Total)]" }
There is no error on Sonoff_3phase_Meter_Total_Energy
.
I think its solved my problem. But I don’t know why it doesn’t work.