Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Bedeutung Codes Running States Sungrow Wechselrichter

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Bedeutung Codes Running States Sungrow Wechselrichter

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Tiedi @ostseeskipper last edited by

      @ostseeskipper

      Also ich check's nicht 🙂

      Was heißt nach dieser Anleitung nun der State 12 oder 40 ?

      N 2 Replies Last reply Reply Quote 0
      • N
        Nordischerjung @Tiedi last edited by Nordischerjung

        @tiedi Geht es da vielleicht nach dem Binärensystem?

        12 = Bit0=0 Bit1=0 Bit2=1 Bit3=1

        Bit_____7654 3210
        Wert__0000 1100

        40:____0010 1000

        1 Reply Last reply Reply Quote 0
        • N
          Nordischerjung @Tiedi last edited by

          @tiedi ach guck mal hier
          https://forum.iobroker.net/topic/44861/gelöst-hex-oder-dezimal-in-binär-wandeln-und-text-ausgeben

          1 Reply Last reply Reply Quote 0
          • A
            aleks-83 last edited by aleks-83

            Hi,

            ich greife das Thema nochmal auf, da ich von dieser Art von Programmieren und Zahlen jonglieren absolut nichts verstehe.

            Hat jemand eine Funktion geschrieben in der man diese Fehlercodes abfragen kann?
            Oder vielleicht ein einfache Zuordnung durch Textzuweisung nach Fehlercode?

            In dem verlinkten Thread verstehe ich ebenfalls nur Bahnhof 🤕

            Ich habe mal die Beschreibung von Sungrow extrahiert und angehängt.
            Sungrow WR Fehlercodes.pdf

            1 Reply Last reply Reply Quote 0
            • A
              aleks-83 last edited by

              Ich habe die Zuweisung für den System Status jetzt erst einmal fest umgesetzt.

              async function StatiZuweisen() {
                SystemStatus = getState("modbus.0.inputRegisters.12999_System_State").val;
                Betriebsstatus = getState("modbus.0.inputRegisters.13000_Running_State").val;
                strSystemStatus = ('' + SystemStatus);
                strBetriebsStatus = ('' + Betriebsstatus);
                // Systemstatus
                if (strSystemStatus == '0') {
                  strSystemStatus = 'OK';
                } else if (strSystemStatus == '2') {
                  strSystemStatus = 'Stop';
                } else if (strSystemStatus == '8') {
                  strSystemStatus = 'StdBy';
                } else if (strSystemStatus == '16') {
                  strSystemStatus = 'Initial StdBy';
                } else if (strSystemStatus == '32') {
                  strSystemStatus = 'Startup';
                } else if (strSystemStatus == '64') {
                  strSystemStatus = 'Running';
                } else if (strSystemStatus == '256') {
                  strSystemStatus = 'Fault';
                } else if (strSystemStatus == '1024') {
                  strSystemStatus = 'Maintain mode';
                } else if (strSystemStatus == '2048') {
                  strSystemStatus = 'Forced mode';
                } else if (strSystemStatus == '4096') {
                  strSystemStatus = 'Off-Grid mode';
                } else if (strSystemStatus == '9473') {
                  strSystemStatus = 'Restarting';
                } else if (strSystemStatus == '16384') {
                  strSystemStatus = 'Ext. EMS mode';
                } else {
                  strSystemStatus = 'unbekannt';
                }
                // Betriebsstatus
                if (strBetriebsStatus == '0') {
                  strBetriebsStatus = 'OK';
                } else {
                  strBetriebsStatus = 'unbekannt';
                }
                console.warn((['### Wechselrichter Meldung: Systemstatus: ',SystemStatus,' - ',strSystemStatus,' - ','Betriebsstatus: ',Betriebsstatus,' - ',strBetriebsStatus].join('')));
              }
              

              Der Bereich für den Betriebsstatus ist allerdings noch offen.
              Hier verstehe ich die Dokumentation leider überhaupt nicht.

              1 Reply Last reply Reply Quote 0
              • A
                aleks-83 last edited by

                Hat hier jemand weiter dran gearbeitet und alle Fehlercodes entschlüsselt?
                Ich habe mich daran versucht, aber verstehe zu wenig von den Bit-Zuordnungen.
                Kann mir jemand dabei helfen?

                ubecker 1 Reply Last reply Reply Quote 0
                • ubecker
                  ubecker @aleks-83 last edited by

                  @aleks-83 was möchtest du denn damit machen?
                  ich habe mir, da ich nur die Texte zur Visualisierung brauchte, ein kleines Script geschrieben das nur den Systemstatus ausliest und in lesbaren Text übersetzt.

                  
                  let ID_Systemstatus = 'alias.0.Energie.PV_Anlage.Systemstatus';
                  let value_sys_stat = getState(ID_Systemstatus).val;
                  let Systemstatus_txt = 'javascript.0.PV_System_txt';
                  let Status_liste = ['Stop', 'Standby', 'inital Styndby', 'Start', 'Normal', 'Fehler', 'Verwaltungs Mode', 'Erzwungener Mode', 'Inselmode', 'Neustart', 'ext EMS Mode'];
                  
                  on({ id: [].concat(ID_Systemstatus), change: 'ne' }, async (obj) => {
                    let value = obj.state.val;
                    let oldValue = obj.oldState.val;
                    value_sys_stat = (obj.state ? obj.state.val : '');
                    let i = 0;
                    while (value_sys_stat > 1) {
                        value_sys_stat = value_sys_stat >> 1;
                        i++;
                      }
                  setState(Systemstatus_txt, (Status_liste[i-2]), true);
                  // console.log(i);
                  // console.log (getState(Systemstatus_txt).val);
                  });
                  

                  wobei natürlich meine Datenpunkte verwendet werden.
                  Geht vieleicht auch einfacher, aber es macht das was es soll.

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    aleks-83 @ubecker last edited by aleks-83

                    @ubecker
                    Danke für dein skript.
                    Wie das funktioniert, verstehe ich nicht.
                    Wonordnet er die Werte den Texten zu?

                    Ich möchte im Prinzip das gleiche tun.
                    Also aus den Bit Werten einen lesbaren Zustand schreiben.
                    Mir fehlen aktuell einige Zuordnungen.
                    Oben in meinem Post siehst du, welche ich aktuell zugeordnet habe.

                    Aktuell bekomme ich immer wieder Meldungen meines WR über folgende Stati:
                    Betriebsstatus:
                    9, 25, 40, 41

                    Systemstatus:
                    5120, 5632

                    Edit:
                    Ich habe den WR etwas beobachtet.
                    Könnte der Betriebsstatus wiefolgt sein?
                    25 Einspeisung
                    41 Zukauf
                    9 idle?

                    ubecker 3 Replies Last reply Reply Quote 0
                    • ubecker
                      ubecker @aleks-83 last edited by

                      @aleks-83 auch diese Zuordnungen stehen in der Doku im Anhang 1.2
                      Wahrend es beim Systemstatus recht einfach ist, da jedes Bit eine Entspechende Bedeutung hat kann man wie in meinem Script einfach das gemessene Bit aus dem Systemstatus einfach durch Bit schieben den entsprechenden Text ausgeben.
                      Beim Betriebsstatus sind es Bitkombinationen die durch und und oder herausgefunden werden müssen.
                      Ich benutze diese Bits um eine Darstellung in der Vis zu erhalten. Wert wird angezeigt oder ausgeblendet, Flusslinie läuft recht oder linksrum, oder wird ausgebelbdet.
                      Screenshot 2024-11-16 163539.png
                      Im Bild sind alle Linien und Werte die aber in der Webdarstellung der Vis entsprechend an oder aus, links oder rechts rum laufen.
                      hier das Script dazu

                      
                      let Bit_0 = 5; // power from PV and discharging
                      let Bit_1 = 2; // charging
                      let Bit_2 = 4; // discharging
                      let Bit_1_2 = 7; // test auf 0 not charging / not discharging / power from PV
                      let ID_WR2Haus = 'javascript.0.PV_WR2Haus';
                      let ID_Batt_charge = 'javascript.0.PV_Batt_charge';
                      let ID_Batt_discharge = 'javascript.0.PV_Batt_discharge';
                      let ID_Batt_standby = 'javascript.0.PV_Batt_standby';
                      let ID_System_state = 'alias.0.Energie.PV_Anlage.Betriebsstatus';
                      let System_state = getState(ID_System_state).val;
                      
                      
                      // 0 = not charging ; 2 = Charging; 
                      setState(ID_Batt_charge , (System_state & Bit_1), true);
                      // 0 = not discharging ; 4 = discharging; 
                      setState(ID_Batt_discharge , (System_state & Bit_2), true);
                       // true = no Power from PV and discharging
                      setState(ID_WR2Haus , ((System_state & Bit_0) != 0 ), true);
                       // 0 = no charging, no discharging
                      setState(ID_Batt_standby , (System_state & Bit_1_2), true);
                      
                      on({ id: [].concat(ID_System_state), change: 'ne' }, async (obj) => {
                        let value = obj.state.val;
                        let oldValue = obj.oldState.val;
                        System_state = (obj.state ? obj.state.val : '');
                        setState(ID_Batt_charge , (System_state & Bit_1), true);
                        setState(ID_Batt_discharge , (System_state & Bit_2), true);
                        setState(ID_Batt_standby , (System_state & Bit_1_2), true);
                        setState(ID_WR2Haus , ((System_state & Bit_0) != 0 ), true);
                      });
                      
                      
                      

                      Damit setzte ich true oder fals für die Werte, Richtungen.
                      ich hoffe das hilft dir etwas.
                      Übrigens du darfst bei diesen Werten nicht dezumal denken. Du musst Bitmäßig denken.
                      Deine Angabe vom Systemstatus ist fasch. Hier ist wohl noch was in deinen Definition des Modbusregisters falsch.
                      für deine 5120 sollte nur 20 kommen
                      für deine 5632 sollte nur 22 kommen. (Bit 1, Bit2 und Bit4 sind gesetzt, rest ist 0
                      Aber die Werte sind unlogisch. danach wäre bei 20 Akku speist das Netz.
                      bei 22 Akku wied geladen, wird entladen und speichert ins Netz.

                      1 Reply Last reply Reply Quote 0
                      • ubecker
                        ubecker @aleks-83 last edited by

                        @aleks-83 hier die Modbusdefinition vom mir für Betriebs und Systemstatus
                        Screenshot 2024-11-16 173020.png

                        1 Reply Last reply Reply Quote 1
                        • ubecker
                          ubecker @aleks-83 last edited by

                          @aleks-83 noch etwas,
                          da ich in Javascript nicht so erfahren bin haben mich für diese Scrips hier einige geholfen.

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            aleks-83 @ubecker last edited by aleks-83

                            @ubecker
                            Danke dir für die Hilfe.
                            Leider verstehe ich das Skript und die Doku nicht.

                            Meine Datenpunkte sind genau so eingestellt wie deine.
                            Unsigned 16 Bit (Big Endian)

                            Ich habe übrigens keinen Speicher in meiner PV.

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            1.0k
                            Online

                            31.6k
                            Users

                            79.5k
                            Topics

                            1.3m
                            Posts

                            6
                            14
                            3039
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo