Moin!
Manchmal fliegen mir Teile zu, die ich dann einbinden möchte... Also, folgender Sensor ist neu:
Internals:
CFGFN
DEF f0cc5945 5
IODev ZWDongle_0
LASTInputDev ZWDongle_0
MSGCNT 65
NAME ZWave_SENSOR_NOTIFICATION_5
NR 186
STATE wakeupInterval 86400 1
TYPE ZWave
ZWDongle_0_MSGCNT 65
ZWDongle_0_RAWMSG 000400050a7105060000ff06170000
ZWDongle_0_TIME 2019-01-03 14:07:48
ZWaveSubDevice no
cmdsPending 0
homeId f0cc5945
isWakeUp 1
lastMsgSent 1546508155.86014
nodeIdHex 05
READINGS:
2019-01-03 14:07:48 alarm AccessControl: Event cleared: Window/Door is closed, arg 0000
2019-01-03 14:07:48 basicSet 0
2019-01-03 10:35:54 model Vision ZD2102 EU Door/Window Sensor
2019-01-03 10:35:54 modelConfig vision/zd2102.xml
2019-01-03 10:35:54 modelId 0109-2001-0106
2019-01-03 10:35:53 state wakeupInterval 86400 1
2019-01-03 10:35:55 timeToAck 0.027
2019-01-03 10:35:55 transmit OK
Attributes:
IODev ZWDongle_0
classes ZWAVEPLUS_INFO MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY BATTERY POWERLEVEL VERSION WAKE_UP ASSOCIATION ASSOCIATION_GRP_INFO ALARM CONFIGURATION FIRMWARE_UPDATE_MD SECURITY
room ZWave
vclasses ALARM:4 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:2 MANUFACTURER_SPECIFIC:2 POWERLEVEL:1 SECURITY:1 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2
Wie binde ich den so ein, das er bei Fenster auf bzw. Fenster zu einen *Webhook* zu meinem homee-würfel schickt? Der würfel ist im WLAN über IP erreichbar. Leider habe ich in der Commandref nur 4 Fundstellen zu Webhook gefunden, die leider keinerlei Erhellung brachten.
Gruß
Vielleicht solltest du nicht vorrangig nach webhook suchen, wenn du eine Ereignissteuerung willst?
Als erstes nachsehen, welche Events das Teil liefert: https://wiki.fhem.de/wiki/Event_monitor
Dann daraus einen Event-Handler bauen, siehe z.B. https://wiki.fhem.de/wiki/Notify
Dazu mußt du dann schon wissen, welches Kommando du im Ausführungsteil benötigst, aber das hat dann eigentlich nichts mehr mit dem konkreten Auslöser zu tun ;) .
Dann mal los... Der Eventmonitor liefert mir:
2019-01-03 17:18:52 ZWave ZWave_SENSOR_NOTIFICATION_4 alarm: HomeSecurity: Motion Detection - Unknown Location
2019-01-03 17:18:53 ZWave ZWave_SENSOR_NOTIFICATION_4 open
2019-01-03 17:18:53 ZWave ZWave_SENSOR_NOTIFICATION_4 reportedState: open
2019-01-03 17:18:53 ZWave ZWave_SENSOR_NOTIFICATION_4 open
2019-01-03 17:18:53 ZWave ZWave_SENSOR_NOTIFICATION_4 reportedState: open
2019-01-03 17:19:04 ZWave ZWave_SENSOR_NOTIFICATION_5 basicSet: 255
2019-01-03 17:19:04 ZWave ZWave_SENSOR_NOTIFICATION_5 alarm: AccessControl: Window/Door is open, arg 0000
2019-01-03 17:19:08 ZWave ZWave_SENSOR_NOTIFICATION_5 basicSet: 0
2019-01-03 17:19:08 ZWave ZWave_SENSOR_NOTIFICATION_5 alarm: AccessControl: Event cleared: Window/Door is closed, arg 0000
2019-01-03 17:19:48 ZWave ZWave_SENSOR_NOTIFICATION_4 alarm: HomeSecurity: Event cleared: Motion Detection - Unknown Location, arg 0108
2019-01-03 17:19:48 ZWave ZWave_SENSOR_NOTIFICATION_4 closed
2019-01-03 17:19:48 ZWave ZWave_SENSOR_NOTIFICATION_4 reportedState: closed
2019-01-03 17:19:49 ZWave ZWave_SENSOR_NOTIFICATION_4 closed
2019-01-03 17:19:49 ZWave ZWave_SENSOR_NOTIFICATION_4 reportedState: closed
Ich benötige also
ZWave_SENSOR_NOTIFICATION_4 reportedState: open und ZWave_SENSOR_NOTIFICATION_4 reportedState: closed
Notify basteln:
Vorlage: define <name> notify <Suchmuster> <command>
Umsetzung: define SzFensterAuf notify ZWave_SENSOR_NOTIFICATION_4 reportedState: open <command>
define SzFensterZu notify ZWave ZWave_SENSOR_NOTIFICATION_4 reportedState: closed <command>
Soweit ist das einfach :-) Jetzt brauche ich noch die Auflösung für das, was in <command> reinmuß, also der/die/das Webhook senden.
Liege ich soweit richtig?
Zitat von: Thomas24568 am 03 Januar 2019, 17:38:30
Notify basteln:
Vorlage: define <name> notify <Suchmuster> <command>
Umsetzung: define SzFensterAuf notify ZWave_SENSOR_NOTIFICATION_4 reportedState: open <command>
define SzFensterZu notify ZWave ZWave_SENSOR_NOTIFICATION_4 reportedState: closed <command>
Soweit ist das einfach :-) Jetzt brauche ich noch die Auflösung für das, was in <command> reinmuß, also der/die/das Webhook senden.
Liege ich soweit richtig?
Nicht ganz.
Beschäftige dich mit dem "." in regex (siehe z.B. http://regex101.com/) und lies die bereits verlinkten Dokumente noch mal - v.a.:* teste das/die notify mit dem log-Tipp,* nutze dabei $EVENT etc.
* Nutze vor allem die Option, direkt aus dem Event-Monitor Eventhandler zu erstellen.
Moin!
So, ich habe das notify aus dem Event-Handler erstellt.
Internals:
CFGFN
DEF ZWave_SENSOR_NOTIFICATION_5:alarm:.* ZWave_SENSOR_NOTIFICATION_5:alarm:.*
NAME ntest
NOTIFYDEV ZWave_SENSOR_NOTIFICATION_5
NR 278
NTFY_ORDER 50-ntest
REGEXP ZWave_SENSOR_NOTIFICATION_5:alarm:.*
STATE 2019-01-04 16:48:28
TRIGGERTIME 1546616908.1576
TYPE notify
READINGS:
2019-01-04 16:45:11 state active
Attributes:
alias Sz_Fenster
room Schlafz
Die Sache mit dem regex ist mir (noch) zu hoch, da steige ich nicht durch. Ich kenne und nutze seit Ewigkeiten Konstanten, Variablen und Platzhalter (Wildcards) wie * oder ?. Damit komme ich zurecht. Dem Link http://regex101.com/ habe ich mir kurz angesehen und nach wenigen Sekunden wieder das Fenster geschlossen - weil ist englisch.
Zurück zur eigentlichen Frage: Wie bekomme ich jetzt dem Webhook erzeugt und verschickt? Ich habe beim Suchen etwas von HttpUtils und httpmod gelesen. Damit werde ich mich jetzt mal beschäftigen. Bis später.
OK, dann kurz: Der Punkt steht für ein beliebiges Zeichen, das * für eine beliebige Zahl... Deswegen taucht im FHEM-Kontext häufig ".*" auf ;) .
Der Auslöser vom notify paßt daher, allerdings ist es wenig sinnvoll, das zweimal hinzuschreiben, und dafür den Ausführungsteil wegzulassen...
Das Wiki zu notify ist aber deutsch, von daher solltest du das dann intensiver lesen als die regex-Seite (sowas gibt es evtl. auch auf deutsch, mir ist sowas ganz egal :) ).
Zitat von: Beta-User am 04 Januar 2019, 17:33:52
Der Auslöser vom notify paßt daher, allerdings ist es wenig sinnvoll, das zweimal hinzuschreiben, und dafür den Ausführungsteil wegzulassen...
Ich sehe die Worte, aber verstehe den Sinn nicht. Ich habe ein "list ntest" gemacht, so wie es bei Problemen immer gefordert wird. Welchen Ausführungsteil vermisst du?
Ein list von einem funtionierenden Notify sieht eher so aus:
Internals: DEF (Schalter_Spuele_Btn_03|Schalter_WZ1_Btn_02):Short.* set Weihnachtsbaum toggle NAME n_Button_3_Weihnachtsbaum NR 312 NTFY_ORDER 50-n_Button_3_Weihnachtsbaum REGEXP (Schalter_Spuele_Btn_03|Schalter_WZ1_Btn_02):Short.* STATE active TYPE notify READINGS: 2019-01-02 17:46:55 state active Attributes: room Wohnzimmer
"(Schalter_Spuele_Btn_03 (http://hpthin:8083/fhem?detail=Schalter_Spuele_Btn_03)|Schalter_WZ1_Btn_02 (http://hpthin:8083/fhem?detail=Schalter_WZ1_Btn_02)):Short.*" entspricht dabei dem "Auslöser" (oft schlicht als die regex bezeichnet, hier konkret: einer von zwei Schaltern wird kurz gedrückt), der Ausführungsteil ist "set Weihnachtsbaum (http://hpthin:8083/fhem?detail=Weihnachtsbaum) toggle".
Was stört dich daran, wenn ich einen Fehler aufzeige, dazu ein Stichwort schreibe und dich auffordere, eine bestimmte Stelle der Doku näher anzusehen? Ich glaube kaum, dass du das gemacht hast, sonst wäre die Frage nicht so gestellt. Meine Erwartung an Hilfesuchende ist, dass sie die Hilfe so annehmen, wie ich sie geben kann und will, und das ist eben eher nach der Devise, anderen eher das Fischen beizubringen als Fische zu liefern...
Wenn mir ein Fehler gezeigt wird ist das okay. Wenn ich aber nicht erkenne, wo/warum mir ein Fehler passiert ist, dann kann ich den nicht beheben. Und da hilft nicht immer eine ewig lange Anleitung, die ggf. noch auf englisch ist.
Das notify habe ich exakt nach der Anleitung aus deinem Link erstellt. Ich habe jetzt auch erkannt was du mit Ausführungsteil meinst.
Internals:
DEF ZWave_SENSOR_NOTIFICATION_5:alarm:.* set homee_hz_sz_aus
NAME ntest
NOTIFYDEV ZWave_SENSOR_NOTIFICATION_5
NR 110
NTFY_ORDER 50-ntest
REGEXP ZWave_SENSOR_NOTIFICATION_5:alarm:.*
STATE active
TRIGGERTIME 1546638265.7384
TYPE notify
READINGS:
2019-01-04 22:46:57 state active
Attributes:
alias Sz_Fenster
room Schlafz
Um bei den Fischen zu bleiben: Ja, die Idee ist gut, aber wenn ich nur exakt einen Fisch einmal benötige mache ich keinen Angelschein, sondern lass mir zeigen wie der gefangen wird (also die Kurzversion).
Das Notify sollte funktionieren, denn im Eventmonitor bekomme ich
2019-01-04 22:19:25 ZWave ZWave_SENSOR_NOTIFICATION_5 alarm: AccessControl: Window/Door is open, arg 0000
Inzwischen habe ich auch die 200 Suchtreffer von Httpmod überflogen und die wenigen, die sich auf "senden" beziehen auch gelesen. Soweit ich erkannt habe sollte mir sowas helfen:
define homee_hz_sz_an HTTPMOD 192.168.180.160:7681/api/v2/webhook_trigger?1 0
define homee_hz_sz_aus HTTPMOD 192.168.180.160:7681/api/v2/webhook_trigger?1 0
Oder ist das auch wieder ein Denkfehler drin?
Vorneweg meine _Meinung_, auch wenn du das ggf. nicht gerne hörst:
Es geht hier um Grundlagenwissen, ohne das die Nutzung von FHEM keinen Sinn macht. Du mußt dir also entweder die "ewig lange Anleitung" antun, oder du solltest es ganz lassen bzw. dir eine Lösung suchen, die für dich paßt - FHEM ist es dann jedenfalls nicht.
Im Ausführungsteil kann ich nicht wirklich helfen, da ich mich mit HTTPMOD nicht wirklich auskenne. Nach meinem Verständnis sehen aber set-Befehle anders aus, und man schaltet ein Device auch in der Regel über denselben Namen.
Also:
set homee_hz_sz an
Oder, wenn derselbe Befehl dahinter steht: "toggle" statt "an".
Und: was wie interpretiert wird, muß man im jeweiligen Gerät festlegen, wenn es nicht automatisch klar ist. Dazu mußt du aber die Doku von HTTPMOD lesen ;) und ggf. verstehen.
Wenn das Englisch ist, ist es eben so, das entspricht den Guidelines: englische commandref ist Pflicht, andere Sprachen dürfen sein (siehe https://wiki.fhem.de/wiki/Dokumentationsstruktur, wenn du Lust hast, noch etwas mehr zu lesen ;) ).
Für open/closed-Erkennung musst du aber das RegEx des Notify noch anpassen...
Also evtl. so in der Art:
ZWave_SENSOR_NOTIFICATION_5:(open|closed)
sofern für den 5 die gleichen Events kommen wie für 4!?
-> Eventmonitor gibt Auskunft, der gezeigte Auschnitt zeugt das nicht (dort lassen sich auch Notify "erzeugen"): https://wiki.fhem.de/wiki/Event_monitor
Und dann als "Ausführungsteil":
{if $EVENT eq "open"){fhem("set homee_hz_sz_aus reread")}elsif($EVENT eq "closed"){fhem("set homee_hz_sz_an reread")}}
Der Befehl bzgl. HTTPMOD den du brauchst ist: 'reread'...
...im FHEM-Web: help httpmod ;)
Siehe: https://wiki.fhem.de/wiki/Klammerebenen
Es geht auch das "fhem-IF" ( IF ) aber das nutze ich nicht, nur ein Hinweis da war was mit "Leerzeichen"...
Und es geht nat. auch DOIF...
Es gehen nat. auch 2 Notify, also eins pro HTTPMOD...
Oder statt zwei HTTPMOD anzulegen ein "wget" absetzen: https://forum.fhem.de/index.php/topic,95373.msg882090.html#msg882090
Gruß, Joachim
Zitat von: Beta-User am 07 Januar 2019, 07:16:26
Vorneweg meine _Meinung_, auch wenn du das ggf. nicht gerne hörst:
Es geht hier um Grundlagenwissen, ohne das die Nutzung von FHEM keinen Sinn macht. Du mußt dir also entweder die "ewig lange Anleitung" antun, oder du solltest es ganz lassen bzw. dir eine Lösung suchen, die für dich paßt - FHEM ist es dann jedenfalls nicht.
...
Dazu mußt du aber die Doku von HTTPMOD lesen ;) und ggf. verstehen.
Wenn das Englisch ist, ist es eben so, das entspricht den Guidelines: englische commandref ist Pflicht, andere Sprachen dürfen sein (siehe https://wiki.fhem.de/wiki/Dokumentationsstruktur, wenn du Lust hast, noch etwas mehr zu lesen ;) ).
Auf die Gefahr hin hier in dieser Nutzergemeinschaft auf Unverständnis zu stoßen oder rausgeworfen zu werden:
- Ich werde sicher nicht *die Ganze Doku* lesen und verstehen, wenn ich nur eine kleine Aufgabe lösen möchte. Soviel Zeit habe ich nicht.
- Wenn zum Verständnis einer Software/eines Produktes, das offensichtlich von Deutschen entwickelt wird, die englische Sprache notwendig ist, dann sollten sich die Entwickler
SCHÄMEN! Wir Deutsche sind doch keine englische oder US-Kolonie...
Bis zum Rauswurf müsste schon mehr/anderes kommen ;)
fhem ist nun mal KEIN Produkt (in dem Sinne).
Die "Entwickler" (ebenso wie Forums-Helfer, Tester, ...) "opfern" ihre Freizeit...
In der Software-Entwicklung (auch in Deutschland) ist halt nun mal Englisch die "führende" Sprache...
Daher ist (wie bereits geschrieben) halt nun mal die Beschreibung/Commandref in Englisch "Vorschrift"...
...die meisten schreiben aber (trotzdem) eine deutsche Version...
fhem-Wiki ist komplett in Deutsch (soweit ich weiß bzw. worüber ich bislang "gestolpert" bin)...
Klar muss/kann man nicht alles lesen/wissen...
...ich weiß (nutze) auch längst nicht alles.
ABER: es gibt ein paar Dinge die sollte (eigentlich: MUSS) man wissen.
Dazu gehört die grundsätzliche Systemeigenschaft: Events
und dann darauf reagieren: Notify (DOIF, ...)
und da es in Perl geschrieben ist schadet es auch nicht da en wenig zu lesen (für den Fall, dass die vorhandenen Module nicht das tun was man will/braucht -> "Erweiterung" durch eigene Subs in myUtils)...
und da vieles (auch die Reaktion auf Events: Notify, ...) auf RegEx basiert ist es auch nicht verkehrt darüber etwas zu wissen...
Jeweils "Basics" reicht, ansonsten gezielt suchen oder hier fragen...
Macht es nicht nur für dich leichter zu verstehen was dir ein "Hilfswilliger" zu erläutern versucht, sondern es auch den "Hilfswilligen" leichter (schneller) etwas zu erläutern...
...als wenn man (jedes Mal) bei Adam und Eva anfangen muss, bis man bei der eigentlichen Unterstützung für das Problem/Fragestellung angekommen ist...
Denn wie erwähnt: auch die "Hilfswilligen" (mit Betonung auf: Wollen ;) ) sind Freiwillige, die ihre Freizeit "opfern"...
EDIT: eine Rückmeldung, ob irgendwas von dem hier genannten geholfen hat (und wenn nicht wo es [weiterhin] hakt) wäre auch gut... ;)
Gruß und viel Erfolg, Joachim
_eine Rückmeldung, ob irgendwas von dem hier genannten geholfen hat (und wenn nicht wo es [weiterhin] hakt) wäre auch gut... ;)_
Ich bin heute wieder am Thema, habe mich wegen englisch derart aufgeregt, das ich da nicht mehr konzentriert weiterkomme. Kurzfassung: Tips haben (bisher) nicht geholfen. Werde mich später (eher morgen/übermorgen) zum Thema wieder äußern.
Gruß
Zitat von: Thomas24568 am 07 Januar 2019, 19:07:59
Kurzfassung: Tips haben (bisher) nicht geholfen. Werde mich später (eher morgen/übermorgen) zum Thema wieder äußern.
Schade!
Bei der ausführlichen Rückmeldung bitte auch nennen was GENAU du probiert hast (bei "Devices" [auch Notify ist eines ;) ]) halt wie bereits getan: ein list :)
Schon mal auf den Link zur deutschen Commandref gedrückt? ;)
Wie geschrieben: sie ist NICHT verpflichtend (kann also sein, dass es dort kürzer/ungenauer etc. steht) aber meist vorhanden und für ein (generelles) Verständnis eigentlich ausreichend...
Oder im Wiki (gleiches wie Commandref Deutsch) geschaut?
Dann bis denn, Joachim