Jump to content

SunSpec - kompatible Smart Meter


eweri

Recommended Posts

Hallo!

MatzeTF hat mich gebeten einen neuen Thread aufzumachen, da ich mein Smart Meter in meine WARP einbinden wollte. Ich dachte mir ich mache das mal etwas allgemeiner, so kann man hier Erfahrungen mit diversen Smart Metern zusammen tragen.

Also ich habe ein Smart Meter von der Firma elgris. Laut Hersteller unterstützt es einige Wechselrichter von diversen Herstellern. Ich benutze das Smart Meter in Verbindung mit evcc, meiner WARP1 und meinem Sonny Boy 3.6 um Überschussladen zu realisieren. Wenn das die WARP übernehmen könnte wäre das natürlich cool.

evcc spricht mit dem Smart Meter und dem Sonny Boy Speedwire und mit der WARP wird über MQTT kommuniziert.

Im nächsten Beitrag hänge ich dann meine Ergebnisse an.

Bis denn.

eweri

bearbeitet von eweri
Link zu diesem Kommentar
Share on other sites

So hier kommen jetzt meine ersten Ergebnisse - der Scan bleibt irgend wann hängen und dann kann man auch wenn man das Fenster schließt nicht noch einmal Scannen. Man muss die WARP neustarten damit man einen weiteren Versuch starten kann.

Angehängt ist der Debüt-Report

 

Starting scan
Resolving elgris.fritz.box
Connecting to elgris.fritz.box:502
Using device address 1
Using base address 40000
Reading SunSpec ID
SunSpec ID found
Reading Common Model
Common Model found (block-length: 65)
Manufacturer Name: elgris
Model Name: SMART METER
Options: 
Version: 1.15.16
Serial Number: 1900005339
Device Address: 240
Reading Standard Model
Found Meter Wye Three Phase Integer Model (model-id: 203, block-length: 105)
Reading Standard Model
End Model found
Using device address 2
Using base address 40000
Reading SunSpec ID
Reading timed out, retrying
Reading timed out, retrying
Reading timed out, retrying
Reading timed out, retrying
Reading timed out, retrying
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 3
Using base address 40000
Reading SunSpec ID
Reading timed out, retrying
Reading timed out, retrying
Reading timed out, retrying
Reading timed out, retrying
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 4
Using base address 40000
Reading SunSpec ID
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 5
Using base address 40000
Reading SunSpec ID
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 6
Using base address 40000
Reading SunSpec ID
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 7
Using base address 40000
Reading SunSpec ID
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 8
Using base address 40000
Reading SunSpec ID
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 9
Using base address 40000
Reading SunSpec ID
Could not read SunSpec ID (error: TIMEOUT [228])
Using device address 10
Using base address 40000
Reading SunSpec ID

 

debug-report-warp-W2y-2024-01-29T22-06-21-148.txt

Link zu diesem Kommentar
Share on other sites

Am 29.1.2024 um 22:00 schrieb eweri:

Hallo!

MatzeTF hat mich gebeten einen neuen Thread aufzumachen, da ich mein Smart Meter in meine WARP einbinden wollte. Ich dachte mir ich mache das mal etwas allgemeiner, so kann man hier Erfahrungen mit diversen Smart Metern zusammen tragen.

Also ich habe ein Smart Meter von der Firma elgris. Laut Hersteller unterstützt es einige Wechselrichter von diversen Herstellern. Ich benutze das Smart Meter in Verbindung mit evcc, meiner WARP1 und meinem Sonny Boy 3.6 um Überschussladen zu realisieren. Wenn das die WARP übernehmen könnte wäre das natürlich cool.

evcc spricht mit dem Smart Meter und dem Sonny Boy Speedwire und mit der WARP wird über MQTT kommuniziert.

Im nächsten Beitrag hänge ich dann meine Ergebnisse an.

Bis denn.

eweri

Hi,

bist du dir sicher, dass evcc mit dem Sunny Boy mit Speedwire spricht? Ich vermute, dass dein Smartmeter und Sunny Boy über Speedwire spricht und evcc nur mit deinem Sunny Boy über modbus?

Das wäre dann wie bei mir. Nur dass ich einen Sunny Home Manager 2.0 und einen Smart Energy Hybrid-Wechselrichter habe. Da spricht mein evcc auch nur mit dem Wechselrichter.

