Hauptmenü

linuxHid mit DOIF verwenden.

Begonnen von Olaf A, 16 August 2015, 15:32:10

Vorheriges Thema - Nächstes Thema

Olaf A

Hallo Ihr,

ich bin im Bereich "Sonstige Systeme" auf das Testmodul "linuxHid" gestoßen.
Mit diesem Modul kann ich meine X10 Fernbedienung anschließen und finde im
Eventmonitor folgende Eintrag.
2015-08-09 16:48:57 linuxHid hidX10 EV_KEY: KEY_377

die Verarbeitung im Notify klappt super aber im DOIF habe ich so meine Probleme beim Einbau.
define TESTTV notify hidX10:EV_KEY:.KEY_377 set HM_TV_D on

Aber wenn ich das in DOIF probiere:
define Test DOIF ([hidX10:EV_KEY:.EV_KEY377]) (set HM_TV_D on)

bekomme ich immer folgende Angabe:
"Test DOIF: unknown expression format: .EV_KEY377"

Wo liegt der Fehler ?

Gruß Olaf

FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Puschel74

Vermutlich ist das EV_ zuviel und der _ zuwenig.
Es heisst ja KEY_377 und nicht EV_KEY377
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Olaf A

Hallo Puschel,

nö. Ich habe es jetzt mal so versucht:
define Test DOIF ([hidX10:EV_KEY:.KEY377]) (set HM_TV_D on)

Und Rausgekommen ist dieses:
Test DOIF: unknown expression format: .KEY377

aber danke für deine schnelle Anwort.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Puschel74

Dein EventMonitoreintrag:
Zitat2015-08-09 16:48:57 linuxHid hidX10 EV_KEY: KEY_377
Dein DOIF-Eintrag
ZitathidX10:EV_KEY:.KEY377
Sollte es nicht KEY_377 heissen wie im EventMonitor  :o

Daher oben ja der Hinweis mit dem _ zuwenig. Nämlich der zwischen KEY und 377  ;)
Wenn es dann immer noch nicht klappt müssen die DOIF-Profis dran.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Olaf A

Die Info habe ich aus folgenden Tread:
http://forum.fhem.de/index.php?topic=36257.75

Wenn du dort die Frage unter "Antwort #77" dir anschaust und dann die Antwort:
"Antwort #79" dann wiest du wie ich daruf gekommen bin.
(logisch ist das für mich auch nicht).

Gruß Olaf.
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Puschel74

#5
Und warum hast du im notify dann KEY_377 genommen ?
Damit scheint es ja zu funktionieren also würde ich im DOIF auch mal KEY_377 probieren.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Olaf A

#6
 :o
Ich galube jetzt habe ich den Faden verloren.

ZitatUnd warum hast du im notify dann KEY_377 genommen ?
Das ist die TV Taste auf meiner Ferbedienung.
Im Notify klappt es so:
define TESTTV notify hidX10:EV_KEY:.KEY_377 set HM_TV_D on
Dort muss aber zwingend der Punkt zwischen EV_KEY: und KEY_377 gesetzwerden damit es funktioniert.
Diese habe ich dan versucht eins zu eins ins DOIF zu übertragen was mir die Probleme machte.

Ich glaube, dass das Problem daran leigt, dass in der Zeile zweimal ein ":" auftaucht und das DOIF damit nicht zurecht kommt.
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Puschel74

#7
Du hast es eben nicht 1:1 übertragen.

Das funktionierende notify von dir:
define TESTTV notify hidX10:EV_KEY:.KEY_377 set HM_TV_D on
Das nicht-funktionierende DOIF von dir:
define Test DOIF ([hidX10:EV_KEY:.EV_KEY377]) (set HM_TV_D on)

Vorschlag von mir:
define Test DOIF ([hidX10:EV_KEY:.KEY_377]) (set HM_TV_D on)
Man beachte den Teil hidX10:EV_KEY:.KEY_377

Der Punkt dient in Perl nur als Regexp für EIN beliebiges Zeichen - hier das Leerzeichen.
Das DOIF kann aber auf nichts anderes schauen als das notify daher muss das gesamte! Regexp gleich aussehen.
Und .KEY377 ist nicht gleich .KEY_377 und schon garnicht gleich .EV_KEY377
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Olaf A

Hallo Puschel,

