Werte aus TuyaMCU auslesen

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Antworten
Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Werte aus TuyaMCU auslesen

Beitrag von Darkwin101 »

Ich brauche mal wieder euer Wissen mir ist das zu Hoch :D
Ich besitze nun einen Wasserkocher den ich mit Tasmota geflasht habe soweit so gut.
Ich kann ihn über MQTT ein und Ausschalten und Heizprogramme wählen.
Jetzt möchte ich aber die Wasser Temperatur ausgelesen haben leider wird diese aber nicht in einem einfachen Wert dargestellt da dies über Serielle Schnittstelle geht bekomme ich die Daten in folgenden Format:

Code: Alles auswählen

{"TuyaReceived":{"Data":"55AA030700086C0200040000000588","Cmnd":7,"CmndData":"6C02000400000005","DpId":108,"DpIdType":2,"DpIdData":"00000005"}}
18:17:41 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA030700086B0200040000000688","Cmnd":7,"CmndData":"6B02000400000006","DpId":107,"DpIdType":2,"DpIdData":"00000006"}}
18:17:41 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA030000010104","Cmnd":0,"CmndData":"01"}}
18:17:52 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA030000010104","Cmnd":0,"CmndData":"01"}}
18:18:03 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA030000010104","Cmnd":0,"CmndData":"01"}}
18:18:08 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA03070008690200040000001999","Cmnd":7,"CmndData":"6902000400000019","DpId":105,"DpIdType":2,"DpIdData":"00000019"}}
18:18:10 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA03070008690200040000001A9A","Cmnd":7,"CmndData":"690200040000001A","DpId":105,"DpIdType":2,"DpIdData":"0000001A"}}
18:18:13 MQT: tele/Wasserkocher/RESULT = {"TuyaReceived":{"Data":"55AA03070008690200040000001B9B","Cmnd":7,"CmndData":"690200040000001B","DpId":105,"DpIdType":2,"DpIdData":"0000001B"}}
Die DpId 105 / DpIdData ist die Wassertemperatur im Hex Format.
Gibt es eine Möglichkeit diese Werte direkt in ein passendes Topic zu schreiben mit einer Rule in Tasmota oder eine Rule die das so zerlegt das ich diesen Wert bekomme.
Gibt es eventuell eine Möglichkeit eine Rule mit einer Wildcard zu triggern da beim DpId 105 nur die letzten Stellen Unterschiedlich sind vobei die beiden Vorletzten Zahlen der Hex Wert sind.
In Etwa so:

Code: Alles auswählen

when Item Data changed to "55AA0307000869020004000000*"
MfG
Darkwin101

Benutzeravatar
udo1toni
Beiträge: 13948
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Werte aus TuyaMCU auslesen

Beitrag von udo1toni »

Was die Tasmota Rules betrrifft, möchte ich Dich gerne ans Tasmota Forum verweisen, denn dort gibt es sicher mehr Experten für das Thema.
openHAB Rules wirst Du auf ein allgemeines changed triggern müssen, um dann anschließend im then-Teil der Rule zu prüfen, ob das Datentelegramm passt (also eine DpId 105 enthält). Man könnte natürlich das stateTopic direkt im Channel mit einer JSONPATH Transformation verbinden. Allerdings sollte man dann noch ein REGEX vorlagern - das mqtt2 Binding erlaubt das Verketten mehrerer Transformations - um Nullpointer Exceptions zu vermeiden. Anschließend läge dann immer ausschließlich der für die Temperatur zuständige Wert im Channel - man könnte gar mittels JSCRIPT Transformation den HEX-Wert direkt umrechnen. Oder man nimmt ausschließlich JSCRIPT und erledigt die vorgelagerten Aufgaben mit im Script.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Werte aus TuyaMCU auslesen

Beitrag von Darkwin101 »

Danke erstmal für deine Antwort.
Leider bestätigt deine Antwort meine Annahme, das mir das zu hoch ist wenn ich das noch nicht gesehen habe.
Ich habe mich an deinen Rat gehalten und mal im Tasmota Forum(link aus dem Wiki) das ganze beschrieben und auch eine Antwort bekommen leider glaube ich das man mich durch mein schreiberlich schlechten Englisch nicht richtig verstanden hat.
So habe ich schon einmal einen Ansatz wie ich den Hexwert irgendwie nach Openhab bekomme dann bleibt nur noch das umwandeln von Hex in das Number Format.
MfG
Darkwin101

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Werte aus TuyaMCU auslesen

Beitrag von Darkwin101 »

So jetzt benötige ich nur noch Hilfe beim Wandeln von Hex in eine Zahl ich bin nun soweit gekommen das die Temperatur in einem Text Item liegt im Format "0000003C"
Alles was ich eingebe gibt bei Google Sachen aus die ich nicht verstehe als Anfänger.
MfG

Benutzeravatar
udo1toni
Beiträge: 13948
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Werte aus TuyaMCU auslesen

Beitrag von udo1toni »

Du brauchst zum einen ein Proxy Item (vom Typ Number) und dann eine Rule.

Code: Alles auswählen

rule "hex to dec"
when
    Item hexNumber changed
then
   decNumber.postUpdate(Integer::parseInt(hexNumber.state, 16))
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Werte aus TuyaMCU auslesen

Beitrag von Darkwin101 »

Ja ich habe es schon hinbekommen allerdings sieht das Ganze bei mir nun so aus

Code: Alles auswählen

var int Wassertemperatur = 0  // Am Anfang des Rulefiles
rule "Wasserkocher Wasser Temperatur"
 when 
 Item Wasserkocher_ISTTEMP changed
 then 
 Wassertemperatur = Integer::parseInt(String::format("%s",Wasserkocher_ISTTEMP.state), 16)
 Wasserkocher_Wassertemp.sendCommand(Wassertemperatur)
end

Antworten