NEWS
Http Befehl in script
-
Hallo,
bitte nicht erschlagen, für Euch ist es vielleicht banal, aber für mich erst einmal alles sehr schwer.
Ich würde gerne einen http: Befehl (für meine Squeezebox) in ein Skript einbauen, damit ich dieses dann in eine Szene packen kann.
Allerdings weiß ich nicht, was um den Link herumgebaut werden muss, damit es ein gültiger Befehl im Script ist.
Könnt Ihr mir dabei helfen?
MfG: Enrico
-
Ich gehe jetzt von Raspberry aus:
Du könntest über exec den curl Befehl aufrufen.
exec ist im Prinzip beim Raspi die Kommandozeile. Und Curl ist "see url".
Also könntest du mit einem Script auf einen Aktor lauschen und dann eine Webseite aufrufen (hier über die Klingel, bei dir zu ersetzen mit irgendwas:
var idKlingel = "hm-rpc.0.MEQ004xxxx.1.PRESS_SHORT"/*Klingelsensor.PRESS_SHORT*/; // Homematic Klingelsensor on({id: idKlingel, val: true}, function() { // on lauscht auf Klingelsignal exec ("curl 'DEINEWEBSEITE'"); // Ruft die Webseite auf }); }
…Ohne Gewähr...bin selbst blutiger Anfänger!
Ob der curl Befehl so richtig ist bin ich nicht sicher, ggf. mit Attributen versehen (gib in der Commandozeile von Raspbian "curl --help" ein.
-
Ich habs so gemacht:
var url = "http://192.168.xxx.xxx/?onewire:9:0:1:2:3:"; var req = require('request'); req(url, function(error, response, body) { if (body){ //log("Body OK","warn"); setState("javascript.0.Heizung.T0",body.split("T")[1].substr(2,5),true); setState("javascript.0.Heizung.T1",body.split("T")[2].substr(2,5),true); setState("javascript.0.Heizung.T2",body.split("T")[3].substr(2,5),true); setState("javascript.0.Heizung.T3",body.split("T")[4].substr(2,5),true); } else {log("Body fehlerhaft","warn");} });
eigentlich ganz simpel…
Gruß Thilo
-
Vielleicht war Solear's Antwort doch zu kompliziert :lol: . Es geht aus dem Skript so:
var request = require('request'); request("http://192.168.xxx.xxx/?onewire:9:0:1:2:3:");
man konnte aber sogar so schreiben:
require('request')("http://192.168.xxx.xxx/?onewire:9:0:1:2:3:");
-
Danke Euch.
Nein keinen Raspi. Habe ich zwar auch, allerdings kann man die Befehle über die Lösung von Bluefox auch direkt an die Squeezebox (bei mir auf FireTV) senden. Funktioniert auf Anhieb
Danke Danke Danke
Gruß Enrico
-
Wie kann ich in dem Skript jetzt noch eine Verzögerung von 30 sek einbauen?
Sowohl Receiver als auch Squeezebox benötige etwas Zeit zum Hochfahren, wenn die Szene Radio an gestartet wird. Gleichzeitig soll aber der Radiosender auch schnell gewechselt werden, wenn das System schon läuft. Daher benötige ich den Befehl zwei mal. Einmal sofort und ein zweites mal ca. 30 Sekunden später.
Wenn der Befehl schon ausgeführt wurde (weil das System schon an war) und dieser jetzt ein zweites mal ausgeführt wurde hat es keine Auswirkung, dass habe ich schon getestet.
require('request')("http://192.xxx.xxx.x:xxxxx/status.html?p0=playlist&p1=play&p2=http://opml.radiotime.com/Tune.ashx?id=s84486&formats=aac,ogg,mp3&partnerId=16&serial=e913d265b32d57e1b62fd7c5dacf1fc6&filter=s%20&player=xxxxxxxxx");
Gruß Enrico
-
Auch auf die Gefahr hin, wieder eine umständliche Lösung zu liefern:
function warten() { // Warteschleife, 6 Sekunden setTimeout(startscript, 6000); } function startscript() { // Nach der Warteschleife, tu was tu dies und das; }
-
Ich habs so gemacht: `
Vielen Dank, Die Auswertung der response hat mir heute gehofen.