Ankündigung

Einklappen
Keine Ankündigung bisher.

neues stiebel eltron wärmepumpen binding

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

    #31
    Zitat von Miki84 Beitrag anzeigen
    Hi Intenos ,

    ich habe auch ein USB Port hinter der Tür. Ich habe kurzzeitig mal fhem ausprobiert. Das hat auf Anhieb gut geklappt. Konnte eigentlich alles steuern und mir auch Werte anzeigen lassen.
    Moin,
    ich weiß dein Beitrag ist schon etwas her, aber ich versuche gerade genau das: Bei der LWZ504 etwas über den USB Port auslesen. Dieser ist offentsichtlich ein USB-to-Serial adapter und wird dann in Windows als COM-Port erkannt. Wenn ich auf dem COM-Port jedoch versuche zu kommunizieren (via Putty) passiert gar nichts.
    Hast du da ggf. noch einen Tipp?
    Viele Grüße

    Kommentar


      #32
      Hi Intenos,

      da ich ein Problem mit der modbusTCP Abfrage mit meinem ISGweb hatte - Input Register 2501 - Betriebsart scheint im WPM 3i mit meiner WPF 05 cool WP nicht unterstützt zu werden, obwohl diese in der Dokumentation von Stiebel Eltron beschrieben ist, habe ich diesen Thread gefunden.
      • Manche Parameter fehlen, bspw. die aktuelle Leistungsaufnahme des Verdichter in kW.
      • Die Tageszähler für die Wärmeleistung sowie Verdichter-Leistungsaufnahme für Heizen sowie die Warmwasser sind nur in ganzen kWh ohne jegliche Nachkommastelle.
      Die von Dir vermissten Parameter, kannst Du evtl. selbst zur modbus/TCP Erweiterung hinzufügen. Ich verwende eine WPM 3i, wo der 1. Parameter nicht unterstützt wird (nur mit WPM 3), aber die Nachkommastellen für die Tageszähler konnte ich finden und ergänzen. Dafür muss lediglich die Datei mit den Mappings der internen WebIDs zu den modbus Registern erweitert werden. Ein SSH Server ist beim Herausfinden der Infos für Deine LWZ evtl. hilfreich. Die Infos dazu findest Du in der LoxWiki unter SSH Zugang mit vollen root-Rechten und zusätzliche Objekte im ISGweb für modbus/TCP freischalten.

      Gruß Jan

      Kommentar


        #33
        Hi jwachsmuth,

        danke für den Tipp!

        Nachdem mir das Ganze keine Ruhe gelassen hat, habe ich in der Zwischenzeit eine Lösung gefunden wie ich die Werte aus dem Webserver auslesen kann. Das funktioniert mit Linux-Befehlen bzw. openHAB. Ins besonders korrigiere ich damit auch die Tageszählerwerte so dass ich wirkliche Tageszähler habe und nicht noch die Nachkommastellen vom Vortag enthalten sind. Alles miteinander war es ein ganzer schöner Kampf, jetzt läuft es aber seit ein paar Wochen stabil und ohne jegliche Aussetzer. Von daher komme ich mittlerweile an alle Werte ran. Lediglich wenn ich noch Parameter ändern möchte die nicht per Modbus zugänglich sind, käme ich mit meiner aktuellen Lösung ans Limit und müsste mich doch noch ran wagen das ISG zu cracken .

        So schaut die Rule von openHAB bei mir aus:
        Code:
        // Werte über Webserver abfragen die über Modbus nicht gehen oder zu ungenau sind
         
        rule "LWZ - Werte aus Websever abfragen"
            when
                Item LWZ_Status_Verdichter changed from 0 to 1 or
                Time cron "0 10 0 * * ?" or
                Time cron "0 15 0 * * ?" or
                System started
            then
                var String Wert
                var Number Uebertrag_Merken_Wiederholen = 0
                var Number Erste_Runde = 1 // Überhitzung beim Ersten Auslesen nach Verdichterstart auslassen da der Wert noch sehr hoch ist
                var Number Nachlauf = 0
                var Number Merker_WW_WM
                var Number Merker_WW_P
                var Number Merker_Heizung_WM
                var Number Merker_Heizung_P
            
                // Werte aus Webserver zyklisch während des Betriebs auslesen
                AuslesenWebserver?.cancel
                AuslesenWebserver = createTimer(now, [ |
                    
                    // Websites auslesen
                    var String Page_1_1 = executeCommandLine("curl 'http://192.168.178.46/?s=1,1'", 2000)
                    var String Page_2_3 = executeCommandLine("curl 'http://192.168.178.46/?s=2,3'", 2500)
                    
                    // Werte nur aufbereiten wenn Auslesen der Websites erfolgreich war
                    if (Page_1_1.contains("WM HEIZEN TAG") && Page_2_3.contains("MOTORSPANNUNG")) {                
                        
                        // Einfache Werte extrahieren und an Items übergeben (Nachfolgeparameter als Suchtext nach der Zahl angeben)
                        Wert = transform("REGEX", ".*<td class=\"value round-rightbottom\">(\\d+).*WM HEIZEN TAG.*", Page_1_1)
                        LWZ_Verdichter_Starts_WS.postUpdate(Float::parseFloat(String::format("%s",Wert)))
                        Wert = transform("REGEX", ".*<td class=\"value\">(\\d+,\\d+).*MOTORSPANNUNG.*", Page_2_3)
                        var Number Merker_Pel = Float::parseFloat(String::format("%s",Wert).replace(',','.')) * 1000
                        LWZ_Verdichter_Leistungsaufnahme.postUpdate(Merker_Pel)
                        if (LWZ_Status_Verdichter.state == 1 && Erste_Runde != 1) {
                            Wert = transform("REGEX", ".*<td class=\"value\">(\\d+,\\d+).*ÜBERH. REKUP. IST.*", Page_2_3)
                            LWZ_Verdichter_Ueberhitzung.postUpdate(Float::parseFloat(String::format("%s",Wert).replace(',','.')))
                        }
                        else Erste_Runde = 0
                        // Tageszähler extrahieren und konvertieren
                        Wert = transform("REGEX", ".*<td class=\"value\">(\\d+,\\d+).*WM WW SUMME.*", Page_1_1)
                        Merker_WW_WM = Float::parseFloat(String::format("%s",Wert).replace(',','.'))
                        Wert = transform("REGEX", ".*<td class=\"value\">(\\d+,\\d+).*P WW SUMME.*", Page_1_1)
                        Merker_WW_P = Float::parseFloat(String::format("%s",Wert).replace(',','.'))
                        Wert = transform("REGEX", ".*<td class=\"value\">(\\d+,\\d+).*WM HEIZEN SUMME.*", Page_1_1)
                        Merker_Heizung_WM = Float::parseFloat(String::format("%s",Wert).replace(',','.'))
                        Wert = transform("REGEX", ".*<td class=\"value\">(\\d+,\\d+).*P HEIZUNG SUMME.*", Page_1_1)
                        Merker_Heizung_P = Float::parseFloat(String::format("%s",Wert).replace(',','.'))
                        // Erkennen das Tageswerte zurückgesetzt wurden
                        if (Merker_WW_WM < LWZ_WW_WM_Tag_WS.state || Merker_Heizung_WM < LWZ_Heizung_WM_Tag_WS.state || Uebertrag_Merken_Wiederholen == 1) {
                            // Übertrag der Werte vom Vortag (Nachkommastellen) merken wenn es sich um den Mitternachtsreset handelt
                            if (now.getMinuteOfDay < 17) {
                                LWZ_WW_WM_Tag_WS_UebertragVortag.postUpdate(Merker_WW_WM)
                                LWZ_WW_PVerdichter_Tag_WS_UebertragVortag.postUpdate(Merker_WW_P)
                                LWZ_Heizung_WM_Tag_WS_UebertragVortag.postUpdate(Merker_Heizung_WM)
                                LWZ_Heizung_PVerdichter_Tag_WS_UebertragVortag.postUpdate(Merker_Heizung_P)
                                
                                // Erkennen wenn noch nicht alle Zähler im Webserver zurückgesetzt wurden und Prozedur wiederholen
                                if (Merker_WW_WM > 1 || Merker_WW_P > 1 || Merker_Heizung_WM > 1 || Merker_Heizung_P > 1) {
                                    Uebertrag_Merken_Wiederholen = 1
                                }
                                else Uebertrag_Merken_Wiederholen = 0
                            }
                            // Aktuelle Werte merken wenn die Zähler aufgrund einer Spannungsunterbrechung des ISG zurückgesetzt wurden
                            else if (Merker_ISG_Spannungsreset == 0 && Merker_WW_WM < 0.05 && Merker_Heizung_WM < 0.05 && Merker_WW_P < 0.05 && Merker_Heizung_P < 0.05) {
                                Merker_ISG_Spannungsreset = 1
                                LWZ_WW_WM_Tag_WS_UebertragVortag.postUpdate(LWZ_WW_WM_Tag_WS.state * -1)
                                LWZ_WW_PVerdichter_Tag_WS_UebertragVortag.postUpdate(LWZ_WW_PVerdichter_Tag_WS.state * -1)
                                LWZ_Heizung_WM_Tag_WS_UebertragVortag.postUpdate(LWZ_Heizung_WM_Tag_WS.state * -1)
                                LWZ_Heizung_PVerdichter_Tag_WS_UebertragVortag.postUpdate(LWZ_Heizung_PVerdichter_Tag_WS.state * -1)
                                sendNotification("xy@gmail.com", "Tageszähler des ISG wurden auf 0 zurückgesetzt. Letzte Werte wurden durch openHAB zur Korrektur in die Merker geschrieben.")
                            }
                            Thread::sleep(2000) // 2 s Pause
                        }
                        // Tageszähler korrigieren und an Item übergeben
                        LWZ_WW_WM_Tag_WS.postUpdate(Merker_WW_WM - LWZ_WW_WM_Tag_WS_UebertragVortag.state)
                        LWZ_WW_WM_Tag_WS.persist("mapdb")
                        LWZ_WW_PVerdichter_Tag_WS.postUpdate(Merker_WW_P - LWZ_WW_PVerdichter_Tag_WS_UebertragVortag.state)
                        LWZ_WW_PVerdichter_Tag_WS.persist("mapdb")
                        LWZ_Heizung_WM_Tag_WS.postUpdate(Merker_Heizung_WM - LWZ_Heizung_WM_Tag_WS_UebertragVortag.state)
                        LWZ_Heizung_WM_Tag_WS.persist("mapdb")
                        LWZ_Heizung_PVerdichter_Tag_WS.postUpdate(Merker_Heizung_P - LWZ_Heizung_PVerdichter_Tag_WS_UebertragVortag.state)
                        LWZ_Heizung_PVerdichter_Tag_WS.persist("mapdb")
                        
                        if (now.getMinuteOfDay > 11 && now.getMinuteOfDay < 17 && (LWZ_WW_PVerdichter_Tag_WS.state > 0.3 || LWZ_Heizung_PVerdichter_Tag_WS.state > 0.3 || LWZ_WW_WM_Tag_WS.state > 0.5)) {
                            sendNotification("xy@gmail.com", "Energiezähler der Heizung wurden vermutlich nicht herunter gesetzt. Bitte prüfen.")
                        }
                    }
                    //else sendNotification("xy@gmail.com", "Auslesen des Webservers war nicht erfolgreich.")
                    // Neustart Timer
                    if (LWZ_Status_Verdichter.state == 0 && Nachlauf <= 2) {
                        Nachlauf = Nachlauf + 1
                        AuslesenWebserver.reschedule(now.plusSeconds(60))
                    }
                    else if (LWZ_Status_Verdichter.state == 1 || Uebertrag_Merken_Wiederholen == 1) {
                        AuslesenWebserver.reschedule(now.plusSeconds(60))
                    }
                ])
                Nachlauf = 0
        end
        Viele Grüße,
        Tobias
        Zuletzt geändert von Intenos; 12.01.2022, 21:04.

        Kommentar


          #34
          Zitat von biertrinker Beitrag anzeigen
          Hallo Intenos,

          aber du meinst den Tages-Zähler, oder? Der Zählt bei mir auch hoch, im Webinterface mit Nachkommastellen, per Modbus nur ganzzahlig. Die Summenzähler muss man zwar zusammenbauen, haben aber eigentlich ausreichend Auflösung. Die ändern sich aber nur einmal am Tag...
          Hallo zusammen,
          ich habe neue eine Wpl 20a von Stiebel, mit isg web und sg ready. ich verwende momentan openwb (ladesteuerung Wallbox für e auto) um die Wärmepumpe bei Überschuss durch die Solaranlage in sg ready zwischen Betriebzustand 3 (Solarüberschuss vorhanden) und Betriebszustand 2 (normaler Programmmodus) zuschalten. Openwb läuft auf einem Raspi. Die Anbindung habe ich mit phyton auf die Modbus Schnittstelle selber gemacht.
          Nun intressieren mich die Leistungsaufnahme der Wärmepumpe. Die Summenzähler konnte ich über Modbus auslesen. Die Tageszähler geht über html Parsing da über Modbus nur ganze kw Werte gekommen. Nun habe ich das Problem, dass die Tageszähler auf dem isg web nur einmalig am Tag nachgeführt werden.
          Hat hier mal jemand neue Informationen oder eine Lösung gefunden ?
          danke fürs Feedback,
          gruss Oliver

          Kommentar


            #35
            Hallo Oliver,
            meinst du die Tageszähler im Webinterface? Die werden doch kontinuierlich aktualisiert. Oder meinst du die Summenzähler?

            Kommentar


              #36
              Ich meine konkret den Tageszähler (unter Leistungsaufnahme,Vd Heizen Tag und Vd Warmwasser Tag) , . Der ist den ganzen Tag stehen geblieben, bis dass er sich einmal geändert hat.
              gruss Oliver
              Screenshot_20200204-102606_Chrome.jpg

              Kommentar


                #37
                Ok. Also das funktioniert bei mir problemlos. Was für eine ISG web Version hast du denn? Ich hab 10.1.0.

                Kommentar


                  #38
                  Auch 10.1. Was hast du den als Stiebel Gerät ?

                  Kommentar


                    #39
                    Eine LWZ504

                    Kommentar


                      #40
                      Ich habe eine einfache Lösung gefunden:
                      Die aktuelle Leistung in Watt und der Zählerstand in Watth werden nun am openwb übergeben und unter Verbraucher 1 gelogt. Der Zählerstand in Watth wird halt nur einmal pro Tag nachführt.(gelesen via Modbus)
                      Die aktuelle Leistung der Wärmepumpe wird von der Wärmepumpe wie bekannt nicht geliefert Die Pumpe ist aber nach en14511 genormt. Deshalb kann man aufgrund der aktuellen Aussentemperatur und der aktuellen Vorlauftemperatur die aktuelle Leistungsaufnahme rechnen. Wenn man die Bezugskurve (rote Fläche) und die Verbraucher 1 ( durchgezogene Linie) Kurve anschaut, könnte das ganze noch passen
                      Screenshot_20200207-202007_Chrome.jpg
                      Zuletzt geändert von Okaegi; 07.02.2020, 21:19.

                      Kommentar


                        #41
                        Und hier noch die en14511 tabellen, bei Intresse an der Rechnung bitte melden Screenshot_20200207-203040_Drive.jpg

                        Kommentar


                          #42
                          Hallo Zusammen,

                          bei mir wird es eine LWZ Premium CS8. Kann mir jemand sagen, ob das binding auch mit diesem Model funktioniert?

                          Laut Dokumentation scheint es so als würde Eltron Stiebel nicht mehr die KNX Erweiterung für die neueren LWZ Modelle (wie eben der 8er) über das ISG web anbieten. Habt Ihr eine Erklärung dafür (Ist der Markt zu klein)?

                          Jedenfalls suche ich verzweifelt nach einer Möglichkeit die Anlage auf den Bus zu kriegen. Jeder Tipp ist wilkommen

                          Gruss
                          Brunosa3

                          Kommentar


                            #43
                            Lässt die LWZ Premium CS8 sich wenigstens über Modbus anschliessen ?
                            gruss Oliver

                            Kommentar


                              #44
                              Hi Oliver,

                              danke für Deine Rückmeldung.

                              Leider konnte ich das bis heute noch nicht herausfinden -.-
                              Explizit sind meist nur die alten Verdächtigen (LWZ 304/404/504, WPF 4-16) aufgelistet. Jedoch, kann ich mir nicht vorstellen, dass man für die neuen Geräte die Kompatibilität eingestellt hat.

                              Ich habe nun eine Mail an das Eltron-Stiebel support Team geschickt - Ich hoffe hier positives zu hören.

                              Gruss
                              Sandro

                              Kommentar


                                #45
                                Ich kann leider nichts direkt dazu beitragen da ich die LWZ 504 habe, aber ich bin gespannt was bei deiner Anfrage heraus kommt. Wenn ich mir das Bild der Wärmepumpe sowie die technischen Daten anschaue, vermute ich ehrlich gesagt, dass sich abgesehen von der Typenbezeichnung nichts geändert hat.

                                Auf die schnelle habe ich den folgenden Artikel gefunden, welchen man als Bestätigung für die Vermutung sehen könnte:
                                https://www.guh-elektro.de/alle-inte...regelung-80311

                                Kommentar

                                Lädt...
                                X