Page 1 of 1
[GELÖST]{} maskieren im http request Aufruf
Posted: 17 Jul 2015 07:27
by LeonGaultier
Hallo,
Ich mache einen http request auf die URL meines FHEM Servers, hierbei rufe ich eine Perlfunktion auf. Dies geschieht so
Code: Select all
http://blabla.blabla/fhem?webcmd={ funktionsname(var1,var2,...) }
Dummerweise möchte ich nun var1,var2 und so weiter aus den Variablen von Automagic übergeben. Dies geschieht auch mit diesen geschweiften Klammern.
Code: Select all
http://blabla.blabla/fhem?webcmd={ funktionsname({var1},{var2},...) }
Also muss ich nun automagic beibringen das die geschweiften Klammern bei var1 und var2 tatsächlich seine variablenübergaben sind und die geschweiften klammern nach webcmd= ihn nicht zu interessieren haben.
Also wie maskiere ich die geschweiften Klammern nach webcmd=
Danke Euch
Leon
Re: {} maskieren im http request Aufruf
Posted: 17 Jul 2015 12:48
by LeonGaultier
Ok habe nun denke ich raus gefunden das man mit ' eine { maskieren kann. Nun habe ich aber das Problem das meine Variablenübergabe leider so aus schaut
Code: Select all
http://Fhem/Fhem?webcmd={ Funktion('{var1}',{var2}') }
Also werden var1 und var2 auch maskiert. Aber hier soll ja wirklich die Automagic Variable über geben werden. Leider lässt die Perlsyntax meiner Sub nur so einen Aufruf zu. Jemand ne Idee?
Re: {} maskieren im http request Aufruf
Posted: 17 Jul 2015 19:58
by LeonGaultier
Und wieder einen Schritt weiter.
Ich habe ein Script erstellt
Code: Select all
cmd='{ setBatteryDeviceInfo("testDummy:battery_percentage:false") }'
und mein http request sieht nun so aus
Code: Select all
http://urlfromfhem/fhem?cmd={encodeURLForm(cmd)}
Es funktioniert. Meine PerlSub wird ausgeführt und die Werte testDummy, battery_percentage und false übertragen.
Jetzt fehlt nur noch eine einzige Kleinigkeit. battery_percentage soll eigentlich eine Variable sein welche mit dem entsprechenden Wert vor der Übertragung gefüllt werden soll. Also eigentlich so
Code: Select all
cmd='{ setBatteryDeviceInfo("testDummy:{battery_percentage}:false") }'
Doch leider nimmt er das battery_percentage nicht als Variable sondern das {battery_percentage} als normalen String.
Einer ne Idee??
Re: [GELÖST]{} maskieren im http request Aufruf
Posted: 18 Jul 2015 09:52
by LeonGaultier
Wem es interessiert
Code: Select all
http://fhem/fhem?cmd=%7B+funktionsname('deviceName:{battery_percentage}:{battery_plugged}')+%7D
So geht es