NEWS
TuyaMCU per Tasmota Daten Identifizieren?
-
Hi
versuche mich gerade an einem Stromzähler von ZemiSmart dem ich statt der TuyaCPU CB2S einen ESP mit Tasmota verpasst habe.Gleicher Zähler nur mit Zigbee Ankopplung ist bereits per Zigbee2MqTT integriert insofern hatte ich mir erhofft die erwartbaren Datenpunkte dort etwas abzugucken. (https://github.com/zigpy/zha-device-handlers/commit/719490a2fda71ca790252e952224583cb090aa6e)
Demnach hätte ich aktuelle Spannung, Strom und Leistung erwartet.
Binde ich nun die TuyaMCU mit Tasmota an kommen da 8 Datenpunkte von der MCU:
19:32:48.334 TYA: Send "55aa0008000007" 19:32:48.337 RSL: RESULT = {"TuyaSend":"Done"} 19:32:48.418 DMP: 55 AA 03 07 00 08 01 02 00 04 00 00 00 00 18 19:32:48.421 {"TuyaReceived":{"Data":"55AA03070008010200040000000018","Cmnd":7,"CmndData":"0102000400000000","DpType2Id1":0,"1":{"DpId":1,"DpIdType":2,"DpIdData":"00000000"}}} 19:32:48.424 TYA: fnId=11 is set for dpId=1 19:32:48.426 TYA: RX value 0 from dpId 1 19:32:48.429 DMP: 55 AA 03 07 00 08 02 02 00 04 00 00 00 00 19 19:32:48.431 {"TuyaReceived":{"Data":"55AA03070008020200040000000019","Cmnd":7,"CmndData":"0202000400000000","DpType2Id2":0,"2":{"DpId":2,"DpIdType":2,"DpIdData":"00000000"}}} 19:32:48.434 TYA: fnId=0 is set for dpId=2 19:32:48.436 TYA: RX value 0 from dpId 2 19:32:48.438 DMP: 55 AA 03 07 00 0C 06 00 00 08 09 20 00 00 2D 00 00 04 7D 19:32:48.441 {"TuyaReceived":{"Data":"55AA0307000C06000008092000002D0000047D","Cmnd":7,"CmndData":"06000008092000002D000004","DpType0Id6":"0x092000002D000004","6":{"DpId":6,"DpIdType":0,"DpIdData":"092000002D000004"}}} 19:32:48.444 TYA: fnId=33 is set for dpId=6 19:32:48.446 DMP: 55 AA 03 07 00 05 09 05 00 01 00 1D 19:32:48.449 {"TuyaReceived":{"Data":"55AA0307000509050001001D","Cmnd":7,"CmndData":"0905000100","DpType5Id9":"0x00","9":{"DpId":9,"DpIdType":5,"DpIdData":"00"}}} 19:32:48.451 TYA: fnId=0 is set for dpId=9 19:32:48.453 DMP: 55 AA 03 07 00 05 0C 01 00 01 00 1C 19:32:48.456 {"TuyaReceived":{"Data":"55AA030700050C010001001C","Cmnd":7,"CmndData":"0C01000100","DpType1Id12":0,"12":{"DpId":12,"DpIdType":1,"DpIdData":"00"}}} 19:32:48.459 TYA: fnId=0 is set for dpId=12 19:32:48.460 DMP: 55 AA 03 07 00 08 0D 02 00 04 00 00 00 00 24 19:32:48.463 {"TuyaReceived":{"Data":"55AA030700080D0200040000000024","Cmnd":7,"CmndData":"0D02000400000000","DpType2Id13":0,"13":{"DpId":13,"DpIdType":2,"DpIdData":"00000000"}}} 19:32:48.466 TYA: fnId=0 is set for dpId=13 19:32:48.468 TYA: RX value 0 from dpId 13 19:32:48.470 DMP: 55 AA 03 07 00 0C 11 00 00 08 07 01 00 0D 08 00 00 00 4B 19:32:48.473 {"TuyaReceived":{"Data":"55AA0307000C110000080701000D080000004B","Cmnd":7,"CmndData":"110000080701000D08000000","DpType0Id17":"0x0701000D08000000","17":{"DpId":17,"DpIdType":0,"DpIdData":"0701000D08000000"}}} 19:32:48.476 TYA: fnId=32 is set for dpId=17 19:32:48.485 DMP: 55 AA 03 07 00 1C 12 00 00 18 01 01 00 3C 03 01 00 FD 04 00 00 B4 07 01 00 00 08 00 00 1E 09 00 00 00 7D 19:32:48.488 {"TuyaReceived":{"Data":"55AA0307001C120000180101003C030100FD040000B4070100000800001E090000007D","Cmnd":7,"CmndData":"120000180101003C030100FD040000B4070100000800001E09000000","DpType0Id18":"0x0101003C030100FD040000B4070100000800001E09000000","18":{"DpId":18,"DpIdType":0 "DpIdData":"0101003C030100FD040000B4070100000800001E09000000"}}} 19:32:48.492 TYA: fnId=0 is set for dpId=18 19:32:48.495 DMP: 55 AA 03 2D 00 00 2F
Davon wiederum nur 3 (dpId: 6,17 & 18) mit irgendwelchen Daten ungleich 0.
Jeglicher Versuch das mit 230V und angeschlossener Last 5,5W oder 60W also 24mA oder 260mA in Hexadezimal zu identifizieren ist mir nicht geglückt.
Klemme ich keine Last bleiben alle 3 dpIds mit gleichen Daten gefüllt.
Alleinig dpId6 mit dem Inhalt ~0920.... könnte in Decimal konvertiert zu 2341 vielleicht die Spannung mit 233,6V Volt sein.
Habt Ihr eine Idee dazu?
Thx!
-
-
Danke. Mittels der Anleitung bin ich auf die Idee zur Spannung für den dpID:6 gekommen.
Demnach liegt dpId 17 &18 im Raw Format vor und und es gilt zu finden was das ist:
"DpIdData":"0701000D08000000"
"DpIdData":"0101003C030100FD040000B4070100000800001E09000000"
eine Zuweisung dieser Werte auf bereits bekannte FnIds zeigt bisher kein Ergebnis:
-
die Anfrage der Werte ist ja wichtig, welche Commands / Werte werden angefordert.
07 scheint ja das Command zu sein.19:32:48.453 DMP: 55 AA 03 07 00 05 0C 01 00 01 00 1C
19:32:48.456
{"TuyaReceived":
{"Data":"55AA030700050C010001001C",
"Cmnd":7,
"CmndData":"0C01000100",
"DpType1Id12":0,
"12":{"DpId":12,"DpIdType":1,"DpIdData":"00"}}}{"TuyaReceived":
gesendeter Befehl
55AA ist Sync
{"Data":"55AA030700050C010001001C",
03 ??
07 ist command
"Cmnd":7,
Command Data Register ?
"CmndData":"0C01000100",
Type 12 ( Integer usw)
"DpType1Id12":0,
"12":
{
"DpId":12,
"DpIdType":1,
"DpIdData":"00" ( Rohdata Wert)
}}}
"DpIdData":"0701000D08000000"
hier mehrere Werte ?
"DpIdData":"01010
03C030100FD040000B4
070100000800001
E09000000"
-
@ralla66 said in TuyaMCU per Tasmota Daten Identifizieren?:
die Anfrage der Werte ist ja wichtig, welche Commands / Werte werden angefordert.
Das ist ein Opfer meines "Ausschnitts". Ich fordere manuell mit tuyasend0 bei der MCU an alle Stati mitzuteilen.
21:35:00.641 CMD: tuyasend0 21:35:00.644 SRC: WebConsole from 192.168.0.2 21:35:00.647 CMD: Grp 0, Cmd 'TUYASEND', Idx 0, Len 0, Pld -99, Data '' 21:35:00.650 TYA: Read MCU state 21:35:00.659 TYA: Send "55aa0008000007" 21:35:00.663 RSL: RESULT = {"TuyaSend":"Done"}
Was dann als Received folgt sind die 8 genannten dpIds. Von sich aus schickt die MCU bisher beobachtet nichts. Warum kann ich nicht sagen.
-
was ist denn oben DMP ? Dump Commands ?
soweit fast klar
TYA: Send "
55aa sync
0008 command
0000 command
07 ? CRC ? -
@ralla66 said in TuyaMCU per Tasmota Daten Identifizieren?:
was ist denn oben DMP ? Dump Commands ?
Ein automatischer Dump. (Meine Selbsterklärung) In der Doku dazu bisher nichts gefunden.
Wie Du sagst:
19:32:48.453 DMP: 55 AA 03 07 00 05 0C 01 00 01 00 1C
55aa03 Frame Header Version Fixed value of 0x55aa
07 Command Word 0x06 - send commands 0x07 - report status
0005 data lenght
0C DpId ->12
01 data type boolean
00 01 function lenght
00 function command -> Off
1C Verification CRC
Hier also der Switch ID 12 ausgelesen mit dem Wert 0
Für die allgemeine MCU Statiabfrage das command 08 ist ebnfalls nicht dokumentiert.
-
dpId 17 ist ja
"DpIdData":"0701000D08000000"
07 Command
01 ? je nach Zählweise , 0 und 1 wären 2 Werte ( 07 00 und 07 01 )
000D08 a 3 Byte
000000 a 3 ByteWas ist denn 17 für ein Wert Volt, Watt ..........................
Typisch in Register sind eigentlich Längen von 2 bis 3 ByteNachtrag , 55aa03 , die 03 würde ich eher Read Register zuordnen.
Sync ( 55aa ) ist meist ein simples High / Low0D08 == 3,336 A x 240 Volt == 800 Watt / 10 ungefähr 80 Watt
-
0D08 == 3,336 A x 240 Volt == 800 Watt
Thx. Versuche es gerade plausibel zu bekommen. GGf. fehlt noch der übliche Faktor 10 also 0,3336 A x 232V = 78W mmmh
Das seltsame die Werte bekomme ich übermittelt wenn keine Last angeschlossen ist.
dpID 6, 17, 18 sind nahezu gleich, egal ob mit oder ohne Last.
Ich prüfe das nochmal flott.
Ohne Last:
dpId 18: "55AA0307001C120000180101003C030100FD040000B4070100000800001E090000007D"dpId 17: "55AA0307000C110000080701000D080000004B"
dpId 6: "55AA0307000C06000008091A00000000000046"
Mit Last (6W):
dpId 6: "55AA0307000C06000008091D00002E0000047B"
dpId 17: "55AA0307000C110000080701000D080000004B"
dpId 18: "55AA0307001C120000180101003C030100FD040000B4070100000800001E090000007D"
-
@dieter_p sagte in TuyaMCU per Tasmota Daten Identifizieren?:
Das seltsame die Werte bekomme ich übermittelt wenn keine Last angeschlossen ist.
Zigbee halt, dauert und dauert .....................................................................
-
@ralla66 said in TuyaMCU per Tasmota Daten Identifizieren?:
@dieter_p sagte in TuyaMCU per Tasmota Daten Identifizieren?:
Das seltsame die Werte bekomme ich übermittelt wenn keine Last angeschlossen ist.
Zigbee halt, dauert und dauert .....................................................................
Welches Zigbee?
Edit: Und gerade nochmal mit 60W Last probiert.
Hier auch nur der Unterschied bei dpIx 6 zu sehen (17&18 gleich): 55AA0307000C06000008091D00010500003C
000C data length 12
06 dpIx 6
00 data type raw
0008 function length
091D0001050000 function command (Länge passt nicht) ergibt aus Hex in Dezimal 2565160644706304 mit einem Divisor von 10 könnten das 0,256A sein was bei ~233V die 60W wären.
-
habe mal die Ansicht anders gestaltet da sieht man mehr Auffälligkeiten und ist auch Übersichtlicher.
In Data können ja auch Wert und Text in Asci hex stehen, muß ja nicht nur Wert sein.
Bsp.: 60 W ist 60 als Wert, Leerzeichen und W als Ascii in Hex 0x57
Obwohl mit einer Ungenauigkeit von 20% würde ich bei 60 W rechnen ohne Abgleich.55AA0307000C06000008091D00010500003C
55AA Sync
03 Command Read
07 00 Command x ( weitere 07 01 -> 07 cmnd 00 und 01 andere Data)
0C data length 12
06 dpIx 6
000000 data type raw ( ist was Integer / Ascii ? )08 function length ( 08 )
09 1D Register Wert Volt dec 2.333 / 233 Volt ?
00 ?
01 function length ( 01 )
05 Register Watt Wert ?
00003C Raw Data ? hex 3C ist dec 60oder
08 function length ( 08 )
09 1D Register Wert Volt dec 2.333 == 233 Volt ?
000105 dec 261 macht 2,61 A ( 2,61 A x 233 Volt == 608,13 == 60,81 Watt )
00003C Raw Data ? hex 3C ist dec 60 Wattzerlege mal dpId 18 so dann sieht man mehr, scheinen ja nur mehr Werte zu sein mit 07 01.
-
hast du 2 Zähler oder 3 Phasen wegen der 07 00 und 07 01.
Ab 03 01 eventuell Zählerstände ?55AA Sync
03 Command Read0700
1C // dec 28 data length dec 28 Gesamt ab hier
12 dpIx
00 function length ( 00 )
0018 dec 24 ?
0101 2,57 Ampere Wert
003C 60 Watt Wert
0301
00FD04 // dec 64.772
0000B4 // dec 2120701
00 data length
00 dpIx
08 function length ( 08 )
00001E dec 30 ? hälfte der 60 Watt
0900 230,4 Volt
00007D dec 125 ? hälfte der A 1,25
0101 2,57 Ampere Wert
003C 60 Watt Wert
03
0100 dec 256 Volt ?
00FD dec 253 Volt ?
04
0000 ?
00B4 dec 180 ? -
@ralla66 said in TuyaMCU per Tasmota Daten Identifizieren?:
hast du 2 Zähler oder 3 Phasen wegen der 07 00 und 07 01.
Ab 03 01 eventuell Zählerstände ?Danke! Versuche gerade Deine Analyse nachzuvollziehn und am WE leider nicht dazu gekommen.
Das Ding hat nur 1 Phase, schaue ich aber in den Zigbee2Mqtt-Code des ähnlichen Models finde ich dort 2 Zähler zusätzlich zu den 3 Measurements (Spannung, Strom, Leistung):
""Zemismart Power Meter Attributes""" ZEMISMART_TOTAL_ENERGY_ATTR = 0x0201 ZEMISMART_TOTAL_REVERSE_ENERGY_ATTR = 0x0202 ZEMISMART_VCP_ATTR = 0x0006
VCP sagt mir noch nichts.
Edit: Einen neuen Benefit sehe ich aus dem Tool bisher nicht, aber möchte es hier nicht vorenthalten:
und in der Anleitung wird eindeutig Dein Ansatz bestätigt:
"What does the program not help with?
Basically, there is one situation where this program cannot help. Some of the more advanced Tuya electricity meters (higher-end, already DIN rail, in the price range of PLN 100 or more) use TuyaMCU to report measurements, but often report a group of measurements in one dpID. Then such a dpID is of the Raw type (no longer Value) and contains several bytes in which (depending on the device) data such as the current value of voltage, current, power, sometimes frequency are stored. Such a raw package has a device-dependent format and it is difficult to decode it more universally.
Cheaper products with energy measurement, in turn, do not use TuyaMCU, rather BL0937 or BL0942 are directly connected to the WiFI module there." -
Hab mir mal ein Excel gebaut um zu vergleichen. Das jetzt mit 60W Glühlampe und 5,5W LED.
dpIx 6 macht durchaus Sinn:
dpIx 18: auch wenn Ich Deinen gezeigten Ansatz nicht verstanden hab, hab ihn dennoch auch ins Excel überführt aber ein Vergleich 60W Last zu 5,5W macht kaum Sinn, da in beiden Fällen alles identisch bleibt:
-
Systeme sind ja alle ähnlich, dann würde ich Zählerstände suchen in dpIx 18 ab 03 01.
Mögliche Werte wären dann in etwa :Zum testen könnte man mal versuchen Werte zu nullen wenn es das Gerät hergibt.
-
Zum Nullen habe ich bisher in Anleitungen und App nichts finden können.
In der App ist noch ein "Balance"-Zähler drin. Wenn ich es aber richtig verstehe ist das aber die Summe der beiden Zählerrichtungen mit einem Preis je kWh aus der App verrechnet. Denke das passiert in der App und kommt nicht von der MCU.
Muß mir mal eine größere Last suchen. In der Auflösung kWh werde ich mit 60W nicht so schnell etwas sehen.
-
-> die Summe der beiden Zählerrichtungen , also 2 Werte
wenn die App ja verrechnet braucht die ja Zählerwerte und die können ja nur von der MCU kommen.
Mal angenommen Teiler ist 100 oder 1000, gibt es ein Bezug zu 647,72 / 64,77 Kw/h oder
1,8 / 0.18 Kw/h ?
3 Stunden 60 Watt Test kommt das hin ?
Das riecht nach Energy Total und Today -
Denke das ist gerade mein Hauptproblem. Ich habe den Zähler nie im Orginalzustand betrieben sondern direkt mit ESP umgebaut. Von daher weiß ich A) nicht wie der aktuelle Zählerstand ist und kann nur vermuten, dass er bei 0 gestartet ist.
Mit 60W und 5,5W ist das Ding allerhöchstens 30 Minuten in Betrieb gewesen und davon bestimmt nur 5 Minuten mit der 60W Birne -> der Zähler kann sich nicht groß bewegt haben.
Der Zähler in Speiserichtung kann noch weniger gezählt haben da ich ihn höchsten 2 Minuten am Anfang falschrum in Betrieb hatte mit 5,5W.
Aber mein Problem B) habe im Moment keine sichere Referenz um mir ein Delta im Zählerstand ableiten zu können. Muß mir mal ein Kabel bauen und denke daran meinen Fön mit 1800W mal 10 Minuten laufen zu lassen was ja zu mindest 0,3kWh sichtbar machen sollte.
-
Sieht nicht gut aus und irgendwas erscheint mir inaktiv auch durch die blinkende LED des Geräts signalisiert.
Hab jetzt einen Test gefahren mit dem Fön 2,2kW für 2 Min und dpIx 17 & 18 bleiben völlig unverändert. dpIx 6 macht Sinn: