|
 |
|

04.09.2012, 22:10
|
|
Benutzer
|
|
Registriert seit: 24.08.2010
Ort: Görlitz
Beiträge: 25
|
|
Hallo Swiss,
das Plugin sieht grandios aus! Ich werde meiner ComfoAir auch mal etwas Luft machen.
Meinst Du diesen Wandler hier?
Seriell/RS232 auf USB-Wandler - WireGate
Weiß jemand wie weit ich ein RS232 Kabel ziehen kann? Meine Comfoair steht im Spitzboden und das Wiregate hängt im Zählerschrank. Das sind ca. 12m Kabel. Wenn ich das noch aus meinen Packet Radio Zeiten kenne war das Kabel ja nur aufgelöster. Da müßte ich es ja auch verlängert wieder drauf bekommen.
|

04.09.2012, 22:22
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 28.12.2008
Beiträge: 2.742
|
|
Hallo Carsten
Genau so ein USB-Seriell Wandler wird benötigt. Kann bei der ComfoAir direkt auf der Konektorplatine eingesteckt werden und es kann losgehen
Wegen dem verlängern. Das ist ein bischen Glückssache aber wird warscheinlich schon funktionieren. Ich habe meinen Beamer im Wohnzimmer über den USB-Seriellwandler angeschlossen. Das WG steht im Rack. Sind ca. 20m Ich habe mir dafür den USB-Extender aus dem WG-shop bestellt. Damit brauchst du nur eine Netzwerkleitung. Funktioniert einwandfrei.
__________________
Gruss Patrik alias swiss
Geändert von swiss (04.09.2012 um 22:28 Uhr)
|