Seit ca. einem Jahr lese ich (mit einem Java Programm) über modbus meine benötigten Werte aus dem Wechselrichter aus (PV-Erzeugung/Batterie Ladung und Entladung/Einspeisung ins Netz und Bezug vom Netz / etc). Funktioniert super, das programmiere ich gerade noch in einen ESP32 ein.

Nur leider habe ich keine Ahnung von dem SunSpec Protokoll. Aber das scheint bei SMA ja eh fehlerhaft zu sein?!?

Link zu diesem Kommentar
Share on other sites

Am 29.1.2024 um 23:58 schrieb Smoki:

Hi,

bist du dir sicher, dass evcc mit dem Sunny Boy mit Speedwire spricht? Ich vermute, dass dein Smartmeter und Sunny Boy über Speedwire spricht und evcc nur mit deinem Sunny Boy über modbus?

Nur leider habe ich keine Ahnung von dem SunSpec Protokoll. Aber das scheint bei SMA ja eh fehlerhaft zu sein?!?

Hi,

Da die evcc.yaml bei SMA zwischen Modbus und Speedwire unterscheidet, ich in meinen Einstellungen "sma-inverter-speedwire" benutze, gehe ich davon aus, dass evcc und der Wechselrichter über Speedwire sprechen. 

Das Problem mit SunSpec hat das Smart Meter von elgris, das ist SMA kompatibel aber nicht von SMA. Dieses Ding kann die WARP noch nicht mit SunSpec ansprechen. 

Meinen SMA-Wechselrichter habe ich über SunSpec eingebunden

Link zu diesem Kommentar
Share on other sites

On 1/29/2024 at 10:20 PM, eweri said:

Ich bin begeistert, ich konnte gerade meinen Sunny Boy als Zähler hinzufügen - allerdings ist es dunkel - irgend wie zeigt er nichts an 😃

Einige Wechselrichter, insbesondere die von SMA, machen das leider so, dass sie bei Dunkelheit im Standby keine Werte anzeigen. Anfangs hatten wir SunSpec so implementiert, dass nach vorhandenen Werten gesucht wurde. Wenn man den Scan dann nachts laufen lassen hat, wurde immer ein Wechselrichter ohne Werte gefunden, und man musste den Scan tagsüber laufen lassen. Das ist jetzt kein Problem mehr und verschwindende und wieder auftauchende Werte werten unterstützt.

On 1/29/2024 at 11:58 PM, Smoki said:

Nur leider habe ich keine Ahnung von dem SunSpec Protokoll. Aber das scheint bei SMA ja eh fehlerhaft zu sein?!?

Bei manchen SMA-Wechselrichtern werden werden aufgrund falscher Daten nicht alle Werte erkannt, das stimmt. Ansonsten kennen wir als SMA-Quirk bisher nur, dass die Phasenströme von Wechselrichtern immer mit Vorzeichen angegeben werden, obwohl sie laut SunSpec-Standard vorzeichenlos sein sollten. Dafür haben wir aber einen Workaround implementiert.

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...
On 1/29/2024 at 10:08 PM, eweri said:

So hier kommen jetzt meine ersten Ergebnisse - der Scan bleibt irgend wann hängen und dann kann man auch wenn man das Fenster schließt nicht noch einmal Scannen. Man muss die WARP neustarten damit man einen weiteren Versuch starten kann.

Teste mal bitte die angehängte Firmware. Diese behebt in unseren Tests beide Probleme. Die Ursache lag in der Art und Weise, wie dein Smart Meter reagiert, wenn eine Modbus Deviceaddrese angefragt wird, die das Smart Meter nicht kennt. Damit ging die Firmware nicht richtig um und dann blieb der Scan hängen und konnte auch nicht mehr abgebrochen werden.

warp_firmware_2_2_1_65c63107_merged.bin

Link zu diesem Kommentar
Share on other sites

  • 1 month later...

Hallo Zusammen,

vielleicht kann mir jemand ein paar Fragen beantworten. Ich bin noch blutiger Anfänger. Da ich aber ca. in einem halben Jahr ein E-Dienstwagen bekomme, beschäftige ich mich jetzt sehr stark mit dem Thema Wallbox, Zähler, Kommunikation usw. 
 

Die Warp 3 wird meine Wallbox werden. 
Ich verstehe das Thema PV-Überschussladen so, das zur Ermittlung nicht relevant ist was der Wechselrichter an Daten liefert zur Erzeugung sondern nur was bei meinem Zähler ins Netz eingespeist wird. Da mein Wechselrichter das nicht wissen kann ist dieser nicht relevant sondern ich benötige einen Zähler am Netzübergabepunkt, der Daten liefern kann. 
 

