FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jeckyllhavok am 04 Mai 2015, 16:42:41

Titel: Variable an wget Befehl übergeben
Beitrag von: jeckyllhavok am 04 Mai 2015, 16:42:41
Servus zusammen,
hätte da mal eine klien Frage (hoffentlich klein :-) )

Ich habe einen z-Wave dimmer, und möchte bei änderungen des Dimm Status den dim Wert per wget an ein anderes Device schicken.
Leider schein ich ein Problem mit der Variable zu haben.

Das Reading im Eventlog sieht wie folgt aus:

2015-05-04 16:40:05 ZWave DimmerWZ dim 43

Das notify dazu so:

define test notify DimmerWZ:dim.* "wget -q -O - 'http://user:pass@@IP_ADRESSE/dev/sps/io/KGI14.1.1/$EVENT'"


In der Konstalation passiert leider nix, ersetz ich $EVENT durch z.B 33 funktioniert es und ich bekomme bei einer Änderung die 33 übergeben. Mit der Variable $EVENT passiert jedoch nix (wird auch nichts angezeigt)

Hat da vielleicht jemand ne Idee?
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: Phill am 04 Mai 2015, 19:38:57
Wenn du etwas in einfache Anführungszeichen setzt, werden die Variablen nicht interpretiert.
Also probier mal:
define test notify DimmerWZ:dim.* "wget -q -O - "http://user:pass@@IP_ADRESSE/dev/sps/io/KGI14.1.1/$EVENT""
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: jeckyllhavok am 06 Mai 2015, 00:47:53
Hey, danke für die Antwort.
Merkwürdigerweise klappt es wenn ich das $EVENT durch %EVTPART1 ersetze.
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: Phill am 08 Mai 2015, 09:38:34
Hallo,
das ist nicht Merkwürdig, da %EVTPART1 keine normale Shellvariable ist, sondern ein fhem Suchpattern der vor dem Ausführen des Kommandos über eine fhem interne Funktion ersetzt wird.

Siehe notify im Commandref. Ist nicht empfohlen, da es wahrscheinlich rausfliegt und wird somit irgendwann nach einem update nicht mehr funktionieren.
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: lewej am 04 Januar 2018, 23:12:48
Hallo Zusammen,

bei mir funktioniert das schon Mal solange das Reading keine Leerzeichen hat:

define ZEJayPresent notify myAbfall.*:next_text.* "wget -q -O - "http://username:pass@IP/dev/sps/io/myAbfall_next_text/$EVTPART1""

Wenn aber im Reading das steht:
Text1 Text2

Dann wird nur Text1 übermittelt.

Hat jemand eine Idee, wie ich den gesamten String übergeben kann?

Gruß
lewej
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: CoolTux am 05 Januar 2018, 06:47:29
Das wäre dann ein zweiter EVENT Part. Also $EVTPART2
Ich würde im Notify das ganze $EVENT nehmen und den selbst mit split das ganze mir anpassen.
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: lewej am 05 Januar 2018, 08:52:25
Zitat von: CoolTux am 05 Januar 2018, 06:47:29
Das wäre dann ein zweiter EVENT Part. Also $EVTPART2
Ich würde im Notify das ganze $EVENT nehmen und den selbst mit split das ganze mir anpassen.

Ich konnte das Problem einkreisen, es ist nicht das Eventpart1 das Problem,
sonder das wget da müssen die Leerzeichen mit %20 maskiert werden.
Mein Problem ist jetzt, wie kann ich das in dem notify unterbringen, das Leerzeichen durch %20 ausgetauscht werden?

Gruss
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: CoolTux am 05 Januar 2018, 09:02:59
Es gibt die Funktion urlEncode()

Gib mal das in Deine Kommandozeile des FHEMWEB ein
{ urlEncode('test test') }
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: betateilchen am 05 Januar 2018, 11:08:31
Wie alt ist Deine FHEM Installation?

Zitat von: jeckyllhavok am 06 Mai 2015, 00:47:53
Merkwürdigerweise klappt es wenn ich das $EVENT durch %EVTPART1 ersetze.

