Ich suche einfach nur "URL senden"...

Begonnen von Thomas24568, 05 Januar 2019, 20:18:24

Vorheriges Thema - Nächstes Thema

Thomas24568

Moin!

Ich suche nur eine einfache Möglichkeit, eine URL zu versenden:

http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUJXWPNUHRCUINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf

In der Anleitung zu FHEM ist HTTPMOD so beschrieben:

Define
define <name> HTTPMOD <URL> <Interval>

The module connects to the given URL every Interval seconds, sends optional headers and data and then parses the response.
URL can be "none" and Interval can be 0 if you prefer to only query data manually with a get command and not automatically in a defined interval.

Example:

define PM HTTPMOD http://mypoolmanager/cgi-bin/webgui.fcgi 60

Also müßte folgendes doch funktionieren:

define homee_sz_fenster_auf HTTPMOD http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf 0

Funktioniert aber nicht, obwohl der Event-Monitor die Ausführung bestätigt. Woran liegt es?

Nur als Info: Die URL im Browser eingegeben funktioniert auf Empfängerseite, der key ist geändert.

KernSani

Hi,

was sagt den das Log bei verbose 5?

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Thomas24568

2019.01.05 20:36:14 5: Starting notify loop for global, 1 event(s), first is ATTR global verbose 5
2019.01.05 20:36:14 5: End notify loop for global
2019.01.05 20:36:14 4: WEB_192.168.180.110_60923 GET /fhem?fw_id=128; BUFLEN:0
2019.01.05 20:36:14 4: WEB: /fhem?fw_id=128 / RL:1414 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2019.01.05 20:36:14 4: WEB_192.168.180.110_60923 GET /fhem?XHR=1&inform=type=status;filter=;since=1546716973;fmt=JSON&fw_id=128×tamp=1546716973958; BUFLEN:0
2019.01.05 20:36:17 4: WEB_192.168.180.110_60924 POST /fhem?cmd=save&XHR=1&fwcsrf=csrf_330810213176241&fw_id=128; BUFLEN:0
2019.01.05 20:36:17 5: Cmd: >save<
2019.01.05 20:36:18 5: Starting notify loop for global, 1 event(s), first is SAVE
2019.01.05 20:36:18 5: createNotifyHash
2019.01.05 20:36:18 5: End notify loop for global
2019.01.05 20:36:18 4: WEB: /fhem?cmd=save&XHR=1&fwcsrf=csrf_330810213176241&fw_id=128 / RL:52 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2019.01.05 20:36:30 4: Connection closed for WEB_192.168.180.110_60925: EOF
2019.01.05 20:36:30 4: Connection closed for WEB_192.168.180.110_60926: EOF
2019.01.05 20:36:40 4: Connection closed for WEB_192.168.180.110_60923: EOF
2019.01.05 20:36:40 4: WEB_192.168.180.110_60924 POST /fhem&fw_id=128&fwcsrf=csrf_330810213176241&cmd=trigger+homee_sz_fenster_zu; BUFLEN:0
2019.01.05 20:36:40 5: Cmd: >trigger homee_sz_fenster_zu<
2019.01.05 20:36:40 5: Starting notify loop for homee_sz_fenster_zu, 1 event(s), first is
2019.01.05 20:36:40 5: End notify loop for homee_sz_fenster_zu
2019.01.05 20:36:40 4: WEB_192.168.180.110_60924 GET /fhem?fw_id=128; BUFLEN:0
2019.01.05 20:36:40 4: WEB: /fhem?fw_id=128 / RL:1410 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2019.01.05 20:36:40 4: WEB_192.168.180.110_60924 GET /fhem?XHR=1&inform=type=status;filter=;since=1546716999;fmt=JSON&fw_id=128×tamp=1546716999777; BUFLEN:0
2019.01.05 20:36:42 4: Connection closed for WEB_192.168.180.110_60924: EOF
2019.01.05 20:36:42 4: Connection accepted from WEB_192.168.180.110_60937
2019.01.05 20:36:42 4: WEB_192.168.180.110_60937 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2019-01.log; BUFLEN:0

jump to the top

KernSani

Bitte verbose 5 in dem HTTPMOD Device setzen, nicht global.

Dann den HTTPMOD-Aufruf triggern und die relevanten Log-Einträge posten. Am besten auch noch ein list des HTTPMOD Devices.

wenn du aber wirklich nur einen request an eine URL schicken möchtest (und nicht etwa die Rückgabe auswerten möchtest) ist HTTPMOD vielleicht ein bisschen zu viel..., da würde doch z.B. ein wget auf Betriebssystem-Ebene ausreichen...



RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Thomas24568

Ich brauche keine Antwort, die gesendete URL ist der Auslöser (Webhook) für ein anderes Gerät. Die URL hat selbst als Auslöser einen Fensterkontakt, daher muß die URL aus FHEM heraus gesendet werden.

Internals:
   DEF        http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf 0
   Interval   0
   MainURL    http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
   ModuleVersion 3.5.4 - 9.11.2018
   NAME       homee_sz_fenster_auf
   NR         111
   STATE      ???
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
Attributes:


Irgendwie ist mein Logfile jetzt defekt - seit 20 Min kein Eintrag mehr. attr verbose 3 ist doch der Normalzustand, oder?

MadMax-FHEM

Evtl. sowas:


define nFensterAuf notify Fenster:opened "wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf"


Beim wget also bzgl. Anführungszeichen (ob der http noch mal in Anführungszeichen muss, wenn dann in dem Fall besser nur "Einfache", also '  ' ) bin ich jetzt nicht sicher...

Kann auch grad nicht testen, da unterwegs..

Die Namen und Regex des Notify halt noch anpassen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ThoTo

Schau dir diesen Beitrag von mir an:
https://forum.fhem.de/index.php/topic,56782.msg769520.html#msg769520

Ich mache den HTTP Request via HttpUtils_NonblockingGet

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

mwllgr

#7
Hallo Thomas,

