Variable an wget Befehl übergeben

Begonnen von jeckyllhavok, 04 Mai 2015, 16:42:41

Vorheriges Thema - Nächstes Thema

jeckyllhavok

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?

Phill

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""
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

jeckyllhavok

Hey, danke für die Antwort.
Merkwürdigerweise klappt es wenn ich das $EVENT durch %EVTPART1 ersetze.

Phill

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.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

lewej

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

lewej

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

CoolTux

Es gibt die Funktion urlEncode()

Gib mal das in Deine Kommandozeile des FHEMWEB ein
{ urlEncode('test test') }
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

lewej

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?


CoolTux

Zeig Mal was Du bisher hast. Also ein list vom Notify
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

lewej

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?


CoolTux

Ich brauche ein list

list NOTIFYNAME
oben in der FHEM Kommandozeile eingeben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

lewej

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:

nils_

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 ."
viele Wege in FHEM es gibt!