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