Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

Neues Plugin für Solaredge Wechselrichter / Sunspec in Arbeit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ivande
    antwortet
    Zitat von fuxl66 Beitrag anzeigen
    Ich bekomme in nächster Zeit einen Fronius Symo Gen24 geliefert.
    Lässt sich dieser mit diesem Plugin auslesen?
    dies sollte mit dem modbus_tcp - Plugin, wenn die modbus-Register-Adressen des Wechselrichters bekannt sind, auszulesen gehen

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Hi,

    Ich bekomme in nächster Zeit einen Fronius Symo Gen24 geliefert.
    Lässt sich dieser mit diesem Plugin auslesen?

    Ich habe aktuell einen Kostal in Betrieb den ich mit dem Kostal Plugin auslese.

    Mfg
    Markus

    P.S. geht wohl einfacher mit den jsonread plugin.
    Zuletzt geändert von fuxl66; 30.10.2022, 14:04.

    Einen Kommentar schreiben:


  • KleskMS
    antwortet
    am besten mal per SetApp App nachschauen wie die Modbus Adressen vergeben sind.
    Falls du kein SetApp App Login hast, verbinde dich mit dem WLAN deines WR... und schau unter der Adresse http://172.16.0.1 dir die Konfig an und dann noch am 2 WR das gleiche nochmal.
    Bei mir hat der
    1.WR die Modbus Adresse 1
    der
    2.WR die Modbus Adresse 3

    Beide über RS485 verbunden, der Master per LAN im Netzwerk.

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Guten Morgen

    KleskMS

    woher hast du modBusUnit: '3' ?



    Wie oben geschrieben ist der SE3500 der Master und der grosse Bruder per RS485 SunSpec verbunden.

    Habe es mal probiert jedoch ohne Erfolg.

    Code:
    2022-10-09  08:37:47 ERROR    plugins.modbus_tcp  read error: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received) HoldingRegister.40020.3 (address.slaveUnit) regCount:8
    2022-10-09  08:38:08 ERROR    plugins.modbus_tcp  read error: Modbus Error: [Input/Output] No Response received from the remote unit/Unable to decode response HoldingRegister.40020.3 (address.slaveUnit) regCount:8
    
    ​
    Zuletzt geändert von jonny7792; 09.10.2022, 07:39.

    Einen Kommentar schreiben:


  • KleskMS
    antwortet
    Hallo,
    habe bei mir auch 2 SE WR + Akku im Einsatz.
    Es funktioniert über eine modbus_tcp instanz.
    wichtig ist, dass du immer pro Item und WR die jeweilige modBusUnit mitgibst:

    Code:
        SE10K:
            C_Version:
                type: str
                name: C_Version
                modBusAddress: 40044
                modBusDataType: string16
                modBusUnit: '1'​
            B_Manufacturer:
                type: str
                name: B_Manufacturer
                modBusUnit: '1'
                modBusAddress: 57600
                modBusDataType: string16​
        SE5000:
            C_Version:
                type: str
                name: C_Version
                modBusAddress: 40044
                modBusDataType: string16
                modBusUnit: '3'​
    Die Ausgabe von Modul_Leistung und Verbrauch muss dann in einem extra Item addiert werden und ensprechend im HTML Layout angepasst werden.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    es wird zwar etwas dauern bis man eine Antwort bekommt, aber ich würde beim Solaredge-support nachfragen, wie/ob man an die Daten des SE12,5 kommt. Alternativ mit zusätzlicher Lan Anbindung und zweiter modbus_tcp-Plugin-Instanz versuchen.

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Hallo Ivan

    ich konnte folgendes in Erfahrung bringen:

    SE3500 ist der Master dieser hängt auch im Netzwerk.
    Der SE12,5 ist per RS485 verbunden mit dem Protokoll Solar Edge Sekundärgerät.. RS485-2 (Solar Edge Spezial Gedöns)

    RS485-1 Modbus Multigerät wegen der Batterie und dem Zähler dort ist die ID1 für den WR und ID2 für den Zähler und ID15 für die Batterie Hinterlegt.

    Ich habe vorhin etwas umgestellt nachdem kamen keine Daten mehr über das Modbus Plugin dies konnte ich mit mühe und not wieder fixen.

    Da ich keine Berechtigung für die SetAPP habe muss ich alles über Umwege machen und dementsprechend den Hotspot aktiv schalten und dann auf den SE3500 - Auf den SE12,5 komme ich gar nicht drauf
    Zuletzt geändert von jonny7792; 22.09.2022, 19:45.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    vielleicht gilt es nur die richtige Adresse vom SE12 ,5 herauszufinden, welche dann mit dem Attribut "modBusUnit: xx " in den Items eingestellt werden könnte.Ohne Angabe wird die MODBUS-Adresse (Unit) aus der plugin.yaml verwendet oder als default die "1".
    Wenn du dich an die Einstellungen des Wechselrichters herantraust. Oder vielleicht weiß der Installateur oder Solaredge/Servicedie eingestellte MODBUS-Adresse.

    image.png
    Zuletzt geändert von ivande; 21.09.2022, 09:27.

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Ich werde mir heute Abend mal den wechselrichter anschauen und allenfalls den 2 ebenfalls per LAN anbinden

    Einen Kommentar schreiben:


  • ivande
    antwortet
    es müsste dann auch der SE12,5 per Modbus auslesbar sein, die Frage ist nur über welche RegisterAdressen bzw. welche Modbus-Adresse(Unit).

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Hallo Ivan

    vom SE3500H kommt ein Feedback vom SE 12.5 nicht

    Die Verkabelung ist wie Folgt

    NETZWERK - SE3500H

    Die anderen Teilnehmer (Batterie/SE12,5 sowie Zähler sind per Modbus verbunden)

    Muss ich allenfalls etwas umstellen damit ich die anderen daten erhalte?



    Zuletzt geändert von jonny7792; 20.09.2022, 19:56.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    die Pfeile sollten eigentlich beim nächsten Auslesen der Registerwerte in die richtige Position springen, das dauert bei mir auch manchmal einige Sekunden, je nach Einstellung von cycle im plugin.yaml (default 300Sekunden) - Ich lese den Wechselrichter alle 20 Sekunden cycle: 20


    der Akku wird am SE3500H - String hängen?

    damit die Modulleistung von beiden Wechselrichtern angezeigt wird, müsste man auch beide Wechselrichter auslesen. Ich denke du siehst derzeit nur die Daten von einem Wechselrichter warscheinlich dem SE3500H. Ich denke beim 2 Wechselrichter ist eine andere "MODBUS address" eingestellt, diese könnte mit dem modbus_tcp-plugin über die zusätzliche angabe der "modBusUnit: '2' abgefragt werden.
    vielleicht kannst du versuchen die Modellnamen des Wechselrichters auszulesen um zu sehen ob beide erreicht werden.


    Code:
       C_Model: #Modelnamen des 1.Wechselrichters
            type: str
            name: C_Model
            modBusAddress: 40020
            modBusDataType: string16
       C_Model_2: #Modelnamen des 1.Wechselrichters - wird dieser korrekt angezeigt?
            type: str
            name: C_Model
            modBusAddress: 40020
            modBusDataType: string16
            modBusUnit: '2'

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Hallo Ivan

    aktuell sieht die Anzeige wie folgt aus : Momentaufnahme

    pv anzeige.png

    Um dir das ganze mal ein Wenig zu veranschaulichen ist der Aufbau wie folgt:

    1xSE12,5-RW0T0BNN4
    1xSE3500H-RW000BNN4
    1x SolarEDGE Modbus Zähler
    1x LG RESU 10H


    Die Items sind wie folgt in der items.yaml hinterlegt.

    PHP-Code:
    Photovoltaik:
        
    C_Version:
            
    typestr
            name
    C_Version
            modBusAddress
    40044
            modBusDataType
    string16
        AC_Leistung_sf
    :
            
    typenum
            name
    I_AC_Power_SF # SF- Skalierungsfaktor sunspec (z.B. -3)
            
    enforce_updatesTrue
            modBusAddress
    40084
            modBusDataType
    int16
        AC_Leistung
    :
            
    typenum
            name
    I_AC_Power # Die Leistung ergit sich aus dem erhaltenen Registerwert und dem Skalierungsfaktor (AC_Leistung_sf)
            
    enforce_updatesTrue
            
    eval: value*10**sh.Photovoltaik.AC_Leistung_sf() # Berechnung der Leistung (erhaltene Registerwert * 10^Skalierungsfaktor)
            
    modBusAddress40083
            modBusFactor
    0.001
        Modul_Leistung
    :
            
    typenum
            eval_trigger
    :
              - 
    Photovoltaik.DC_Leistung
              
    Photovoltaik.Speicher_Leistung
            
    eval: (sh.Photovoltaik.DC_Leistung() + sh.Photovoltaik.Speicher_Leistung()) if (sh.Photovoltaik.DC_Leistung() +  sh.Photovoltaik.Speicher_Leistung()) > else 0
            enforce_updates
    'True'
        
    DC_Leistung_sf:
            
    typenum
            name
    I_DC_Power_SF
            enforce_updates
    True
            modBusAddress
    40101
            modBusDataType
    int16
        DC_Leistung
    :
            
    typenum
            name
    I_DC_Power
            
    eval: value*10**sh.Photovoltaik.DC_Leistung_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    enforce_updatesTrue
            modBusAddress
    40100
            modBusFactor
    0.001
        Inverter_Temperatur_sf
    :
            
    typenum
            name
    I_Temp_Sink_SF
            enforce_updates
    True
            modBusAddress
    40106
            modBusDataType
    int16
        Inverter_Temperatur
    :
            
    typenum
            name
    I_Temp_Sink
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Inverter_Temperatur_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40103
            modBusDataType
    int16
        Zaehler_Strom_sf
    :
            
    typenum
            name
    M_AC_Current_SF
            enforce_updates
    True
            modBusAddress
    40194
            modBusDataType
    int16
        Zaehler_Strom
    :
            
    typenum
            name
    M_AC_Current
            enforce_updates
    True
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Zaehler_Strom_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40190
        Zaehler_Spannung_sf
    :
            
    typenum
            name
    M_AC_Voltage_SF
            enforce_updates
    True
            modBusAddress
    40203
            modBusDataType
    int16
        Zaehler_Spannung
    :
            
    typenum
            name
    M_AC_Voltage_L_N
            enforce_updates
    True
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Zaehler_Spannung_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40195
        Zaehler_Frequenz_sf
    :
            
    typenum
            name
    M_AC_Freq_SF
            enforce_updates
    True
            modBusAddress
    40205
            modBusDataType
    int16
        Zaehler_Frequenz
    :
            
    typenum
            name
    M_AC_Freq
            enforce_updates
    True
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Zaehler_Frequenz_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40204
        Zaehler_Leistung_sf
    :
            
    typenum
            name
    M_AC_Power_SF
            enforce_updates
    True
            modBusAddress
    40210
            modBusDataType
    int16
        Zaehler_Leistung
    :
            
    typenum
            name
    M_AC_Power
            enforce_updates
    True
            
    eval: value*10**sh.Photovoltaik.Zaehler_Leistung_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40206
            modBusDataType
    int16
            modBusFactor
    0.001
            StatusEinspeisen
    :
                
    typebool
                eval_trigger
    Photovoltaik.Zaehler_Leistung
                
    eval: if sh.Photovoltaik.Zaehler_Leistung() > else 0
            StatusText
    :
                
    typestr
                eval_trigger
    Photovoltaik.Zaehler_Leistung
                
    eval: "'Exportieren' if sh.Photovoltaik.Zaehler_Leistung() > 0 else 'Importieren'"
            
    Status# 0 Autark, 1 Export, 2 Import,
                
    typenum
                eval_trigger
    Photovoltaik.Zaehler_Leistung
                
    eval: if sh.Photovoltaik.Zaehler_Leistung() > 0.025 else if sh.Photovoltaik.Zaehler_Leistung() < -0.025 else 0
        Verbrauch
    :
            
    typenum
            eval_trigger
    :
              - 
    Photovoltaik.AC_Leistung
              
    Photovoltaik.Zaehler_Leistung
            
    eval: sh.Photovoltaik.AC_Leistung() - sh.Photovoltaik.Zaehler_Leistung()
            
    enforce_updates'True'

            
    VonModul:
                
    typebool
                eval_trigger
    Photovoltaik.Modul_Leistung
                
    eval: if sh.Photovoltaik.Modul_Leistung() > 0.09 else 0

            VonBatterie
    :
                
    typebool
                eval_trigger
    Photovoltaik.Speicher_Leistung
                
    eval: if sh.Photovoltaik.Speicher_Leistung() < else 0

            VonNetz
    :
                
    typebool
                eval_trigger
    Photovoltaik.Verbrauch
                
    eval: if sh.Photovoltaik.Verbrauch() < else 0
        Speicher_Leistung
    :
            
    typenum
            name
    S_Power
            enforce_updates
    True
            modBusAddress
    59764
            modBusDataType
    float32
            modBusFactor
    0.001
        Speicher_Energie
    :
            
    typenum
            name
    S_Available_Energy
            modBusAddress
    59776
            modBusDataType
    float32
            modBusFactor
    0.001
        Speicher_SOE
    :
            
    typenum
            name
    S_SOE
            modBusAddress
    59780
            modBusDataType
    float32
        Speicher_Status
    :
            
    typenum
            name
    S_Status
            modBusAddress
    59782
            modBusDataType
    uint32
            Text
    :
                
    typestr
                eval_trigger
    Photovoltaik.Speicher_Status
                
    eval: sh..lookup()[value]
                
    lookup:
                    
    typedict
                    initial_value
    "{0: 'Aus', 1: 'Standby', 2: 'Init', 3: 'Laden', 4: 'Entladen', 5: 'Fehler', 6: 'Leerlauf'}" 
    Gruss Oliver

    Einen Kommentar schreiben:


  • ivande
    antwortet
    wegen Verbrauch, Modulleistung und den Pfeilen müsstest du noch ein paar Items hinzufügen. Woher hast du die Vorlage (dann kann ich die Items dort evtl. noch ergänzen)

    Zitat von jonny7792 Beitrag anzeigen
    Ebenso ist die Anzeige Netzstrom nicht korrekt
    wesshalb der Strom nicht stimmt kann ich jetzt nicht erkennen, hast Du einen Dreiphasenanschluss? welchen Wechselrichter?

    Gruß Ivan


    Code:
    Photovoltaik:
    
        Modul_Leistung:
            type: num
            eval_trigger:
                - Photovoltaik.DC_Leistung
                - Photovoltaik.Speicher_Leistung
            eval: (sh.Photovoltaik.DC_Leistung() + sh.Photovoltaik.Speicher_Leistung()) if (sh.Photovoltaik.DC_Leistung() +  sh.Photovoltaik.Speicher_Leistung()) > 0 else 0
            enforce_updates: True
        Verbrauch:
            type: num
            eval_trigger:
                - Photovoltaik.AC_Leistung
                - Photovoltaik.Zaehler_Leistung
            eval: sh.Photovoltaik.AC_Leistung() - sh.Photovoltaik.Zaehler_Leistung()
            enforce_updates: True
            VonModul:
                type: bool
                eval_trigger: Photovoltaik.Modul_Leistung
                eval: 1 if sh.Photovoltaik.Modul_Leistung() > 0.09 else 0
            VonBatterie:
                type: bool
                eval_trigger: Photovoltaik.Speicher_Leistung
                eval: 1 if sh.Photovoltaik.Speicher_Leistung() < 0 else 0
            VonNetz:
                type: bool
                eval_trigger: Photovoltaik.Verbrauch
                eval: 1 if sh.Photovoltaik.Verbrauch() < 0 else 0

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Hallo ivande

    Ich habe deine Vorlage mal bei mir Importiert und bekomme soweit plausible Werte

    items.yaml
    PHP-Code:
    ---
    Photovoltaik:
        
    C_Version:
            
    typestr
            name
    C_Version
            modBusAddress
    40044
            modBusDataType
    string16
        AC_Leistung_sf
    :
            
    typenum
            name
    I_AC_Power_SF # SF- Skalierungsfaktor sunspec (z.B. -3)
            
    enforce_updatesTrue
            modBusAddress
    40084
            modBusDataType
    int16
        AC_Leistung
    :
            
    typenum
            name
    I_AC_Power # Die Leistung ergit sich aus dem erhaltenen Registerwert und dem Skalierungsfaktor (AC_Leistung_sf)
            
    enforce_updatesTrue
            
    eval: value*10**sh.Photovoltaik.AC_Leistung_sf() # Berechnung der Leistung (erhaltene Registerwert * 10^Skalierungsfaktor)
            
    modBusAddress40083
            modBusFactor
    0.001
        DC_Leistung_sf
    :
            
    typenum
            name
    I_DC_Power_SF
            enforce_updates
    True
            modBusAddress
    40101
            modBusDataType
    int16
        DC_Leistung
    :
            
    typenum
            name
    I_DC_Power
            
    eval: value*10**sh.Photovoltaik.DC_Leistung_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    enforce_updatesTrue
            modBusAddress
    40100
            modBusFactor
    0.001
        Inverter_Temperatur_sf
    :
            
    typenum
            name
    I_Temp_Sink_SF
            enforce_updates
    True
            modBusAddress
    40106
            modBusDataType
    int16
        Inverter_Temperatur
    :
            
    typenum
            name
    I_Temp_Sink
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Inverter_Temperatur_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40103
            modBusDataType
    int16
        Zaehler_Strom_sf
    :
            
    typenum
            name
    M_AC_Current_SF
            enforce_updates
    True
            modBusAddress
    40194
            modBusDataType
    int16
        Zaehler_Strom
    :
            
    typenum
            name
    M_AC_Current
            enforce_updates
    True
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Zaehler_Strom_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40190
        Zaehler_Spannung_sf
    :
            
    typenum
            name
    M_AC_Voltage_SF
            enforce_updates
    True
            modBusAddress
    40203
            modBusDataType
    int16
        Zaehler_Spannung
    :
            
    typenum
            name
    M_AC_Voltage_L_N
            enforce_updates
    True
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Zaehler_Spannung_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40195
        Zaehler_Frequenz_sf
    :
            
    typenum
            name
    M_AC_Freq_SF
            enforce_updates
    True
            modBusAddress
    40205
            modBusDataType
    int16
        Zaehler_Frequenz
    :
            
    typenum
            name
    M_AC_Freq
            enforce_updates
    True
            database
    yes
            database_maxage
    365
            
    eval: value*10**sh.Photovoltaik.Zaehler_Frequenz_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40204
        Zaehler_Leistung_sf
    :
            
    typenum
            name
    M_AC_Power_SF
            enforce_updates
    True
            modBusAddress
    40210
            modBusDataType
    int16
        Zaehler_Leistung
    :
            
    typenum
            name
    M_AC_Power
            enforce_updates
    True
            
    eval: value*10**sh.Photovoltaik.Zaehler_Leistung_sf() # erhaltene Registerwert * 10^Skalierungsfaktor
            
    modBusAddress40206
            modBusDataType
    int16
            modBusFactor
    0.001
            Status
    # 0 Autark, 1 Export, 2 Import,
                
    typenum
                eval_trigger
    Photovoltaik.Zaehler_Leistung
                
    eval: if sh.Photovoltaik.Zaehler_Leistung() > 0.025 else if sh.Photovoltaik.Zaehler_Leistung() < -0.025 else 0
            StatusText
    :
                
    typestr
                eval_trigger
    Photovoltaik.Zaehler_Leistung
                
    eval: "'Exportieren' if sh.Photovoltaik.Zaehler_Leistung() > 0.025 else 'Importieren' if sh.Photovoltaik.Zaehler_Leistung() < -0.025 else ''"
        
    Speicher_Leistung:
            
    typenum
            name
    S_Power
            enforce_updates
    True
            modBusAddress
    59764
            modBusDataType
    float32
            modBusFactor
    0.001
        Speicher_Energie
    :
            
    typenum
            name
    S_Available_Energy
            modBusAddress
    59776
            modBusDataType
    float32
            modBusFactor
    0.001
        Speicher_SOE
    :
            
    typenum
            name
    S_SOE
            modBusAddress
    59780
            modBusDataType
    float32
        Speicher_Status
    :
            
    typenum
            name
    S_Status
            modBusAddress
    59782
            modBusDataType
    uint32
            Text
    :
                
    typestr
                eval_trigger
    Photovoltaik.Speicher_Status
                
    eval: sh..lookup()[value]
                
    lookup:
                    
    typedict
                    initial_value
    "{0: 'Aus', 1: 'Standby', 2: 'Init', 3: 'Laden', 4: 'Entladen', 5: 'Fehler', 6: 'Leerlauf'}" 
    jedoch passen ein Paar Werte nicht ganz

    pv anzeige.png

    Zum einen fehlen mir die Pfeile wie sie in deiner Visu zu sehen sind und zum anderen Bekomme ich keine Anzeige von den folgenden Werten:

    Verbrauch
    Modulleistung

    Ebenso ist die Anzeige Netzstrom nicht korrekt

    Ich wäre dir dankbar wenn du mir etwas behilflich sein könntest

    Einen Kommentar schreiben:

Lädt...
X