gemu2015 Fortgeschrittener
- Mitglied seit 31. Dezember 2018
- Letzte Aktivität:
- Beiträge
- 555
- Erhaltene Reaktionen
- 150
- Punkte
- 2.931
- Trophäen
- 1
- Profil-Aufrufe
- 3.234
-
-
Halo Gerhard,
habe hier einen neuen Zähler hinzugefügt. Vielleicht willst du den ja deinem Modul hinzufügen.
D0 Zähler SML auslesen mit Tasmota
Danke für deine Mühe!
Viele Grüße
Tobias
-
Hallo Tobias,
OK, habe ich hinzugefügt.
Gruß Gerhard
-
burkhard
Hallo Gerhard,
habe noch eine "Funktionsverbesserung" in der Funktion SML_Decode gefunden.
Aufgefallen ist mir, dass bei negativen Kollektortemperaturen, keine Dekodierung auf signed Integer funktioniert.
Der Pfad ist
Die Variable val muss vom Typ int16_t sein und nicht uint16_t , sonst wird aus dem negativen Wert ein riesiger positiver Wert, wenn das höchste bit gelöscht wird. Das Problem trat beim WOlf-Telegramm 5017 bei der Kollektortemperatur auf. Die Temperatur vom Solarspeicher wird wohl nie negativ, deshalb kann man dort den 16-Bit-Wert unsigned lassen.
Hier der Auszug aus der xsn_53_sml.ino:
else if (*mp=='s' && *(mp+1)=='s' && *(mp+2)=='S' && *(mp+3)=='S') {
int16_t val = *cp|(*(cp+1)<<8);
mbus_dval=val;
ebus_dval=val;
mp+=4;
cp+=2;
Vielleicht kannst Du das in die offizielle Version übernehmen
Gruß
Burkhard
gemu2015
Hallo Burkhard,
OK der ebus_dval sollte signed sein, es werden wohl kaum unsigned 32 bit Werte vorkommen bei denen bit 31 gesetzt ist.
also statt
uint32_t ebus_dval=99;
int32_t ebus_dval=99;
werde ich aber erst im April bei Tasmota einstellen bin nämlich jetzt mehrere Wochen offline.
in meinem git habe ich das jetzt geändert.
du bist wohl ausser mir der einzige der bisher den EBUS decoder verwendet.
Gruß
Gerhard
burkhard
Ich denke schon,dass es noch mehr Leute gibt, die das nutzen, Allerdings fältt das ja kaum auf. Die Variablen könnten generell intxx sein. Ich finde Deine Arbeit sehr gut, Mir gefällt Tasmota für meine Zwecke besser als EBUSD von John.
Solange man passiv liest, ist das einfacher. kann man eigentlich das Script zum Dekodieren nehmen, ohne die Variable anzuzeigen? Mein Gesamt-Solarertrag bei Wolf ist in drei Werten im Telegramm (Vorkommawert*1000 + Vorkommawert + Nachkommawert. Angezeigt und per mqqt gesendet werden müssten nur der Gesamt- und Tagesertrag
Hier die Zeilen:
1,71fe5018xxxxxxuuUU@1000,TagNK,kW,DayNK,3
1,71fe5018xxxxxxxxxxuuUU@1,TagVK,kW,DayVK,0
1,71fe5018xxxxxxxxxxxxxxuuUU@1000,ErtragNk,W,SolarNk,3
1,71fe5018xxxxxxxxxxxxxxxxxxuuUU@1,ErtragVk,W,SolarVk,0
1,71fe5018xxxxxxxxxxxxxxxxxxxxxxuuUU@0.001,ErtragVk1000,W,SolarVk1000,0
1,=m 15+16+14 @1,Gesamtertrag,kW,SolarCurr,3
1,=m 12+13 @1,Tagesertrag,kW,DaySolarCurr,3
Oder kann ich irgendwie aus dem Tlg 5018 in einer Definitionszeile mehrere Variablen zuweisen :
z.B: 1,71fe5018xxxxxxuuUU|uuUU,DayVK,DayNK,3 (Zuweisung Rohwerte ohne Anzeige)
Nochmal; Super Arbeit
Gruß
Burkhard