01.10.2012, 21:54
|
|
Benutzer
|
|
Registriert seit: 24.08.2010
Ort: Görlitz
Beiträge: 25
|
|
Hallo Patrick,
ich hab mein Wiregate kurzerhand auf den Dachboden zu meiner KWL gestellt. Da Netzwerk und KNX eh überal herumliegt war das die einfachste Lösung.
Dein Plugin arbeitet perfekt!!
Ich hab jetzt auf die Schnelle nur bei den Temperaturen die ausgelesen werden die Komfort-Temperatur ergänzt und lasse sie nochmal auf die GA schreiben. Damit wird die Temperatur auch aktualisiert wenn sie jemand mal am Regler selbst verändert.
Code:
if($reciv =~ /07f000D209/i and $laenge == 34){ #Wenn die Temperaturen empfangen wurden und die L?nge passt
my $kt1 = substr($reciv,10,2);
my $t1 = substr($reciv,12,2);
my $t2 = substr($reciv,14,2);
my $t3 = substr($reciv,16,2);
my $t4 = substr($reciv,18,2);
#Hier werden die Temperaturen "decodiert" damit sie einen Sinn ergeben
$kt1 = (hex($kt1)/2)-20;
$t1 = (hex($t1)/2)-20;
$t2 = (hex($t2)/2)-20;
$t3 = (hex($t3)/2)-20;
$t4 = (hex($t4)/2)-20;
#Wenn die GA's vergebenwurde, die Temperaturen auf die GA's senden
if($ga_komforttemp ne ''){knx_write($ga_komforttemp,$kt1,9.001);}
if($ga_aul_temp ne ''){knx_write($ga_aul_temp,$t1,9.001);}
if($ga_zul_temp ne ''){knx_write($ga_zul_temp,$t2,9.001);}
if($ga_abl_temp ne ''){knx_write($ga_abl_temp,$t3,9.001);}
if($ga_fol_temp ne ''){knx_write($ga_fol_temp,$t4,9.001);}
#Ab hier werden die RRD's mit den aktuellen Temperaturen aktualisiert:
update_rrd($Name_rrd_AUL,"",$t1);
update_rrd($Name_rrd_ZUL,"",$t2);
update_rrd($Name_rrd_ABL,"",$t3);
update_rrd($Name_rrd_FOL,"",$t4);
plugin_log($plugname,'AUL: ' . $t1 . '°C, ZUL:' . $t2 . '°C, ABL: ' . $t3 . '°C, FOL: ' . $t4 . '°C');
Ich gehe mal der Annahme das du dich über http://www.see-solutions.de/sonstige...g_ComfoAir.pdf dieses Protokoll entlanggehangelt hast.
Bisher hat Du ja alle wichtigen Funktionen umgesetzt, aber falls noch jemandem etwas fehlt, kann ich mich gerne daran versuchen das Plugin noch etwas zu erweitern.
grüße
Carsten
|

02.10.2012, 20:40
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 28.12.2008
Beiträge: 2.742
|
|
Hallo Carsten
Ja genau mit dieser Protokollbeschreibung habe ich das Plugin erstellt  War aber ein Kampf bis es richtig funktionierte. Nun bin ich froh dass sich die Mühe gelohnt hat.
Schön wäre immer noch, wenn man das Plugin auf Socat umbauen könnte aber die Richtigen Soketeinstellungen habe ich immer noch nicht gefungen  Wenn jemand da eine Lösung finden würde, könnte man ohne Bauchschmerzen das gesammte Protokoll implementieren und auch voll nutzen  Aber so gehts bis jetzt auch
__________________
Gruss Patrik alias swiss
|

13.10.2012, 09:48
|
|
Benutzer
|
|
Registriert seit: 27.12.2010
Beiträge: 260
|
|
Erster Versuch mit socket
Lieber Patrik
Ich möchte in den nächsten Tagen versuchen, ob ich meine Zehnder mit Hilfe von MOXA- Schnittstellen auf Dein tolles Plugin reagierten. Leider habe ich von Socat und ähnlichem keinen blossen Schimmer. Um mein Trial und Error auf die Socat-Einstellungen einzugrenzen, wäre ich Dir sehr dankbar, wenn Du im nachfolgenden Code prüfen könntest, ob ich aus Deiner Sicht die Kommunikation über Sockets (statt direkt auf die serielle Schnittstelle) richtig umgesetzt habe. Sobald ich dies weiss, kann ich mit den Socket-Einstellungen spielen.
Meine Änderungen habe ich im Code mit "#DC " markiert.
Herzlichen Dank für Deine Unterstützung, falls Du dazu gelegentlich Zeit findet.
Liebe Grüsse
Diego
Code:
# Plugin zur Ansteuerung einer Zender ComfoAir
# Version 1.5 14.08.2012 BETA
# Copyright: swiss (http://knx-user-forum.de/members/swiss.html)
# Aufbau moeglichst so, dass man unterhalb der Einstellungen nichts veraendern muss!
#
#
####################
###Einstellungen:###
####################
#BITTE ab sofort die Einstellungen unter conf.d vornemen. Damit bleiben die Einstellungen auch bei einem Update erhalten.
######################
##ENDE Einstellungen##
######################
#Ab hier nichts mehr aendern.
#Hauptverarbeitung
#DC eingefügt ******** Anfang
my $socknum = 87; # Eindeutige Nummer des Sockets
my $send_ip = "10.0.0.247"; # Sendeport (UDP, siehe in Socket-Einstellungen)
my $send_port = "16011"; # Sendeport (UDP, siehe in Socket-Einstellungen)
my $recv_ip = "10.0.0.247"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
my $recv_port = "16012"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
#DC eingefügt ******** Ende
#Erzeuge Variablen fuer die Zuordnung Steuerfunktionen zu den Gruppenadressen:
my $ga_stufeabwesend = ''; #1bit Trigger fuer Stufe "Abwesend". 1=Aktivieren
my $ga_stufe1 = ''; #1bit Trigger fuer Stufe1. 1=Aktivieren
my $ga_stufe2 = ''; #1bit Trigger fuer Stufe2. 1=Aktivieren
my $ga_stufe3 = ''; #1bit Trigger fuer Stufe3. 1=Aktivieren
my $ga_komforttemp = ''; #GA DPT 9.001 zum setzen der Komforttemperatur
my $ga_reset_filter = ''; #1bit Trigger fuer das Zuruecksetzen des Betriebsstundenzaehlers des Filters. 1=Reset
my $ga_reset_error = ''; #1bit Trigger fuer das zuruecksetzen der KWL nach einem Fehler. 1=Reset
#Hier werden die Gruppenadressen fuer die Rueckmeldungen vergeben: (Nich vergeben = inaktiv)
my $ga_status_ventilator_zul = ''; #GA DPT5.001 fuer Status Ventilator Zuluft %
my $ga_status_ventilator_abl = ''; #GA DPT5.001 fuer Status Ventilator Abluft %
my $ga_status_bypass_prozent = ''; #GA DPT5.001 fuer Status Bypassklappe %
my $ga_betriebsstunden_filter = ''; #GA DPT16.000 fuer die Rueckmeldung der Betribsstunden des Filters
my $ga_zustand_badschalter = ''; #GA DPT1.001 fuer die Rueckmeldung des Zustandes des Badezimmerschalters
my $ga_fehler_filter = ''; #GA DPT 1.001 fuer den Zustand des Filters. 0=OK, 1=Filter Voll
my $ga_fehlercode = ''; #GA DPT 16.000 fuer das augeben des Fehlercodes als Text
#Hier werden die Gruppenadressen für die Temperaturen vergeben: (Nicht vergeben=inaktiv)
my $ga_aul_temp = ''; #GA DPT 9.001 für die Aussenlufttemperatur
my $ga_zul_temp = ''; #GA DPT 9.001 für die Zulufttemperatur
my $ga_abl_temp = ''; #GA DPT 9.001 für die Ablufttemperatur
my $ga_fol_temp = ''; #GA DPT 9.001 für die Fortlufttemperatur
#Zuordnung der Namen fuer die RRD's:
my $Name_rrd_AUL = 'KWL_Aussenluft'; #Name RRD Aussenluft
my $Name_rrd_ZUL = 'KWL_Zuluft'; #Name RRD Zuluft
my $Name_rrd_ABL = 'KWL_Abluft'; #Name RRD Abluft
my $Name_rrd_FOL = 'KWL_Fortluft'; #Name RRD Fortluft
#Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
#DC kommentiert my $schnittstelle = '/dev/ttyUSB-1-1';
&readConf(); #conf.d einlesen
#DC kommentiert use Device::SerialPort;
my $return_value2;
my $daten;
my $reciv;
my $reciv_all;
my $ack = pack("H*","07F3");
# Zyklischer Aufruf nach restart, empfang GA oder nach einstellung rrd (typisch 300sek).
$plugin_info{$plugname.'_cycle'} = 25;
#Einrichten der Seriellen Schnittstelle fuer die Kommunikation mit dem ComfoAir
#DC kommentiert my $seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
#DC kommentiert $seriel->baudrate(9600);
#DC kommentiert $seriel->parity("none");
#DC kommentiert $seriel->databits(8);
#DC kommentiert $seriel->stopbits(1);
#plugin_log($plugname,'');
if ($msg{'apci'} eq "A_GroupValue_Write"){ #Wenn ein Telegramm vom KNX empfangen wird, ab hier auswerten
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);
}elsif ($msg{'dst'} eq $ga_komforttemp) {
my $komforttemp = knx_read($msg{'dst'},0,9.001);
plugin_log($plugname,'Komforttemp : ' . $komforttemp . '°C');
my $temphex = ($komforttemp + 20)*2; #Rechne die Temperatur fuer die ComfoAir um
$temphex = sprintf "%x" , $temphex; # Mache aus Integer HEX
$daten = "00D301" . $temphex;
$return_value2 = command_senden($daten);
}elsif ($msg{'dst'} eq $ga_reset_filter && knx_read($msg{'dst'},0,1) == 1) {
$daten = "00DB0400000001";
plugin_log($plugname,'Filter zurücksetzen');
$return_value2 = command_senden($daten);
}elsif ($msg{'dst'} eq $ga_reset_error && knx_read($msg{'dst'},0,1) == 1) {
$daten = "00DB0401000000";
plugin_log($plugname,'Fehler zurücksetzen');
$return_value2 = command_senden($daten);
}
return;
} else { # zyklischer Aufruf
# DC Eingefügt ******* Anfang
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";
}
# DC Eingefügt ******* Ende
# 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;
$plugin_subscribe{$ga_komforttemp}{$plugname} = 1;
$plugin_subscribe{$ga_reset_filter}{$plugname} = 1;
$plugin_subscribe{$ga_reset_error}{$plugname} = 1;
$daten = "00D100";
plugin_log($plugname,'Temperatur abrufen');
$return_value2 = command_senden($daten);
if($ga_status_ventilator_zul && $ga_status_ventilator_abl){ #Nur wenn beide GA's vergeben sind, dann die Zust?nde der Ventilatoren abfragen
$daten = "000B00";
plugin_log($plugname,'Ventilator Status abrufen');
$return_value2 = command_senden($daten);
}
if($ga_status_bypass_prozent){ #Nur wenn die GA vergeben ist, dann Zustand Bypassklappe abfragen
$daten = "000D00";
plugin_log($plugname,'Bypass Zustand abrufen');
$return_value2 = command_senden($daten);
}
if($ga_betriebsstunden_filter){ #Nur wenn die GA vergeben ist, die Betriebsstunden abfragen
$daten = "00DD00";
plugin_log($plugname,'Betriebsstunden abrufen');
$return_value2 = command_senden($daten);
}
if($ga_zustand_badschalter){ #Nur wenn die GA vergeben ist, die Binaereingaenge abfragen
$daten = "000300";
plugin_log($plugname,'Binäreingänge abrufen');
$return_value2 = command_senden($daten);
}
#Hier werden die Stoermeldungen abgefragt
$daten = "00D900";
plugin_log($plugname,'Störungen abrufen');
$return_value2 = command_senden($daten);
return;
}
# Ab hier wird das Datenpaket inklusive Checksumme zusammengestellt und an die ComfoAir uebertragen
sub command_senden{
my $checksum = 0;
my $data = $_[0];
my $datasum = $data . "AD"; #+173 fuer 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,-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_log($plugname,'transmit : ' . $commandhex); #Zeigt im Pluginlog das fertige Datenpaket, dass ?bertragen wird
#DC kommentiert $seriel->write($command); #Befehl an die ComfoAir senden
# DC eingefügt ****** Anfang
#$plugin_info{$plugname.'_debug'} = $command;
syswrite($socket[$socknum], $command);
# DC eingefügt ****** Ende
$reciv = '';
$|=1;
my $exit=0;
while($exit < 25000)
{
#DC kommentiert my ($cin, $sin) = $seriel->read(45);
# DC eingefügt ****** Anfang
my $sin ='';
if ($fh) { # Antwort auslesen
$sin = <$fh>;
}
my $cin = length($sin);
# DC eingefügt ****** Ende
if($cin > 0){
$sin = unpack "H*", $sin;
$reciv .= $sin;
$exit=0;
}else{
$exit++
}
if($reciv =~ /070f/i){
#DC kommentiert $seriel->write($ack); #ACK senden
# DC eingefügt ****** Anfang
syswrite($socket[$socknum], $ack); #ACK senden
# DC eingefügt ****** Ende
last;
}
}
my $test = substr($reciv,0,4);
if($test eq '07f3'){
$reciv = substr($reciv,4); #falls noch ein 07f3 enthalten ist, wir dieses hier entfernt.
#plugin_log($plugname,'reciv neu : ' . $reciv);
}
my $laenge = length($reciv); #Laenge des Antworttelegramms ermitteln
if($reciv =~ /07f000D209/i and $laenge == 34){ #Wenn die Temperaturen empfangen wurden und die L?nge passt
my $t1 = substr($reciv,12,2);
my $t2 = substr($reciv,14,2);
my $t3 = substr($reciv,16,2);
my $t4 = substr($reciv,18,2);
#Hier werden die Temperaturen "decodiert" damit sie einen Sinn ergeben
$t1 = (hex($t1)/2)-20;
$t2 = (hex($t2)/2)-20;
$t3 = (hex($t3)/2)-20;
$t4 = (hex($t4)/2)-20;
#Wenn die GA's vergebenwurde, die Temperaturen auf die GA's senden
if($ga_aul_temp ne ''){knx_write($ga_aul_temp,$t1,9.001);}
if($ga_zul_temp ne ''){knx_write($ga_zul_temp,$t2,9.001);}
if($ga_abl_temp ne ''){knx_write($ga_abl_temp,$t3,9.001);}
if($ga_fol_temp ne ''){knx_write($ga_fol_temp,$t4,9.001);}
#Ab hier werden die RRD's mit den aktuellen Temperaturen aktualisiert:
update_rrd($Name_rrd_AUL,"",$t1);
update_rrd($Name_rrd_ZUL,"",$t2);
update_rrd($Name_rrd_ABL,"",$t3);
update_rrd($Name_rrd_FOL,"",$t4);
plugin_log($plugname,'AUL: ' . $t1 . '°C, ZUL:' . $t2 . '°C, ABL: ' . $t3 . '°C, FOL: ' . $t4 . '°C');
}elsif($reciv =~ /07f0000C06/i and $laenge == 28){ #Wenn der Status fuer die Ventilatoren empfangen wurden
my $vent_zul = substr($reciv,10,2);
my $vent_abl = substr($reciv,12,2);
plugin_log($plugname,'ZUL: ' . hex($vent_zul) . '% ABL: ' . hex($vent_abl) . '%');
knx_write($ga_status_ventilator_zul,hex($vent_zul),5.001);
knx_write($ga_status_ventilator_abl,hex($vent_abl),5.001);
}elsif($reciv =~ /07f0000E04/i and $laenge == 24){ #Wenn der Status fuer die Bypassklappe empfangen wurden
my $bypass_prozent = substr($reciv,10,2);
plugin_log($plugname,'Bypass: ' . hex($bypass_prozent) . '%');
knx_write($ga_status_bypass_prozent,hex($bypass_prozent),5.001);
}elsif($reciv =~ /07f000DE14/i and $laenge == 56){ #Wenn die Rueckmeldung der Betriebsstunden empfangen wurden
my $betriebsstunden_filter = substr($reciv,40,4);
plugin_log($plugname,'Betriebsstunden: ' . hex($betriebsstunden_filter) . 'h');
knx_write($ga_betriebsstunden_filter,hex($betriebsstunden_filter) . 'h',16.000);
}elsif($reciv =~ /07f0000402/i){ #Wenn die Rueckmeldung der Binaereingaenge empfangen wurden
my $zustand_badschalter = substr($reciv,12,1);
plugin_log($plugname,'Zustand Badezimmerschalter: ' . $zustand_badschalter);
knx_write($ga_zustand_badschalter,$zustand_badschalter,1.001);
}elsif($reciv =~ /07f000DA11/i and $laenge == 50){ #Wenn die Rueckmeldung der Stoermeldungen empfangen wurden
my $fehlerAlo = substr($reciv,10,2);
my $fehlerAhi = substr($reciv,34,2);
my $fehlerE = substr($reciv,12,2);
my $fehlerFilter = substr($reciv,26,2);
my $fehlerEA = substr($reciv,28,2);
my $numAlo = 'A';
my $numAhi = 'A';
my $numE = 'A';
my $numEA = 'A';
$numAlo .= unpack("B*",pack("H*",$fehlerAlo));
$numAhi .= unpack("B*",pack("H*",$fehlerAhi));
$numE .= unpack("B*",pack("H*",$fehlerE));
$numEA .= unpack("B*",pack("H*",$fehlerEA));
$fehlerAlo = reverse($numAlo); #Wandle den Wert in Binaer und drehe die Reihenfolge um. z.B 0x02 = 00000010 = 010000000
$fehlerAlo = index($fehlerAlo,'1')+1; # Zaehle an welcher Stelle die 1 auftaucht (von links gelesen) z.B. 01000000 = INDEX 2 = Feler2
if($fehlerAhi ne '00'){
$fehlerAhi = index(reverse($numAhi),'1')+9;
}else{
$fehlerAhi = '';
}
$fehlerE = index(reverse($numE),'1')+1;
$fehlerEA = index(reverse($numEA),'1')+1;
if($fehlerAhi == 16){$fehlerAhi = 0;}
if($ga_fehlercode){ #Wenn die GA fuer das uebertragen den Fehlercodes eingertagen wurde, ab hier auswerten
if($fehlerAlo > 0){
plugin_log($plugname,'Aktueller Fehlercode: A' . $fehlerAlo);
knx_write($ga_fehlercode,'A' . $fehlerAlo,16.001);
}elsif($fehlerAhi ne ''){
plugin_log($plugname,'Aktueller Fehlercode: A' . $fehlerAhi);
knx_write($ga_fehlercode,'A' . $fehlerAhi,16.001);
}elsif($fehlerE > 0){
plugin_log($plugname,'Aktueller Fehlercode: E' . $fehlerE);
knx_write($ga_fehlercode,'E' . $fehlerE,16.001);
}elsif($fehlerEA > 0){
plugin_log($plugname,'Aktueller Fehlercode: EA' . $fehlerEA);
knx_write($ga_fehlercode,'EA' . $fehlerEA,16.001);
}else{
plugin_log($plugname,'Aktueller Fehlercode: keiner' );
knx_write($ga_fehlercode,'keiner' . $fehlerEA,16.001);
}
}
if(hex($fehlerFilter) > 0){
plugin_log($plugname,'Aktueller Fehler: Filter Voll');
knx_write($ga_fehler_filter,1,1);
}else{
knx_write($ga_fehler_filter,0,1);
}
}
}
sub readConf
{
my $confFile = '/etc/wiregate/plugin/generic/conf.d/'.basename($plugname,'.pl').'.conf';
if (! -f $confFile)
{
plugin_log($plugname, " no conf file [$confFile] found.");
}
else
{
plugin_log($plugname, " reading conf file [$confFile].");
open(CONF, $confFile);
my @lines = <CONF>;
close($confFile);
my $result = eval("@lines");
($result) and plugin_log($plugname, "conf file [$confFile] returned result[$result]");
if ($@)
{
plugin_log($plugname, " conf file [$confFile] returned:");
my @parts = split(/\n/, $@);
plugin_log($plugname, " --> $_") foreach (@parts);
}
}
} # readConf
Geändert von Fechter65 (13.10.2012 um 09:52 Uhr)
|

