$EVENT im Notify wird nicht ausgewertet.

Begonnen von SwordMaster, 14 August 2017, 22:20:42

Vorheriges Thema - Nächstes Thema

SwordMaster

Hallo Zusammen,

Ich will den Status eines Devices an eine REST-API via CURL übermitteln. Leider wird mir bei meinem Notify mein $EVENT nicht ausgewertet.
Im Service (Amazon AWS) kommt ein tatsächliches "$EVENT" an. Statt der eigentliche Status.

Folgendes Notify funktioniert nicht.
define MyNotify notify testDummy "curl -X POST https://xxxxxxxxx.execute-api.eu-west-1.amazonaws.com/dev/TestDeviceUpdate -H 'cache-control: no-cache' -H 'postman-token: xxxxxxxx-yyyy-yyyy-7166-66db09070a70' -H 'x-api-key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -d '{ "TableName": "MyTableName", "Item": { "online": false, "status": "$EVENT", "DeviceName": "PushTest" } }' &"

Dieses Test-Notify funktioneirt aber (Hier wird $EVENT umgesetzt, mit dem Status des Devices auf das das Notify reagiert
define MyNotify notify testDummy "curl -s -S "192.168.53.11:8083/fhem?cmd.TV=set%20testDummy2%20$EVENT &" "

Wo ist der Unterschied frag ich mich :-|.....

Viele Grüße
Stefan

Otto123

#1
Hallo Stefan,

laut https://fhem.de/commandref_DE.html#command kannst Du Dir das & am Ende sparen.
Mir ist das mit den verschachtelten " immer zu stressig. Ich würde die lange Zeile in eine Scriptdatei auslagern und $EVENT als Parameter übergeben.

Innerhalb von den einfachen ' ' werden keine Variablen aufgelöst.
-> https://de.wikibooks.org/wiki/Perl-Programmierung:_Variablen

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

DeeSPe

Zitat von: SwordMaster am 14 August 2017, 22:20:42
Hallo Zusammen,

Ich will den Status eines Devices an eine REST-API via CURL übermitteln. Leider wird mir bei meinem Notify mein $EVENT nicht ausgewertet.
Im Service (Amazon AWS) kommt ein tatsächliches "$EVENT" an. Statt der eigentliche Status.

Folgendes Notify funktioniert nicht.
define MyNotify notify testDummy "curl -X POST https://xxxxxxxxx.execute-api.eu-west-1.amazonaws.com/dev/TestDeviceUpdate -H 'cache-control: no-cache' -H 'postman-token: xxxxxxxx-yyyy-yyyy-7166-66db09070a70' -H 'x-api-key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -d '{ "TableName": "MyTableName", "Item": { "online": false, "status": "$EVENT", "DeviceName": "PushTest" } }' &"

Dieses Test-Notify funktioneirt aber (Hier wird $EVENT umgesetzt, mit dem Status des Devices auf das das Notify reagiert
define MyNotify notify testDummy "curl -s -S "192.168.53.11:8083/fhem?cmd.TV=set%20testDummy2%20$EVENT &" "

Wo ist der Unterschied frag ich mich :-|.....

Viele Grüße
Stefan

Weil das in einfachen Hochkommas liegt und somit nicht die Variable befüllt wird (wie Otto schon schrieb).

Probier mal:

define MyNotify notify testDummy "curl -X POST https://xxxxxxxxx.execute-api.eu-west-1.amazonaws.com/dev/TestDeviceUpdate -H 'cache-control: no-cache' -H 'postman-token: xxxxxxxx-yyyy-yyyy-7166-66db09070a70' -H 'x-api-key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -d '{ "TableName": "MyTableName", "Item": { "online": false, "status": "'.$EVENT.'", "DeviceName": "PushTest" } }' &"

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

SwordMaster

Hallo ihr zwei,

Vielen Dank für die nützlichen Tipps.
@Otto: Mit dem Auslagern hast recht. Werd ich vermutlich machen.

@DeeSPe: Danke für die Verbesserung. Deine Lösung hat fast funktioniert. Aber es kam .on.  im Service an.
Die Punkte um $EVENT bei deinem Vorschlag hab ich jetzt rausgenommen. Jetzt gehts.

Vielen Dank für die schnellen Antworten!!!
Das Forum ist immer wieder klasse.

Viele Grüße
Stefan