Zitat von: Phill am 08 Mai 2015, 09:38:34
Siehe notify im Commandref. Ist nicht empfohlen, da es wahrscheinlich rausfliegt und wird somit irgendwann nach einem update nicht mehr funktionieren.

%EVTPARTx ist schon rausgeflogen.

Wenn das bei Dir noch funktioniert, kann $EVENT nicht funktionieren, weil es %EVENT heissen muss.

Besser wäre, Du machst ein Update Deines FHEM auf den aktuellen Stand, dann funktioniert sicherlich auch $EVENT.
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: lewej am 10 Januar 2018, 19:43:17
Zitat von: CoolTux am 05 Januar 2018, 09:02:59
Es gibt die Funktion urlEncode()

Gib mal das in Deine Kommandozeile des FHEMWEB ein
{ urlEncode('test test') }

OK das umwandeln passt schon mal, aber irgendwie funktioniert das nicht alles in einer Zeile in einem notify.
Könnte mir jemand ein Beispiel zeigen, wie ich das Maskieren muss?

Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: CoolTux am 10 Januar 2018, 19:52:05
Zeig Mal was Du bisher hast. Also ein list vom Notify
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: lewej am 11 Januar 2018, 10:02:31
Zitat von: CoolTux am 10 Januar 2018, 19:52:05
Zeig Mal was Du bisher hast. Also ein list vom Notify

Ich habe jetzt das URL ENCODING in ein Reading gepackt, das heißt dort steht jetzt sowas drin:

18%2e01%2e18

Mein Notify:
define myAbfall_ToLoxone notify myAbfall.*:(next_text_to_loxone.*|next_datum_to_loxone.*|now_text_to_loxone.*) "wget -q -O - "http://user:pass@FQDN/dev/sps/io/$EVTPART0/$EVTPART1""

Wenn es ausgeführt wird, wird EVTPART0 und EVTPART1 nicht gefühlt.

Log:
Triggering myAbfall_ToLoxone
myAbfall_ToLoxone exec "wget -q -O - "http://user:pass@FQDN/dev/sps/io/$EVTPART0/$EVTPART1""


Wenn ich das wget mit dem encode reading manuel ausführe, wird es geschrieben.

Was mache ich  falsch?

Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: CoolTux am 11 Januar 2018, 10:13:30
Ich brauche ein list

list NOTIFYNAME
oben in der FHEM Kommandozeile eingeben.
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: lewej am 11 Januar 2018, 10:28:35
Zitat von: CoolTux am 11 Januar 2018, 10:13:30
Ich brauche ein list

list NOTIFYNAME
oben in der FHEM Kommandozeile eingeben.

Internals:
   CFGFN      /opt/fhem/include_files/fhem_loxone.cfg
   DEF        myAbfall.*:(next_text_to_loxone.*|next_datum_to_loxone.*|now_text_to_loxone.*) "wget -q -O - "http://user:password@FQDN/dev/sps/io/$EVTPART0/$EVTPART1""
   NAME       myAbfall_ToLoxone
   NR         788
   NTFY_ORDER 50-myAbfall_ToLoxone
   REGEXP     myAbfall.*:(next_text_to_loxone.*|next_datum_to_loxone.*|now_text_to_loxone.*)
   TYPE       notify

Attributes:
Titel: Antw:Variable an wget Befehl übergeben
Beitrag von: nils_ am 11 Januar 2018, 11:17:34
Zitat von: lewej am 11 Januar 2018, 10:02:31
Wenn es ausgeführt wird, wird EVTPART0 und EVTPART1 nicht gefühlt.

zu viele """"" ?

geht sowas?
define myAbfall_ToLoxone notify myAbfall.*:(next_text_to_loxone.*|next_datum_to_loxone.*|now_text_to_loxone.*) "wget -q -O - http://user:pass@FQDN/dev/sps/io/" . $EVTPART0 ."/". $EVTPART1 ."