Ankündigung

Einklappen
Keine Ankündigung bisher.

readtcp Denkfehler??

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

    readtcp Denkfehler??

    Hallo,

    ich versuche momentan meine Wärmepumpen-Steuerung an den eibPC anzubinden.
    Die Steuerung kann über Port 8888 angesprochen werden. Das Kommunikationsprotokoll sieht vor, dass auf bestimmte Bytefolgen entsprechende Antworten über den gleichen Socket kommen.
    Bisher war ich davon ausgegangen, dass sendtcp und readtcp genau das erledigen. Nun scheint aber readtcp auf die Antworten der WP-Steuerung nicht zu reagieren. Könnte das damit zusammenhängen, dass der eibPC nur über Port 4809 kommunizieren kann?

    Zweite Frage: Ist die interne Darstellung von Integern im eibPC im big oder little endian gehalten? Bei big endian könnte ich mir nämlich die umständliche Konvertierung sparen und den Wert mit readtcp direkt als u32 auslesen.

    Hier das dazugehörige Makro zum reinschauen:

    Code:
    //----------------------------------------------------------------------
    //  Makros für den Enertex EiBPC
    //
    //  Anbindung an Luxtronic 2.0 / WP-NET Steuerung für Wärmepumpen
    //
    //  Version              : v1.000
    //
    //  License              : Verwendung nur für die Nutzung mit dem 
    //                         Enertex EibPC gestattet 
    //
    //  (C) Copyright        : Dr.-Ing. Arno Pernozzoli. All rights reserved.
    //
    //  Author               : Dr.-Ing. Arno Pernozzoli
    // 
    //  Dat.Rev.             : $Date: 2011/05/10 11:08:00 $
    //  Version              : $Revision: 1.0 $
    //----------------------------------------------------------------------
    
    :begin Luxtronic_WPNET(Name, PortLux, IPLux, IntervalLux)
    :info $Dieses Makro liest die aktuellen Informationen einer Luxtronic Wärmepumpensteuerung aus. \\
    Über das Makro Luxtronic_Var und Luxtronic_GA können ausgelesene Werte in Variablen oder Gruppenadressen geschrieben werden.\\
    Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.\\
    Makro nur einmal in Ihrem System pro WP-Steuerung. Wenn Sie mit mehr als einer WP-Steuerung arbeiten wollen, vergeben Sie entsprechend weitere Namen.$\\
          $Vergeben Sie einen Namen für Ihre Anbindung, ohne Leerzeichen, z.B WP$\\
          $Geben Sie an, an welchem Port die WP-Steuerung erreichbar ist, i.d.R. 8888.$\\
          $Geben Sie an, an welcher IP-Adresse die WP-Steuerung erreichbar ist.$\\
          $Geben Sie an, in welchem Intervall die Daten aktualisiert werden sollen (in Minuten, max. 255)$
    :shortinfo $Auslesen aktueller Informationen aus Luxtronic 2.0 / WP-NET Steuerung für Wämepumpen.$
    
    Name_Connected = AUS
    Name_Protocol = 0u08
    Name_Length = 0u32
    Name_Entry = 0u32
    Name_Response = 0u32
    Name_Message = $$
    Name_MQueue = $$
    Name_R0 = 0u08
    Name_R1 = 0u08
    Name_R2 = 0u08
    Name_R3 = 0u08
    Name_Port = 0u16
    Name_IP = 0u32
    
    if (cycle(IntervalLux,00) and !Name_Connected) then \\
        connecttcp(PortLux,IPLux); \\
        sendtcp(PortLux,IPLux, 3004u32, 0u32); \\
        Name_Connected = EIN \\
    endif
    
    if event(readtcp(Name_Port, Name_IP, Name_Message)) and Name_Connected and (Name_IP == IPLux) then \\
        write('15/7/0'c14,convert(Name_Message,$$c14)); \\
        Name_MQueue = Name_MQueue + Name_Message \\
    endif
    
    if change(Name_MQueue) and (size(Name_MQueue)>= 4u16) then \\
        Name_R0 = stringcast(Name_MQueue,0u08,0); \\
        Name_R1 = stringcast(Name_MQueue,0u08,1); \\
        Name_R2 = stringcast(Name_MQueue,0u08,2); \\
        Name_R3 = stringcast(Name_MQueue,0u08,3); \\
        Name_MQueue = split(Name_MQueue, 4u16, END); \\
        Name_Response = convert(Name_R0,0u32)*16777216u32+convert(Name_R1,0u32)*65536u32+convert(Name_R2,0u32)*256u32+convert(Name_R3,0u32); \\
        write('15/7/0'c14,convert(Name_Response,$$c14)) \\
    endif
    
    if (change(Name_Response)) then \\
        write('15/7/0'c14,convert(Name_Response,$$c14)); \\
        if (Name_Length > 0u32) then Name_Entry = Name_Entry + 1u32; Name_Length = Name_Length - 1u32 endif; \\
    endif
    
    if ((Name_Length == 0u32) and Name_Connected) then \\
        closetcp(PortLux,IPLux); \\
        Name_Connected = AUS \\
    endif
    
    :end
    
    :begin Luxtronic_Var(Name, Index, Var)
    :info $Dieses Makro schreibt einen ausgelesenen Wert mit gegebenem Index in die angegebene Variable. \\
    Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
          $Namen der Anbindung$\\
          $Index des zu schreibenden Wertes.$\\
          $Zu beschreibende Variable.$
    :shortinfo $Schreiben eines aktuellen Werts aus der WP-Steuerung in eine Variable.$
    if (Name_Entry == convert(Index,Name_Entry)) then Var = convert(Name_Response, Var) endif
    :end
    
    :begin Luxtronic_VarFloat(Name, Index, Var)
    :info $Dieses Makro schreibt einen ausgelesenen Wert mit gegebenem Index in die angegebene Variable. \\
    Der ausgelesene Wert (z.B. Temperaturen) ist in zehntel angegeben und muss daher konvertiert werden. \\
    Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
          $Namen der Anbindung$\\
          $Index des zu schreibenden Wertes.$\\
          $Zu beschreibende Variable.$
    :shortinfo $Schreiben eines aktuellen Float-Werts aus der WP-Steuerung in eine Variable.$
    if (Name_Entry == convert(Index,Name_Entry)) then Var = convert(Name_Response, Var) / convert(10u08,Var) endif
    :end
    
    :begin Luxtronic_GAVar(Name, Index, GA, Var)
    :info $Dieses Makro sendet einen ausgelesenen Wert mit gegebenem Index an die angegebene Gruppenadresse. \\
    Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
          $Namen der Anbindung$\\
          $Index des zu schreibenden Wertes.$\\
          $Zu beschreibende Gruppenadresse.$
    :shortinfo $Senden eines aktuellen Werts aus der WP-Steuerung an eine Gruppenadresse.$
    if (Name_Entry == convert(Index,Name_Entry)) then write(GA,convert(Name_Response, GA)) endif
    :end
    
    :begin Luxtronic_GAFloat(Name, Index, GA)
    :info $Dieses Makro sendet einen ausgelesenen Wert mit gegebenem Index an die angegebene Gruppenadresse. \\
    Der ausgelesene Wert (z.B. Temperaturen) ist in zehntel angegeben und muss daher konvertiert werden. \\
    Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
          $Namen der Anbindung$\\
          $Index des zu schreibenden Wertes.$\\
          $Zu beschreibende Gruppenadresse.$
    :shortinfo $Senden eines aktuellen Float-Werts aus der WP-Steuerung an eine Gruppenadresse.$
    if (Name_Entry == convert(Index,Name_Entry)) then write(GA, convert(Name_Response, GA) / convert(10u08,GA)) endif
    :end

    #2
    Zitat von pernozzoli Beitrag anzeigen
    Die Steuerung kann über Port 8888 angesprochen werden. Das Kommunikationsprotokoll sieht vor, dass auf bestimmte Bytefolgen entsprechende Antworten über den gleichen Socket kommen.
    Bisher war ich davon ausgegangen, dass sendtcp und readtcp genau das erledigen. Nun scheint aber readtcp auf die Antworten der WP-Steuerung nicht zu reagieren. Könnte das damit zusammenhängen, dass der eibPC nur über Port 4809 kommunizieren kann?
    Das könnte damit zusammenhängen, dass der EibPC die Verbindung nach 30 Sekunden schließt, wenn da keine Daten mehr gesendet werden. Du müsstest einen Heartbeat oder ein CR schicken, jedenfalls zyklisch alle 29 Sekunden die Verbindung nutzen.
    Zweite Frage: Ist die interne Darstellung von Integern im eibPC im big oder little endian gehalten? Bei big endian könnte ich mir nämlich die umständliche Konvertierung sparen und den Wert mit readtcp direkt als u32 auslesen.
    Sollte direkt lesbar sein. Das ist in der Firmware so gemacht, dass man sich darüber keine Gedanken machen muss, solange man mit PC Systemen (little endian) arbeitet.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Hi Arno,

      Du machst ja zyklisch den Connect. Daher denke ich mal nicht, dass es am Timeout bzw. fehlendem Heartbeat der Verbindung liegt.

      Versuch mal die Rückmeldung von "connecttcp(PortLux,IPLux);" auszuwerten. Erst wenn die Rückmeldung "0" ist "sendtcp(PortLux,IPLux, 3004u32, 0u32);" ausführen.
      Gruß
      Christian

      Kommentar


        #4
        Hallo,

        ok, noch ein Versuch...
        Habe nun das Makro von einigen Fehlern bereinigt und mir einen kleinen "Simulator" für meine WP-Steuerung gebaut.

        Verbindung klappt, readtcp löst korrekt aus, sobald etwas aus dem Simulator rausgeschickt wird, allerdings kommen definitiv die falschen Werte an. Ich meine bei einem der Tests bemerkt zu haben, dass im empfangenen Telegramm Daten standen, die eigentlich zum HomeControl Makro gehören. Es sieht fast so aus, als würden die Puffer durcheinander geworfen werden. Ich komme jetzt einfach nicht mehr weiter, zumal das Debuggen die reine Hölle ist.

        Ich werde mich wohl doch an eine Implementierung über meinen HomeControl Server machen, schade...

        Code:
        //----------------------------------------------------------------------
        //  Makros für den Enertex EiBPC
        //
        //  Anbindung an Luxtronic 2.0 / WP-NET Steuerung für Wärmepumpen
        //
        //  Version              : v1.000
        //
        //  License              : Verwendung nur für die Nutzung mit dem 
        //                         Enertex EibPC gestattet 
        //
        //  (C) Copyright        : Dr.-Ing. Arno Pernozzoli. All rights reserved.
        //
        //  Author               : Dr.-Ing. Arno Pernozzoli
        // 
        //  Dat.Rev.             : $Date: 2011/05/10 11:08:00 $
        //  Version              : $Revision: 1.0 $
        //----------------------------------------------------------------------
        
        :begin Luxtronic_WPNET(Name, PortLux, IPLux, IntervalLux)
        :info $Dieses Makro liest die aktuellen Informationen einer Luxtronic Wärmepumpensteuerung aus. \\
        Über das Makro Luxtronic_Var und Luxtronic_GA können ausgelesene Werte in Variablen oder Gruppenadressen geschrieben werden.\\
        Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.\\
        Makro nur einmal in Ihrem System pro WP-Steuerung. Wenn Sie mit mehr als einer WP-Steuerung arbeiten wollen, vergeben Sie entsprechend weitere Namen.$\\
              $Vergeben Sie einen Namen für Ihre Anbindung, ohne Leerzeichen, z.B WP$\\
              $Geben Sie an, an welchem Port die WP-Steuerung erreichbar ist, i.d.R. 8888.$\\
              $Geben Sie an, an welcher IP-Adresse die WP-Steuerung erreichbar ist.$\\
              $Geben Sie an, in welchem Intervall die Daten aktualisiert werden sollen (in Minuten, max. 255)$
        :shortinfo $Auslesen aktueller Informationen aus Luxtronic 2.0 / WP-NET Steuerung für Wämepumpen.$
        
        Name_Connected = AUS
        Name_Protocol = 0u08
        Name_Length = 99u32
        Name_Entry = 0u32
        Name_Response = 0u32
        Name_Message = 0u32
        Name_MQueue = $ABCD$
        Name_Send = $ABCD$
        Name_S0 = 0u32
        Name_R0 = 0u08
        Name_R1 = 0u08
        Name_R2 = 0u08
        Name_R3 = 0u08
        Name_Port = 0u16
        Name_IP = 0u32
        Name_ReceivedTcp = 0u32
        
        if (cycle(0,20) and !Name_Connected) then \\
            connecttcp(PortLux,IPLux); \\
            Name_Protocol = 2u08; \\
            Name_Connected = EIN \\
        endif
        
        if (delay(Name_Connected,2000u64)) then \\
            sendtcp(PortLux,IPLux, 0x00, 0x00, 0x0B, 0xBC, 0x00, 0x00, 0x00, 0x00) \\
        endif
        
        if event(readtcp(Name_Port, Name_IP, Name_Message)) and Name_Connected and (Name_IP == IPLux) then \\
            Name_ReceivedTcp = Name_ReceivedTcp+1u32; \\
            stringset(Name_MQueue,Name_Message,0u16); \\
            write('15/7/0'c14,$message: $c14+convert(Name_Message,$$c14)); \\
            write('15/7/0'c14,$queue: $c14+convert(Name_MQueue,$$c14)); \\
            Name_R0 = stringcast(Name_MQueue,0u08,0u16); \\
            Name_R1 = stringcast(Name_MQueue,0u08,1u16); \\
            Name_R2 = stringcast(Name_MQueue,0u08,2u16); \\
            Name_R3 = stringcast(Name_MQueue,0u08,3u16); \\
            Name_Response = convert(Name_R3,0u32)*16777216u32+convert(Name_R2,0u32)*65536u32+convert(Name_R1,0u32)*256u32+convert(Name_R0,0u32); \\
            write('15/7/0'c14,$response: $c14+convert(Name_Response,$$c14)); \\
            if ((Name_Length > 0u32) and (Name_Protocol == 5u08)) then Name_Entry = Name_Entry + 1u32; Name_Length = Name_Length - 1u32 endif; \\
            if (Name_Protocol == 4u08) then Name_Length = Name_Response; Name_Protocol = 5u08 endif; \\
            if (Name_Protocol == 3u08) then Name_Protocol = 4u08 endif; \\
            if (Name_Protocol == 2u08) then \\
                if (Name_Response == 3004u32) then Name_Protocol = 3u08 else Name_Protocol = 99u08 endif \\
            endif \\
        endif
        
        if ((Name_Length == 0u32) and Name_Connected) then \\
            closetcp(PortLux,IPLux); \\
            Name_Length = 99u32; \\
            Name_Connected = AUS \\
        endif
        
        :end
        
        :begin Luxtronic_Var(Name, Index, Var)
        :info $Dieses Makro schreibt einen ausgelesenen Wert mit gegebenem Index in die angegebene Variable. \\
        Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
              $Namen der Anbindung$\\
              $Index des zu schreibenden Wertes.$\\
              $Zu beschreibende Variable.$
        :shortinfo $Schreiben eines aktuellen Werts aus der WP-Steuerung in eine Variable.$
        if (Name_Entry == convert(Index,Name_Entry)) then Var = convert(Name_Response, Var) endif
        :end
        
        :begin Luxtronic_VarFloat(Name, Index, Var)
        :info $Dieses Makro schreibt einen ausgelesenen Wert mit gegebenem Index in die angegebene Variable. \\
        Der ausgelesene Wert (z.B. Temperaturen) ist in zehntel angegeben und muss daher konvertiert werden. \\
        Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
              $Namen der Anbindung$\\
              $Index des zu schreibenden Wertes.$\\
              $Zu beschreibende Variable.$
        :shortinfo $Schreiben eines aktuellen Float-Werts aus der WP-Steuerung in eine Variable.$
        if (Name_Entry == convert(Index,Name_Entry)) then Var = convert(Name_Response, Var) / convert(10u08,Var) endif
        :end
        
        :begin Luxtronic_GAVar(Name, Index, GA, Var)
        :info $Dieses Makro sendet einen ausgelesenen Wert mit gegebenem Index an die angegebene Gruppenadresse. \\
        Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
              $Namen der Anbindung$\\
              $Index des zu schreibenden Wertes.$\\
              $Zu beschreibende Gruppenadresse.$
        :shortinfo $Senden eines aktuellen Werts aus der WP-Steuerung an eine Gruppenadresse.$
        if (Name_Entry == convert(Index,Name_Entry)) then write(GA,convert(Name_Response, GA)) endif
        :end
        
        :begin Luxtronic_GAFloat(Name, Index, GA)
        :info $Dieses Makro sendet einen ausgelesenen Wert mit gegebenem Index an die angegebene Gruppenadresse. \\
        Der ausgelesene Wert (z.B. Temperaturen) ist in zehntel angegeben und muss daher konvertiert werden. \\
        Zur Dokumentation der Ereignisnummern siehe beigelegtes Readme.txt.$\\
              $Namen der Anbindung$\\
              $Index des zu schreibenden Wertes.$\\
              $Zu beschreibende Gruppenadresse.$
        :shortinfo $Senden eines aktuellen Float-Werts aus der WP-Steuerung an eine Gruppenadresse.$
        if (Name_Entry == convert(Index,Name_Entry)) then write(GA, convert(Name_Response, GA) / convert(10u08,GA)) endif
        :end
        Gruss
        Arno

        Kommentar


          #5
          Hi,

          Hast du deinen "Simulator" auf der gleichen IP/Maschine wie den HomeControl Server laufen? Readtcp() bekommt ja jedes TCP-Telegramm mit, welches an den EibPC gesendet wird. In "Name_Message" landen auch andere TCP-Daten. Du darfst den Inhalt also nur verarbeiten wenn IP und Port stimmt. Also prüfe mal beim readtcp() noch den Port ab.

          [highlight=epc]
          if event(readtcp(Name_Port, Name_IP, Name_Message)) and Name_Connected and (Name_IP == IPLux and Name_Port==PortLux) then \\
          [/highlight]
          Gruß
          Christian

          Kommentar


            #6
            Hallo,

            der HC Server läuft bei mir auf einem dedizierten Server.
            Eine Kollision bzgl. IP-Adresse ist somit ausgeschlossen.
            Der in readtcp gesetzte Eingangsport scheint aber tatsächlich nicht mit dem Port 8888 zu übereinstimmen. Ich starte heute Abend dann nochmal einen Versuch und überprüfe den Port zusätzlich.

            Gruss
            Arno

            Kommentar


              #7
              Hallo,

              der Vergleich mit dem Port hat auch nichts gebracht, es kommen immer noch die falschen Werte an. Erst nachdem ich die HomeControl Makros auskommentiert habe und(!) den HomeControl Server abgeschaltet habe, kam wirklich kein "Querverkehr" mehr durch. Die readtcp Funktion hat definitiv ein Problem damit, wenn mehrere Clients / Server Daten an den eibPC schicken.

              Jetzt habe ich einen weiteren Fehler entdeckt:
              Code:
              if event(readtcp(Name_Port, Name_IP, Name_Message)) and Name_Connected and (Name_IP == IPLux) and (Name_Port == PortLux) then \\
                  Name_ReceivedTcp = Name_ReceivedTcp+1u32; \\
                  stringset(Name_MQueue,Name_Message,0u16); \\
                  Name_R3 = stringcast(Name_MQueue,0u08,0u16); \\
                  Name_R2 = stringcast(Name_MQueue,0u08,1u16); \\
                  Name_R1 = stringcast(Name_MQueue,0u08,2u16); \\
                  Name_R0 = stringcast(Name_MQueue,0u08,3u16); \\
                  Name_Response = convert(Name_R3,0u32)*16777216u32+convert(Name_R2,0u32)*65536u32+convert(Name_R1,0u32)*256u32+convert(Name_R0,0u32); \\
                  if ((Name_Length > 0u32) and (Name_Protocol == 5u08)) then Name_Entry = Name_Entry + 1u32; Name_Length = Name_Length - 1u32 endif; \\
                  if (Name_Protocol == 4u08) then Name_Length = Name_Response; Name_Protocol = 5u08 endif; \\
                  if (Name_Protocol == 3u08) then Name_Protocol = 4u08 endif; \\
                  if (Name_Protocol == 2u08) and (Name_Response == 3004u32) then Name_Protocol = 3u08 endif \\
              endif
              Im Code oben wird die stringcast-Folge nur beim ersten Mal korrekt ausgeführt, danach werden die Name_Rx Variablen nicht gesetzt. Ansonsten wird der Code aber ausgeführt, das kann man im "Debugger" verfolgen...

              Ich versuche jetzt ersteinmal meine Homepage wieder zum Laufen zu bringen.

              Gruss
              Arno

              Kommentar


                #8
                Zitat von pernozzoli Beitrag anzeigen
                Hallo,
                der Vergleich mit dem Port hat auch nichts gebracht, es kommen immer noch die falschen Werte an.
                Wir werden der Sache nachgehen. Allerdings scheint es hier bei mir zu funktionieren. Ich habe CF und Squeezebox parallel.
                Im Code oben wird die stringcast-Folge nur beim ersten Mal korrekt ausgeführt, danach werden die Name_Rx Variablen nicht gesetzt. Ansonsten wird der Code aber ausgeführt, das kann man im "Debugger" verfolgen...
                Ok, das werden wir auch testen.
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Und, habt ihr schon testen können?

                  Ist denn das nun eigentlich ein BUG oder ein FEATURE das sendtcp an die Daten immer noch 'ne null ranhängt?

                  (Ich möchte ein sendtcp ohne null hinten dran )

                  Gruß,
                  Bernd

                  Kommentar


                    #10
                    Zitat von bmx Beitrag anzeigen
                    Und, habt ihr schon testen können?
                    Die readtcp Funktion scheint in jedem Fall schon mit mehreren Clients zusammen zu arbeiten. Man muss etwas aufpassen, da diese Funktion ihre Argumente verändert (call by ref), wenn ein Telegramm eintrifft - siehe den Bug mit CF.
                    Ist denn das nun eigentlich ein BUG oder ein FEATURE das sendtcp an die Daten immer noch 'ne null ranhängt?
                    Ein Feature.
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Ei, wer macht denn solche Features ...



                      Dann schlage ich jetzt vor, das Ihr da einen BUG einbaut

                      Wie sehen denn die anderen User/Entwickler das überhaupt?
                      Sollte da eine NULL automatisch dran hängen oder gehört die da nicht hin?

                      Gruß,
                      Bernd

                      Kommentar


                        #12
                        Zitat von bmx Beitrag anzeigen
                        Wie sehen denn die anderen User/Entwickler das überhaupt?
                        Sollte da eine NULL automatisch dran hängen oder gehört die da nicht hin?
                        Wie schon in anderen Themen von mir angemerkt... Die NULL gehört da nicht hin!
                        Gruß
                        Christian

                        Kommentar


                          #13
                          Hallo,

                          noch wesentlich interessanter wäre doch eine Möglichkeit, einen String binär zu übertragen (lesen oder schreiben), also eine parametrierbare Anzahl an Bytes unabhängig davon, ob irgendwelche Steuerzeichen oder Nullen drin sind.

                          Gruss
                          Arno

                          Kommentar


                            #14
                            Zitat von pernozzoli Beitrag anzeigen
                            Hallo,
                            noch wesentlich interessanter wäre doch eine Möglichkeit, einen String binär zu übertragen (lesen oder schreiben), also eine parametrierbare Anzahl an Bytes unabhängig davon, ob irgendwelche Steuerzeichen oder Nullen drin sind.
                            Gute Idee, nimm ich gleich mit auf.
                            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                            Enertex Produkte kaufen

                            Kommentar


                              #15
                              Zitat von chg Beitrag anzeigen
                              Wie schon in anderen Themen von mir angemerkt... Die NULL gehört da nicht hin!
                              Sehe ich genauso.
                              BR
                              Marc

                              Kommentar

                              Lädt...
                              X