Ankündigung

Einklappen
Keine Ankündigung bisher.

Anlagenstatus einer Alpha Innotec Wärmepumpe (Luxtronik 1.0)

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

    #16
    Hallo Michael,

    ich hab mal swenga zum Thema befragt.
    Folgendes hat er mir geschrieben:

    Zitat von swenga
    6100 liefert den Status, 6300 die Ausgänge, 6200 die Temperaturen der Comfort-Platine.

    Die Temps (4 Stueck) sind dabei:
    L"Temp MK2-Ist", L"Temp SolarK", L"Temp SolarSp", L"Temp extQ"

    Der vierte Wert bei 6300 ist der Kühlmodus.
    Ich habs mal ausprobiert:

    Code:
    6200
    6200;1;0
    6100
    6100;4;750;36;115;50
    6300
    6300;6;0;0;0;0;0;0
    Swenga hat sich wohl leicht geirrt bzw. bestimmt verschrieben.
    Die Temperaturen gibt es mit 6100.
    Somit muss ich also anstatt 1800 ein 6100 senden.
    Interessant für mich sind die Werte SolarKollektoren (2. Wert - derzeit 3,6°C) und Solarspeicher (3. Wert - derzeit 11,5°C).

    Mhmm, da muss ich mal überlegen wie ich das mit dem Polling jetzt adaptiere. Da ja jetzt zwei Werte gesendet und somit getrennt verarbeitet werden müssen (und dabei noch ein Überlappen vermieden werden muss) erschwert es das Ganze jetzt ein "wenig" für einen "eibPC Programmier-Newbie".

    Schöne Grüße
    Matthias

    Kommentar


      #17
      Zitat von Matthias Beitrag anzeigen
      erschwert es das Ganze jetzt ein "wenig" für einen "eibPC Programmier-Newbie".
      Immer ran an die Sache, ein Meister ist noch nicht vom Himmel gefallen...
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #18
        Hallo Matthias,

        ich werde sicherlich noch einige Wochen beschäftigt sein, bis das Gateway vollständig fertig ist.

        Dann kann ich den 6100 Request noch mit einbauen. Eventuell benötige ich aber Deine Hilfe beim Testen, da ich aktuell nicht weiß ob meine SWC-100H/C auf diesen Request reagiert.

        Viele Grüße

        Michael

        Kommentar


          #19
          Zitat von Jambala Beitrag anzeigen
          Hallo Matthias,

          ich werde sicherlich noch einige Wochen beschäftigt sein, bis das Gateway vollständig fertig ist.

          Dann kann ich den 6100 Request noch mit einbauen. Eventuell benötige ich aber Deine Hilfe beim Testen, da ich aktuell nicht weiß ob meine SWC-100H/C auf diesen Request reagiert.

          Viele Grüße

          Michael
          Hi Michael,

          ich werd Dich unterstützen wo ich kann.
          Problem bei mir ist nur im Moment die Zeit, die ich dafür aufbringen kann.
          Nächste Woche geht die Arbeit wieder los und dann ist Zeit für KNX wieder etwas rar..

          Sag mal, kann es sein dass Dein obiger Code nur 1x, ca. 5 Minuten nach Programmstart ausgeführt wird und dann nicht wieder?

          Hab nämlich ein
          Code:
          if change(WP_Temp_Aussentemperatur) or change(WP_Temp_Brauchwarmwasser_Ist_Temperatur) then {
          write("1/6/6",convert(WP_Temp_Aussentemperatur,$$c14)+$ / $c14+convert(WP_Temp_Brauchwarmwasser_Ist_Temperatur,$$c14))
          drin, aber das wurde in den letzten 1,5h nur einmal (5 Mins nach Systemstart) ausgeführt und bislang nicht nochmal.
          Dass keine der beiden Werte sich geändert haben ist grad schwer vorstellbar.
          Funktioniert das zyklische pollen bei Dir?

          Grüße
          Matthias

          Kommentar


            #20
            Hallo Matthias,

            die Abfrage an den Wärmepumpe wird alle 5 Minuten gesendet:

            sendrs232($1800$,0xd)
            if cycle(5,0) then sendrs232($1800$,0xd) endif

            Die Auswertung des Anlagen Feedbacks erfolgt direkt sobald sich etwas auf der RS232 Schnittstelle tut.

            Beobachte dies einmal über den Tagesverlauf bei größeren Temperatursprüngen.

            Natürlich kann aber auch noch ein Bug im Gateway sein. Ist halt erst die "Beta".

            Ich habe leider das gleiche Problem ab der nächsten Woche...

            Testen heißt aber nur, Code einspielen, 6100er Werte anschauen und mit den Anlagen oder Hyperterminal Werten vergleichen.

            Viele Grüße

            Michael

            Kommentar


              #21
              Alpha Innotec Wärmenpumpen Gateway v1.1 Beta

              Hallo Zusammen,

              hier noch einmal eine deutlich überarbeitete und erweiterte Version des Gateways.

              Folgende Änderungen sind ggü. der Vorgängerversion enthalten:
              - Code optimiert und reduziert
              - Berechnung der Temperaturwerte geändert
              - Status der WP Ein- und Ausgänge, Ablaufzeiten und Betriebstunden sind nun auch enthalten

              Eigentlich sind damit die wesentlichen Statusinformationen vorhanden.

              Ob die Erweiterung um Fehlermeldungen und Abschaltungen noch folgen, habe ich noch nicht entschieden.

              Damit dies sinnvoll ist, müßte ich einen Weg finden im EibPC eine Beschreibung aller möglichen
              Fehlermeldungen hinterlegen zu können um diese dann mit den aktuellen Fehlern zu mappen.

              Anregungen zu diesem Thema sind gerne willkommen (es gibt ca. 50 verschiedene Fehler Codes).

              Nach 423 Zeilen Code mache ich jetzt erst einmal Pause bis 2012.

              Viele Grüße

              Michael

              [highlight=epc]
              // -----------------------------------------------------------------------------------------------------------
              // RS232 Gateway für Alpha Innotec Wärmepumpen mit Luxtronik 1.0 Steuerung (bis Baujahr 2008)
              // -----------------------------------------------------------------------------------------------------------
              // - die Anbindung der Wärmepumpe erfolgt über sein serielles 1:1 Kabel (Pin 2&3 Data, Pin 5 GND)
              // - die Wärmepumpe muß im Menüpunkt Einstellungen, Datenzugang auf Standard stehen (PIN 9445)
              // - Schnittstellen-Parameter: 57600, 8, N, 1, Xon/Xoff
              Rawdata=$$
              Buffer=$$
              Len=0u16
              StartPos=0u16
              EndPos=0u16
              Data_Temperatur=$$
              Data_Eingaenge=$$
              Data_Ausgaenge=$$
              Data_Ablaufzeiten=$$
              Data_Betriebsstunden=$$
              Data_Fehlerspeicher=$$
              Data_Abschaltungen=$$
              Data_Anlagenstatus=$$
              // Anlagenstatus alle 5 Minuten über RS232 abfragen
              sendrs232($1800$,0xd)
              if cycle(5,0) then sendrs232($1800$,0xd) endif
              // Empfangen des Anlagenstatus über RS232 und kopieren der ersten 1400 Zeichen in den Buffer
              if event(readrs232(Rawdata,Len)) then \\
              Buffer=Buffer+split(Rawdata,0u16,Len); \\
              Len=0u16 \\
              endif
              // Parsen der einzelnen Informationsblöcke des Anlagenstatus
              if change(Buffer) then \\
              StartPos=0u16; \\
              EndPos=0u16; \\
              StartPos=find(Buffer,$1100;12;$,0u16)+size($1100;1 2;$); \\
              EndPos=find(Buffer,$1200;6;$,0u16)-2u16; \\
              Data_Temperatur=split(Buffer,StartPos,EndPos); \\
              Data_Temperatur=Data_Temperatur; \\
              StartPos=find(Buffer,$1200;6;$,0u16)+size($1200;6; $); \\
              EndPos=find(Buffer,$1300;13;$,0u16)-2u16; \\
              Data_Eingaenge=split(Buffer,StartPos,EndPos); \\
              Data_Eingaenge=Data_Eingaenge; \\
              StartPos=find(Buffer,$1300;13;$,0u16)+size($1300;1 3;$); \\
              EndPos=find(Buffer,$1400;29;$,0u16)-2u16; \\
              Data_Ausgaenge=split(Buffer,StartPos,EndPos); \\
              Data_Ausgaenge=Data_Ausgaenge; \\
              StartPos=find(Buffer,$1400;29;$,0u16)+size($1400;2 9;$); \\
              EndPos=find(Buffer,$1450;9;$,0u16)-2u16; \\
              Data_Ablaufzeiten=split(Buffer,StartPos,EndPos); \\
              Data_Ablaufzeiten=Data_Ablaufzeiten; \\
              StartPos=find(Buffer,$1450;9;$,0u16)+size($1450;9; $); \\
              EndPos=find(Buffer,$1500;5$,0u16)-2u16; \\
              Data_Betriebsstunden=split(Buffer,StartPos,EndPos) ; \\
              Data_Betriebsstunden=Data_Betriebsstunden; \\
              endif
              // Einzelwerte zu den Temperaturen definieren
              WP_Temp_Heizkreis_Ist_Vorlauftemperatur=0.0
              WP_Temp_Heizkreis_Ist_Ruecklauftemperatur=0.0
              WP_Temp_Heizkreis_Soll_Ruecklauftemperatur=0.0
              WP_Temp_Heissgastemperatur=0.0
              WP_Temp_Aussentemperatur=0.0
              WP_Temp_Brauchwarmwasser_Ist_Temperatur=0.0
              WP_Temp_Brauchwarmwasser_Soll_Temperatur=0.0
              WP_Temp_Waermequellen_Eintrittstemperatur=0.0
              WP_Temp_Waermequellen_Austrittstemperatur=0.0
              WP_Temp_Mischkreis_1_Ist_Vorlauftemperatur=0.0
              WP_Temp_Mischkreis_1_Soll_Vorlauftemperatur=0.0
              WP_Temp_Raumstation=0.0
              // Parsen der einzelnen Temperaturwerte
              if change(Data_Temperatur) then \\
              /* Parsen von Heizkreis_Ist_Vorlauftemperatur */; \\
              StartPos=0u16; \\
              EndPos=find(Data_Temperatur,$;$,0u16)-1u16; \\
              WP_Temp_Heizkreis_Ist_Vorlauftemperatur=convert(sp lit(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Heizkreis_Ist_Ruecklauftemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,1u16)-1u16;\\
              WP_Temp_Heizkreis_Ist_Ruecklauftemperatur=convert( split(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Heizkreis_Soll_Ruecklauftemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,2u16)-1u16; \\
              WP_Temp_Heizkreis_Soll_Ruecklauftemperatur=convert (split(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Heissgastemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,3u16)-1u16; \\
              WP_Temp_Heissgastemperatur=convert(split(Data_Temp eratur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Aussentemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,4u16)-1u16; \\
              WP_Temp_Aussentemperatur=convert(split(Data_Temper atur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Brauchwarmwasser_Ist_Temperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,5u16)-1u16; \\
              WP_Temp_Brauchwarmwasser_Ist_Temperatur=convert(sp lit(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Brauchwarmwasser_Soll_Temperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,6u16)-1u16; \\
              WP_Temp_Brauchwarmwasser_Soll_Temperatur=convert(s plit(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Waermequellen_Eintrittstemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,7u16)-1u16; \\
              WP_Temp_Waermequellen_Eintrittstemperatur=convert( split(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Waermequellen_Austrittstemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,8u16)-1u16; \\
              WP_Temp_Waermequellen_Austrittstemperatur=convert( split(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Mischkreis_1_Ist_Vorlauftemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,9u16)-1u16; \\
              WP_Temp_Mischkreis_1_Ist_Vorlauftemperatur=convert (split(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Mischkreis_1_Soll_Vorlauftemperatur */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,10u16)-1u16; \\
              WP_Temp_Mischkreis_1_Soll_Vorlauftemperatur=conver t(split(Data_Temperatur,StartPos,EndPos),0.0)*0.1; \\
              /* Parsen von Raumstation */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Temperatur,$;$,11u16)-1u16; \\
              WP_Temp_Raumstation=convert(split(Data_Temperatur, StartPos,EndPos),0.0)*0.1; \\
              endif
              // Einzelwerte zu den Wärmepumpeneingängen definieren
              WP_Eingaenge_Abtau_Soledruck_Durchfluss=0b01
              WP_Eingaenge_Sperrzeit_vom_EVU=0b01
              WP_Eingaenge_Hochdruckpressostat=0b01
              WP_Eingaenge_Motorschutz=0b01
              WP_Eingaenge_Niederdruckpressostat=0b01
              WP_Eingaenge_Anschluss_einer_Fremdstromanode=0b01
              // Parsen der einzelnen Wärmepumpeneingänge
              if change(Data_Eingaenge) then \\
              /* Parsen von Abtau_Soledruck_Durchfluss */; \\
              StartPos=0u16; \\
              EndPos=find(Data_Eingaenge,$;$,0u16)-1u16; \\
              WP_Eingaenge_Abtau_Soledruck_Durchfluss=convert(sp lit(Data_Eingaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Sperrzeit_vom_EVU */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Eingaenge,$;$,1u16)-1u16;\\
              WP_Eingaenge_Sperrzeit_vom_EVU=convert(split(Data_ Eingaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Hochdruckpressostat */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Eingaenge,$;$,2u16)-1u16;\\
              WP_Eingaenge_Hochdruckpressostat=convert(split(Dat a_Eingaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Motorschutz */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Eingaenge,$;$,3u16)-1u16;\\
              WP_Eingaenge_Motorschutz=convert(split(Data_Eingae nge,StartPos,EndPos),0b01); \\
              /* Parsen von Niederdruckpressostat */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Eingaenge,$;$,4u16)-1u16;\\
              WP_Eingaenge_Niederdruckpressostat=convert(split(D ata_Eingaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Anschluss_einer_Fremdstromanode */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Eingaenge,$;$,5u16)-1u16;\\
              WP_Eingaenge_Anschluss_einer_Fremdstromanode=conve rt(split(Data_Eingaenge,StartPos,EndPos),0b01); \\
              endif
              // Einzelwerte zu den Wärmepumpenausgängen definieren
              WP_Ausgaenge_Abtauventil=0b01
              WP_Ausgaenge_Brauchwarmwasserumwaelzpumpe=0b01
              WP_Ausgaenge_Fussbodenheizungsumwaelzpumpe=0b01
              WP_Ausgaenge_Heizungsumwaelzpumpe=0b01
              WP_Ausgaenge_Mischer_1_Auf=0b01
              WP_Ausgaenge_Mischer_1_Zu=0b01
              WP_Ausgaenge_Ventilation_des_Waermepumpengehaeuses =0b01
              WP_Ausgaenge_Ventilator_Brunnen_oder_Soleumwaelzpu mpe=0b01
              WP_Ausgaenge_Verdichter_1_in_Waermepumpe=0b01
              WP_Ausgaenge_Verdichter_2_in_Waermepumpe=0b01
              WP_Ausgaenge_Zusatzumwaelzpumpe_Zirkulationspumpe= 0b01
              WP_Ausgaenge_Zweiter_Waermeerzeuger_1=0b01
              WP_Ausgaenge_Zweiter_Waermeerzeuger_2_Sammelstoeru ng=0b01
              // Parsen der einzelnen Wärmepumpeneausgänge
              if change(Data_Ausgaenge) then \\
              /* Parsen von Abtauventil */; \\
              StartPos=0u16; \\
              EndPos=find(Data_Ausgaenge,$;$,0u16)-1u16; \\
              WP_Ausgaenge_Abtauventil=convert(split(Data_Ausgae nge,StartPos,EndPos),0b01); \\
              /* Parsen von Brauchwarmwasserumwaelzpumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,1u16)-1u16; \\
              WP_Ausgaenge_Brauchwarmwasserumwaelzpumpe=convert( split(Data_Ausgaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Fussbodenheizungsumwaelzpumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,2u16)-1u16; \\
              WP_Ausgaenge_Fussbodenheizungsumwaelzpumpe=convert (split(Data_Ausgaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Heizungsumwaelzpumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,3u16)-1u16; \\
              WP_Ausgaenge_Heizungsumwaelzpumpe=convert(split(Da ta_Ausgaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Mischer_1_Auf */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,4u16)-1u16; \\
              WP_Ausgaenge_Mischer_1_Auf=convert(split(Data_Ausg aenge,StartPos,EndPos),0b01); \\
              /* Parsen von Mischer_1_Zu */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,5u16)-1u16; \\
              WP_Ausgaenge_Mischer_1_Zu=convert(split(Data_Ausga enge,StartPos,EndPos),0b01); \\
              /* Parsen von Ventilation_des_Waermepumpengehaeuses */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,6u16)-1u16; \\
              WP_Ausgaenge_Ventilation_des_Waermepumpengehaeuses =convert(split(Data_Ausgaenge,StartPos,EndPos),0b0 1); \\
              /* Parsen von Ventilator_Brunnen_oder_Soleumwaelzpumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,7u16)-1u16; \\
              WP_Ausgaenge_Ventilator_Brunnen_oder_Soleumwaelzpu mpe=convert(split(Data_Ausgaenge,StartPos,EndPos), 0b01); \\
              /* Parsen von Verdichter_1_in_Waermepumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,8u16)-1u16; \\
              WP_Ausgaenge_Verdichter_1_in_Waermepumpe=convert(s plit(Data_Ausgaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Verdichter_2_in_Waermepumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,9u16)-1u16; \\
              WP_Ausgaenge_Verdichter_2_in_Waermepumpe=convert(s plit(Data_Ausgaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Zusatzumwaelzpumpe_Zirkulationspumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,10u16)-1u16; \\
              WP_Ausgaenge_Zusatzumwaelzpumpe_Zirkulationspumpe= convert(split(Data_Ausgaenge,StartPos,EndPos),0b01 ); \\
              /* Parsen von Zweiter_Waermeerzeuger_1 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,11u16)-1u16; \\
              WP_Ausgaenge_Zweiter_Waermeerzeuger_1=convert(spli t(Data_Ausgaenge,StartPos,EndPos),0b01); \\
              /* Parsen von Zweiter_Waermeerzeuger_2_Sammelstoerung */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ausgaenge,$;$,12u16)-1u16; \\
              WP_Ausgaenge_Zweiter_Waermeerzeuger_2_Sammelstoeru ng=convert(split(Data_Ausgaenge,StartPos,EndPos),0 b01); \\
              endif
              // Einzelwerte zu den Ablaufzeiten definieren
              WP_Ablaufzeiten_Waermepumpe=$$
              WP_Ablaufzeiten_Zweiter_Waermeerzeuger_1=$$
              WP_Ablaufzeiten_Zweiter_Waermeerzeuger_2=$$
              WP_Ablaufzeiten_Netzeinschaltverzoegerung=$$
              WP_Ablaufzeiten_Standzeit_Schaltspielsperre=$$
              WP_Ablaufzeiten_Einschaltverzoegerung_Schaltspiels perre=$$
              WP_Ablaufzeiten_Verdichter_Standzeit=$$
              WP_Ablaufzeiten_Heizungsregler_Mehr_Zeit=$$
              WP_Ablaufzeiten_Heizungsregler_Weniger_Zeit=$$
              WP_Ablaufzeiten_Thermische_Desinfektion=$$
              WP_Ablaufzeiten_Sperre_Brauchwarmwasser=$$
              Stunden=$$
              Minuten=$$
              Sekunden=$$
              // Parsen der einzelnen Ablaufzeiten
              if change(Data_Ablaufzeiten) then \\
              /* Parsen von Waermepumpe */; \\
              /* Stunden */; \\
              StartPos=0u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,0u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,1u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,2u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Waermepumpe=Stunden+$:$+Minuten+$: $+Sekunden; \\
              /* Parsen von Zweiter_Waermeerzeuger_1 */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,3u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,4u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,5u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Zweiter_Waermeerzeuger_1=Stunden+$ :$+Minuten+$:$+Sekunden; \\
              /* Parsen von Zweiter_Waermeerzeuger_2 */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,6u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,7u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,8u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Zweiter_Waermeerzeuger_2=Stunden+$ :$+Minuten+$:$+Sekunden; \\
              /* Parsen von Netzeinschaltverzoegerung */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,9u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Netzeinschaltverzoegerung=Stunden; \\
              /* Parsen von Standzeit_Schaltspielsperre */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,10u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,11u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Standzeit_Schaltspielsperre=Stunde n+$:$+Minuten; \\
              /* Parsen von Einschaltverzoegerung_Schaltspielsperre */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,12u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,13u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Einschaltverzoegerung_Schaltspiels perre=Stunden+$:$+Minuten; \\
              /* Parsen von Verdichter_Standzeit */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,14u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,15u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,16u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Verdichter_Standzeit=Stunden+$:$+M inuten+$:$+Sekunden; \\
              /* Parsen von Heizungsregler_Mehr_Zeit */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,17u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,18u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,19u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Heizungsregler_Mehr_Zeit=Stunden+$ :$+Minuten+$:$+Sekunden; \\
              /* Parsen von Heizungsregler_Weniger_Zeit */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,20u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,21u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,22u16)-1u16; \\
              WP_Ablaufzeiten_Heizungsregler_Weniger_Zeit=Stunde n+$:$+Minuten+$:$+Sekunden; \\
              /* Parsen von Thermische_Desinfektion */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,23u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,24u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,25u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Thermische_Desinfektion=Stunden+$: $+Minuten+$:$+Sekunden; \\
              /* Parsen von Sperre_Brauchwarmwasser */; \\
              /* Stunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,26u16)-1u16; \\
              Stunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Minuten */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,27u16)-1u16; \\
              Minuten=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              /* Sekunden */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Ablaufzeiten,$;$,28u16)-1u16; \\
              Sekunden=split(Data_Ablaufzeiten,StartPos,EndPos); \\
              WP_Ablaufzeiten_Sperre_Brauchwarmwasser=Stunden+$: $+Minuten+$:$+Sekunden; \\
              endif
              // Einzelwerte zu den Betriebstunden definieren
              WP_BetrStd_Betriebsstunden_Verdichter_1=0u32
              WP_BetrStd_Impulse_Verdichter_1=0u32
              WP_BetrStd_Durchschnittliche_Laufzeit_Verdichter_1 =0u32
              WP_BetrStd_Betriebsstunden_Verdichter_2=0u32
              WP_BetrStd_Impulse_Verdichter_2=0u32
              WP_BetrStd_Durchschnittliche_Laufzeit_Verdichter_2 =0u32
              WP_BetrStd_Betriebsstunden_Zweiter_Waermeerzeuger_ 1=0u32
              WP_BetrStd_Betriebsstunden_Zweiter_Waermeerzeuger_ 2=0u32
              WP_BetrStd_Betriebsstunden_Waermepumpe=0u32
              // Parsen der einzelnen Betriebstunden
              if change(Data_Betriebsstunden) then \\
              /* Parsen von Betriebsstunden_Verdichter_1 */; \\
              StartPos=0u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,0u16)-1u16; \\
              WP_BetrStd_Betriebsstunden_Verdichter_1=convert(sp lit(Data_Betriebsstunden,StartPos,EndPos),0u32)/3600u32; \\
              /* Parsen von Impulse_Verdichter_1 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,1u16)-1u16; \\
              WP_BetrStd_Impulse_Verdichter_1=convert(split(Data _Betriebsstunden,StartPos,EndPos),0u32)/3600u32; \\
              /* Parsen von Durchschnittliche_Laufzeit_Verdichter */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,2u16)-1u16; \\
              WP_BetrStd_Durchschnittliche_Laufzeit_Verdichter_1 =convert(split(Data_Betriebsstunden,StartPos,EndPo s),0u32)/3600u32; \\
              /* Parsen von Betriebsstunden_Verdichter_2 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,3u16)-1u16; \\
              WP_BetrStd_Betriebsstunden_Verdichter_2=convert(sp lit(Data_Betriebsstunden,StartPos,EndPos),0u32)/3600u32; \\
              /* Parsen von Impulse_Verdichter_2 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,4u16)-1u16; \\
              WP_BetrStd_Impulse_Verdichter_2=convert(split(Data _Betriebsstunden,StartPos,EndPos),0u32)/3600u32; \\
              /* Parsen von Durchschnittliche_Laufzeit_Verdichter_2 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,5u16)-1u16; \\
              WP_BetrStd_Durchschnittliche_Laufzeit_Verdichter_2 =convert(split(Data_Betriebsstunden,StartPos,EndPo s),0u32)/3600u32; \\
              /* Parsen von Betriebsstunden_Zweiter_Waermeerzeuger_1 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,6u16)-1u16; \\
              WP_BetrStd_Betriebsstunden_Zweiter_Waermeerzeuger_ 1=convert(split(Data_Betriebsstunden,StartPos,EndP os),0u32)/3600u32; \\
              /* Parsen von Betriebsstunden_Zweiter_Waermeerzeuger_2 */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,7u16)-1u16; \\
              WP_BetrStd_Betriebsstunden_Zweiter_Waermeerzeuger_ 2=convert(split(Data_Betriebsstunden,StartPos,EndP os),0u32)/3600u32; \\
              /* Parsen von Betriebsstunden_Waermepumpe */; \\
              StartPos=EndPos+2u16; \\
              EndPos=find(Data_Betriebsstunden,$;$,8u16)-1u16; \\
              WP_BetrStd_Betriebsstunden_Waermepumpe=convert(spl it(Data_Betriebsstunden,StartPos,EndPos),0u32)/3600u32; \\
              endif
              [/highlight]

              Kommentar


                #22
                OK, ich war grad im Keller.
                Temperatur laut Anzeige: Draussen 2.3 - Brauchwasser 44.0
                Die Variablen im eibPC zeigen an: 2.0 und 42.76

                Ich bleib dabei, irgendwas stimmt nicht!

                Du hast ja geschrieben:

                Zitat von Jambala Beitrag anzeigen

                die Abfrage an den Wärmepumpe wird alle 5 Minuten gesendet:

                sendrs232($1800$,0xd)
                if cycle(5,0) then sendrs232($1800$,0xd) endif

                Die Auswertung des Anlagen Feedbacks erfolgt direkt sobald sich etwas auf der RS232 Schnittstelle tut.

                Beobachte dies einmal über den Tagesverlauf bei größeren Temperatursprüngen.
                Ich hab mir mal den Code angeschaut.
                Kann es eventuell ein Problem mit dem Inhalt der Variable Buffer sein?
                im Code steht:
                Code:
                if cycle(5,0) then sendrs232($1800$,0xd) endif
                // Empfangen des Anlagenstatus über RS232 und kopieren der ersten 1400 Zeichen in den Buffer
                if event(readrs232(Rawdata,Len)) then \\
                Buffer=Buffer+split(Rawdata,0u16,Len); \\
                Len=0u16 \\
                endif
                // Parsen der einzelnen Informationsblöcke des Anlagenstatus
                if change(Buffer) then \\
                Haben wir an der Stelle nicht sogar ein Memory Leak? Der Buffer wir immer größer und größer.
                Außerdem wird beim parsen somit immer der initiale Buffer ausgewertet, oder?

                Müsste man nicht sowas machen:
                [highlight=eibpc]
                if cycle(5,0) then buffer=$$; sendrs232($1800$,0xd) endif
                [/highlight]

                OK, hab grad noch mal im Handbuch gelesen, der Buffer kann ja bloß 1400 Zeichen groß sein. Da wird es kein Memory Leak geben. Trotzdem können doch die neuen Daten nicht dem Buffer zugewiesen werden, da er schon voll ist, oder?

                Grüße
                Matthias

                Kommentar


                  #23
                  So, hab mal meine modifizierte Version über Nacht laufen lassen.
                  Das sieht erst mal besser aus - die Inhalte der Variablen ändern sich.

                  Trotzdem ist das Verhalten noch nicht optimal. Noch mal kurz zur Erinnerung - ich werte die Daten der Wärmepumpe testweise wie folgt aus:

                  Code:
                  if change(WP_Temp_Aussentemperatur) or change(WP_Temp_Brauchwarmwasser_Ist_Temperatur) then {
                    write('1/6/6'c14,convert(WP_Temp_Aussentemperatur,$$c14)+$ / $c14+convert(WP_Temp_Brauchwarmwasser_Ist_Temperatur,$$c14))
                  } endif
                  Heute morgen, als ich das erste mal aufs Display geschaut habe, musste ich aber ein "0.00 / 0.00" lesen. Also irgendwas ist wahrscheinlich beim Abfragen der WP schiefgegangen.
                  Dann habe ich das Verhalten weiter beobachtet. Derzeit ist es so, dass zuerst ein "0.00 / 0.00" gesendet wird, und 300ms später die tatsächlichen Werte.
                  Das schien mir ja auch logisch, da ich von Hand den Buffer leere und dann sofort das "if change(Buffer)" getriggert wird, obwohl der ja in dem Moment noch leer ist.
                  Also dachte ich, modifizierst das mal wie folgt
                  Code:
                  if change(Buffer) and (Buffer != $$)then \\
                  Das hat aber keinen Erfolg. Nach wie vor wird zuerst "0.00 / 0.00" gesendet und ca. 300ms später der tatsächliche Wert.

                  Dabei stellt sich mir im Allgemeinen die Frage zu folgendem Code:
                  Code:
                  if event(readrs232(Rawdata,Len)) then \\
                  Buffer=Buffer+split(Rawdata,0u16,Len); \\
                  Len=0u16 \\
                  endif
                  // Parsen der einzelnen Informationsblöcke des Anlagenstatus
                  if change(Buffer) then \\
                  Woher wissen wir beim "if change(Buffer)" dass der Buffer schon komplett gelesen wurde und nichts mehr per RS232 nachkommt?

                  Grüße
                  Matthias

                  Kommentar


                    #24
                    Hallo Matthias,

                    Du versuchst mich gerade an einer Stelle zu "überholen", die ich noch nicht in Angriff nehmen konnte.

                    Ich habe erst einmal die grundsätzliche Aufteilung der CSV-Werte programmiert. Dies ist nun bis auf die Fehlerliste, die Abschaltungsliste und den Anlagenstatus fertig und funktioniert einer ersten Einschätzung zu Folge richtig.

                    In einem nächsten Schritt werde ich die Werte im Tagesverlauf aufzeichnen und beobachten ob die Werte zeitgenau erfolgen. Dies habe ich noch nicht gemacht, da ich ja bis gestern die CSV-Separation programmiert habe.

                    Es gibt aber in der Tat an dem Thema Buffer noch eine Baustelle. Hintergrund ist, dass die Wärmepumpe auf das 1800er Kommando eine Rückmeldung gibt welche min. zwei 1400 Byte Buffer benötigt, eventuell sogar drei. Um die Komplexität zu senken habe ich erst einmal nur den ersten Buffer genutzt. Dieser enthält auch alle bisher benötigten Werte.

                    Michael (Enertegus) hat schon einmal einen Vorschlag gemacht, wie die Rohdaten auf zwei Buffer aufgeteilt werden können. Dieser hat aber bei einem ersten Test nicht korrekt funktioniert. Beide Buffer hatten anschließend den gleichen Dateninhalt.

                    Ich habe den Eindruck, dass der aktuelle Single-Buffer nur nach jedem 3. Event wieder die benötigten Daten enthält (also alle 15 Minuten). Dies könnte die von Dir beobachteten Abweichungen erklären.

                    Gehen wir einmal davon aus, dass das Wärmepumpen Feedback 3000 Byte groß ist (die genaue Größe ermittele ich noch). Dann müßte folgender Ablauf gewährleistet werden:
                    1. senden des 1800er Request auf das RS232 I/F
                    2. abwarten bis eine Reaktion (Event) auf dem RS232 I/F erfolgt
                    3. Da die Variable Rawdata ja auch nur max. 1400 Byte aufnehmen kann, müßte meiner Meinung nach schon an dieser Stelle aufgesplittet werden. Die ersten 1400 Byte in Rawdata/Buffer 1, die zweiten 1400 Byte in Rawdata/Buffer 2 und die letzten in Rawdata/Buffer 3.


                    Es darf nicht passieren, dass beim ersten Event (Minute 0) die ersten 1400 Byte im Buffer 1 landen, beim zweiten Event (Minute 5) die zweiten 1400 Byte im Buffer 2 und die dritten 1400 Byte im dritten Event (Minute 10) im Buffer 3.

                    Hat an dieser Stelle jemand Erfahrung wie ca. 3000 Byte in einem Rutsch via RS232 empfangen und auf drei Buffer aufgeteilt werden können?

                    Darüber hinaus gibt es noch das Problem, dass Alpha Innotec bzw. Swenga zur Nutzung von Xon/Xoff im RS232 I/F rät. Dies ist aber vor kw2 nicht möglich, weil ich diesen Bug im Compiler erst im Rahmen der Programmierung bemerkt habe und die Änderung erst im nächsten Drop von Enertex behoben ist.

                    Aus diesen Gründen schraube Deine Erwartung bitte für die nächsten Wochen noch etwas zurück.

                    Viele Grüße

                    Michael

                    Kommentar


                      #25
                      Zitat von Matthias Beitrag anzeigen
                      SWoher wissen wir beim "if change(Buffer)" dass der Buffer schon komplett gelesen wurde und nichts mehr per RS232 nachkommt?
                      Gar nicht, da ja die RS232 einfach einen Stream sendet.
                      Wenn mal von 50kBaud ausgeht, dann brauchen ja 1400 Byte bzw. ca. 12kbit lange genug, dass der EibPC ein neues event bekommt, der ja im ms Takt arbeitet. . Schau mal https://knx-user-forum.de/189566-post5.html, da habe ich das "skizziert".
                      Du kannst die Verarbeitung der Telgramme ja beginnen, wenn eine Zeit verstrichen ist, z.B. 10 Sekunden mit
                      if delay(change(Buffer), 10000u64) ...
                      Einfach mal Ausprobieren, was der Buffer bzw. die RS232 mit dessen Fülling macht.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #26
                        Zitat von enertegus Beitrag anzeigen
                        Gar nicht, da ja die RS232 einfach einen Stream sendet.
                        Wenn mal von 50kBaud ausgeht, dann brauchen ja 1400 Byte bzw. ca. 12kbit lange genug, dass der EibPC ein neues event bekommt, der ja im ms Takt arbeitet. . Schau mal https://knx-user-forum.de/189566-post5.html, da habe ich das "skizziert".
                        Du kannst die Verarbeitung der Telgramme ja beginnen, wenn eine Zeit verstrichen ist, z.B. 10 Sekunden mit
                        if delay(change(Buffer), 10000u64) ...
                        Einfach mal Ausprobieren, was der Buffer bzw. die RS232 mit dessen Fülling macht.
                        Hallo Michael,

                        diese Antwort habe ich fast vermutet bzw. auch schon an sowas wie ein delay gedacht.
                        Jedenfalls löst ein delay von 2s im Moment schon (auf den ersten Blick) das erste fälschliche Senden der Null-Werte, bevor die richtigen Werte geparst werden.
                        Ansonsten wäre ja noch eine Variante zu schauen wie groß der Buffer ist, und erst parst wenn er einen bestimmten "Füllstand" erreicht hat, oder? Dazu müsste man halt nur ganauer wissen wieviel Daten mindestens da sein müssen.
                        Oder man zählt vor dem Parsen die Anzahl der Zeilen(-umbrüche), da man ja weiß wieviel Zeilen zurückkommen sollten. Wäre das denkbar?

                        Grüße
                        Matthias

                        Kommentar


                          #27
                          Zitat von Matthias Beitrag anzeigen
                          Hallo Michael,
                          Oder man zählt vor dem Parsen die Anzahl der Zeilen(-umbrüche), da man ja weiß wieviel Zeilen zurückkommen sollten. Wäre das denkbar?
                          Ich würde es so einfach wie möglich machen. Da einfach nach der Abfrage 20 Sekunden warten, alle aufgelaufenen Daten in dafür vorgesehene Buffer ablegen (und merken, wieviele das waren, also myLen=myLen+len). Dann die Buffer einfach abarbeiten.
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #28
                            Ich sehe aktuell noch ein grundsätzlicheres Problem. Ich schaue mir seit heute morgen 1x pro Stunde die Rawdata an und stelle keine Änderungen an den Daten fest (insbesondere bei den Temperaturdaten kann dies nicht sein).

                            Ich vermute das der Event Trigger aus irgendeinem Grund nicht auslöst. Ich werde mir jetzt einmal bei jedem RS232 Request und bei jedem RS232 Event eine Email schicken und schauen was wie oft passiert.

                            [highlight=epc]
                            // Anlagenstatus alle 5 Minuten über RS232 abfragen
                            sendrs232($1800$,0xd)
                            if cycle(5,0) then sendrs232($1800$,0xd) endif
                            // Empfangen des Anlagenstatus über RS232 und kopieren der ersten 1400 Zeichen in den Buffer
                            if event(readrs232(Rawdata,Len)) then \\
                            Buffer=Buffer+split(Rawdata,0u16,Len); \\
                            Len=0u16 \\
                            endif
                            [/highlight]

                            Nur bei jedem Neustart des EibPC sind die Rawdata stets aktuell.

                            Swenga sendet mit seinem Windows Programm alle 1200ms einen 1800er Request heraus. Somit kann es nicht an der Häufigkeit der Abfrage liegen.

                            Viele Grüße

                            Michael

                            Kommentar


                              #29
                              Zitat von Jambala Beitrag anzeigen
                              Nur bei jedem Neustart des EibPC sind die Rawdata stets aktuell.
                              Meinst Du Neustart des Programms oder des EibPCs?
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar


                                #30
                                Mir ist dies nach jeder Änderung am Programm mit anschließender Übertragung an den EibPC aufgefallen. In diesem Fall ist damit ja ein Neustart des EibPC verbunden.

                                Kommentar

                                Lädt...
                                X