Ankündigung

Einklappen
Keine Ankündigung bisher.

Steuerung der KWL Cofoair mit diesem Protokol möglich?

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Kein Problem.

    Ob das mit der Sub-D nur funktioniert, wenn amn zuerst den Betriebsmodus mit Parameter 9B umschaltet weiss ich nicht. Kann es mir aber gut vorstellen. Jedenfalls macht dass das Programm als erstes Kommando bevor sonst etwas gesendet wird. Damit wird warscheinlich der Sub-D für das empfangen von Daten aktiviert. Aber auf der Schnittstelle der Ease sollten die daten IMMER vorhanden sein. Dass ist es, was ich testen wollte. Da müsste ja eigentlich immer mal wieder etwas gesendet werden, was im Log auftauchen sollte. Sonst haben wir ein HW oder Socket problem

    Naja ich breche an dieser Stelle auch mal ab Vieleicht kommt morgen ja die zündende Idee
    Gruss Patrik alias swiss

    Kommentar


      Zitat von swiss Beitrag anzeigen
      @makki Würde das CR in $fh auftauchen, wenn der ComfoAir von sich aus sendet? Oder wird das vom socket verschluckt?
      Solange es vom socat nicht (absichtlich) weggeschnitten wird, also in diesem Fall: ja.
      Aber das liest sich so als obs da sowas nicht gäbe.. zwei Trennzeichen im socat geht nicht (in ner Moxa übrigens auch nicht wirklich)
      -> Das ist eklig! Wenn die packerl nicht zufällig zusammenhängend kommen, was vom timing des senders abhängt, heisst das merken und Zeichenweise parsen

      Ich würd sowas übrigens nicht blind machen wollen, mit dem socat kann man auch Klasse ins weltweite Netz durchschalten

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        Zitat von swiss Beitrag anzeigen
        Oder selber eine ComfoAir zum testen hätte...
        Hallo Patrik

        Ich wohne zwar nicht gerade um die Ecke, aber ich hätte hier drei Zehnder Lüftungsgeräte und ein Wiregate. Falls es Dir dient, lass es mich bitte wissen.

        Herzliche Grüsse
        Diego

        Kommentar


          Hallo Zusammen

          @makki: Vielen Dank für die Info. Also wäre in diesem Sonderfall doch raw die richtige Wahl?

          Wie würde so ein socket over Internet aussehen? Und hättest du einen Tip wie man die Daten Byte weise auswerten kann? Das wäre warscheinlich einfacher.

          @Diego: Auch dir vielen Dank für das Angebot. Mal sehen was technisch möglich ist. Vieleicht komme ich um einen Hausbesuch nicht herum -> Mal sehen was sich dieses Wochenende tut. Wenn ich da imer noch nicht zu einer brauchbaren Lösung komme, würde ich mich gerne mal mit dir kurzschliessen

          Ich sehe mir nochmal den Code durch und versuche noch einmal ein paar Trockenübungen zu machen. Vieleicht finde ich ja heraus wiso es nicht klapt
          Gruss Patrik alias swiss

          Kommentar


            Soo...

            Mich nimmt mal etwas anderes wunder...

            Bis jetzt wollte ich es absolut korrekt machen, und die Antworttelegramme des ComfoAir auswerten -> Will ich immer noch. Aber...

            Die Frage stellt sich mir nun, ob sich der ComfoAir genau so schwer mit den Daten des WG tut.

            Dazu habe ich das Plugin mal um die erste Funktion erweiter. Damit sollte man die Lüfterstufe setzen können: abwesend,1,2 und 3

            Könnte dass mal jemand testen?

            Code:
            # Plugin zur Ansteuerung einer Zender ComfoAir
            # Version 0.05 01.06.2012 Pre ALPHA
            # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
            # Die Vorlage für die Datenübertragung via socat stammt von makki (https://knx-user-forum.de/members/makki.html)
            # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
            #
            #
            
            
            ####################
            ###Einstellungen:###
            ####################
            
            my $ga_stufeabwesend = '14/7/0'; #1bit Trigger für Stufe "Abwesend". 1=Aktivieren
            my $ga_stufe1 = '14/7/1'; #1bit Trigger für Stufe1. 1=Aktivieren
            my $ga_stufe2 = '14/7/2'; #1bit Trigger für Stufe2. 1=Aktivieren
            my $ga_stufe3 = '14/7/3'; #1bit Trigger für Stufe3. 1=Aktivieren
            
            
            my $socknum = 129; # Eindeutige Nummer des Sockets +1
            
            #Diese Einstellungen können normalerweise so belassen werden!
            my $send_ip = "localhost"; # Sendeport (UDP, siehe in Socket-Einstellungen)
            my $send_port = "50108"; # Sendeport (UDP, siehe in Socket-Einstellungen)
            my $recv_ip = "localhost"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
            my $recv_port = "50107"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
            
            ######################
            ##ENDE Einstellungen##
            ######################
            
            
            $plugin_info{$plugname.'_cycle'} = 30; 
            # Zyklischer Aufruf nach restart und alle 300 sek.
            
            if (!$socket[$socknum]) { # socket erstellen
                    $socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
                                              Proto => "udp",
                                              LocalAddr => $recv_ip,
                                              PeerPort  => $send_port,
                                              PeerAddr  => $send_ip,
                                              ReuseAddr => 1
                                               )
                or return ("open of $recv_ip : $recv_port failed: $!");
            
                $socksel->add($socket[$socknum]); # add socket to select
            
                $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                return "opened Socket $socknum";
                plugin_log($plugname,'Soket verbunden. Soketnummer: ' . $socknum);
            }
            
            if ($fh) { # Wenn der ComfoAir ein Antworttelegramm sendet, wird ab hier der entsprechende Status ausgelesen.
                my $buf = <$fh>;
                my $bufhex = unpack("H*",$buf);
                
                if ($bufhex eq "07F3"){
                    plugin_log($plugname,'reciv:' . $bufhex . 'ACK');
                }else{
                    $bufhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
                    plugin_log($plugname,'reciv:' . $bufhex);
                    $plugin_info{$plugname.'_debug_reciv'} = $bufhex;
                }
            }elsif ($msg{'apci'} eq "A_GroupValue_Write"){
                if ($msg{'dst'} eq $ga_stufeabwesend && knx_read($msg{'dst'},0,1) == 1) {
                    my $data = "009901";
                    my $return_value2 = command_senden($data);
                }elsif ($msg{'dst'} eq $ga_stufe1 && knx_read($msg{'dst'},0,1) == 1) {
                    my $data = "009902";
                    my $return_value2 = command_senden($data);
                }elsif ($msg{'dst'} eq $ga_stufe2 && knx_read($msg{'dst'},0,1) == 1) {
                    my $data = "009903";
                    my $return_value2 = command_senden($data);
                }elsif ($msg{'dst'} eq $ga_stufe3 && knx_read($msg{'dst'},0,1) == 1) {
                    my $data = "009904";
                    my $return_value2 = command_senden($data);
                }
                return;
            } else { # zyklischer Aufruf
               # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
               $plugin_subscribe{$ga_stufeabwesend}{$plugname} = 1;
               $plugin_subscribe{$ga_stufe1}{$plugname} = 1;
               $plugin_subscribe{$ga_stufe2}{$plugname} = 1;
               $plugin_subscribe{$ga_stufe3}{$plugname} = 1;
            }
            
            # Ab hier wird das Datenpaket inklusive Checksumme zusammengestellt und an die ComfoAir übertragen
            sub command_senden{
                my $checksum = 0;
                my $data = $_[0];
                
                my $datasum = $data . "AD"; #+173 für die Checksummenberechnung
                my @hex  = map { hex($_) } ($datasum =~ /(..)/g);
                
                
                my $x07warschon = 0;
                
                foreach (@hex) {
                    $checksum += ($_) unless $x07warschon; # unless ist dasselbe wie if not/!
                    if ($_ == 0x07) { $x07warschon = 1; }
                }
            
                $checksum = sprintf "%x\n" , $checksum; #Mache aus Integer wieder HEX
                $checksum = substr($checksum,length($checksum)-3,2); #Verwede nur die letzten beiden stellen
                my $command = pack("H*","07F0" . $data . $checksum . "070F");
                
                my $commandhex = $command;
                $commandhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
                
                $plugin_info{$plugname.'_debug_transmit'} = $commandhex;
                plugin_log($plugname,'transmit:' . $commandhex);
                syswrite($socket[$socknum], $command);
            }
            Momentan werden die Stufen nur getriggert. Das heist es muss auf die entsprechende GA eine 1 gesendet werden! Wenn dass funktioniert, muss nur am Empfang der Daten gefeilt werden

            14/7/0 -> abwesend
            14/7/1 -> Stufe1
            14/7/2 -> Stufe2
            14/7/3 -> Stufe3
            Gruss Patrik alias swiss

            Kommentar


              012-06-02 09:30:08.200,KWL sendet,1,0s, 2012-06-02 09:30:38.801,KWL sendet,1,0s, 2012-06-02 09:31:09.953,KWL sendet,1,0s, 2012-06-02 09:31:40.731,KWL sendet,1,0s, 2012-06-02 09:32:11.263,KWL sendet,1,0s, 2012-06-02 09:32:41.496,KWL sendet,1,0s, 2012-06-02 09:33:06.473,KWL sendet,transmit:0x7 0xf0 0x0 0x99 0x4 0x4a 0x7 0xf 2012-06-02 09:33:12.188,KWL sendet,1,0s, 2012-06-02 09:33:42.799,KWL sendet,1,0s, 2012-06-02 09:34:13.637,KWL sendet,1,0s, 2012-06-02 09:34:39.802,KWL sendet,transmit:0x7 0xf0 0x0 0x99 0x4 0x4a 0x7 0xf 2012-06-02 09:34:43.673,KWL sendet,1,0s, 2012-06-02 09:35:14.353,KWL sendet,1,0s, 2012-06-02 09:35:45.379,KWL sendet,1,0s, 2012-06-02 09:35:56.826,KWL sendet,transmit:0x7 0xf0 0x0 0x99 0x4 0x4a 0x7 0xf

              Kommentar


                werde mal den pc an die kwl anschliessen und gucken was da geht.
                wahrscheinlich aber erst heute abend.
                Gleichzeitig habe ich den sourcecode für comfoPC angefordert. möglicherweise gibt das aufschlüsse

                Kommentar


                  Hallo Tobias

                  Die Stufenschaltung über GA 14/7/0 - 14/7/3 funktioniert also auch nicht?

                  Machmal bitte zur Sicherheit raw beim socket1 wieder rein. Warscheinlich muss ich bei dem kruden Protokoll doch die Daten händisch zerlegen

                  PS: In welcher Programmiersprache ist ComfoPC geschreiben?
                  Gruss Patrik alias swiss

                  Kommentar


                    Ich habe gerade einen sehr blöden Fehler entdeckt. Ich habe aus Versehen die Datenlänge bei der Übertragung vergessen. So war das Datenpacket natürlich unvollständig Sollte nun gefixt sein:

                    Code:
                    # Plugin zur Ansteuerung einer Zender ComfoAir
                    # Version 0.06 02.06.2012 Pre ALPHA
                    # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                    # Die Vorlage für die Datenübertragung via socat stammt von makki (https://knx-user-forum.de/members/makki.html)
                    # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
                    #
                    #
                    
                    
                    ####################
                    ###Einstellungen:###
                    ####################
                    
                    my $ga_stufeabwesend = '14/7/0'; #1bit Trigger für Stufe "Abwesend". 1=Aktivieren
                    my $ga_stufe1 = '14/7/1'; #1bit Trigger für Stufe1. 1=Aktivieren
                    my $ga_stufe2 = '14/7/2'; #1bit Trigger für Stufe2. 1=Aktivieren
                    my $ga_stufe3 = '14/7/3'; #1bit Trigger für Stufe3. 1=Aktivieren
                    
                    
                    my $socknum = 129; # Eindeutige Nummer des Sockets +1
                    
                    #Diese Einstellungen können normalerweise so belassen werden!
                    my $send_ip = "localhost"; # Sendeport (UDP, siehe in Socket-Einstellungen)
                    my $send_port = "50108"; # Sendeport (UDP, siehe in Socket-Einstellungen)
                    my $recv_ip = "localhost"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
                    my $recv_port = "50107"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
                    
                    ######################
                    ##ENDE Einstellungen##
                    ######################
                    
                    
                    $plugin_info{$plugname.'_cycle'} = 300; 
                    # Zyklischer Aufruf nach restart und alle 300 sek.
                    
                    if (!$socket[$socknum]) { # socket erstellen
                            $socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
                                                      Proto => "udp",
                                                      LocalAddr => $recv_ip,
                                                      PeerPort  => $send_port,
                                                      PeerAddr  => $send_ip,
                                                      ReuseAddr => 1
                                                       )
                        or return ("open of $recv_ip : $recv_port failed: $!");
                    
                        $socksel->add($socket[$socknum]); # add socket to select
                    
                        $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                        return "opened Socket $socknum";
                        plugin_log($plugname,'Soket verbunden. Soketnummer: ' . $socknum);
                    }
                    
                    if ($fh) { # Wenn der ComfoAir ein Antworttelegramm sendet, wird ab hier der entsprechende Status ausgelesen.
                        my $buf = <$fh>;
                        my $bufhex = unpack("H*",$buf);
                        
                        if ($bufhex eq "07F3"){
                            plugin_log($plugname,'reciv:' . $bufhex . 'ACK');
                        }else{
                            $bufhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
                            plugin_log($plugname,'reciv:' . $bufhex);
                            $plugin_info{$plugname.'_debug_reciv'} = $bufhex;
                        }
                    }elsif ($msg{'apci'} eq "A_GroupValue_Write"){
                        if ($msg{'dst'} eq $ga_stufeabwesend && knx_read($msg{'dst'},0,1) == 1) {
                            my $data = "00990101";
                            plugin_log($plugname,'Stufe abwesend');
                            my $return_value2 = command_senden($data);
                        }elsif ($msg{'dst'} eq $ga_stufe1 && knx_read($msg{'dst'},0,1) == 1) {
                            my $data = "00990102";
                            plugin_log($plugname,'Stufe 1');
                            my $return_value2 = command_senden($data);
                        }elsif ($msg{'dst'} eq $ga_stufe2 && knx_read($msg{'dst'},0,1) == 1) {
                            my $data = "00990103";
                            plugin_log($plugname,'Stufe 2');
                            my $return_value2 = command_senden($data);
                        }elsif ($msg{'dst'} eq $ga_stufe3 && knx_read($msg{'dst'},0,1) == 1) {
                            my $data = "00990104";
                            plugin_log($plugname,'Stufe 3');
                            my $return_value2 = command_senden($data);
                        }
                        return;
                    } else { # zyklischer Aufruf
                       # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
                       $plugin_subscribe{$ga_stufeabwesend}{$plugname} = 1;
                       $plugin_subscribe{$ga_stufe1}{$plugname} = 1;
                       $plugin_subscribe{$ga_stufe2}{$plugname} = 1;
                       $plugin_subscribe{$ga_stufe3}{$plugname} = 1;
                    }
                    
                    # Ab hier wird das Datenpaket inklusive Checksumme zusammengestellt und an die ComfoAir übertragen
                    sub command_senden{
                        my $checksum = 0;
                        my $data = $_[0];
                        
                        my $datasum = $data . "AD"; #+173 für die Checksummenberechnung
                        my @hex  = map { hex($_) } ($datasum =~ /(..)/g);
                        
                        
                        my $x07warschon = 0;
                        
                        foreach (@hex) {
                            $checksum += ($_) unless $x07warschon; # unless ist dasselbe wie if not/!
                            if ($_ == 0x07) { $x07warschon = 1; }
                        }
                    
                        $checksum = sprintf "%x\n" , $checksum; #Mache aus Integer wieder HEX
                        $checksum = substr($checksum,length($checksum)-3,2); #Verwede nur die letzten beiden stellen
                        my $command = pack("H*","07F0" . $data . $checksum . "070F");
                        
                        my $commandhex = $command;
                        $commandhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
                        
                        $plugin_info{$plugname.'_debug_transmit'} = $commandhex;
                        plugin_log($plugname,'transmit:' . $commandhex);
                        syswrite($socket[$socknum], $command);
                    }
                    Gruss Patrik alias swiss

                    Kommentar


                      c++ (?)

                      mit raw und update

                      kein besseres Ergebnis

                      Kommentar


                        Ich rechne nochmal kurz die Checksumme nach. Echt schade. ich dachte für einen kurzen Augenblick ich hätte die Lösung

                        Hmm... C++ Naja fieleicht lässt sich daraus die kommunikation rauslesen. Wäre einen Versuch wert.
                        Gruss Patrik alias swiss

                        Kommentar


                          Ich habe mal die Rohdaten analysiert...

                          Ich empfange 1:1 Datenpackete wie:

                          07 f0 00 99 01 01 48 07 0f

                          Das sieht eigentlich gut aus. Das Problem scheint aber, dass das Plugin nicht immer aufgerufen wird. Bzw. Sobald ein Antworttelegramm kommt, da das Endzeichen fehlt der socket auf Empfang bleibt und desshalb nicht mehr senden kann

                          @makki: Kann man beim Socket auch einen Timeout einrichten, dass den Empfang nach z.B. 2 Sekunden abbricht und die Daten zum verarbeiten einfach Roh ausspuckt?

                          Somit wäre der Soket für das senden wieder bereit.
                          Gruss Patrik alias swiss

                          Kommentar


                            Langsam frage ich mich, ob ich mit use Device::SerialPort; in diesem speziellen Fall nicht besser dran wäre. Da ich nicht damit rechne, dass es einen dauernden Reconnect geben wird, wäre dass vieleicht noch eine Alternative.

                            Ich habe mal eine Alternative mit direkter serieller Komunikation gebaut...

                            VORSICHT!

                            Vorher müssen gewisse Vorbereitungen getroffen werden!

                            1. Unter Seriell/LAN/Socket muss der Hacken bei aktiv für die Verbindung zur KWL entfernt werden.
                            2. Der Pfad zur Schnittstelle (bei mir /dev/usbserial-2-3) muss im Plugin selbst in der Zeile 19 angepasst werden



                            Code:
                            # Plugin zur Ansteuerung einer Zender ComfoAir
                            # Version 0.071 02.06.2012 Pre ALPHA
                            # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                            # Die Vorlage für die Datenübertragung via socat stammt von makki (https://knx-user-forum.de/members/makki.html)
                            # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
                            #
                            #
                            use Device::SerialPort;
                            
                            ####################
                            ###Einstellungen:###
                            ####################
                            
                            my $ga_stufeabwesend = '14/7/0'; #1bit Trigger für Stufe "Abwesend". 1=Aktivieren
                            my $ga_stufe1 = '14/7/1'; #1bit Trigger für Stufe1. 1=Aktivieren
                            my $ga_stufe2 = '14/7/2'; #1bit Trigger für Stufe2. 1=Aktivieren
                            my $ga_stufe3 = '14/7/3'; #1bit Trigger für Stufe3. 1=Aktivieren
                            
                            
                            my $usb = '/dev/usbserial-2-3';
                            
                            
                            ######################
                            ##ENDE Einstellungen##
                            ######################
                            my $return_value2;
                            my $daten;
                            
                            $plugin_info{$plugname.'_cycle'} = 300; 
                            # Zyklischer Aufruf nach restart und alle 300 sek.
                            
                            my $seriel = Device::SerialPort->new($usb) || die "Kann $usb nicht öffnen! ($!)\n";
                            $seriel->baudrate(9600);
                            $seriel->parity("none");
                            $seriel->databits(8);
                            $seriel->stopbits(1);
                            
                            
                            if ($msg{'apci'} eq "A_GroupValue_Write"){
                                if ($msg{'dst'} eq $ga_stufeabwesend && knx_read($msg{'dst'},0,1) == 1) {
                                    $daten = "00990101";
                                    plugin_log($plugname,'Stufe abwesend');
                                    $return_value2 = command_senden($daten);
                                }elsif ($msg{'dst'} eq $ga_stufe1 && knx_read($msg{'dst'},0,1) == 1) {
                                    $daten = "00990102";
                                    plugin_log($plugname,'Stufe 1');
                                    $return_value2 = command_senden($daten);
                                }elsif ($msg{'dst'} eq $ga_stufe2 && knx_read($msg{'dst'},0,1) == 1) {
                                    $daten = "00990103";
                                    plugin_log($plugname,'Stufe 2');
                                    $return_value2 = command_senden($daten);
                                }elsif ($msg{'dst'} eq $ga_stufe3 && knx_read($msg{'dst'},0,1) == 1) {
                                    $daten = "00990104";
                                    plugin_log($plugname,'Stufe 3');
                                    $return_value2 = command_senden($daten);
                                }
                                return $return_value2;
                            } else { # zyklischer Aufruf
                               # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
                               $plugin_subscribe{$ga_stufeabwesend}{$plugname} = 1;
                               $plugin_subscribe{$ga_stufe1}{$plugname} = 1;
                               $plugin_subscribe{$ga_stufe2}{$plugname} = 1;
                               $plugin_subscribe{$ga_stufe3}{$plugname} = 1;
                            }
                            
                            # Ab hier wird das Datenpaket inklusive Checksumme zusammengestellt und an die ComfoAir übertragen
                            sub command_senden{
                                my $checksum = 0;
                                my $data = $_[0];
                                
                                my $datasum = $data . "AD"; #+173 für die Checksummenberechnung
                                my @hex  = map { hex($_) } ($datasum =~ /(..)/g);
                                
                                
                                my $x07warschon = 0;
                                
                                foreach (@hex) {
                                    $checksum += ($_) unless $x07warschon; # unless ist dasselbe wie if not/!
                                    if ($_ == 0x07) { $x07warschon = 1; }
                                }
                            
                                $checksum = sprintf "%x\n" , $checksum; #Mache aus Integer wieder HEX
                                $checksum = substr($checksum,length($checksum)-3,2); #Verwede nur die letzten beiden stellen
                                my $command = pack("H*","07F0" . $data . $checksum . "070F");
                                
                                my $commandhex = $command;
                                $commandhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
                                
                                $plugin_info{$plugname.'_debug_transmit'} = $commandhex;
                                plugin_log($plugname,'transmit:' . $commandhex);
                                $seriel->write($command);
                                
                                $|=1;
                                my $exit=0;
                                while($exit < 100000)
                                {
                                    my ($cin, $sin) = $seriel->read(1);
                                    if($cin){
                                        if($cin eq '07F3'){
                                        plugin_log($plugname,'reciv: ACK');    
                                        }
                                        plugin_log($plugname,'reciv: ' . $cin);
                                        $exit=0;
                                     }else{
                                        $exit++
                                    }
                                }
                            }
                            Damit friert mir wehnigstens nicht das Plugin ein, wenn der ComfoAir eine Antwort sendet. Leider scheint damit ereignissgesteuertes aufrufen wenn neue Daten ansteehn nicht möglich zu sein. (spontanes empfangen von Daten is nicht)
                            Gruss Patrik alias swiss

                            Kommentar


                              der gejt, alder, der Ding gejt!

                              oooch, isch hob gedocht der is kaputt und der gejt!

                              huston, wir haben ein socket-problem

                              Kommentar


                                Dass hab ich mir fast gedacht. -> *freu*

                                Also muss irgend wie der Socket zurecht gebogen werden oder makki hat die zündende Idee wie man Device::SerialPort auch so einrichten kann, dass das Plugin beim eintreffen eines Datenpacket's aufgerufen wird.

                                Momentan können wir also nur Befehle senden aber keine Zustände empfangen. Wir könnten höchstens Zustände lesen. Wäre aber warscheinlich auch kein Beinbruch oder?
                                Gruss Patrik alias swiss

                                Kommentar

                                Lädt...
                                X