genau
Ankündigung
Einklappen
Keine Ankündigung bisher.
Steuerung der KWL Cofoair mit diesem Protokol möglich?
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Du hast eine ParameterSoftware? Könnte ich die eventuell zum testen bekommen? Würde gerne meine Test's noch etwas vertiefen.
Welches Plugin hast du nun im Einsatz? Hat es in der Zeile 89 noch ein \r? Dann ist es nicht das aktuelle. Das \r funktioniert nicht.
@makki:Wie bekomme ich denn die rohen Hexdaten von command in's Log geschrieben? Möchte gerne mal nachsehen ob das pack richtig arbeite.Gruss Patrik alias swiss
Kommentar
-
Zitat von swiss Beitrag anzeigen@makki:Wie bekomme ich denn die rohen Hexdaten von command in's Log geschrieben? Möchte gerne mal nachsehen ob das pack richtig arbeite.
nc -l -u 50011 | hexdump
einfach selber auf den port (socat darf dann aber nicht laufen)
oder im Plugin (aus cul868)
my $bufhex = $buf;
$bufhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
-
Danke
Hab es gerade nachgetragen. Jetzt werden die Tx Daten als Hex gelogt. damit kann man später (wenn die Kommunikation mal steht) verfolgen ob auf Transmit auch dir richtigen Daten empfangen werden.
PS: Ist das Ergebnis normal? ->
2012-05-30 23:05:40.919,KWL.pl,transmit:0x7 0xf0 0x0 0x69 0x0 0x16 0x7 0xf
Werden die führenden Nullen immer weggelassen? Nicht dass es am Ende an so einer Kleinigkeit scheitert
@Lio: Mach ich morgenIch gehe mal in's bett muss morgen wieder früh raus
Gruss Patrik alias swiss
Kommentar
-
Ok. Dann habe ich jetzt ehrlich gesagt das eol des socket im verdacht. Hier ist das Problem, dass die Kommunikation mit 07 0F endet. Also ein BEL gefolgt von einem Shift In. Die Frage ist, ob man an eol beide Zeichen übergeben kann? Weil nur eol=15 wäre gefährlich da 0F theoretisch auch im Datenbereich auftauchen könnte
@Lio: GerngeschehenIch hätte ja gerne den ComfoAir Simulator getesten aber der läuft bei mir nicht
Gruss Patrik alias swiss
Kommentar
-
Hmmm... Schwierige Sache...
Ich bin bei menen Tests eine Erkentnis schlauer geworden. -> Hoffe ich.
Also noch einen Versuch...
Unter Socket1 alle Optionen löschen. raw scheint in diesem Fall nicht gut zu sein.
Dann bitte mal das folgende Plugin ein paar Minuten laufen lassen und das PluginLog auf transmit und reciv überprüfen:
Code:# Plugin zur Ansteuerung einer Zender ComfoAir # Version 0.04 31.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'} = 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); $plugin_info{$plugname.'_debug_reciv'} = $bufhex; if ($bufhex eq "07F3"){ plugin_log($plugname,'reciv:' . $bufhex . 'ACK'); }else{ $bufhex =~ s/(.)/sprintf("0x%x ",ord($1))/eg; 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"); 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
-
Alle optionen für socket1 gelöscht
Kabel dazwischen mal wieder von Ease Anschluss auf PC anschluss umverkabelt.
KWL Donnerstag_cycle30KWL Donnerstag_debug_transmit0x7 0xf0 0x0 0x69 0x0 0x16 0x7 0xf KWL Donnerstag_last1338491355.11131KWL Donnerstag_result
KWL Donnerstag_runtime0KWL Donnerstag_timeout_err0Angehängte Dateien
Kommentar
Kommentar