14.10.2012, 09:11
|
 |
Erfahrener Benutzer
|
|
Registriert seit: 28.12.2008
Beiträge: 2.742
|
|
Hallo Diego
Sieht soweit auf den ersten Blick ganz gut aus. Ist alles da für die Soket-Kommunikation  Jetzt hoffe ich, dass du die korrekten Soketeinstellungen findest, oder deinen Moxxa anweisen kannst hinter jeden seriellen String ein eindeutiges Endzeichen für den Soket zu setzen.
__________________
Gruss Patrik alias swiss
|

14.10.2012, 11:20
|
 |
Benutzer
|
|
Registriert seit: 09.08.2010
Ort: Bayern
Beiträge: 479
|
|
Ich versuche gerade das Plugin ans Laufen zu bekommen.
Ich muss dazu sagen, dass es der erste Plugin-Test ist. Dabei spuckt mir das Plugin-Log folgenden Fehler aus:
Can't locate Device/SerialPort. pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 593) line 60. BEGIN failed--compilation aborted at (eval 593) line 60.
"Line 60" deutet auf
use Device::SerialPort;
Hört sich für mich an als wäre das Problem bei mir softwareseitig am WG (CG).
Ich habe es sowohl direkt am seriellen Port als auch über USB-Seriell-Adapter probiert.
Kann hier jemand weiterhelfen?
__________________
Gruß -mfd-
Projekt: IconSet für Visualisierung
Dir gefallen die vorhandenen Icons? Spende hier für die Weiterentwicklung.
|