kann die WARP3 dazu mit dem elgris Smart Meter LAN 2.0 arbeiten?

Ich hab mich schon viel mit Modbus befasst und jetzt folgendes Verständnis:

RS485 (physische Kommunikationsschnittstelle)

ModbusRTU (die Art wie kommuniziert wird)

ModbusTCP (das gleiche nur über LAN)

sunspec (einheitliche Art was in welchem Register steht - findet nur bei ModbusTCP Anwendung)

Bei der Warp2 können ja mit dem Energymanager implementierte Zähler über Rs485 und TCP verwendet werden und alle mit sunspec Protokoll. Die Warp3 hat kein rs485. Können hier nur sunspec Zähler verwendet werden oder auch implementierte über ModbusTCP?

Ich habe sehr alte Platinum TL Wechselrichter von Diehl Ako. Ich bekomme dieser einfach nicht ausgelesen. Die haben zwar rs485 aber ich glaube die sprechen kein modbus und die verfügbare PLBUS.DLL hilft mir gar nicht weiter. 
nun überlege ich zwei elgris Zähler zu nehmen. Einen bei den WR und einen bei meinem Netz-Zähler. Letzterer ist dann für die Warp 3 Interessant (sofern kompatibel). Zusätzlich möchte ich mir eine eigene Darstellung basteln mit den Werten beider Zähler. Kann ich den Zähler überhaupt per Modbus TCP auslesen wenn die Warp3 diese Verbindung schon nutzt? Besteht die Verbindung mit der Warp dauerhaft oder nur alle x Sekunden, so das man. Mit anderen Anfragen noch dazwischen kommt?

vielleicht kann jemand meine Annahmen bestätigen oder korrigieren und die Fragen zu beantworten. Wäre euch sehr dankbar. 
 

Viele Grüße 

Michael

Link zu diesem Kommentar
Share on other sites

Hallo Michael!

PV-Überschuss meint, dass Du Energie am Hausanschlusspunkt ins Netz einspeist und nicht beziehst. Deswegen muss Du mit einem Smartmeter hinter dem Haupt-FI den Energiefluss messen. Der Wert kann dann von der WARP3 verwendet werden um die Ladeleistung zu regeln.

Den Wert kann die WARP sich per SunSpec vom Smartmeter z.B. einem elgris holen.

Meine Installation sieht so aus:

1. elgris Smartmeter spricht per SpeedWire mit der Software evcc (SMA Kompatibilitätsmodus)

2. Der SMA-Wechselrichter braucht den Wert des Smartmeters nur um die 70% Leistungsbegrenzung am Hausanschlusspunkt einzuhalten.

3. Die WARP und evcc kommunizieren über MQTT miteinander.

4. evcc sagt also der WARP mit welcher Leistung geladen werden soll und die WARP signalisiert das dem Auto

 

So wie ich das verstanden habe, braucht die WARP3 keine zusätzliche Software wie z.B. evcc um PV-Überschussladen zu realisieren. Die WARP3 holt sich per SunSpec von einem Smartmeter den momentanen Energiewert und passt dann die Ladung für das Auto entsprechend an. Die WARP muss also nicht wissen, was deine Wechselrichter gerade machen, sondern nur wie hoch und in welche Richtung ist der Energiefluss am Hausanschlusspunkt.

SunSpec kommt nach meiner Kenntnis aus dem Photovoltaik-Bereich und soll in Zukunft die Kommunikation über Herstellergrenzen hinweg ermöglichen. Du musst also nur schauen ob ein Gerät SunSpec kann, dann kann man es auch über Netzwerk auslesen. Hat bei meiner WARP2 und meinem elgris Smartmeter geklappt. Da ich noch eine „alte“ WARP habe, brauche ich noch evcc dafür.

ich vermute mal, wenn man komplexere Installationen mit Batterie, Nano-Blockheizkraftwerk, etc. hat, muss man vermutlich wieder evcc einsetzen. 

Hoffe das hat dir etwas geholfen.

 

Link zu diesem Kommentar
Share on other sites

Moin,

wenn du eh vor hast, die Zähler selbst auszulesen und die Daten anschließend weiterzuverarbeiten bzw. zu visualisieren, dann kannst du in der WARP auch einen API-Zähler anlegen und die Daten aktiv bereitstellen. So mache ich das über Node-RED.

