Hallo Gerhard, ich würde gerne meinen Tasmota mit IR lesekopf für einen Akku Marstek Venus E verwenden. Dieser unterstückt bisher nur eigene Smartmeter Shelly pro und Everhome Ecotracker. Ich habe Tasmota mit Ottelo im Einsatz, wobei der Lesekopf im Keller ist und der Tasmota im Erdgeschoss. Der Ecotracker würde Wlan im Keller haben müssen und ich wäre in einer fremden Cloud.
Würde es die Möglichkeit geben den Ecotracker zu emulieren?
Weiter unten die Beschreibung des API Ecotracker Gruß Thomas
EcoTracker Local API
Developer documentation Getting started Developer documentation My applications EcoTracker Local API Lokale REST-API
Der everHome EcoTracker stellt eine lokale REST-API zu Verfügung. Die lokale REST-API kann von allen Geräten im lokalen Netzwerk abgerufen werden und kann mittels "Lokaler HTTP-Server" in der everHome App ein und ausgeschaltet werden. Diese Option ist standardmäßig eingeschaltet.
GET https://forum.creationx.de/v1/json HTTP/1.1 HTTP/1.1 200 OK Content-Type: application/json { "power": 125, "powerAvg": 100, "energyCounterIn": 145000, "energyCounterInT1": 100000, "energyCounterInT2": 45000, "energyCounterOut": 4500, } "power" beinhaltet die aktuelle Leistung in Watt. Der Wert ist negativ bei Einspeisung und positiv bei Bezug. "powerAvg" beinhaltet den durchschnittlichen "power" Wert in Watt der letzten Minute. "energyCounterIn" beinhaltet den Zählerstand des Bezugs in Wattstunden. "energyCounterInT1" beinhaltet den Hochtarif Zählerstand des Bezugs. Dieser Wert ist nicht immer vorhanden und kann auch ohne Hoch- und Niedertarif vorhanden sein. "energyCounterInT2" beinhaltet den Niedertarif Zählerstand des Bezugs. Dieser Wert ist nicht immer vorhanden und kann auch ohne Hoch- und Niedertarif vorhanden sein. "energyCounterOut" beinhaltet den Zählerstand der Einspeisung in Wattstunden
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
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