wenn du unbedingt HTTPMOD verwenden willst: Soweit ich weiß musst du get oder set verwenden, wenn du als Interval 0 eingibst.
Als URL am besten none eingeben, da du die URLs dann einzeln in set/get-Attributen eintragen kannst, falls du später mal mehr Aktionen einbinden willst.
In dem Fall ist set meine ich logischer, weil ja eine Aktion ausgeführt wird, vermute ich zumindest. Auch sets können bei HTTPMOD ausgewertet werden, dies müsste jedoch per Attribut setXXParseResponse 1 aktiviert werden.

Versuch mal folgendes:

define homee_sz_fenster_auf HTTPMOD none 0
attr homee_sz_fenster_auf set00Name FensterAuf
attr homee_sz_fenster_auf set00URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
attr homee_sz_fenster_auf set00NoArg 1


Das define kannst du auch im Nachhinein mit einem Klick auf "DEF" ändern: Dort einfach none 0 eintragen.

Normalerweise kann dann mit
set homee_sz_fenster_auf FensterAuf
die URL vom FHEM-Server abgerufen/aufgerufen werden.

Falls mehr Aktionen mit dem Fenster/Gerät per HTTP ausgeführt werden können wäre es ratsam, das Gerät z.B. in "homee_sz_fenster" umzubenennen. (rename homee_sz_fenster_auf homee_sz_fenster)
Das set kannst du ja dann einfach "open" nennen und hast so Spielraum für weitere Fenster-Aktionen per HTTPMOD. Ich empfehle die Dokumentation im Wiki: https://wiki.fhem.de/wiki/HTTPMOD.

Grüße und viel Erfolg!

MadMax-FHEM

Ein

set homee_sz_fenster_auf reread


mit dem "normalen" HTTPMOD und der 0 (damit nicht automatisch abgefragt wird) sollte genauso gehen...

Zitat von: help HTTPMOD
Set-Commands
- reread
      request the defined URL and try to parse it just like the automatic update would do it every Interval seconds without modifying the running timer.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mwllgr

#9
Zitat von: MadMax-FHEM am 07 Januar 2019, 22:13:23
Ein

set homee_sz_fenster_auf reread


mit dem "normalen" HTTPMOD und der 0 (damit nicht automatisch abgefragt wird) sollte genauso gehen...

Gruß, Joachim

Ja, dann ist es jedoch noch wichtig dass
attr homee_sz_fenster_auf enableControlSet 1
aktiviert ist.

Die obige Lösung ist halt übersichtlicher, wenn er noch andere Aktionen damit ausführen will, oder?
Zum Schluss weiß man nicht mehr, was mit reread überhaupt gemacht wird. (Außer natürlich es steht im Gerätenamen...)

MadMax-FHEM

YES! ;)

Also:

attr homee_sz_fenster_auf enableControlSet 1


Und ja klar: wenn mehr als ein Kommando dann macht das natürlich sehr viel Sinn...

Gruß und danke (wieder was gelernt), Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Thomas24568

Zitat von: MadMax-FHEM am 05 Januar 2019, 21:20:23
Evtl. sowas:


define nFensterAuf notify Fenster:opened "wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf"


Beim wget also bzgl. Anführungszeichen (ob der http noch mal in Anführungszeichen muss, wenn dann in dem Fall besser nur "Einfache", also '  ' ) bin ich jetzt nicht sicher...

Kann auch grad nicht testen, da unterwegs..

Die Namen und Regex des Notify halt noch anpassen...

Gruß, Joachim

Ich habe nun mal wieder etwas Zeit für das Problem. Komischerweise funktionieren beide Versionen (wget mit einfachen oder doppelten Anführungzeichen) nicht:

2019.01.09 19:44:39 1: configfile: Unknown module 'wget
Unknown module "wget

(Direkt aus  dem Logfile kopiert).

Thomas24568

Zitat von: ThoTo am 06 Januar 2019, 20:12:40
Schau dir diesen Beitrag von mir an:
https://forum.fhem.de/index.php/topic,56782.msg769520.html#msg769520

Ich mache den HTTP Request via HttpUtils_NonblockingGet

LG Thomas

Habe ich mir angesehen. Httpmod hatte ich ja schon probiert, wget funktioniert auch nicht korrekt, und den vorletzten Beitrag verstehe ich nicht (Syntax). Allerdings sieht mir das auch schon etwas zu abgehoben aus nur um eine URL zu versenden.

MadMax-FHEM

Zitat von: Thomas24568 am 14 Januar 2019, 11:20:30
Ich habe nun mal wieder etwas Zeit für das Problem. Komischerweise funktionieren beide Versionen (wget mit einfachen oder doppelten Anführungzeichen) nicht:

2019.01.09 19:44:39 1: configfile: Unknown module 'wget
Unknown module "wget

(Direkt aus  dem Logfile kopiert).

Ich teste heute Abend noch mal...

Und hab ja geschrieben, dass es sein kann, dass noch um das http:// usw. Anführungszeichen müssen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Hi,
Die Fehlermeldung ist unlogisch.
Zitat2019.01.09 19:44:39 1: configfile: Unknown module 'wget
Unknown module "wget

Mach mal bitte list nFensterAuf
Und poste das Ergebnis.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Thomas24568

#15
Zitat von: xulodaZ am 07 Januar 2019, 22:05:34
Hallo Thomas,

wenn du unbedingt HTTPMOD verwenden willst: Soweit ich weiß musst du get oder set verwenden, wenn du als Interval 0 eingibst.
Als URL am besten none eingeben, da du die URLs dann einzeln in set/get-Attributen eintragen kannst, falls du später mal mehr Aktionen einbinden willst.
In dem Fall ist set meine ich logischer, weil ja eine Aktion ausgeführt wird, vermute ich zumindest. Auch sets können bei HTTPMOD ausgewertet werden, dies müsste jedoch per Attribut setXXParseResponse 1 aktiviert werden.

Versuch mal folgendes:

define homee_sz_fenster_auf HTTPMOD none 0
attr homee_sz_fenster_auf set00Name FensterAuf
attr homee_sz_fenster_auf set00URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
attr homee_sz_fenster_auf set00NoArg 1


Das define kannst du auch im Nachhinein mit einem Klick auf "DEF" ändern: Dort einfach none 0 eintragen.

