Ankündigung

Einklappen
Keine Ankündigung bisher.

Kostal und eibPC2

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

    Kostal und eibPC2

    Hallo zusammen,
    ich baue gerade mein Heim mit KNX um und habe mir einen eibPC2 mit Smartmeter gekauft.
    Ich habe aktuell drei Kostal Piko MP plus im Einsatz, bekomme ich aus dem Wechselrichter Daten auf den eibPC bzw. auf den Bus über Netzwerk?
    Da in der Nähe des Wechselrichtes weder ein KNX noch ein weiteres Kabel vorhanden ist.
    Netzwerk ist vorhanden wegen dem Kostalportal. Der Wechselrichter gibt die Daten ja auch an die Kostalplatform weiter, also müsste doch irgendwie eine Kommunikation möglich sein, oder? Wäre super wenn jemand sogar vielleicht ein Script für den eipPC hätte, oder zumindest eine Hilfestellung hat.
    Danke

    #2
    Ich habe keine große Ahnung vom EIBPC, aber vielleicht hilft es als Denkanstoß:

    Es gibt in SmarthomeNg ein Plugin das über TCP und Json geht oder für den Homeserver einen Logikbaustein über ModbusTPC. Ich denke beides wird mit dem EibPC auch gehen, aber umsetzen müsstest du es selbst ggf. mit Enertex Support.

    Smarthome NG

    https://github.com/smarthomeNG/plugi...develop/kostal und https://knx-user-forum.de/forum/supp...wechselrichter

    Homeserver Baustein:

    https://knx-user-forum.de/forum/%C3%...s-tcp-abfragen

    Kommentar


      #3
      Moin,

      Zitat von 1980markus Beitrag anzeigen
      Ich habe aktuell drei Kostal Piko MP plus im Einsatz, bekomme ich aus dem Wechselrichter Daten auf den eibPC bzw. auf den Bus über Netzwerk?
      Ich kenne details nur vom Kostal Plenticore, da geht das via Modbus TCP. Mit meinen SMA-Wechselrichtern mache ich das genauso.
      Ob der Piko MP auch Modbus TCP unterstützt weiß ich nicht...
      Zuletzt geändert von Latias1990; 10.06.2022, 08:39.

      Kommentar


        #4
        Hallo zusammen,

        der Piko MP hat entweder Modbus RTU, hier bin ich am Klären ob ich auf diesen zugreifen kann, da dieser für bestimmte Energiezähler eigentlich ist. Andere Möglichkeit ist evtl. über Netzwerk, da der Wechselrichter auch mit dem Kostal Portal kommuniziert, vielleicht kann ich hier Daten abfragen oder abfangen. Irgendwie evtl. über XML

        Ich dachte nur vielleicht hat schon jemand selbst das Problem gehabt.
        Danke vorab

        Kommentar


          #5
          Zitat von 1980markus Beitrag anzeigen
          der Piko MP hat entweder Modbus RTU, hier bin ich am Klären ob ich auf diesen zugreifen kann
          Modbus RTU hat eine RS485 Schnittstelle. Ich habe mir dafür ein Modbus TCP/UDP - RTU Gateway mit einem Arduino Mega R3 Pro mini gebaut.
          Ich frage damit 2 Wechselstromzähler ab.
          Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

          Kommentar


            #6
            Zitat von yachti Beitrag anzeigen

            Modbus RTU hat eine RS485 Schnittstelle. Ich habe mir dafür ein Modbus TCP/UDP - RTU Gateway mit einem Arduino Mega R3 Pro mini gebaut.
            Ich frage damit 2 Wechselstromzähler ab.
            Danke, an diese Version habe ich auch schon gedacht. Jedoch müsste es auch mit einem eibPC und XML funktionieren, leider fehlt mir noch das Wissen was der eibPC alles kann und wie man ihn programmiert.

            Kommentar


              #7
              Die TCP Modbusanbindung kann man entweder einfach über den Logikknoten machen oder über den Experten.
              Das hier ist bei mir die Umsetzung mit einem Plenticore Plus als Beispiel
              Code:
              zWR=$192.168.21.54$
              sWRZustand=0s16
              rDCGesamtleistung=0f32
              rWRScheinLeistung=0f32
              rWRWirkLeistung=0f32
              
              rHausverbrauch=0f32
              rString1VDC=0f32
              rString1StromDC=0f32
              rString1LeistungVDC=0f32
              rString2LeistungVDC=0f32
              rLadeStromBatterie=0f32
              rLadeSpannungBatterie=0f32
              rVerbrauchsrate =0f32 // in %
              rBatterieladung = 0f32 // in %
              rLeistungNetz = 0f32 // >0 Abnahme
              rBatterieladungSumme=0f32
              rWechselrichterEinspeisung=0f32
              rEigenverbrauchPV = 0f32
              rPVDCLeistung = 0f32
              
              uStatus=0
              uKostal=modbusmaster(zWR, 1502u16, 10u32, 71)
              bKom=EIN
              
              // --------------------------------------------------------------------------------------------------------
              // Modbusabfragen
              // --------------------------------------------------------------------------------------------------------
              
              if cycle(0,5) and bKom then {
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 56u16, sWRZustand, BIG_ENDIAN, BIG_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 100u16, rDCGesamtleistung, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 116u16, rHausverbrauch, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 124u16, rVerbrauchsrate, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 172u16, rWRWirkLeistung, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 178u16, rWRScheinLeistung, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 210u16, rBatterieladung, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 252u16, rLeistungNetz, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 260u16, rString1LeistungVDC, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 270u16, rString2LeistungVDC, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER , 200u16, rLadeStromBatterie, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER, 216u16, rLadeSpannungBatterie, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER, 1052u16, rBatterieladungSumme, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER, 114u16, rEigenverbrauchPV, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER, 1064u16, rWechselrichterEinspeisung, BIG_ENDIAN, LITTLE_ENDIAN);
              uStatus=readmodbus(uKostal, MB_HOLDING_REGISTER, 1066u16, rPVDCLeistung, BIG_ENDIAN, LITTLE_ENDIAN);
              } endif
              
              // Zustand auswerten
              zWRZustand=$$
              if sWRZustand==6s16 then zWRZustand=$Einspeisung$ endif
              if sWRZustand==7s16 then zWRZustand=$Drosselung aktiv$ endif
              if sWRZustand==10s16 then zWRZustand=$Standby$ endif
              if sWRZustand==14s16 then zWRZustand=$Überhitzung$ endif
              if sWRZustand==15s16 then zWRZustand=$Aus$ endif
              if sWRZustand==16s16 then zWRZustand=$Fehlerhafte Spannung DC$ endif
              Zuletzt geändert von enertegus; 15.06.2022, 11:36.
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                Hallo,

                leider hat der Kostal Piko MP Plus keinen Modbus TCP sondern nur RTU. Ich wollte mir jedoch das Geld für ein RTU/TCP oder RTU/KNX Gateway sparen. Ich dachte da der Wechselrichter über XML abgefragt werden kann, müsste das doch auch zu machen sein. Wäre toll gewesen falls es eine Vorlage gegeben hätte, da ich mich sonst in das Thema intensiv einarbeiten muss.


                27.03. 18:03:16 |---------------- Start kostal_piko_mp.php ---------------------
                27.03. 18:03:16 -Zentraler Timestamp: 1616864581
                27.03. 18:03:16 o -Hardware Version: 4B
                27.03. 18:03:16 -Als erstes lesen wir die XML-Datei vom Wechselrichter
                27.03. 18:03:16 -Versuche XML-Datei zu laden: http://192.168.0.173/measurements.xml
                27.03. 18:03:16 -XML-Datei erfolgreich geladen!
                27.03. 18:03:16 + -Die Daten werden ausgelesen...
                27.03. 18:03:16 ->>>> Kopfdaten:
                27.03. 18:03:16 -Name = "PIKO 3.6-2 MP plus"
                27.03. 18:03:16 -Type = "Inverter"
                27.03. 18:03:16 -Platform = "Net16"
                27.03. 18:03:16 -HmiPlatform = "HMI17"
                27.03. 18:03:16 -NominalPower = "3600"
                27.03. 18:03:16 -UserPowerLimit = "nan"
                27.03. 18:03:16 -CountryPowerLimit = "nan"
                27.03. 18:03:16 -Serial = "766346FI007475680011"
                27.03. 18:03:16 -OEMSerial = "10351316"
                27.03. 18:03:16 -BusAddress = "1"
                27.03. 18:03:16 -NetBiosName = "INV007475680011"
                27.03. 18:03:16 -WebPortal = "PIKO Solar Portal"
                27.03. 18:03:16 -ManufacturerURL = "kostal-solar-electric.com"
                27.03. 18:03:16 -IpAddress = "192.168.0.173"
                27.03. 18:03:16 -DateTime = "2021-03-27T17:01:50"
                27.03. 18:03:16 -MilliSeconds = "960"
                27.03. 18:03:16 ->>>> aktuelle Werte:
                27.03. 18:03:16 -Demo: 2021-03-27T17:01:50
                27.03. 18:03:16 -Value: 234.6 Unit: V Type: AC_Voltage
                27.03. 18:03:16 -Value: 0.884 Unit: A Type: AC_Current
                27.03. 18:03:16 -Value: 177.9 Unit: W Type: AC_Power
                27.03. 18:03:16 -Value: 197.4 Unit: W Type: AC_Power_fast
                27.03. 18:03:16 -Value: 50.029 Unit: Hz Type: AC_Frequency
                27.03. 18:03:16 -Value: 148.5 Unit: V Type: DC_Voltage1
                27.03. 18:03:16 -Value: 330.7 Unit: V Type: DC_Voltage2
                27.03. 18:03:16 -Value: 0.460 Unit: A Type: DC_Current1
                27.03. 18:03:16 -Value: 0.414 Unit: A Type: DC_Current2
                27.03. 18:03:16 -Value: 343.0 Unit: V Type: LINK_Voltage
                27.03. 18:03:16 -Value: Unit: W Type: GridPower
                27.03. 18:03:16 -Value: Unit: W Type: GridConsumedPower
                27.03. 18:03:16 -Value: Unit: W Type: GridInjectedPower
                27.03. 18:03:16 -Value: Unit: W Type: OwnConsumedPower
                27.03. 18:03:16 -Value: 100.0 Unit: % Type: Derating
                27.03. 18:03:16 |---------------- Stop kostal_piko.php --------------------

                Kommentar


                  #9
                  XML Parsen ist eigentlich keine große Sache mit dem EibPC². Das geht sowohl im Experten als auch per Logikknoten. Schau mal im Handbuch ab S.120, Kapitel Parser.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    Hallo, leider bin ich noch etwas grün hinter den Ohren. Wäre es möglich ein Beispiel für eine Abfrage zu bekommen? Ich komme am besten mit den Logikmodulen zurecht. Wie ich eine Anzeige z.B.: der AC_Voltage hinbekomme. Danke Vorab

                    Kommentar


                      #11
                      Ich habe leider keinen solchen Wechselrichter. Als Basis für die Abfragen mit dem Logikeditor schau mal: https://knx-user-forum.de/forum/supp...07#post1522807
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        Hallo,

                        leider komme ich nach vielen Versuchen nicht zurecht. Ich benötige eigentlich aus der angzeigten XML nur den Wert aus AC_Power in einer Gruppenadresse welche alle 5min auf den Bus gesendet werden soll. Bitte nochmal um Hilfe. Danke im Voraus
                        grafik.png

                        Kommentar


                          #13
                          Hi,

                          wie weit bist du denn? Hast du mit dem httprequest-Knoten bereits die XML-Datei abgeholt und in einen ausreichend großen string geschrieben?

                          Das Parsen ist mit dem parsexml-Knoten recht "einfach", abgesehen von der XPath-Syntax. Zum Testen kannst du einen beliebigen Online-XPath-Evaluator nutzen Ich habe gerade
                          https://www.freeformatter.com/xpath-tester.html
                          verwendet, aber ohne Präferenz.


                          Mit einer ähnlichen Eingabe wie deiner (Text wäre besser als ein Screenshot zum Testen):
                          Code:
                          <root>
                          <Device Name="PIKO 3.6-2 MP plus" Type="Inverter" Platform="Net16" HmiPlatform="HMI17" NominalPower="3600" UserPowerLimit="nan" CountryPowerLimit="nan" Serial="BLABLA" OEMSerial="BLABLA" BusAddress="3" NetBiosName="BLABLA" WebPortal="PIKO Solar Portal" ManufacturerURL="kostal-solar-electric.com" IpAddress="192.168.200.137" DateTime="2021-09-29T16:28:09" MilliSeconds="083">
                          <Measurements>
                          <Measurement Value="228.3" Unit="V" Type="AC_Voltage"/>
                          <Measurement Value="1.509" Unit="A" Type="AC_Current"/>
                          <Measurement Value="331.0" Unit="W" Type="AC_Power"/>
                          <Measurement Value="356.8" Unit="W" Type="AC_Power_fast"/>
                          <Measurement Value="50.008" Unit="Hz" Type="AC_Frequency"/>
                          <Measurement Value="391.4" Unit="V" Type="DC_Voltage1"/>
                          <Measurement Value="197.0" Unit="V" Type="DC_Voltage2"/>
                          <Measurement Value="0.848" Unit="A" Type="DC_Current1"/>
                          <Measurement Unit="A" Type="DC_Current2"/>
                          <Measurement Value="389.3" Unit="V" Type="LINK_Voltage"/>
                          <Measurement Unit="W" Type="GridPower"/>
                          <Measurement Unit="W" Type="GridConsumedPower"/>
                          <Measurement Unit="W" Type="GridInjectedPower"/>
                          <Measurement Unit="W" Type="OwnConsumedPower"/>
                          <Measurement Value="100.0" Unit="%" Type="Derating"/>
                          </Measurements>
                          </Device>
                          </root>
                          bekomme ich mit dem XPath-Ausdruck
                          Code:
                          //Measurement[@Type='AC_Power']/@Value
                          Code:
                          Value=1.509
                          Auf dem EibPC wird der Attributname nicht mit ausgegeben und der XML-Logikknoten liefert 331.0 als String. Den noch konvertieren als f16 oder f32 und fertig ist die Auswertung .

                          Kommentar


                            #14
                            Ach ja, für das zyklische Senden:

                            Zyklustimer: 5 Minuten, Gruppenadressknoten: Schreiben, externer Auslöser.
                            Als ersten Eingang den Zyklustimer, den abgefragten Wert als zweiten Eingang.

                            Eine sinnvolle Ergänzung wäre noch, eine Prüfung, ob denn die Abfrage erfolgreich war, und nur dann zu senden.

                            Dazu den Rückgabewert des webabfrage-Knotens mit 0u08 und den http-Statuscode mit 200 vergleichen (siehe auch Handbuch S. 146).

                            image.png

                            Kommentar


                              #15
                              Danke für die schnelle perfekte Hilfe. Abfrage läuft perfekt.

                              Kommentar

                              Lädt...
                              X