Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Steuerung der KWL Cofoair mit diesem Protokol möglich?
Das bedeutet für mich, dass ich nochmal über die Bücher muss Das Problem scheint, dass der ComfoAir kein normales "Endzeichen" sendet. es fehlt also ein LF, CR, EOT oder sonst was. Ich muss nochmal den Protokollmitschnitt zwischen ComfoAir und Ease ansehen. Vieleicht kommt da die Erleuchtung.
@makki Würde das CR in $fh auftauchen, wenn der ComfoAir von sich aus sendet? Oder wird das vom socket verschluckt?
So ein mist Ich werd aus dem doofen Ding nicht schlau. Wenn ich doch nur mal das Konfigurationsprogramm an's laufen bekommen würde. Oder selber eine ComfoAir zum testen hätte...
Ich lasse mir auf jeden Fall was einfallen. Leider kommt bei dem Projekt an dem ich gerade beruflich arbeite keine ComfoAir zum einsatz. Sonst hätte ich mich schon längst mit dem Laptop davor gesetzt
PS: Das return; hast du aber vorher wieder entfernt? Sonst geht nix
Und was, wenn du einfach die Ease paralell zum PC anschliesst, und wir mal das senden einstellen? dan können wir mal etwas lauschen und sehen ob die Daten korrekt vom Socket empfangen werden
Ich baue das Plugin mal kurz dafür um
EDIT: So. Hier das minimal geänderte Plugin:
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);
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;
}
}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);
}
Dieses mal nur höhrend um nicht die Kommunikation zu stören
Naja das solarthermieprojekt wäre schon interessant. Die Frage ist, wie sich die Kommunikation unterscheidet. Wenn diese Steuerung wie alle anderen mir bekannten auch mir CR und vieleicht noch LF arbeiten, ist es kein Problem Beim ComfoAir scheint dieser "Standard" aber nicht zu zutreffen
ne, also da kommt nichts.
Aber, wenn die 2 Schnittstellen physikalisch sowieso nicht miteinander verbunden sind, werden sie sich doch auch nicht gegenseitig hören?!?
Ich bin mir immer noch nicht ganz sicher, ob es mit der Sub-D wirklich geht Ich lese immer nur von Leuten die es mit der Ease schnittstelle am laufen haben. Naja paralell zur Ease wäre für's erste mal nicht schlecht. Einfach mal zum mithöhren.
Also scheinbar ist es so, dass das Zender Tool als ersten Befehl 07 F0 00 9B 03 4B 07 0F sendet. Das hat laut Protokollbeschreibung mit dem umschalten des Kommunikationsmodus zutun. Die frage ist, ob das auch damit zusammen hängt, ob die Sub-D verwendet werden kann oder nicht. Am sichers wäre die Kommunikation ober vorerst über die Ease Schnittstelelle. Später wäre dann das Ziel die Sub-D zu nutzen um das ganze anwendertauglich zu machen. Weil ich mir auch immer noch nicht sicher bin ob man für die Verbindung über die Sub-D des ComfoAir ein Nullmodemkabel braucht oder die Schnittstelle schon ausgekreuzt ist. Das finde ich aber noch heraus.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar