[GELÖST]{} maskieren im http request Aufruf

General discussions about Automagic and automation in general

Moderator: Martin

Post Reply
LeonGaultier
Posts: 7
Joined: 17 Jul 2015 06:26

[GELÖST]{} maskieren im http request Aufruf

Post by LeonGaultier » 17 Jul 2015 07:27

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
Last edited by LeonGaultier on 18 Jul 2015 09:43, edited 1 time in total.

LeonGaultier
Posts: 7
Joined: 17 Jul 2015 06:26

Re: {} maskieren im http request Aufruf

Post by LeonGaultier » 17 Jul 2015 12:48

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?

LeonGaultier
Posts: 7
Joined: 17 Jul 2015 06:26

Re: {} maskieren im http request Aufruf

Post by LeonGaultier » 17 Jul 2015 19:58

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??

LeonGaultier
Posts: 7
Joined: 17 Jul 2015 06:26

Re: [GELÖST]{} maskieren im http request Aufruf

Post by LeonGaultier » 18 Jul 2015 09:52

Wem es interessiert

Code: Select all

http://fhem/fhem?cmd=%7B+funktionsname('deviceName:{battery_percentage}:{battery_plugged}')+%7D
So geht es

Post Reply