D0 Zähler SML auslesen mit Tasmota

  • Habe gerade festgestellt dass man in der Marstek App auch einen dummy Akku angeben kann.

    Man kann dann den Shelly oder eco tracker versuchen anzumelden auch ohne einen Akku zu besitzen.

    Beide werden wohl über mDNs gesucht.

    Habe leider sehr wenig Ahnung davon und kann hier kaum helfen

  • Hab mal im anderen Forum den Programmierer vom Unimeter gefragt wie Venus den Ecotracker sucht.

    Ich habe leider von Netzwerktechnik keine Ahnung.
    Hier die Antwort:

    • Hallo,

      bei Marstek weiß ich das nicht. Beim uni-meter klappt es mit dem Hoymiles-Storage und seit heute mit dem Growatt Noah. Die suchen den EcoTracker über mDNS. Dabei "announce" ich ihn als

      _everhome._tcp._local

      und

      _http._tcp._local

      Name ist jeweils

      ecotracker-<mac>

      Bei Marstek wüsste ich bisher nicht, dass sie mDNS verwenden. Den Shelly finden sie ja über einen UDP Broadcast.

      Aber wenn mDNS dann wären das oben die Werte.


  • Hab das mal gemini gefragt. Es wird wohl ein esp32 mit berry benötigt. Ich kann das leider nicht.

    hier die Antwort von gemini:

    • import udp
    • import json
    • var u = udp()
    • u.begin(1010)
    • def handle_udp()
    • while true
    • var data, ip, port = u.recvfrom()
    • if data != nil
    • var msg = string(data)
    • print("Empfangen von ", ip, ":", port, " -> ", msg)
    • // Echte Sensorwerte holen
    • var e = Tasmota.energy()
    • var voltage = e.Voltage
    • var current = e.Current
    • var power = e.Power
    • var energy = e.Total
    • // Antwort im Shelly-Stil
    • var response = {
    • "src": "shellypro3em-ABC123",
    • "res": {
    • "a_voltage": voltage,
    • "b_voltage": voltage,
    • "c_voltage": voltage,
    • "a_current": current,
    • "b_current": current,
    • "c_current": current,
    • "a_act_power": power,
    • "b_act_power": power,
    • "c_act_power": power,
    • "total_act_power": power * 3,
    • "total_energy": energy
    • }
    • }
    • var json_response = json.stringify(response)
    • u.send(ip, port, bytes().fromstring(json_response))
    • end
    • sleep(0.1)
    • end
    • end

    spawn(handle_udp)

  • Ich wollte keinen Stress verbreiten, nur ich teste alles mögliche mit der Marstek app im Demo mode, aber finde nicht den Shelly.

    Gemini hat gesagt das dies wichtig sei um den Shelly zu finden :"src": "shellypro3em-ABC123",

    wünsche dir gute Besserung!

  • GitHub - TheRealMoeder/Energy2Shelly_ESP: Using an ESP8266/ESP32 to emulate a Shelly Power Meter using various energy meter data inputs
    Using an ESP8266/ESP32 to emulate a Shelly Power Meter using various energy meter data inputs - TheRealMoeder/Energy2Shelly_ESP
    github.com

    dieses Projekt ist ein Shelly emulator für ESP8266, ESP32

    Habe das geflasht, kann aber mit der Marstek app keine Verbindung erzeugen.

    Vielleicht will das noch jemand anderes testen.

    Wenn das ginge könnte ich sehr einfach Teile des Codes übernehmen.

  • Komme mal kurz auf den Start dieser Einträge zurück. Mein Strom und Gaszähler auszulesen funktioniert, wenn auch der Gaszähler mal einen Impuls zählt der keiner ist, ich korrigiere das halt ab und zu von Hand.

    Beim Wasserzähler versuche ich das über Counter, bekomme das aber nicht hin, ich glaube das 1 Implus pro 10 Liter kommt. Zum Test aber etliches Wasser laufen zu lassen ist nicht ganz einfach.

    Kann mir jemand mal, sofern möglich, ein Sript nur für Wasserzähler zeigen ?


    P.S.

    Ich habe nun mal das Script von Otello eingespielt, mal schaun ob die richtigen Werte kommen. Wenn ja muss ich das noch auf einen zweiten wasserzähler ausbauen. Ich hoffe es gelingt mir dann, ist ja sehr umfangreich.

    grüsse aus Heidelberg

    ca. 100 Tasmota Geräte teilweise mit SML Script.

    Home Assistant, Alexa, Sonos, (Pilot APP zur Steuerung, Domoticz (auslaufend))

    Einmal editiert, zuletzt von mafrei (12. Juli 2025 um 15:14)

  • Hallo Gemu2015, habs auch getestet. Aber in der App von marstek steht auch Shelly Pro 3em-3CT63. Ich denke das nur der geht und eine bestimmte Kennung erwartet wird. Hat denn schon jemand erfolgreich getestet?

  • Diese Mail habe ich von Karsten bekommen,

    es geht also doch.

    Moin, leider warte ich schon länger auf meine Freischaltungen durch die Admins. Daher meine Info über diesen Weg und nicht über das Forum.

    Ich betreibe einen Venus E Speicher mit einem Tasmota IR Lesekopf und der Umsetzung mittels weiterem ESP und energy2shelly. Die App hat den "Shelly" ohne Probleme gefunden und alles funktioniert ganz gut. Die App braucht die Berechtigung für Standorterkennung. Vielleicht ist das das Problem bei dir?

    Gruß Karsten

  • hier mal eine C3 Binary mit den neuesten Änderungen und ein erstes Testscript um das Prinzip zu zeigen.


  • Wäre gut wenn das jemand mit einem echten Akku testen könnte. Ich pflege auch gerade die neusten Änderung von gemu2015 bei mir ein und erstelle Tasmota Images. Das Beispielscript werde ich auch mit in mein github Repo schmeissen.

    Anscheinend werde ich mir wohl auch ein Akku zum Testen holen müssen :D

  • also wenn du mit der Shelly2ESP Lösung keine Verbindung mit der Marstek app bekommst kann das auch mit meiner Version nichts werden.

    nehme an das die Demo Version das nicht kann.

    Kalle testet an einem vorhandenen Marstek Akku, er benutzt bisher die Shelly2ESP version.

    die IP ist nötig wenn du den externen Script Editor verwendest (siehe scripting doc)

    wenn du den nicht nutzt kannst du die Zeile löschen


    Anmerkung:

    das obige script ist nur zum testen ob die Marstek app irgend wie Kontakt aufnimmt, das script kann noch nicht final funktionieren.

    Man muss in der Konsole überwachen während die Marstek App versucht eine Verbindung herzustellen sollte man entsprechende Meldungen dort sehen.


  • Unter der URL ip/v1/json erhalte ich nur ein "Datei nicht gefunden"


    Mit dem Tasmo-Compiler verwende ich diese Einstellungen. Braucht es da noch weitere Parameter?

    #define USE_SCRIPT
    #define USE_SML_M
    #ifdef USE_RULES
    #undef USE_RULES
    #endif
    #define USE_DS18x20 // Add support for DS18x20 sensors with id sort, single scan and read retry (+2k6 code)

    #define USE_SCRIPT_GLOBVARS


    Google Gemini meint das noch #define USE_UDP mit dazu muss, ändert aber sonst nichts.


    Braucht das Programm da zwingend die ESP32 Version? Mein IR Leser ist auf einem ESP8266-01S


    Gemini meint weiter das noch

    #ifndef USE_SCRIPT_WEB_SERVER #define USE_SCRIPT_WEB_SERVER // Erlaubt dem Skript, seinen eigenen Webserver zu betreiben/an HTTP-Anfragen zu lauschen #endif

    und

    #ifndef USE_WEBSEND #define USE_WEBSEND // Stellt sicher, dass die WebSend-Funktion verfügbar ist #endif


    dazu sollte.... bringt auch nichts. Weiter schlägt Gemini vor, ein WON Test zu probieren, der auch nicht geht.

    Die Sensorwerte vom Stromzähler werden korrekt angezeigt, aber nur in der normalen Tasmota Ansicht bzw. im MQTT

    >D 0

    >ah

    won(1 "/test")


    >on1

    print My test handler was called!

    WebSend HTTP/1.1 200 OK\r\nContent-type: text/plain\r\n\r\nHello from Tasmota script!\r\n


    Mit der Tasmota Vorcompilierte Version von dort https://drive.google.com/drive/folders/…UGG3A1-oLO14g5z werd nun unter v1/json etwas angezeigt. Die Marstek-App erkennt nichts... weder mit den drei Shelly Varianten noch mit diesem EcoTracker.

    Ich lass es gut sein... heute genug Zeit verschwendet.


    Hab noch den Uni-meter ausprobiert... ich meine in der Config alles richtig eingegeben zu haben, aber wird trotzdem nichts angezeigt. Diese Open-Source Projekte sind hochgradig frustrierend.

    8 Mal editiert, zuletzt von TirCendelius (20. Juli 2025 um 10:02)

  • TirCendelius

    Die Shelly Pro 3EM Emulation war nicht in meinen ESP8266 Images drin! Ich habe die Features nun mit rein genommen, aber nur für tasmota1m_energy_ottelo.bin.gz und tasmota4m_ottelo.bin.gz. Für das Image tasmota1m_ottelo.bin.gz habe ich diese Features deaktiviert, da das Image sonst zu groß wird und ein direktes Upgrade via OTA dann nicht mehr möglich wäre (dann nur via minimal Image möglich). Du kannst also mit tasmota1m_energy_ottelo.bin.gz testen, danach musst du ein Firmwareupdate immer über das minimal Image machen oder wenn du keine Lust mehr auf Testen hast gehst du zurück zum tasmota1m_ottelo.bin.gz Image.

    Was aktuell funktioniert ist das Emulieren des Ecotracker. Am Shelly arbeitet gemu und Karsten (Kalle?) aktuell...

    Ich werde mir jetzt den "Marstek Jupiter C Plus" holen, da dieser besser zu mir passt. Da kann ich meine Panels direkt anschließen. Nulleinspeisung via Shelly usw soll dort gleich sein...


    Tasmota V15.0.1 Images mit Shelly/Ecotracker Emulations Support (siehe gemu2015 Beiträge)

  • Danke, werde ich ausprobieren.

    bei diesem IP/V1/JSON werden die Daten korrekt angezeigt. Die Batteriespeicher-App findet trotzdem nichts. :D

    Das Thema hier ist hoch chaotisch mit den ganzen Code Schnippsel wo man als dritter gar nicht weiß, was geht, was braucht man und selbst wenn man erahnt, was gebraucht wird, landet man in einer Sackgasse. Ich nutze den Tasmo-Compiler... offenbar braucht man in diesem Spezialfall aber dieses PlatformIO das mir viel zu überladen und unübersichtlich ist.

    Ich lass es nun bleiben und schau in X Monaten wieder ob es neue oder andere Lösungen gibt. Dieses Solarzeug hat einen haufen Geld gekostet... da würden 70 Euro für so ein Shelly Pro 3EM auch nicht mehr groß ins Gewicht fallen. Mal schauen...

  • Es geht ja nicht nur um die 70 Euro, bei mir läuft Tasmota mit IR Lesekopf seit 2018 ohne Cloud und auch ohne Probleme.
    Ich lese ihn auch über IO Broker aus und steuere über websend noch einen 2 KW Heizer in drei Stufen.
    Mit Tasmotascripting geht sehr viel. Da es im Unimeter und Energy2Shelly läuft, sollte es auch auf Tasmota laufen.
    Ich würde es gern so behalten.