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

    #91
    Danke für die Infos

    Also dann versuchen wir es ohne icanon. Die Frage ist, brauchen wir raw oder nicht? IMHO schon, da wir ja die Komplete Kommunikation inklusive ACK usw. im Plugin implementieren. Damit wäre ausgeschlossen, dass bei der Kommunikation irgend etwas dazwischen funkt.


    @Lio: Seltsam. Die reciv im Log haben nichts mit der Anfrage des Plugin zu tun. Es scheint also, als ob die Befehle garnicht oder nicht korrekt an die ComfoAir übertragen werden. Hmmmm.... Ich muss mal sehen ob ich die Kommunikation auf der seriellen Schnittstelle selber prüfen kann. Dann weis ich, ob die richtigen Bytes übertragen werden oder ob da schon was faul ist
    Gruss Patrik alias swiss

    Kommentar


      #92
      Also ich habe die Komunikation mal überprüft. Naja ich werde daraus ehrlich gesagt nicht ganz schlau. Laut Pluginlog wird ð›J gesendet aber empfangen tu ich immer nur ð

      Da fehlt also was

      @makki: Kannst du dir das erklären? Hat das etwas mit der maximalen Datenlänge zutun? Gibt es da Beschränkungren?

      Hier mal die aktuelle Version:

      Code:
      # Plugin zur Ansteuerung einer Zender ComfoAir
      # Version 0.02 30.05.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 $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'} = 10; 
      # 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);
          $plugin_info{$plugname.'_debug_reciv'} = $bufhex;
          
          if ($bufhex eq "07F3"){
              plugin_log($plugname,'reciv:' . $bufhex . 'ACK');
          }else{
              plugin_log($plugname,'reciv:' . $bufhex);
          }
      }else{
      
          my $data = "006900";
      
          my $return_value2 = command_senden($data);
          return;
      }
      
      
      # 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");
          
          $plugin_info{$plugname.'_debug_transmit'} = $command;
          plugin_log($plugname,'transmit:' . $command);
          syswrite($socket[$socknum], $command);
      }
      Bitte nochmal auf der KWL testen.
      Gruss Patrik alias swiss

      Kommentar


        #93
        Sorry für die Multipost...

        Also wenn ich als data 006900 einsetzt = Abfrage Version, wird laut Pluginlog ði gesendet und genau dass empfange ich auch mit Putty. Bei 009B02 aber nicht. Also sollte zumindest 006900 funktionieren. Ich habe das im obigen Code nochmals geändert
        Gruss Patrik alias swiss

        Kommentar


          #94
          testest Du auf meinem WG?

          Hier ist das neue Ergebnis, das Log ist allerdings leer
          KWL Mittwoch_cycle10KWL Mittwoch_debug_reciv
          KWL Mittwoch_debug_transmitðiKWL Mittwoch_last1338403780.10434KWL Mittwoch_result1KWL Mittwoch_runtime0KWL Mittwoch_timeout_err0

          Kommentar


            #95
            Hallo Lio

            Ich kann auf deinem WG gar nichts testen. Zugang hätte höchstens makki Die Test's habe ich bei mir zuhause gemacht...

            WG->USB-Seriell-Wandler->Nullmodemkabel->USB-Seriell-Wandler->PC

            Naja bei mir scheint es so, als ob die Kommunikation zumindest bei mir mehr oder minder funktioniert.

            Ist dein Log nach einer Minute immer noch leer ist was sehr faul. -> Mein Pluginlog ist voll mit transmit. Da ich keine ComfoAir habe fehlt mir im Log das reciv

            Ich habe unter Socket1 folgende Optionen: raw,b9600,cs8 -> Ja auch wenn b9600 und cs8 default sein sollen... Bei mir scheint es so, als ob ich sie brauche, da sonst keine Daten gesendet werden

            @makki: Sollte man eol noch auf 15 setzen? oder macht das das WG schon richtig? Kann man als eol auch 2 Zeichen angeben? -> 07 0F
            Gruss Patrik alias swiss

            Kommentar


              #96
              Log-Datei: (sorry mein fehler-habe nach Textt gesucht)
              2012-05-30 21:05:46.838,KWL Mittwoch,reciv: 2012-05-30 21:05:46.839,KWL Mittwoch,1,0s,



              mit Socket1 Optionen raw,b9600,cs8

              Kannst mir mal erklären woher die 129 kommt:
              "my $socknum = 129; # Eindeutige Nummer des Sockets +1"

              Kommentar


                #97
                Dass ist eine gute Frage. Für was das gut ist, weiss ich selber nicht ganz genau. Wichtig ist, dass wenn du mehrere Plugins bzw. sockets offen hast, dass diese Nummer nicht doppelt verwendet wird

                habe gerade festgestellt, dass mit \r doch nicht geholfen ist, weil da hinter den Daten noch ein 0D angehängt werden. also muss das \r wieder raus.

                Werde ich gleich in der letzten Pluginversion nochmal korrigieren.
                Gruss Patrik alias swiss

                Kommentar


                  #98
                  @lio

                  Hast du mal herausgefunden, ob die serviceschnittstelle paralell zur ease schnittstelle "verdrahtet" ist? Und ob eine Steuerung auch über die Serviceschnittstelle möglich ist? bzw. was man da beachten muss?

                  Das andere wäre mal der Test mit dem Ease anschluss...
                  Gruss Patrik alias swiss

                  Kommentar


                    #99
                    ich geh' ma kuken

                    hmmm-an den Ease Anschluss das WG hängen-mittelmäßiger aufwand

                    Kannst Du mir auf Anhieb sagen welcher Pin rx, tx usw?_Nicht dass ich das selbst herausfinde...

                    Kommentar


                      Also Pin2 ist Rx und Pin3 ist Tx



                      liefert das Pluginlog immer noch keine brauchbaren daten? auch ohne \r?
                      Gruss Patrik alias swiss

                      Kommentar


                        Also bis auf Pin5-also Masse haben die keinen Kontakt zueinander.

                        Die 12V die neben Masse, rx,tx an der Ease anliegt, ist wohl für die Spannungsversorgung des Gerätes und finde sie deshalb nicht auf der Pinbelegung des PC-Anschlusses.

                        Habe gerade in der Werkstatt einen SUB-D Stecker gefunden-könnte ggf noch was basteln und dann probieren was über die Ease Schnittstelle geht.


                        Am letzten Plugin tut sich nix :-(

                        Kommentar


                          Kann sein, dass es mit der D-Sub tatsächlich nicht geht.

                          Zu verbinden sind nur GND Rx und Tx wobei Rx unt Tx gekreuzt werden müssen

                          GND -> GND
                          Rx -> Tx
                          Tx -> Rx

                          Mal sehen ob die Schnittstelle der Ease mehr Infos liefert
                          Gruss Patrik alias swiss

                          Kommentar


                            so,

                            nun habe ich noch den SUBD-STecker angebracht, gestestet, rx tx vertauscht, getestet,

                            am LOG ändert sich nix

                            Kommentar


                              Zitat von swiss Beitrag anzeigen
                              Kann sein, dass es mit der D-Sub tatsächlich nicht geht.

                              Der geht schon, habe daran mit der Software von Haustechnikdialog, bzw der Inbetriebnahme Software von Zehnder gearbeitet.
                              Nur waren beide sehr instabil

                              Kommentar


                                Wie bist du denn jetzt verbunden? Sub-D des USB-Seriellwandler mit einnem Adabperkabel. Die andere Seite des Adapterkabels ohne Stecker mit den Drähten direkt an die Anschlussklemmen des RS232 an dem normalerweise das Ease Bedienteil angeschlossen ist?
                                Gruss Patrik alias swiss

                                Kommentar

                                Lädt...
                                X