Normalerweise kann dann mit
set homee_sz_fenster_auf FensterAuf
die URL vom FHEM-Server abgerufen/aufgerufen werden.

Falls mehr Aktionen mit dem Fenster/Gerät per HTTP ausgeführt werden können wäre es ratsam, das Gerät z.B. in "homee_sz_fenster" umzubenennen. (rename homee_sz_fenster_auf homee_sz_fenster)
Das set kannst du ja dann einfach "open" nennen und hast so Spielraum für weitere Fenster-Aktionen per HTTPMOD. Ich empfehle die Dokumentation im Wiki: https://wiki.fhem.de/wiki/HTTPMOD.

Grüße und viel Erfolg!

Auch das habe ich ausprobiert. Schon ohne was auszulösen bekomme ich im Logfile einen Fehler....

2019.01.14 11:43:01 3: FHEMWEB WEB CSRF error: csrf_247742975021574 ne csrf_901264074298924 for client WEB_192.168.180.110_62537 / command trigger homee_sz_fenster_auf. For details see the csrfToken FHEMWEB attribute.


Was/wo ich das csrfToken nachsehen soll weiss ich aber nicht. Scheiss Englisch!

Nachtrag: Offenbar fehlte am Ende der Zeile die 0. Damit gibt es keine Fehlermeldung mehr - aber auch keinen Erfolg beim homee. Um Fehler beim bearbeiten der URL zu vermeiden habe  ich die ZEile direkt aus der fhem.cfg herauskopiert und in der Browseradresszeile reinkopiert: Erfolg stellt sich ein. Also sendet FHEM immer noch nicht. 

MadMax-FHEM

Willst AN fhem was senden oder (wie ich dachte) woanders hin!?

Den csrf-Token brauchst du, wenn du an fhem was senden willst und dort das Attribut nicht auf "none" oder einen fixen Wert den du dann ja übergeben kannst gesetzt hast...
(none ist nicht zu empfehlen, sollte auch in Deutsch zu finden sein was das heißt und soll)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Thomas24568

Zitat von: xulodaZ am 07 Januar 2019, 22:19:08
Ja, dann ist es jedoch noch wichtig dass
attr homee_sz_fenster_auf enableControlSet 1
aktiviert ist.

Die obige Lösung ist halt übersichtlicher, wenn er noch andere Aktionen damit ausführen will, oder?
Zum Schluss weiß man nicht mehr, was mit reread überhaupt gemacht wird. (Außer natürlich es steht im Gerätenamen...)

Ich habe beides ausprobiert, aber keinen Erfolg. Ich frage lieber gar nicht erst wozu das gut ist, ich probiere eure Tips weiter aus...

Thomas24568

Zitat von: MadMax-FHEM am 14 Januar 2019, 11:32:11

Und hab ja geschrieben, dass es sein kann, dass noch um das http:// usw. Anführungszeichen müssen...


Auch das hat dann immer noch nicht funktioniert.

Thomas24568

Zitat von: Otto123 am 14 Januar 2019, 11:32:41
Hi,
Die Fehlermeldung ist unlogisch.
Mach mal bitte list nFensterAuf
Und poste das Ergebnis.

Gruß Otto

Ich hatte die wget-Zeile direkt in den httpmod- Aufruf eingesetzt, daher ist nFensterAuf bei mir nicht definiert.

Thomas24568

Zitat von: MadMax-FHEM am 14 Januar 2019, 11:52:41
Willst AN fhem was senden oder (wie ich dachte) woanders hin!?

Nein, RAUSsenden (URL an eine IP senden).

Thomas24568

#21
Vielen Dank für die Mühe, die es bisher gekostet hat. Leider immer noch ohne Erfolg. Daher erlaube ich mir, jetzt mal die ganzen Änderungen der fhem.cfg hier noch mal komplett zu zeigen. Vielleicht steckt der Fehler ja doch nur in einem der vielen Änderungen... (Der Auszug ist ab dem zufügen des ersten Z-Wave-Sensors, der Fenstersensor ist der mit Notification_5.)

define allowed allowed
attr allowed password SHA256:xxx
attr allowed validFor telnetPort
define ZWave_SENSOR_NOTIFICATION_4 ZWave f0cc5945 4
attr ZWave_SENSOR_NOTIFICATION_4 IODev ZWDongle_0
attr ZWave_SENSOR_NOTIFICATION_4 alias Auge (mobil)
attr ZWave_SENSOR_NOTIFICATION_4 classes ZWAVEPLUS_INFO BASIC VERSION MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY ASSOCIATION_GRP_INFO ASSOCIATION POWERLEVEL WAKE_UP BATTERY ALARM CRC_16_ENCAP CONFIGURATION SENSOR_MULTILEVEL MULTI_CHANNEL_ASSOCIATION APPLICATION_STATUS SENSOR_BINARY SENSOR_ALARM SECURITY FIRMWARE_UPDATE_MD
attr ZWave_SENSOR_NOTIFICATION_4 fp_Grundriss 582,1274,3,ZWave_SENSOR_NOTIFICATION_4
attr ZWave_SENSOR_NOTIFICATION_4 room ZWave
attr ZWave_SENSOR_NOTIFICATION_4 vclasses ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BASIC:1 BATTERY:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:2 MULTI_CHANNEL_ASSOCIATION:2 POWERLEVEL:1 SECURITY:1 SENSOR_ALARM:1 SENSOR_BINARY:1 SENSOR_MULTILEVEL:8 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2
define FileLog_ZWave_SENSOR_NOTIFICATION_4 FileLog ./log/ZWave_SENSOR_NOTIFICATION_4-%Y.log ZWave_SENSOR_NOTIFICATION_4
attr FileLog_ZWave_SENSOR_NOTIFICATION_4 logtype text
attr FileLog_ZWave_SENSOR_NOTIFICATION_4 room ZWave
define SVG_FileLog_ZWave_SENSOR_NOTIFICATION_4_1 SVG FileLog_ZWave_SENSOR_NOTIFICATION_4:SVG_FileLog_ZWave_SENSOR_NOTIFICATION_4_1:CURRENT
attr SVG_FileLog_ZWave_SENSOR_NOTIFICATION_4_1 fp_Grundriss 1381,45,1,SVG_FileLog_ZWave_SENSOR_NOTIFICATION_4_1,