14.10.2012, 11:34
|
|
Benutzer
|
|
Registriert seit: 24.08.2010
Ort: Görlitz
Beiträge: 25
|
|
Hallo,
der Fehler "Can't locate Device/SerialPort. pm" deutet darauf das er das Gerät über das er Kommunizieren soll nicht findet.
Hast du in der Config mal geschaut das Du das richtige Gerät eingestellt hast?
Bei mir ist es z.B. nicht /dev/ttyUSB-1-1'; sondern /dev/ttyUSB-1-3
|

14.10.2012, 11:37
|
 |
Benutzer
|
|
Registriert seit: 09.08.2010
Ort: Bayern
Beiträge: 479
|
|
Ja, bei mir ist es:
Liste angeschlossener USB Adapter:
/dev/usbserial-4-2
das habe ich auch so übernommen...
Ich meine natürlich
/dev/ttyUSB-4-2
wobei es ja über seriell direkt auch nicht klappt
__________________
Gruß -mfd-
Projekt: IconSet für Visualisierung
Dir gefallen die vorhandenen Icons? Spende hier für die Weiterentwicklung.
Geändert von mfd (14.10.2012 um 11:40 Uhr)
Grund: Korrektur
|

14.10.2012, 13:28
|
 |
Benutzer
|
|
Registriert seit: 09.08.2010
Ort: Bayern
Beiträge: 479
|
|
War meine Schuld, es hat wohl ein Paket in meiner CG-Installation gefehlt.
libdevice-serialport- perl
Sieht jetzt sehr gut aus, ich bekomme viele Infos in der Log-Datei.
__________________
Gruß -mfd-
Projekt: IconSet für Visualisierung
Dir gefallen die vorhandenen Icons? Spende hier für die Weiterentwicklung.
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:29 Uhr.
|