JSONPATH for tasmota

Making slow but steady progress, want to add other channels to some S31s (tasmota) and also for other future devices. Where can I find a reference for all value transformations? I’ve looked through this community’s topics and looked through Tasmota’s wiki, obviously not looking in the right places. Specifically, trying to add item like RSSI, etc. Can anyone point me in the right direction?

If you look at the tasmota console, everything becomes clear.

It depends on the JSON string that is publish by your Tasmota device - can you share that with us? As @Olymp says, check out the Console via the Tasmota web interface for your device (type your Tasmota devices IP address into a browser to access the web interface) to see what JSON strings pop up for a particular topic.

Having said that, RSSI tends to be published on the STATE topic: below is a message published by one of my devices on that topic, copied from the Tasmota console for the device:

09:19:51 MQT: tele/swBedroomDeskLight/STATE = {"Time":"2020-08-16T07:19:51","Uptime":"56T23:36:21","UptimeSec":4923381,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":12,"POWER":"OFF","Wifi":{"AP":1,"SSId":"MyWifi","BSSId":"E0:63:DA:65:EA:4A","Channel":6,"RSSI":72,"Signal":-64,"LinkCount":4,"Downtime":"0T00:02:08"}}

RSSI can then usually be extracted with:


Good morning. Yes, I see what the console shows (though I’ve been using MQTT.fx to watch the MQTT strings). I am aware of each of those strings within quotes and the actual data also within quotes. I think it was you, haf, that pointed me with getting results for voltage and current - they have been flawlessly working with all my devices - so thanks for getting me started there!

My original post here was a request where to find documentation: I’ve looked in openhab’s docs, looked through Tasmota’s docs and googled JSONPath-everything.

I understand POWER, and looking through this forum I also see Wifi, but what other than those two are there? Also, had wondered if case mattered in the JSONPATH expression: UPPER, Mixed Case or lower case matter? And have also tried to find out why in some posts on the forum I see ($.xxxx.xxxx) instead of a colon - :$.xxxx.xxxx

Trying to learn, just not found where to learn. Thanks again to haf and Olymp.

I have no idea. It’s up to Tasmota what fields it supports.

The question is really, is JSON case-sensitive? If it is, them tools to process it like JSONPATH need to be as well.

Context matters. openHAB transformation services can be used in binding parameters, profiles, rules, and label formatters. Each of those cases may have different syntax about selecting the service and supplying it with parameters.

Well, that’s tricky.

There’s the huge page on commands, which can be actioned via MQTT.

But there’s no page(s) that I’m aware of which describe what commands are available for every single device that Tasmota can be flashed onto. Primarily, this is because most commands are valid for all devices.

The easiest way is really to use the Tasmota device Console (or mqtt.fx, of course), and observe what messages it sends when actions are performed through the Tasmota web interface, or what STATE data it sends every 300 (usually) seconds.

as @Olymp said, go to the Web-Console of your Device, like
then select Console . In the Console-Command-Line type in status 0 and you will see all the JSON-Strings you can select.

Hope this helps.

Thanks to all. Been reading/studying for two days now, think I’m getting it (some of it, anyway). Have RSSI channel for each device now, that was my most recent objective. One or two more channels and I think I’m gonna call them done.

Thanks again

Maybe this helps you as a prototype-example for your devices:


    Thing topic basic03 "Sonoff Basic 03 Schreibtischlampe" @ "MQTT2" {
        Type switch : power     "Power "                 [ stateTopic="stat/basic_03/POWER", commandTopic="cmnd/basic_03/POWER" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/basic_03/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : version   "Firmware Version    "   [ stateTopic="stat/basic_03/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
        Type switch : reachable "Reachable"              [ stateTopic="tele/basic_03/LWT",transformationPattern="MAP:reachable.map" ]
        Type string : hardware  "Chip Set            "   [ stateTopic="stat/basic_03/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
        Type string : ipaddress "IP Address          "   [ stateTopic="stat/basic_03/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]


//Basic Switches
//192.168.xxx.yyy                         basic-03                                           
Switch    Sonoff_Basic_03                "Schreibtischlampe Büro [MAP(de.map):%s]"          <tablelamp>             (EG_Buro,gSonoff,gLight)     { channel="mqtt:topic:hans:basic03:power" }
Number    Sonoff_Basic_03_RSSI           "Schreibtischlampe Büro RSSI [%s]"                 <qualityofservice>      (EG_Buro,gRSSI)              { channel="mqtt:topic:hans:basic03:rssi" } 
String    Sonoff_Basic_03_Version        "Schreibtischlampe Version 31[%s]"                 <sonoff_basic>          (gSonoffs,gVer)              { channel="mqtt:topic:hans:basic03:version" } 
Switch    Sonoff_Basic_03_Unreach        "Schreibtischlampe Ereichbarkeit [%s]"             <siren1>                (EG_Buro,gLWT)               { channel="mqtt:topic:hans:basic03:reachable" }
String    Sonoff_Basic_03_Hardware       "Schreibtischlampe ChipSet 31[%s]"                 <sonoff_basic>          (gSonoffs,gHard)             { channel="mqtt:topic:hans:basic03:hardware" } 
String    Sonoff_Basic_03_IPAddress      "Schreibtischlampe IP-Address [%s]"                <sonoff_basic>          (gSonoffs,gHard)             { channel="mqtt:topic:hans:basic03:ipaddress" } 

But be aware, that some items are filled by a rule, as they are not sending tele-data automatically.