define ZWave_SENSOR_NOTIFICATION_5 ZWave f0cc5945 5
attr ZWave_SENSOR_NOTIFICATION_5 IODev ZWDongle_0
attr ZWave_SENSOR_NOTIFICATION_5 classes ZWAVEPLUS_INFO MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY BATTERY POWERLEVEL VERSION WAKE_UP ASSOCIATION ASSOCIATION_GRP_INFO ALARM CONFIGURATION FIRMWARE_UPDATE_MD SECURITY
attr ZWave_SENSOR_NOTIFICATION_5 room ZWave
attr ZWave_SENSOR_NOTIFICATION_5 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
define FileLog_ZWave_SENSOR_NOTIFICATION_5 FileLog ./log/ZWave_SENSOR_NOTIFICATION_5-%Y.log ZWave_SENSOR_NOTIFICATION_5
attr FileLog_ZWave_SENSOR_NOTIFICATION_5 logtype text
attr FileLog_ZWave_SENSOR_NOTIFICATION_5 room ZWave

# Test 14.1.
define homee_sz_fenster_auf HTTPMOD none 0
attr homee_sz_fenster_auf set00Name FensterAuf
attr homee_sz_fenster_auf set00URL "http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf" 0
attr homee_sz_fenster_auf set00NoArg 1

####


# define homee_sz_fenster_zu wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_zu

# define homee_sz_fenster_auf wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf


define Sz_Fenster_offen notify ZWave_SENSOR_NOTIFICATION_5:alarm: AccessControl: Window/Door is open, arg 0000 set homee_sz_fenster_auf
define Sz_Fenster_zu notify ZWave_SENSOR_NOTIFICATION_5:alarm: AccessControl: Window/Door is closed, arg 0000 set homee_sz_fenster_zu
attr Sz_Fenster_zu verbose 5
attr Sz_Fenster_auf verbose 5
attr homee_sz_fenster_auf verbose 5




Getestet habe ich mit trigger homee_sz_fenster_zu (bzw. _auf) in der Kommandozeile von FHEM.

ch.eick

Hallo zusammen,

für die Idee mit httpmod sollte man immer systematisch vorgehen und am besten mit Burp eine Verbindung vom normalen Browser zu diesem Gerät mitschneiden.

Folgende Schritte...

1) Burp als Proxy aktivieren
2) Browser auf den Proxy Konfigurieren
3) Das HTTP Device mit der URL im Browser aufrufen und in Burp den Mitschnitt beobachten.
4) Nun im Burp den Mitschnitt analysieren und die Notwendigen Aufrufe zum Burp Repeater schicken.
5) Im Burp Repeater die URL erneut zum HTTP Device schicken.
6) Prüfen, ob die Funktionen am HTTP Device richtig ausgeführt werden.
7) Im Burp Repeater so lange die http optionen reduzieren, bis das Minimum erreicht ist.
    Hier sieht man dann auch, ob z.B. cookies verwendet werden.
8) Im FHEM das Device anlegen. Ich habe es mal hier von Euch wiederholt

define homee_sz_fenster_auf HTTPMOD none 0
attr homee_sz_fenster_auf set00Name FensterAuf
attr homee_sz_fenster_auf set00URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
attr homee_sz_fenster_auf set00NoArg 1


9) Eventuell diese Attribute verwenden, was im Burp zu sehen sein sollte.

attr <device> enableControlSet   1
attr <device> enableCookies       1


10) Für die Test und Einbindungsphase sind z.B. folgende Attribute recht gut und aufschlussreich.

attr <device> showBody 1
attr <device> showError 1
attr <device> verbose 5


11) Nun in einem Terminal die aktuelle FHEM Log Datei mit z.B. "tail -f ./log/fhem????" öffnen und die Log Meldungen verfolgen. Hier kann mal mit der Entertaste auch mal einige Leerzeilen Erzeugen und so den Anfang des aktuellen Tests hervorheben.

12) An anderen FHEM Einträgen eventuell das verbose mal auf 0 setzen, damit man im Log nicht überflutet wird.

13) Den ersten Test starten

set homee_sz_fenster_auf FensterAuf

Hier fällt auf, dass bei der Verwendung von HTTPMOD der Device Name eher generisch gewählt werden kann, also besser "homee_sz_fenster". Durch set**Name kann dan der Befehl FensterAuf, FensterZu oder auch anderes dargestellt werden.

14) Im Log die Fehler lesen und in Form von Attributen korrigieren ;-) Hier wird's spannend.

15) Ganz viel Testen und ausprobieren, eventuell im Forum nachfragen und die Log Meldungen mit der jeweiligen kompletten Definition einstellen.

16) Wenn alles läuft wieder die Test Einstellungen zurück setzen.

attr <device> showBody 0
attr <device> showError 0
attr <device> verbose 0


Nun noch einige Anmerkungen von mir, aus den Erfahrungen der letzten 2 Monate:

1) webhooks_key=NJBGOCUE......  Dies wird sicherlich in der Kommunikation mit dem Device als cookie geliefert, was man in der Burp Analysephase sehen kann. Wenn das der Fall ist, kann man das nach dem folgenden Beispiel im http Aufruf ersetzen lassen.
Das ist aus meinem Beispiel mit der Vallox Cloud Anbindung, für das Einsetzen des csrfToken.

reading1Name    _csrfToken
reading1Regex   ((?<=_csrfToken=).*);

replacement1Mode   reading
replacement1Regex  %%_csrfToken%%
replacement1Value   _csrfToken

setHeader3   X-XSRF-TOKEN: %%_csrfToken%%


2) Um die HTTP set** Konfigurationen zu verringern kann man dann noch mit einer Variablen beim set Aufruf arbeiten. Ich habe auch nochmals den Device Namen auf "homee_sz" verkürzt, weil ja der Name für set00 bereits mit Fenster benannt wurde.

attr homee_sz set00IMap    zu:Sz_fenster_zu, auf:Sz_fenster_auf,...

