NEWS
Scriptstart bei Aufruf einer URL
-
Hallo Zusammen,
ich möchte gerne ein Script ausführen, wenn eine URL aufgerufen wird.
Hintergrund:
Ich habe eine Weckerapp, die beim klingeln einen Task in Tasker ausführt. Ich suche nun eine Möglichkeit, von Tasker heraus die Ausführung eines JavaScripts anzustoßen. Darin soll z.B. das Radio eingeschaltet werden.
Bisher habe ich das über ein Programm in der CCU realisiert, dass ich durch einen URL-Aufruf bequem starten kann.
Hat sowas schon jemand realisiert oder eine Idee für mich?
Viele Grüße
Andreas
-
Du kannst dafür simple-api benutzen.
Danach kannst du http://ipaddress:8082/help
aufrufen und du bekommst so was:
{ "getPlainValue": "http://ipaddress:8082/getPlainValue/stateID", "get": "http://ipaddress:8082/get/stateID/?prettyPrint", "getBulk": "http://ipaddress:8082/getBulk/stateID1,stateID2/?prettyPrint", "set": "http://ipaddress:8082/set/stateID?value=1&prettyPrint", "toggle": "http://ipaddress:8082/toggle/stateID&prettyPrint", "setBulk": "http://ipaddress:8082/setBulk?stateID1=0.7&stateID2=0&prettyPrint", "objects": "http://ipaddress:8082/objects?pattern=system.adapter.admin.0*&prettyPrint", "states": "http://ipaddress:8082/states?pattern=system.adapter.admin.0*&prettyPrint" }
D.h. um eine Variable (die dann Skript anfeuert) zu setzen muss du das aufrufen:
-
Danke Bluefox,
daran hatte ich auch schon gedacht. Ich würde mir dann für Programme (JavaScripts), die von extern angestoßen werden sollen, einen Ordner Trigger anlegen und darin entsprechend je eine Variable pro Script. Diese werden dann von den entsprechenden Scripts per on überwacht. Werde das heute Nachmittag mal testen und dann berichten.
javascript.0
|– trigger
-- | -- programm1
-- | -- programm2
Viele Grüße
Andreas
2271_m_her.txt -
Wenn auch etwas später, aber ich wollte kurz nochmal berichten, dass Dein Vorschlag wunderbar funktioniert.
1. Schritt (Vorbereitungen)
Wie von Bluefox beschrieben, habe ich SimpleApi im web-Adapter aktiviert. Vorher hatte ich noch den separaten Adapter dafür installiert, der auf Port 8087 lief. Diesen habe ich nun deaktiviert.
2. Schritt (Einrichtung des Triggers und Skripts)
Das Objekt, über das mein Skript ausgeführt werden soll, lege ich direkt im Script an. Dazu habe ich folgendes Skript angelegt (Handlung.Aufstehen.Trigger). Dieser ist dann unter javascript.0.Handlung.Aufstehen.Trigger zu finden.
Ich habe mir angewöhnt, im Skript die Aktionen jeweils vom Trigger (on/subscribe) zu lösen, um ggf. später weitere Trigger bequem ergänzen zu können.
// ----------------------------------------------- // Trigger // ----------------------------------------------- // Aufstehen on({ id: "javascript.0.Handlung.Aufstehen.Trigger"/*Handlung.Aufstehen.Trigger*/, }, function (obj) { Aufstehen(); }); // ----------------------------------------------- // Aktionen // ----------------------------------------------- function Aufstehen() { setState("hm-rpc.0.LEQ0277042.1.LEVEL"/*Rollladen Schlafzimmer (Gaube).LEVEL*/, 25); setState("hm-rpc.0.LEQ0276707.1.LEVEL"/*Rollladen Schlafzimmer (West).LEVEL*/, 25); setState("hm-rpc.0.LEQ0277215.1.LEVEL"/*Rollladen Kind.LEVEL*/, 100); setState("hm-rpc.0.LEQ0217489.1.LEVEL"/*Rollladen Gäste WC.LEVEL*/, 100); setState("hm-rpc.0.LEQ0217527.1.LEVEL"/*Rollladen HWR.LEVEL*/, 100); setState("hm-rpc.0.LEQ0276733.1.LEVEL"/*Rollladen Küche.LEVEL*/, 100); setState("hm-rpc.0.LEQ0217546.1.LEVEL"/*Rollladen Wohnzimmer 1.LEVEL*/, 100); setState("hm-rpc.0.LEQ0276721.1.LEVEL"/*Rollladen Wohnzimmer 2.LEVEL*/, 100); setState("hm-rpc.0.LEQ0276697.1.LEVEL"/*Rollladen Wohnzimmer 3.LEVEL*/, 100); setState("hm-rpc.0.LEQ0277051.1.LEVEL"/*Rollladen Wohnzimmer 4.LEVEL*/, 100); setState("hm-rpc.0.LEQ0276690.1.LEVEL"/*Rollladen Wohnzimmer 5.LEVEL*/, 100); setState("hm-rpc.0.KEQ0876727.1.STATE"/*Zirkulationspumpe.STATE*/, true); setState("onkyo.0.system-power"/*system-power*/, true); setState("onkyo.0.input"/*Input selector*/, "fm"); setState("onkyo.0.master-volume"/*Master volume*/, 9); } createState("Handlung.Aufstehen.Trigger", false);
3. Schritt: Verknüpfung vom CCU2-Programm
Ich nutze zur Bedienung per Smartphone noch webmatic. Um das Skript auch von dort noch bequem aufrufen zu können, habe ich das das alte Programm bestehen gelassen, jedoch ohne automatisierte Bedingungen und Logik. Es wird von Dort einzig der Trigger des ioBroker über einen URL Aufruf angestoßen.
Dazu habe ich unter Aktivität im Programmteil alles gelöscht und stattdessen einen Punkt Skript eingefügt.
var url = "http://raspberrypi:8082/set/javascript.0.Handlung.Aufstehen.Trigger?value=true&prettyPrint"; dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'"); dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); string result = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
Also nochmal vielen Dank an Bluefox für den wertvollen Hinweis.
-
Hallo zusammen,
Ich würde gerne ebenfalls die Script Api nutzen, allerdings funktioniert bei mir nur die set Methode. Toggle läuft leider nicht:
http://w.x.y.z:8082/toggle/hue.0.Philips_hue.WZ_HL.on
liefert:
{"id":"hue.0.Philips_hue.WZ_HL.on","value":true}
Was dem aktuellen Status entspricht, er wird nicht getoggelt.
Folgendes funktioniert:
http://w.x.y.z:8082/set/hue.0.Philips_hue.WZ_HL.on?value=true http://w.x.y.z:8082/set/hue.0.Philips_hue.WZ_HL.on?value=false
Hoffe ihr habt einen Tipp für mich.
Gruß
mikey7891
-
toggle muss jetzt laufen.
-
Super, klappt einwandfrei. Danke