JeeLink Dummy-Device

Begonnen von roedert, 27 Januar 2014, 10:20:08

Vorheriges Thema - Nächstes Thema

roedert

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.

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

roedert

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

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

roedert

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

justme1968

der workaround sollte ohne fehlermeldung funktionieren.

ich bau das mit dem dummy/none ein.

gruss
  abdre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

BerndOst

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

BerndOst

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

BerndOst

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.

justme1968

bitte hang mal einen patch oder dein komplettes modul hier an.

ich checke es dann ein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

BerndOst

Gerne hänge ich das von mir veränderte Modul an

justme1968

ich habe die version eben eingecheckt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968