attr homee_sz set00URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=$val


Der Aufruf sähe dann so aus

set homee_sz Fenster auf
set homee_sz Fenster zu



Viele Grüße
     Christian
     und besonderen Dank an Stefan
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

Zitat von: Thomas24568 am 14 Januar 2019, 12:10:35
Ich hatte die wget-Zeile direkt in den httpmod- Aufruf eingesetzt, daher ist nFensterAuf bei mir nicht definiert.
Naja gut, wenn man Dir etwas empfiehlt und Du dann irgendetwas (völlig anderes) machst - ist Dir eigentlich kaum zu helfen.

Die wget Zeile ist ein direkter FHEM/System Befehl, der hat in einer HTTPMOD Definition nicht viel verloren.

Probier einfach jeden dieser Tipps irgendwie zur Hälfte aus, vielleicht wird es irgendwann etwas. Eine URL senden ist eigentlich easy, aber man kann es beliebig kompliziert machen. :-X :'(
Falls Du einen system Befehl hast (also der im Linux Terminal/kommandozeile funktioniert) dann packe den in eine Script Datei und führe einfach in FHEM als Befehl "bash /pfadname/scriptname"aus. Das wäre die adäquate Variante zu dem was Joachim mit wget empfohlen hat.
https://commandref.fhem.de/commandref_DE.html#command

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Thomas24568

Upss, so eine lange Antwort...

Burp?

Wikipedia sagt dazu:

Big and Ugly Rendering Project
(Weitergeleitet von BURP)

Dieser Artikel erläutert das 3D-Rendering Projekt BURP; zur medizinischen Methode siehe BURP-Manöver.


Du meinst sicher was anderes, aber was? Falls du jetzt irgendwas von Windows erzählen möchtest, dann muß ich dich leider ausbremsen - hier ist ein MS-freier Haushalt.

2. Wozu Proxy? Was ich verschicken will ist bekannt und getestet: die schon mehrfach genannte URL. Nichts anderes. Genau diese URL, und auch genau ohne Variablen, denn ICH möchte das Konstrukt auch in 1 oder 2 Jahren (wieder) verstehen.

6) Prüfen, ob die Funktionen am HTTP Device richtig ausgeführt werden.

Das hatte ich schon, genau diese URL muß exakt so verschickt werden.


9) Eventuell diese Attribute verwenden, was im Burp zu sehen sein sollte.
Geht nicht, weil unbekanntes "Burp".

webhooks_key=NJBGOCUE......  Dies wird sicherlich in der Kommunikation mit dem Device als cookie geliefert,

Nein, das ist ein "Schlüssel", damit die URL als "echt" identifiziert wird. Kein Cookie, sondern ein feststehender Wert.

Um die HTTP set** Konfigurationen zu verringern kann man dann noch mit einer Variablen beim set Aufruf arbeiten.

Nein, bitte keine Variablen. ICH muß das Konstrukt auch noch in Jahren verstehen.  Variablen sind nett und sinnvoll, aber nicht in meinem Fall. Ich brauche Klarnamen (und keine Variablen oder englische Bezeichnungen). Hinweis: Ich bin fast 60 Jahre alt, das Hirn arbeitet langsamer und uneffektiver als mit 20 oder 25 Jahren.

Wenn das mit dem Burp geklärt ist werde ich mir deine Nachricht noch mal ansehen.



Thomas24568

Zitat von: Otto123 am 14 Januar 2019, 13:48:02
Naja gut, wenn man Dir etwas empfiehlt und Du dann irgendetwas (völlig anderes) machst - ist Dir eigentlich kaum zu helfen.

Falscher Ansatz.  Wenn mir was empfohlen wird, was ich nicht überblicke oder die Sache komplexer/komplizierter macht, dann fange ich an zu reduzieren. Noch mal die Ausgangslage:

EINFACH nur eine URL senden - nicht komplexes, keine Varianten, keine Zusatzmöglichkeiten, kein "könnte man auch...", sondern EINFACH nur eine URL senden. Warum geht das nicht mit Httpmod???

Zitat von: Otto123 am 14 Januar 2019, 13:48:02
Die wget Zeile ist ein direkter FHEM/System Befehl, der hat in einer HTTPMOD Definition nicht viel verloren.

Hatte ich auch erkannt und ohne httpmod benutzt.

Zitat von: Otto123 am 14 Januar 2019, 13:48:02
Eine URL senden ist eigentlich easy, aber man kann es beliebig kompliziert machen. :-X :'(

Eben!!! EINFACH! Laut Commandref also mit httpmod - aber das funktioniert aus irgendeinem Grund nicht.

Zitat von: Otto123 am 14 Januar 2019, 13:48:02
dann packe den in eine Script Datei und führe einfach in FHEM als Befehl

Das ist NICHT EINFACH sondern komplex und daher für mich nicht brauchbar.  Sorry, das ich kein Hyper-Versteher von Perl und FHEM bin, sondern nur einfacher Anwender...




Otto123

#26
Achtung!!! Es geht nicht um HTTPMOD

Dann nochmal ganz einfach und reduziert die Variante von Joachim:
Steht da die richtige URL?
Wenn ja, funktioniert der Aufruf wenn du die Zeile so wie sie dasteht - also mit den "am Anfang und Ende " in die FHEM Kommanozeile (oben im FHEM Browserfenster) wirfst?
"wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Thomas24568

#27
Zitat von: Otto123 am 14 Januar 2019, 14:15:31
Achtung!!! Es geht nicht um HTTPMOD

Dann nochmal ganz einfach und reduziert die Variante von Joachim:
Steht da die richtige URL?
Wenn ja, funktioniert der Aufruf wenn du die Zeile so wie sie dasteht - also mit den "am Anfang und Ende " in die FHEM Kommanozeile (oben im FHEM Browserfenster) wirfst?
"wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf"

Leider nein. Kein Ergebnis am empfangendem Gerät, aber auch keine Fehlermeldung im Log und auch nichts im Event-Monitor.

Andere Beobachtung: Bei den Tests gegen 12 Uhr kam im Logfile folgendes:

