Otodata RC1010 propane tank transponder support #545
-
|
I'm asking for help on adding a decoder for the Otodata propane tank BLE transponders They work together with Rotarex capacitve tank probes while they also export a GATT profile, the relevant data can be decoded from advertising broadcasts alone - unfortunately the ad format is not documented but can partially be guessed, see below The device sends ads every second or so When scanned, the device cycles through three different scan responses, where the device name shows the tank level and sensor health - this has been used to integrate into Home Assistant However, active scan is not necessary to get at the relevant data: I have decoded the tank level and sensor status with this fragment device model and serial number can be extracted with this code Find a pcap with advertisements of a transponder connected to a probe and properly reporting here. A transponder which is disconnected reports differently @DigiH suggested I add some OMG logs with I can reasonably decode that in C, but the theengs/decoder interpreter is beyond my paygrade - which is why I'm asking for help thanks in advance Michael |
Beta Was this translation helpful? Give feedback.
Replies: 8 comments 14 replies
-
|
Hi @mhaberler
Does that look right to you? and with the longer manufacturerdata, are the serial and model actually decimal conversions from the hex data, or could they be ascii from the hex?
|
Beta Was this translation helpful? Give feedback.
-
|
as far as I'm concerned this is good for a merge |
Beta Was this translation helpful? Give feedback.
-
|
Could this be modified to support a very similar OtoData BLE propane sensor. Model TM5030. Reading through this thread it outputs the same data as the RC1010. Cycles through level: 72.6% horiz, unit sleeping, and the cellular channel, status and signal strength 310410.1|0|-57. See screen shots from nRF Connect iOS. |
Beta Was this translation helpful? Give feedback.
-
|
@SrodgersSC Where did you get the decoded headlines in the nRF Connect screenshots? I do not see any obvious level encoded in the first manufacturerdata, but it stands out in the second one with the serial heading. So could the messages have been mixed up? Either way, some more sample messages are needed, along with the current states. Not as screenshots however, but as copy and pasted MQTT messages with Advanced and Advertising Data turned on. |
Beta Was this translation helpful? Give feedback.
-
|
Set Only Sensors to false and pubadvdata to true but console log does to show any data for any devices: N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/SYStoMQTT msg: {"uptime":4,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":109228,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":0,"msgblck":0,"msgrcv":26,"maxq":0,"cnt_index":0,"minmem":70036,"tempc":54.44,"freestck":2968,"powermode":-1,"eth":false,"rssi":-44,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":["WebUI","BT"]}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT msg: {"bleconnect":true,"interval":55555,"adaptivescan":true,"intervalacts":55555,"intervalcnct":3600000,"scanduration":10000,"hasspresence":false,"prestopic":"presence/","presuseuuid":false,"minrssi":-100,"extDecoderEnable":false,"extDecoderTopic":"undecoded","pubuuid4topic":false,"ignoreWBlist":true,"forcepscn":false,"tskstck":2968,"crstck":2968,"enabled":false,"scnct":0,"onlysensors":true,"randommacs":false,"filterConnectable":false,"pubadvdata":false,"presenceawaytimer":120000,"movingtimer":60000}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/WebUItoMQTT msg: {"displayMetric":true,"webUISecure":true,"displayQueue":0}
N: SYS json: {"uptime":124,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":123416,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":29,"msgblck":0,"msgrcv":29,"maxq":29,"cnt_index":0,"minmem":70036,"tempc":53.89,"freestck":2968,"powermode":-1,"eth":false,"rssi":-44,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":"'WebUI', 'BT'","origin":"/SYStoMQTT"}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/SYStoMQTT msg: {"uptime":124,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":123416,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":29,"msgblck":0,"msgrcv":29,"maxq":29,"cnt_index":0,"minmem":70036,"tempc":53.89,"freestck":2968,"powermode":-1,"eth":false,"rssi":-44,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":["WebUI","BT"]}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT msg: {"bleconnect":true,"interval":55555,"adaptivescan":true,"intervalacts":55555,"intervalcnct":3600000,"scanduration":10000,"hasspresence":false,"prestopic":"presence/","presuseuuid":false,"minrssi":-100,"extDecoderEnable":false,"extDecoderTopic":"undecoded","pubuuid4topic":false,"ignoreWBlist":true,"forcepscn":false,"tskstck":2968,"crstck":2968,"enabled":false,"scnct":0,"onlysensors":true,"randommacs":false,"filterConnectable":false,"pubadvdata":false,"presenceawaytimer":120000,"movingtimer":60000}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/WebUItoMQTT msg: {"displayMetric":true,"webUISecure":true,"displayQueue":0}
N: Config onlysensors changed to: false
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT msg: {"bleconnect":true,"interval":55555,"adaptivescan":true,"intervalacts":55555,"intervalcnct":3600000,"scanduration":10000,"hasspresence":false,"prestopic":"presence/","presuseuuid":false,"minrssi":-100,"extDecoderEnable":false,"extDecoderTopic":"undecoded","pubuuid4topic":false,"ignoreWBlist":true,"forcepscn":false,"tskstck":2968,"crstck":2968,"enabled":false,"scnct":0,"onlysensors":false,"randommacs":false,"filterConnectable":false,"pubadvdata":false,"presenceawaytimer":120000,"movingtimer":60000}
N: Config pubadvdata changed to: true
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT msg: {"bleconnect":true,"interval":55555,"adaptivescan":true,"intervalacts":55555,"intervalcnct":3600000,"scanduration":10000,"hasspresence":false,"prestopic":"presence/","presuseuuid":false,"minrssi":-100,"extDecoderEnable":false,"extDecoderTopic":"undecoded","pubuuid4topic":false,"ignoreWBlist":true,"forcepscn":false,"tskstck":2952,"crstck":2952,"enabled":false,"scnct":0,"onlysensors":false,"randommacs":false,"filterConnectable":false,"pubadvdata":true,"presenceawaytimer":120000,"movingtimer":60000}
N: SYS json: {"uptime":244,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":123380,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":34,"msgblck":0,"msgrcv":34,"maxq":29,"cnt_index":0,"minmem":70036,"tempc":53.89,"freestck":2872,"powermode":-1,"eth":false,"rssi":-44,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":"'WebUI', 'BT'","origin":"/SYStoMQTT"}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/SYStoMQTT msg: {"uptime":244,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":123380,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":34,"msgblck":0,"msgrcv":34,"maxq":29,"cnt_index":0,"minmem":70036,"tempc":53.89,"freestck":2872,"powermode":-1,"eth":false,"rssi":-44,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":["WebUI","BT"]}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT msg: {"bleconnect":true,"interval":55555,"adaptivescan":true,"intervalacts":55555,"intervalcnct":3600000,"scanduration":10000,"hasspresence":false,"prestopic":"presence/","presuseuuid":false,"minrssi":-100,"extDecoderEnable":false,"extDecoderTopic":"undecoded","pubuuid4topic":false,"ignoreWBlist":true,"forcepscn":false,"tskstck":2872,"crstck":2872,"enabled":false,"scnct":0,"onlysensors":false,"randommacs":false,"filterConnectable":false,"pubadvdata":true,"presenceawaytimer":120000,"movingtimer":60000}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/WebUItoMQTT msg: {"displayMetric":true,"webUISecure":true,"displayQueue":0}
N: SYS json: {"uptime":364,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":123416,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":37,"msgblck":0,"msgrcv":37,"maxq":29,"cnt_index":0,"minmem":70036,"tempc":53.89,"freestck":2872,"powermode":-1,"eth":false,"rssi":-43,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":"'WebUI', 'BT'","origin":"/SYStoMQTT"}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/SYStoMQTT msg: {"uptime":364,"version":"v1.8.1","mqtt":true,"serial":false,"disc":true,"ohdisc":false,"env":"esp32dev-ble","freemem":123416,"mqttp":"1883","mqtts":false,"mqttv":false,"msgprc":37,"msgblck":0,"msgrcv":37,"maxq":29,"cnt_index":0,"minmem":70036,"tempc":53.89,"freestck":2872,"powermode":-1,"eth":false,"rssi":-43,"SSID":"CasaVerde","BSSID":"78:8A:20:5D:04:ED","ip":"192.168.2.236","mac":"8C:4F:00:AD:01:30","modules":["WebUI","BT"]}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT msg: {"bleconnect":true,"interval":55555,"adaptivescan":true,"intervalacts":55555,"intervalcnct":3600000,"scanduration":10000,"hasspresence":false,"prestopic":"presence/","presuseuuid":false,"minrssi":-100,"extDecoderEnable":false,"extDecoderTopic":"undecoded","pubuuid4topic":false,"ignoreWBlist":true,"forcepscn":false,"tskstck":2872,"crstck":2872,"enabled":false,"scnct":0,"onlysensors":false,"randommacs":false,"filterConnectable":false,"pubadvdata":true,"presenceawaytimer":120000,"movingtimer":60000}
N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/WebUItoMQTT msg: {"displayMetric":true,"webUISecure":true,"displayQueue":0}
|
Beta Was this translation helpful? Give feedback.
-
|
Ok had the MQTT turned off.: here is the propane tank monitor: N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT/FC59F7BE0B43 msg: {"id":"FC:59:F7:BE:0B:43","mac_type":1,"adv_type":0,"name":"level: 70.8 % horiz","manufacturerdata":"b1034f544f333238319171af011018110382040224a6130004","rssi":-89} N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT/FC59F7BE0B43 msg: {"id":"FC:59:F7:BE:0B:43","mac_type":1,"adv_type":0,"name":"unit sleeping","manufacturerdata":"b1034f544f5354415401ef03ef038abc040008c4000101000000","rssi":-88} N: [ OMG->MQTT ] topic: OMG/OMG_ESP32_BLE/BTtoMQTT/FC59F7BE0B43 msg: {"id":"FC:59:F7:BE:0B:43","mac_type":1,"adv_type":0,"manufacturerdata":"b1034f544f54454c450200ae1b00003b6906180100ff00000000","rssi":-87} Here is one with cell tower number, status code and rssi of cell signal: Grabbed it from MQTT Explorer as it was lost in the console log clutter. {"id":"FC:59:F7:BE:0B:43","mac_type":1,"adv_type":0,"name":"310410.1|0|-60","manufacturerdata":"b1034f544f54454c450200ae1b00003b6906180100ff00000000","rssi":-83}Was not patient enough to see it xmit the one with Model and Serial number like I showed on first message. It runs through those sets of entries but it has the basics like tank level, model, serial, rssi cell tower info etc to make it useful if this can be parsed out and MQTT'ed |
Beta Was this translation helpful? Give feedback.
-
|
As previously noted the changing name in the messages does n to correspond with the encoded data in the manufacturerdata. I have created a test decoder which currently includes level, sleep and serial. I'm not quite sure how the sleep status works, does it report sleep in between broadcasting the other data, or is there afctually a state when there is no sleep? Similarly with the cell tower number, status code and rssi of cell signal. I only found the 310410 part. So not included in the decoder so far. https://github.com/DigiH/decoder/tree/TM5030 Let me know if you can create your own build by changing the Decoder URL in platform.ini, or when you have the time to install a test build of OpenMQTTGateway within a few hours some day. |
Beta Was this translation helpful? Give feedback.
-
|
Thank you for the assistance. I have it working well enough now. Michael McSharry on the Homeseer Forum modified his MQTT plugin and some filtering of the name payloads to extract the level. |
Beta Was this translation helpful? Give feedback.




As you see in the sample above, as soon as the hex converts to a float it will also be displayed with decimals then., just a absolute 100 does display as such, and not as 100.00