Ist es irgendwie möglich einDummy-Jeelink zu definieren ohne Log-Fehlermeldung? Ich benötige diesen, da ich die RAW-Daren von einem FHEM2FHEM bekomme.
Als Parameter will der JeeLink ja ein Device, welches er auch direkt öffnen will .... none oder /dev/null werden auch direkt versucht zu öffnen und bringen natürlich eine hässliche Log-Fehlermeldung.
das hatte ich noch nicht eingebaut. ich muss mal schauen was alles dazu nötig ist.
was genau bekommst du denn für einen Fehler bei /dev/null? versuch mal '/dev/null@directio'
gruss
andre
Zitat von: justme1968 am 27 Januar 2014, 10:52:59
was genau bekommst du denn für einen Fehler bei /dev/null?
2014.01.27 10:12:48 3: Opening JeeLink device /dev/null
2014.01.27 10:12:48 3: Can't open /dev/null: Eingabe-/Ausgabefehler
Zitat von: justme1968 am 27 Januar 2014, 10:52:59
versuch mal '/dev/null@directio'
2014.01.27 11:01:13 3: Opening JeeLink device /dev/null
2014.01.27 11:01:13 3: JeeLink device opened
2014.01.27 11:01:13 1: /dev/null disconnected, waiting to reappear
2014.01.27 11:01:13 1: /dev/null reappeared (JeeLink)
2014.01.27 11:01:13 1: /dev/null disconnected, waiting to reappear
2014.01.27 11:01:13 1: /dev/null reappeared (JeeLink)
2014.01.27 11:01:13 1: /dev/null disconnected, waiting to reappear
2014.01.27 11:01:13 1: /dev/null reappeared (JeeLink)
2014.01.27 11:01:14 1: /dev/null disconnected, waiting to reappear
2014.01.27 11:01:14 1: /dev/null reappeared (JeeLink)
.........
Das kommt in einer Endlosschleife....
gruß Tilo
als workaround bis ich den dummy eingebaut habe müsste es gehen wenn du dir mit mkfifo /tmp/jdummy
einen fifo anlegst und mit define <device> /tmp/jdummy@diretio
in fhem verwendest.
namen und pfad kannst du natürlich frei wählen.
gruss
andre
Hallo Andre,
besten Dank erstmal für deine Mühe.
Ein Workaround ist nicht nötig .... none, dummy oder auch /dev/null funktioniert ja - es kommt eben nur einmal log die unschöne Fehlermeldung.
Daher war die Frage, ob es auch einen "sauberen" Weg gibt .... drauf gestossen bin ich bei der CUL-Definition, wo genau dafür ein "none" vorgesehen ist.
Gruß Tilo
der workaround sollte ohne fehlermeldung funktionieren.
ich bau das mit dem dummy/none ein.
gruss
abdre
Gibt es denn auch einen Workaround für Windows?
Ich habe einmal JeeLink an einem BananaPi im Keller und einen an einem Windows 7 im ersten Geschoss. Ich bekomme die Daten vom Windows in den BananaPI mit FHEM2FHEM aber nicht umgekehrt, da sowohl none als auch dummy in der Definition auf dem Windows Gerät nicht angenommen werden.
Setze ich das Device auf com99@57600 kann ich Daten zwar bekommen, aber das Device ist natürlich 'disconnected'.
Auch wäre es, so vermute ich, wünschenswert, wenn es das Attribut 'sendpool' geben würde (und natürlich die Funktionalität).
Bernd
Noch mal ich.
mit 'nul' im Device bekomme ich 'Unzulässige Funktion' und mit 'com99@57600' 'Das System kann die angegebene Datei nicht finden.' andauernd im log angezeigt. Ist also wohl auch kein 'Workaround' geschweige denn eine Lösung.
Bernd
Hallo,
ich hab nun ein wenig selbst rumprobiert und möchte folgende Änderungen im 36_JeeLink.pm vorschlagen:
alt:
$hash->{AttrList} = "Clients MatchList"
." initCommands"
." flashCommand"
." DebounceTime BeepLong BeepShort BeepDelay"
." tune " . join(" ", map { "tune_$_" } keys %RxListJeeLink)
." $readingFnAttributes";
neu:
$hash->{AttrList} = "Clients MatchList"
." sendpool"
." dummy"
." initCommands"
." flashCommand"
." DebounceTime BeepLong BeepShort BeepDelay"
." tune " . join(" ", map { "tune_$_" } keys %RxListJeeLink)
." $readingFnAttributes";
alt:
my $msg = "wrong syntax: define <name> JeeLink {devicename[\@baudrate] ".
"| devicename\@directio}";
neu:
my $msg = "wrong syntax: define <name> JeeLink {none | devicename[\@baudrate] ".
"| devicename\@directio}";
das verschieben von:
$dev .= "\@57600" if( $dev !~ m/\@/ );
auf die Zeile vor:
$hash->{DeviceName} = $dev;
damit folgende Abfrage ohne Fehler ausgeführt werden kann:
if($dev eq "none") {
Log3 $name, 1, "$name device is none, commands will be echoed only";
$attr{$name}{dummy} = 1;
return undef;
}
eventuell sollte im sub JeeLink_Get($@)
noch das folgende eingebaut werden:
my ($hash, @a) = @_;
return "No $a[1] for dummies" if(IsDummy($name));
Eigentlich war ja schon alles drin, war nur nicht aktiviert. Sendpool und none sollte jetzt auch mit FHEM2FHEM und JeeLink laufen. Ich hab mir das auch nur vom 00_CUL.pm abgeschaut.
Ob das nun alle notwendigen Änderungen sin kann ich nicht feststellen, aber bei mir läuft die Kommunikation zwischen Windows und BananaPi einwandfrei.
Auf dem BananPi folgendes im FHEM.cfg:
define JeeLinkOst_1 JeeLinkOst none
attr JeeLinkOst_1 dummy 1
attr JeeLinkOst_1 flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
attr JeeLinkOst_1 room CUL,PCA301,Test
attr JeeLinkOst_1 sendpool JeeLinkOst_1,JeeLinkOst_2
define OST1W54W732_JeeLinkOst FHEM2FHEM OST1W54W732:7072 RAW:JeeLinkOst_1
attr OST1W54W732_JeeLinkOst room CUL,PCA301,Test
define JeeLinkOst_2 JeeLinkOst /dev/ttyUSB0@57600
attr JeeLinkOst_2 flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
attr JeeLinkOst_2 room CUL,PCA301,Test
attr JeeLinkOst_2 sendpool JeeLinkOst_1,JeeLinkOst_2
Auf dem Windows steht fogendes im FHEM.cfg:
define JeeLinkOst_1 JeeLinkOst com7@57600
attr JeeLinkOst_1 flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
attr JeeLinkOst_1 room CUL,PCA301,Test
attr JeeLinkOst_1 sendpool JeeLinkOst_1,JeeLinkOst_2
define JeeLinkOst_2 JeeLinkOst none
attr JeeLinkOst_2 dummy 1
attr JeeLinkOst_2 flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
attr JeeLinkOst_2 room CUL,PCA301,Test
attr JeeLinkOst_2 sendpool JeeLinkOst_1,JeeLinkOst_2
define BananaPi_JeeLinkOst FHEM2FHEM BananaPi:7072 RAW:JeeLinkOst_2
attr BananaPi_JeeLinkOst room CUL,PCA301,Test
JeeLinkOst deswegen, weil ich meine geänderte Datei 36_JeeLinkOst.pm genannt habe.
Hope this helps.
bitte hang mal einen patch oder dein komplettes modul hier an.
ich checke es dann ein.
gruss
andre
Gerne hänge ich das von mir veränderte Modul an
ich habe die version eben eingecheckt.
gruss
andre