Hab dein Vorschlag mal eingetragen.
define Test DOIF ([hidX10:EV_KEY:.KEY_377]) (set HM_TV_D on)
Eal Ergebnis bekomme ich wieder diese Info:
Test DOIF: unknown expression format: .KEY_377
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

igami

Zitat
Ereignissteuerung

Vergleichende Abfragen werden, wie in Perl gewohnt, mit Operatoren ==, !=, <, <=, >, >= bei Zahlen und mit eq, ne, lt, le, gt, ge, =~, !~ bei Zeichenketten angegeben. Logische Verknüpfungen sollten zwecks Übersichtlichkeit mit and bzw. or vorgenommen werden. Selbstverständlich lassen sich auch alle anderen Perl-Operatoren verwenden, da die Auswertung der Bedingung vom Perl-Interpreter vorgenommen wird. Die Reihenfolge der Auswertung wird, wie in höheren Sprachen üblich, durch runde Klammern beeinflusst. Stati werden mit [<devicename>], Readings mit [<devicename>:<readingname>], Internals mit [<devicename>:&<internal>] angegeben.
Du hast zwei Doppelpunkte in deinem DOIF, für das notify mag das richtig sein, da es die Value von dem Reading auch mit auswertet für das DOIF dürfte es sein

define Test DOIF ([hidX10:EV_KEY] eq "KEY_377") (set HM_TV_D on)


Zitat
Ereignissteuerung über Auswertung von Events

Eine Alternative zur Auswertung von Stati oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken, wie beim notify. Eingeleitet wird die Angabe eines regulären Ausdrucks durch ein Fragezeichen. Die Syntax lautet: [<devicename>:?<regexp>]

Anwendungsbeispiel: wie oben, jedoch wird hier nur das Ereignis (welches im Eventmonitor erscheint) ausgewertet und nicht der Status von "remotecontrol" wie im vorherigen Beispiel

define di_garage DOIF ([remotecontrol:?on]) (set garage on) DOELSEIF ([remotecontrol] eq "off") (set garage off)

In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht. Falls "on" gefunden wird, wird der Ausdruck wahr und der DOIF-Fall wird ausgeführt, ansonsten wird der DOELSEIF-Fall ausgeführt. Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence". Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen. Weitere Informationenen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden. Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.
Oder aber wie beim Notify das Event auswertet statt das Reading

define Test DOIF ([hidX10:?KEY_377]) (set HM_TV_D on)


Zumindest gehe ich davon aus, dass dein Reading EV_KEY heißt und den Wert KEY_377 annimmt, aber wissen tue ich es nicht ;)

Grüße
igmai
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Puschel74

Wie ich schon geschrieben hab - es müssen doch die DOIF-Experten ran.
Sorry und du hattest recht mit den beiden :
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Olaf A

Hallo Puschel,

da ist mir ein Kopier fehler unterlaufen.
Ich hatte bevor ich diesen Tread aufgesetzt habe natürlich diverse Versuche gestartet und beim Tippen dieses Treads ist mir dan die falsche Zeile untergekommen.
Natürlich hast du recht, dass KEY_377 und KEY377 nicht das selbe ist. Ich habe aber bei den versuchen (meistens) KEY_377 genutzt.

Ich versuche mal im linuxHid  den zweiten : entfernen zu lassen.

Aber danke  für deine Mühe.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Puschel74

Der Tipp von igami hat aber geholfen nehme ich mal an.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

igami

Noch eine kleine Ergänzung von mir:
solltest du immer nur die Events mappen wollen könntest du folgenden Ansatz wählen

define ntfy_hidX10 notify hidX10:EV_KEY.* {my @cmd = split(":",$EVENT); fhem("$cmd[1]");}

attr hidX10 eventMap /KEY_377:set HM_TV_D on/

dadurch hast du das Mapping direkt im Device und keim umständliches DOIF im zig DOELSEIF. Habe ich fix mit zwei Dummys getestet, funktioniert wunderbar.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Olaf A

Ups schuldigung der ist mir beim Schreiben durch die Lappen gegangen.
Aber Ja  :D mit
define Test DOIF ([hidX10:?KEY_377]) (set HM_TV_D on)
Hat es eiwandfrei geklappt.

Danke euch beiden.

Und Igami,
ich hoffe das passiert mir nicht nochmal.
Schuldigung.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.