2019.01.14 12:01:30 5: homee_sz_fenster_auf: set called with reread
2019.01.14 12:01:30 4: homee_sz_fenster_auf: GetUpdate called (reread)


Hilft das bei der Fehlersuche? Ist das eine "Ab-Sendebestätigung"?

ch.eick

Hallo nochmal,

Zum Thema getestet:
Nicht nur die URL ist wichtig, sondern auch der Rest vom Header oder auch Cookies.
Wenn Du vom Browser aus die URL aufrufst, handelt der Browser noch einiges zusätzlich, was man so nicht sehen kann.

hier die direkten Infos zu Burp, leider nur in Englisch
https://en.wikipedia.org/wiki/Burp_suite
https://portswigger.net/burp/communitydownload

Variablen erhöhen oft die Lesbarkeit und das Prinzip

<Kommando>   <Gerät>   <Ziel>   <Option>
      set             homee_sz Fenster       auf
      set             homee_sz Fenster       zu

ist eigentlich gängig.

Mit diesem Attribut bekommt man im FHEM die Auswahl der möglichen Optionen als Pulldown Menü, mit auf oder zu, angezeigt.

attr homee_sz set00IMap zu:Sz_fenster_zu, auf:Sz_fenster_auf,...


Viele Grüße
     Christian
     53 Jahre ;-)
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Sorry, ich wollte nicht stören.

Zitat
Achtung!!! Es geht nicht um HTTPMOD

HTTPMOD war zu Beginn ja auch als Möglichkeit im Gespräch.

Viele Grüße
   Christian .... ich bin dann mal raus :-)
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

Zitat von: ch.eick am 14 Januar 2019, 14:31:51
Sorry, ich wollte nicht stören.

HTTPMOD war zu Beginn ja auch als Möglichkeit im Gespräch.

Viele Grüße
   Christian .... ich bin dann mal raus :-)
Nein so war das gar nicht gemeint! Sorry.
Ich wollte sagen in meinem Text geht es nicht um HTTPMOD
Ich wollte nicht, dass der TE die Codezeile wieder einfach in die HTTPMOD Definition packt.

Du hast absolut recht mit dem was Du sagst. Ich wollte es ganz einfach. Wenn es nur die URL ist, dann hätte der Test eigentlich was tun müssen. Aber offenbar ist es nicht nur eine URL.

Ich wollte auch nicht stören, HTTPMOD ist mir zu kompliziert....  ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Thomas24568

Den Link zur engl. Wikipedia habe ich mir angesehen. Und auch so grob verstanden. Und leider muß ich sagen: Englisch, zusätzliches unbekanntes Programm: Nein danke, zu aufwändig.