WARP3 kombiniert die Funktionen der WARP2 und des WEM (WARP Energy Manager) in einem Gerät, d. h. PV-Überschussladen inkl. Umschaltung zwischen ein- und dreiphasigem Laden funktionieren out-of-the-box. Wenn du aber weitere Parameter (wie z. B. SOC des Fahrzeugs, aktuellen Strompreis, Hausbatterie, …) in die Ladesteuerung mit einbeziehen möchtest, dann kommst du um EVCC (oder eine eigene Implementierung) aktuell noch nicht herum.

Gruß Thomas

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...
Am 1.4.2024 um 08:16 schrieb poohnet:

Moin,

wenn du eh vor hast, die Zähler selbst auszulesen und die Daten anschließend weiterzuverarbeiten bzw. zu visualisieren, dann kannst du in der WARP auch einen API-Zähler anlegen und die Daten aktiv bereitstellen. So mache ich das über Node-RED.

WARP3 kombiniert die Funktionen der WARP2 und des WEM (WARP Energy Manager) in einem Gerät, d. h. PV-Überschussladen inkl. Umschaltung zwischen ein- und dreiphasigem Laden funktionieren out-of-the-box. Wenn du aber weitere Parameter (wie z. B. SOC des Fahrzeugs, aktuellen Strompreis, Hausbatterie, …) in die Ladesteuerung mit einbeziehen möchtest, dann kommst du um EVCC (oder eine eigene Implementierung) aktuell noch nicht herum.

Gruß Thomas

Hallo Thomas,

kannst Du das bitte einmal genau erläutern? Ich würde gerne auch einen api Zähler nutzen, komme aber mit der neuen api nicht klar. Ich bekomme keine Zählerwerte in der Wallbox angezeigt, mit der alten api funktionierte das noch. Also Umstellung von meter/Funktion zu meters/X/Funktion ist mein Problem

Danke

Link zu diesem Kommentar
Share on other sites

Hallo Gerd,

ich stelle die Daten tatsächlich noch über die alte API bereit (d. h. "warp2/XSS/meter/all_values_update"), damit musste ich nur minimale Anpassungen am Node-RED-Flow machen. Das funktioniert absolut problemlos und wenn ich das richtig im Kopf habe, dann bleibt dieser Weg auch weiterhin bestehen.

Für den Stromzähler habe ich die SDM630-Vorlage genommen und die Werte für die Einspeisung rausgelöscht:

image.thumb.png.185c46d5e13c467b1e9a4f58e4272bc1.png

Gruß Thomas

Link zu diesem Kommentar
Share on other sites

On 4/11/2024 at 12:10 PM, gerd.luthe said:

OK, ich weiß nicht ob das mit der aktuellen 2.3.0 Firmware noch funktioniert und will deshalb auf die neue api umstellen.
Ich muss wohl noch ein wenig tüfteln, sonst frage ich mal direkt beim Hersteller

Der Hersteller liest mit. 😉

Aktuell gibt es keine konkreten Pläne, die Legacy-API abzuschaffen, aber Irgendwann™ könnte das mal anstehen. Wenn du jetzt etwas Neues baust, solltest du besser direkt die neue API nutzen.

Bitte erkläre etwas genauer, wie du aktuell versuchst, die neue API zu nutzen, und welche Fehler du bekommst. Hast du mal ins Ereignis-Log gesehen? Da sollte irgendwas drinstehen, wenn deine Werte ignoriert werden. Lade einfach mal ein Log runter und hänge es hier an, damit ich mir deine Zähler-Konfiguration ansehen kann.

Link zu diesem Kommentar
Share on other sites

Ich versuche es einmal zu erklären, das Fehlerlog kann ich gerne heute Abend einmal nachsenden.

Ich habe einen physikalischen SDM630 den ich via Modbus und dem Volkszaehler Projekt entstammenden MBMD auslese und die Werte an einen MQTT Server liefere.
Nun würde ich diese Daten gerne via NodeRed aus dem MQTT auslesen und der WARP2 über die api zur Verfügung stellen. Es gab hier im Forum schon ein Beispiel für den WEM und die api, das funktioniert auch sehr gut. Aber für die WAPR2 bekomme ich das nicht hin.  Im WARP2 ist bei mir der interne Zähler, auch ein SDM630 (Zählernummer 0 intern) und der api Zähler ist dann die Zählernummer 1 intern.

Also folglich müsste via meters/1/values ja etwas passieren.

Im Prinzip habe ich diesen Flow

https://www.tinkerunity.org/topic/11399-warp-energy-manager/?do=findComment&comment=50780

