JSONPATH Transformation not working completely

Hi there,

I’d like to integrate my first smartplug via Tasmota and MQTT. Unfortunately, few Items doesn’t work at all.

I am using Openhab 2.4 (latest stable updates) on a Raspberry Pi 2, MQTT Server is done by embedded Server.

I will start with the MQTT Message and Things/Items/Sitemap definitions:

This is a sample Message from my Tasmota-flashed Gosund smartplug

{"Time":"2019-07-23T23:10:19","ENERGY":{"TotalStartTime":"2019-07-19T23:08:28","Total":6.428,"Yesterday":1.493,"Today":1.808,"Period":0,"Power":6,"ApparentPower":7,"ReactivePower":4,"Factor":0.78,"Voltage":235,"Current":0.030}}

My Things-file is defined as follows

Bridge mqtt:broker:SARAH "SARAH" [ host="192.168.178.61", port=1883, secure=false, username="SARAH", password="dJkk3GZ3711", clientID="openHAB2" ]
{
    // Waschmaschine
    Thing topic WashingMachine "Waschmaschine" @ "Kueche" {
    Channels:
        Type switch : power         "Power"                 [ stateTopic="home/kitchen/washingmachine/stat/POWER", commandTopic="home/kitchen/washingmachine/cmnd/POWER" ]
        Type number : voltage       "Spannung"              [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Voltage" ]
        Type number : load          "Leistung"              [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Power" ]
        Type number : appload       "Scheinleistung"        [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.ApparentPower" ]
        Type number : reacload      "Blindleistung"         [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.ReactivePower" ]
        Type number : factor        "Leistungsfaktor"       [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Factor" ]
        Type number : current       "Strom"                 [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
        Type number : today         "Verbrauch heute"       [ stateTopic="home/kitchen/washingmachine/tele/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Today" ]
        Type number : yesterday     "Verbrauch gestern"     [ stateTopic="home/kitchen/washingmachine/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Yesterday" ]
        Type number : total         "Verbrauch total"       [ stateTopic="home/kitchen/washingmachine/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : RSSI          "Signalstärke"          [ stateTopic="home/kitchen/washingmachine/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI" ]
        Type switch : reachable     "Erreichbarkeit"        [ stateTopic="home/kitchen/washingmachine/LWT"]
    }
}

My item file is:

Group WashingMashine
Switch WashingMachinePower      "Power []"                          <washingmachine>        (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:power"}
Number WashingMachineVoltage    "Spannung [%.0f V]"                 <energy>                (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:voltage"}
Number WashingMachineLoad       "Leistung [%.0f W]"                 <energy>                (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:load"}
Number WashingMachineAppLoad    "Scheinleistung [%.0f VA]"          <energy>                (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:appload"}
Number WashingMachineReacLoad   "Blindleistung [%.0f Var]"          <energy>                (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:reacload"}
Number WashingMachineFactor     "Leistungsfaktor [%.2f]"                                    (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:factor"}
Number WashingMachineCurrent    "Strom [%.3f A]"                    <energy>       (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:current"}
Number WashingMachineToday      "Verbrauch heute [%.3f kWh]"        <energy>  (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:today"}
Number WashingMachineTotal      "Verbrauch gesamt [%.3f kWh]"        <energy>  (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:total"}
Number WashingMachineYesterday  "Verbrauch gestern [%.3f kWh]"      <energy>  (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:yesterday"}
Number WashingMachineRSSI       "Signalstärke [%d %%]"              <network>        (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:RSSI"}
Switch WashingMachineReachable  "Erreichbarkeit []"                 <network>        (WashingMachine) {channel="mqtt:topic:SARAH:WashingMachine:reachable"}

At last, the sitemap:

sitemap washingmachine label="Waschmaschine"
{
	Frame label="Waschmaschine"
	{
		Switch item=WashingMachinePower                  
		Text item=WashingMachineVoltage                 
		Text item=WashingMachineLoad               
		Text item=WashingMachineAppLoad         
		Text item=WashingMachineReacLoad      
		Text item=WashingMachineFactor                          
		Text item=WashingMachineCurrent                  
		Text item=WashingMachineToday    
		Text item=WashingMachineYesterday  
		Text item=WashingMachineTotal   
		Text item=WashingMachineRSSI        
		Switch item=WashingMachineReachable
	}
}

In General, everything is working quiet well and almost all items are updated by the Messages in mqtt. Alsmost? Yes! The Items WashingMachineYesterday and WashingMachineYesterday as well as WashingMachineRSSI don’t receive any value at all and are still uninitialized after 2 days.

The console doesn’t Show any Errors, expect for this fault (doenst seem to rely to this Problem) i don’t get anything:

2019-07-23 23:09:45.715 [ERROR] [org.quartz.core.JobRunShell         ] - Job DEFAULT.2019-07-23T23:09:45.704+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  <XFeatureCallImplCustom>.postUpdate(<XBinaryOperationImplCustom>)
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
        at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(ScriptError.java:66) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
        at com.sun.proxy.$Proxy189.apply(Unknown Source) ~[?:?]
        at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
2019-07-23 23:09:45.879 [ERROR] [org.quartz.core.ErrorLogger         ] - Job (DEFAULT.2019-07-23T23:09:45.704+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
  <XFeatureCallImplCustom>.postUpdate(<XBinaryOperationImplCustom>)
} ] threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception.
        at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]
Caused by: java.lang.NullPointerException
        at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(ScriptError.java:66) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1116) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
        at com.sun.proxy.$Proxy189.apply(Unknown Source) ~[?:?]
        at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[?:?]
        ... 1 more

Do you have any idea and hints for me?

Thanks an best regards

Chris

Looking at the differences in the Things setup suggest you have problems with the channels “yesterday”, “total”, “RSSI” and "rechable. All those are missing the “tele” in the stateTopic!

This cannot be true!

I checked the Code over and over and over and over and over again… And I missed that detail?

… you are absolutely right! Thank you So much =)

Greetings, Chris