Gegenfrage: Kennst du "Pi-Hole"? ( https://pi-hole.net ) Das scheint sowas ähnliches zu sein, dafür gibt es deutsche Anleitungen (u.a. im Kofler, 5. Auflage (https://www.amazon.de/dp/3836265192/ref=pe_3044161_185740101_TE_item ), und in der c't). Bisher habe ich die Funktion dieses Programms nur überflogen, aber im Webinterface scheint es ähnliches anzuzeigen. WEnn dem so ist würde ich mich damit beschäftigen, auch wenn die ursprüngliche Frage dann erst später (Wochen?) beantwortet werden wird.

Thomas24568

Ich habe noch was festgestellt:

2019.01.14 12:01:30 5: homee_sz_fenster_auf: set called with reread
2019.01.14 12:01:30 4: homee_sz_fenster_auf: GetUpdate called (reread)
2019.01.14 15:09:41 5: homee_sz_fenster_auf: UpdateHintList called
2019.01.14 15:09:41 5: homee_sz_fenster_auf: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg upgradeAttributes:noArg storeKeyValue FensterAuf:noArg
2019.01.14 15:09:41 5: homee_sz_fenster_auf: UpdateHintList: getlist =
2019.01.14 15:09:42 3: ZWave got config for vision/zd2102.xml from ./FHEM/lib/openzwave_deviceconfig.xml.gz


Die Zeilen von 12:01 sind Reaktionen wenn ich im Browserfenster von FHEM bin, aber auf dem Mac. Die Zeilen vom 15:0x sind Reaktionen wenn ich den Browser auf der RaspPi-Oberfläche nutze. Warum sind die Log-Einträge unterschiedlich?

ch.eick

Zitat von: Thomas24568 am 14 Januar 2019, 14:43:42
Den Link zur engl. Wikipedia habe ich mir angesehen. Und auch so grob verstanden. Und leider muß ich sagen: Englisch, zusätzliches unbekanntes Programm: Nein danke, zu aufwändig.

Gegenfrage: Kennst du "Pi-Hole"? ( https://pi-hole.net ) Das scheint sowas ähnliches zu sein, dafür gibt es deutsche Anleitungen (u.a. im Kofler, 5. Auflage (https://www.amazon.de/dp/3836265192/ref=pe_3044161_185740101_TE_item ), und in der c't). Bisher habe ich die Funktion dieses Programms nur überflogen, aber im Webinterface scheint es ähnliches anzuzeigen. WEnn dem so ist würde ich mich damit beschäftigen, auch wenn die ursprüngliche Frage dann erst später (Wochen?) beantwortet werden wird.

So wie ich das sehe ist pi-hole eher ein Proxy, um Werbung oder unerwünschte Inhalte heraus zu filtern. Das ist eine andere Baustelle.

Burp Suite dient zum Mitschneiden von Kommunikation zwischen z.B dem Browser und einem Web Server.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo Otto

Zitat von: Otto123 am 14 Januar 2019, 14:35:03

Ich wollte auch nicht stören, HTTPMOD ist mir zu kompliziert....  ;)

Gruß Otto

Alles gut, viele Wege führen nach Rom.

HTTPMOD ist halt sehr flexibel und mächtig in den Möglichkeiten. Ich habe in den letzten Wochen bereits zwei Schnittstellen damit eingebunden. Die Beispiele findest Du unter "vallox_cloud", eine kontrollierte Wohnraum Lüftung und unter "DvLIR", einem Lesekopf für den Stromzähler.
Ich habe hier besonders wert darauf gelegt keine bisher noch nicht vorhandenen HW Schnittstellen zu verwenden, sondern das im LAN befindliche WEB Interface.

Viele Grüße
      Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MadMax-FHEM

Funktioniert denn das hier auf der "Linux-Console"?

wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf


Bzw. andersrum (wie Otto schon geschrieben/gefragt hat):

Hast du einen Aufruf, der per wget oder curl funktioniert?!

Wenn du den hast ist es einfach...
...denn dann musst du den "nur" in Anführungszeichen packen (evtl. noch IM AUFRUF enthaltene Anführungszeichen durch "einfache" '  ' ersetzen oder "maskieren" \"  ) und an ein Notify packen:

define nSendHTTP Device:RegEx "HIER DEN AUFRUF DER AUF DER LINUX CONSOLE FUNKTIONIERT"

Ansonsten musst du eben mit Browser oder Sniffermitteln herausbekommen, was genau nötig ist: Anmeldung, Cookies, bestimmte Header, ...
...dazu dienen die genannten "Tools"...

Gleiches gilt für HTTPMOD (wenn du das verwendest), dort wird halt einiges in die url gesteckt und andere Dinge per Attribut "gesteuert"/"eingestellt"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Thomas24568

#36
Zitat von: MadMax-FHEM am 14 Januar 2019, 18:21:38
Funktioniert denn das hier auf der "Linux-Console"?
...

Hast du einen Aufruf, der per wget oder curl funktioniert?!

...

pi@raspberrypi:~ $ wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
[1] 6430


per ssh vom Mac auf den Pi: nur den Zahlencode als Antwort erhalten, das angesprochene Gerät hat nicht reagiert.

Per VPN vom Mac auf das Terminal des Pi's: Gleiche Zahlenantwort, auch keine Reaktion des adressierten Gerätes.

(ohne wget -q) direkt am Pi, Browser, Adresszeile: Funktioniert.

curl (Mac-Terminal auf Pi-Terminal per ssh):

Mini:~ th$ curl http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
[1] 96593


Auch nur so eine komische Zahlenantwort ohne das das adressierte Gerät reagiert. (Ich hoffe das ich das Beispiel aus https://wiki.ubuntuusers.de/cURL/ oben richtig umgesetzt habe).

Noch ein Test, vom Mac-Terminal:

Mini:~ th$ curl http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
[2] 96701
[1]   Exit 127                wget -q http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ
Mini:~ th$ OK


Soweit ich erkenne wird curl auf wget -q umgesetzt und TARA! das adressierte Gerät reagiert wie gewünscht... Allerdings kann ich keine Erklärung finden, warum es vom Mac-Terminal aus geht, vom Pi-Terminal aus nicht.

Nachtrag: Ein erneutes Senden (vom Mac-Terminal aus) hat wieder KEINE Reaktion hervorgerufen. Ich versteh das nicht...

ch.eick

Hallo Thomas,

wie ich schon geschrieben hatte machen wget und curl etwas mehr im Hintergrund. Beide bedienen auch das http Protokoll mit cookies, header, ... Ich hatte das mit meinen Experimenten mit der Vallox Cloud auch. Ein wget ging, ein curl auch, aber es gab immer wieder Merkwürdigkeiten.
So wie ich es verstanden habe reagiert das Gerät am besten, wenn Du es vom Browser aus ansprichst.
Da Dir die Burp Suite nicht zusagt könntest Du z.B. im Mozilla Browser unter "Extras | WebEntwickler | Netzwerkanalyse"
die Kommunikation zum Zielgerät anschauen. Dort solltest Du die Header und Cookies, sowie eventuelle Daten sehen können.
Die Zahlencodes werden wahrscheinlich Fehlermeldungen vom Gerät sein.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Thomas24568

Moin!

Heute mal wieder etwas Zeit für diese Baustelle...

Ich habe in Firefox (hoffe, das war mit Mozialla gemeint) die Einstellung gefunden und die URL dann ausprobiert. Das Ergebnis ist im angehängtem Bild. Allerdings kann *ich* daraus keine neue Erkenntnis gewinnen. Im Fenster Cookie steht nur "Keine Cookies verwendet", in Parameter das was in der URL genauso drinsteht und ein paar Zeiten. Vielleicht hilft es dir?


ch.eick

Moin,

wenn Du den HTTPMOD weiter verfolgen solltest, dann setzt Du bei den set**Header[1-*] die Anfragekopfzeilen (Header) für den Test erst mal alle. Später kannst Du Sie, wenn es laufen sollte, dann einen nach dem Anderen wieder entfernen.

z.B. set homee_sz set01Header1 Accept-Encoding: gzip, deflate

Den Header User-Agent kannst Du weg lassen, weil HTTPMOD den selber setzt.

Achtung, ein Semikolon muss bei der Eingabe verdoppelt werden aus ; wird dann ;; wenn Du es in der Kommandozeile eintippst/kopierst.

Bitte gib dann mal eine klare Aussage, welchen Ansatz Du verfolgen möchtest, HTTPMOD oder wget/curl als Systemaufruf.
Es kann auch noch ein Unterschied sein, ob Du wget/curl vom Mac oder vom RPi verwendest.

Viele Grüße
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Thomas24568

Moin!

Nach der Definition in der Command-Ref sieht HttpMod einfacher aus. Es sind einfach weniger Parameter...

Trotzdem verstehe ich dein Text von heute 10 Uhr nicht (vielleicht nachdem ich mir das morgen noch mal in Ruhe durchlese). Also noch keine ausführliche Erklärung notwendig...

Gruß

ch.eick

#41
Guten Morgen Thomas,

ich konnte es wieder nicht lassen :-)

Hier sind Deine Definitionen, als Vorschlag von mir, für den ersten Test. Das kannst Du einzeln in die Kommandozeile kopieren und erhältst hinterher einen Raum "Fenster" mit dem Gerät "homee", dass das Modul HTTPMOD verwendet.

defmod homee HTTPMOD none 0

attr homee enableControlSet 1
attr homee httpVersion 1.1

attr homee set01Name fenster_sz
attr homee set01IMap Sz_fenster_auf:auf, Sz_fenster_zu:zu

attr homee set01URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=$val

attr homee setHeader1 Accept: text/html,application/xhtml+xm...plication/xml;;q=0.9,*/*;;q=0.8        <<<<<< Ich denke die "..." wurden in Deinem Bild beim Anzeigen gekürzt!!! Bitte schau Dir das Feld noch mal genau an.
attr homee setHeader2 Accept-Encoding: gzip, deflate
attr homee setHeader3 Accept-Languge: de,en-US;;q=0.7,en;;q=0.3
attr homee setHeader4 Connection: keep-alive
attr homee setHeader5 Upgrade-insecure-Requests: 1

attr homee showBody 1
attr homee showError 1
attr homee verbose 5

attr homee room Fenster

Eventuell hier mal die Konfiguration speichern.

Nun kannst Du es mal aufrufen...

set homee fenster_sz auf
set homee fenster_sz zu

Hierbei ist "fenster_sz" der Name für den Aufruf von set01URL. Ich nehme an, "sz" bedeutet bei Dir Schlafzimmer, weshalb ich zu meiner beispielhaften Namensgebung gekommen bin.

Gerät  homee    ich vermute, das ist die Brücke zu all Deinen homee Aktoren/Sensoren
Aktor  fenster_sz
Befehl auf/zu   

Mein Log zeigt dann folgendes, da ich natürlich kein homee Gerät habe

2019.01.22 08:08:17 5: homee: set called with fenster_sz auf
2019.01.22 08:08:17 5: homee: set found option fenster_sz in attribute set01Name
2019.01.22 08:08:17 5: homee: MapConvert called from Set converted auf to Sz_fenster_auf with reversed map auf:Sz_fenster_auf, zu:Sz_fenster_zu,
2019.01.22 08:08:17 4: homee: set will now set fenster_sz -> Sz_fenster_auf
2019.01.22 08:08:17 4: homee: AddToQueue adds set01, initial queue len: 0
2019.01.22 08:08:17 5: homee: AddToQueue adds type set01 to URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=$val, no data, header Accept: text/html,application/xhtml+xm...plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Languge: de,en-US;q=0.7,en;q=0.3
Connection: keep-alive
Upgrade-insecure-Requests: 1, retry 0
2019.01.22 08:08:17 5: homee: HandleSendQueue called, qlen = 1
2019.01.22 08:08:17 4: homee: HandleSendQueue sends request type set01 to URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf, No Data,
header: Accept: text/html,application/xhtml+xm...plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Languge: de,en-US;q=0.7,en;q=0.3
Connection: keep-alive
Upgrade-insecure-Requests: 1
timeout 2
2019.01.22 08:08:17 5: HttpUtils url=http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_auf
2019.01.22 08:08:17 4: IP: 192.168.180.160 -> 192.168.180.160
2019.01.22 08:08:19 3: homee: Read callback: Error: connect to http://192.168.180.160:7681 timed out
2019.01.22 08:08:19 4: homee: Read callback: request type was set01 retry 0, body empty
2019.01.22 08:08:19 5: homee: ExtractSid called, context set, num 01
2019.01.22 08:08:19 4: homee: CheckAuth decided no authentication required


2019.01.22 08:09:44 5: homee: set called with fenster_sz zu
2019.01.22 08:09:44 5: homee: set found option fenster_sz in attribute set01Name
2019.01.22 08:09:44 5: homee: MapConvert called from Set converted zu to Sz_fenster_zu with reversed map auf:Sz_fenster_auf, zu:Sz_fenster_zu,
2019.01.22 08:09:44 4: homee: set will now set fenster_sz -> Sz_fenster_zu
2019.01.22 08:09:44 4: homee: AddToQueue adds set01, initial queue len: 0
2019.01.22 08:09:44 5: homee: AddToQueue adds type set01 to URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=$val, no data, header Accept: text/html,application/xhtml+xm...plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Languge: de,en-US;q=0.7,en;q=0.3
Connection: keep-alive
Upgrade-insecure-Requests: 1, retry 0
2019.01.22 08:09:44 5: homee: HandleSendQueue called, qlen = 1
2019.01.22 08:09:44 4: homee: HandleSendQueue sends request type set01 to URL http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_zu, No Data,
header: Accept: text/html,application/xhtml+xm...plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Languge: de,en-US;q=0.7,en;q=0.3
Connection: keep-alive
Upgrade-insecure-Requests: 1
timeout 2
2019.01.22 08:09:44 5: HttpUtils url=http://192.168.180.160:7681/api/v2/webhook_trigger?webhooks_key=NJBGOCUENTGSIWZDWDYHSJZMUIXWPNUHRCXINVAXDRFXIBKIIKZZTVVJVFTVPWSJ&event=Sz_fenster_zu
2019.01.22 08:09:44 4: IP: 192.168.180.160 -> 192.168.180.160
2019.01.22 08:09:46 3: homee: Read callback: Error: connect to http://192.168.180.160:7681 timed out
2019.01.22 08:09:46 4: homee: Read callback: request type was set01 retry 0, body empty
2019.01.22 08:09:46 5: homee: ExtractSid called, context set, num 01
2019.01.22 08:09:46 4: homee: CheckAuth decided no authentication required

Du siehst hier, dass auf/zu mit set01IMap zu dem fehlenden Teil der set01URL ( $val ) umgesetzt wird und dann in die URL eingefügt wird. Die gesetzten Header gelten für alle HTML Aufrufe.

Ich freue mich auf Deine Rückmeldung inklusive dem Log Ausschnitt.

Viele Grüße
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo Thomas,

hat es geklappt?

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Schade, ein update wäre echt toll gewesen.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Tomk

Wirklich schade... ich bin gerade auch auf der Suche den Home Mode meiner NAS über einen Webhook von Fhem ein/auszuschalten. Bei mir funktioniert es leider auch nicht mit wget und escapten Sonderzeichen... gibt es mittlerweile was besseres?

Tomk

Ok habs hinbekommen... falls es noch jemand braucht einfach in einer notify mit wget:


"wget -q -O - http://xyc\?\"123""