genutzt, das klappt mit dem WEM, aber nicht mit der WARP

 

Link zu diesem Kommentar
Share on other sites

Der Flow verwendet die Legacy API, die nur einen Zähler unterstützt. Bei WEM und WARP ist das standardmäßig der erste Zähler (Nummer 0). Beim WEM hast du an der Position einen API-Zähler angelegt, den du beschreiben kannst. Bei der WARP ist das allerdings der Wallbox-interne Zähler, den du nicht überschreiben kannst. Es ist prinzipiell möglich, die Legacy API auf den anderen Zähler umzubiegen, allerdings kannst du dann darüber nicht mehr auf den internen Zähler zugreifen. Stattdessen solltest du die neue API nutzen, mit der du auf alle Zähler in allen Positionen gleichzeitig zugreifen kannst.

Um die neue API nutzen zu können, musst du dir einen API-Zähler anlegen mit den Werten, die du setzen möchtest. Wenn du nur den Leistungswert setzen möchtest, brauchst du nur „Wirk­leistung (Bezug minus Ein­speisung); Σ L1, L2, L3 [W]“. Am einfachsten bekommst du den Wert, indem du die SDM72-Vorlage auswählst und dann alles außer dem ersten Wert rauswirfst.

Per NodeRed musst du dann an meters/1/update (wenn dein API-Zähler die Nummer 1 hat) JSON im Format "[123.4]" schicken. Also eckige Klammern mit nur dem Leistungswert in Watt drin. Den unteren Flow aus dem von dir verlinkten Post brauchst du bei der neuen API nicht. Der setzt nur den Zählertyp bei der Legacy API, was bei der neuen API direkt beim Anlegen des Zählers im Webinterface passiert und dann permanent gespeichert wird.

Link zu diesem Kommentar
Share on other sites

On 4/11/2024 at 1:18 PM, MatzeTF said:

Bei der WARP ist das allerdings der Wallbox-interne Zähler, den du nicht überschreiben kannst.

Überschreiben nicht, aber Löschen und die null als API-Zähler neu anlegen funktioniert auch 🙃

Grundsätzlich würde ich @MatzeTF aber zustimmen, d. h. wenn ich das jetzt neu implementieren würde (was ich ja vielleicht irgendwann mal muss), dann mit der "richtigen" API...

Link zu diesem Kommentar
Share on other sites

  • 4 weeks later...

So einfach kann es sein...

Wie oben schon versucht bei mir auch mit NodRED:

[
    {
        "id": "52804565cbcf1689",
        "type": "tab",
        "label": "VZ 2 WARP",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "e4eba1ad777559a3",
        "type": "template",
        "z": "52804565cbcf1689",
        "name": "",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "[{{payload}}]",
        "output": "json",
        "x": 300,
        "y": 460,
        "wires": [
            [
                "0719a18065e47ab4",
                "aa15a307f317f53d"
            ]
        ]
    },
    {
        "id": "0719a18065e47ab4",
        "type": "http request",
        "z": "52804565cbcf1689",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "http://172.30.0.29/meters/1/update",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "senderr": false,
        "x": 470,
        "y": 460,
        "wires": [
            [
                "71758e0d4c88d925"
            ]
        ]
    },
    {
        "id": "71758e0d4c88d925",
        "type": "debug",
        "z": "52804565cbcf1689",
        "name": "debug 1",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 640,
        "y": 460,
        "wires": []
    },
    {
        "id": "6cdc4c649b2feb03",
        "type": "debug",
        "z": "52804565cbcf1689",
        "name": "debug 2",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1140,
        "y": 540,
        "wires": []
    },
    {
        "id": "b5f841663cbd93c5",
        "type": "link in",
        "z": "52804565cbcf1689",
        "name": "",
        "links": [
            "ef1b1595e6d6d19e"
        ],
        "x": 175,
        "y": 460,
        "wires": [
            [
                "e4eba1ad777559a3"
            ]
        ]
    },
    {
        "id": "aa15a307f317f53d",
        "type": "debug",
        "z": "52804565cbcf1689",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 470,
        "y": 500,
        "wires": []
    }
]

Der Input kommt bei mir von vzlogger, das ist einfach die aktuell Leistung mit Vorzeichen. Als JSON eingetütet und auf die WARP geworfen.

Zähler mit Nummer 1 wurde wie oben beschrieben eingerichtet: Nr 1, erstellt mit SDM72 Template und alle Werte außer der Leistung entfernt.

EHz in WARP.jpg

bearbeitet von J-A-U
Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...