NEWS
[gelöst]Wie sende ich aus JavaScript einen HTTP Befehl
-
Ich benötige Nachhilfe. Es geht mir darum, aus JavaScript eine Site aufzurufen. Die Ergebnisse werden nicht weiterverarbeitet. Ich möchte nur wissen, wie ich sowas
http://192.168.xxx.xxx:5005/Sonos Tablet/favorite/HIT RADIO FFH
sende. Und bitte nicht schimpfen, ich hatte die gleiche Frage schon in Thread zur Sonos API gestellt. Aber ich denke, ich bin hier bei den JavaScript Profis besser aufgehoben.
-
@skorpil Ich habe eine einfache Anzeige aller Fenster/Lichter mit LEDs in ienem IKEA Bilderrahmen (gibts genug Videoanleitungen zu). Einzelne LED steuere ich über html in javacript so an:
require("request")('http://192.168.2.82/cm?cmnd=Led20 10,0,0').on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); }
Ersetze 'http://192.168.2.82/cm?cmnd=Led20 10,0,0 durch deinen html request.
-
Dankeschön. Ich werde es testen.
-
Testergebnis: leider negativ:
Hier mein Script;
Ansage = "http://192.168.0.14:5005/B%C3%BCro%20Ikea/say/Abendessen%20ist%20fertig"; require("request")(Ansage).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); };
Ergebnis mit Fehlermeldung:
17:58:59.312 error javascript.0 (846) script.js.common.Test.Ansage_Büro_Ikea_ohne_Trigger_via_API compile failed: at script.js.common.Test.Ansage_Büro_Ikea_ohne_Trigger_via_API:183
Die var Ansage ist richtig. Daran liegt es nicht. Offenbar kann er require nicht compilieren.
Was ist falsch?
-
Mein Fehler: beim Kopieren das "try" vergessen (es hätte dir und mir auffallen können, das ein "}" zuviel in meiner ersten Antwort war). Versuchs mal so, das konnte ich bei mir problemlos kompilieren:
Ansage = "http://192.168.0.14:5005/B%C3%BCro%20Ikea/say/Abendessen%20ist%20fertig"; try { require("request")(Ansage).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); };
-
Danke, ich checke morgen
-
@amg_666 sagte in Wie sende ich aus JavaScript einen HTTP Befehl:
Ansage = "http://192.168.0.14:5005/B%C3%BCro%20Ikea/say/Abendessen%20ist%20fertig"; try { require("request")(Ansage).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); };
Das war es. Vielen Dank, Es läuft!
-
Weil ihr mir so lieb geholfen habt, sozusagen als kleines Dankeschön, hier mein Script zur Ansage
- Datum
- Uhrzeit
- Temperatur
- Wetter
- Geburtstag am Datum
- Mülleimer rausstellen
Die Infos zum Wetter kommen vom Adapter weatherunderground. Temperatur kommt vom Homematic Außentemperatur Thermometer. Die Geburtstage des Tages hole ich vom ical Adapter, ebenso wie die Informationen zur Müllabfuhr.
Ob das alles perfekt programmiert ist, das weiß ich nicht. Aber, es läuft.
Dieses ist das Testscript zur API. Bisher habe ich die Ansage noch über den Sonos Adapter realisiert. Dieses wird von einem Homematic Bewegungsmelder morgens in der Zeit zwischen 7:00 und 10:00 genau EINMAL ausgelöst, wenn ich aus den Schlafräumen in die Küche gehe und dort - etwas zeitverzögert - ausgelöst. So weiß ich, was an diesem Tag anliegt und wie das Wetter ist. Danach wird mein Lieblingsradiosender für 45 Minuten abgespielt. Viel Spass!
Ab jetzt wird das alles über die API erledigt. Dankeschön noch einmal für die Hilfe.
// ################################################################## // Ansage // ################################################################## // ################################################################## // Definitionen // ################################################################## // Quellen var idWetter = "hm-rega.0.29954"; var idTemperatursensor = 'hm-rpc.0.OEQ1296052.1.TEMPERATURE'/*Außentemperatur:1 TEMPERATURE*/ // ################################################################## // Basiswerte ermitteln // ################################################################## function ermitteleAnsagedatum () { //Wochentag ermitteln var d = new Date (); var w = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); var wochentag = w[d.getDay()]; //Tagesdatum ermitteln var tag = d.getDate(); //Monat ermitteln var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); var monat = month[d.getMonth()]; //Jahr ermitteln var jahr = d.getFullYear(); //Stunde ermitteln var stunde = d.getHours(); //Minute ermitteln var minute = d.getMinutes(); return { // zurückgeben 'Jahr' : jahr, 'Monat' : monat, 'Tag' : tag, 'Wochentag' : wochentag, 'Stunde' : stunde, 'Minute' : minute }; } function ermitteleWetter () { // Wetterbedingungen var wetterdaten = getState(idWetter).val; // log('Wetter: ' + wetterdaten); return(wetterdaten); } function ermitteleAnsageTemperatur () { // Die Außentemperatur ist xx. Das Wetter heute ist xx // Einfache Temperaturansage via API. // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht // "Es sind 18 Punkt 2 Grad " sagt. var temperatursensor = getState(idTemperatursensor).val; var temp_string = temperatursensor.toString(); // log('Temp ' + temp_string); var temp_array = []; temp_array = temp_string.split("."); // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist. // Es wird dann nur "18" gelesen. if (!temp_array[1]) { temp_array[1] = "0"; // log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt."); } return{ 'Ganzzahl' : temp_array[0], 'Nachkommazahl' : temp_array[1] }; } // ################################################################## // Basisansage // ################################################################## var ansagetext = "Guten Morgen, heute ist " + ermitteleAnsagedatum().Wochentag + " der " + ermitteleAnsagedatum().Tag + "te " + ermitteleAnsagedatum().Monat + ' ' + ermitteleAnsagedatum().Jahr + ". Es ist " + ermitteleAnsagedatum().Stunde + " Uhr und " + ermitteleAnsagedatum().Minute + " Minuten." + " Die Aussentemperatur beträgt " + ermitteleAnsageTemperatur().Ganzzahl + "," + ermitteleAnsageTemperatur().Nachkommazahl + " Grad." + " Wetter Bedingungen, " + ermitteleWetter() +" ."; // ################################################################## // Ansagetext zusammenstellen und in Objekt schreiben //// ################################################################## // Definition API; var APIsay = "http://IP der API:5005/B%C3%BCro%20Ikea/say/"; var lautstaerke = 40; // Ansagetext // Basisansage var Ansage = ansagetext; //Geburtstagsansage var tempGEBURTSTAGE = "javascript.0.Ansage.GeburtstageHEUTE"; var AnsageGEBURTSTAGE = getState(tempGEBURTSTAGE).val; //Muellsansage heute var tempMUELLheute = "javascript.0.Ansage.MuellHEUTE"; var AnsageMUELLheute = getState(tempMUELLheute).val; //Muellsansage Zukunft var tempMUELLzukunft = "javascript.0.Ansage.MuellZUKUNFT"; var AnsageMUELLzukunft = getState(tempMUELLzukunft).val; /*log("Tempansage--------------------->" + tempAnsage); log("Ansage--------------------->" + Ansage); log("tempGEBURTSTAGE--------------------->" + tempGEBURTSTAGE); log("AnsageGEBURTSTAGE--------------------->" + AnsageGEBURTSTAGE); log("tempMUELLheute--------------------->" + tempMUELLheute); log("AnsageMUELLheute--------------------->" + AnsageMUELLheute); log("tempMUELLzukunft--------------------->" + tempMUELLzukunft); log("AnsageMUELLzukunft--------------------->" + AnsageMUELLzukunft);*/ // #################################################### // Wenn Geburtstag dann mit ansagen // #################################################### if (AnsageGEBURTSTAGE.length > 2) { // wenn der Inhalt des Objektes "AnsageGEBURTSTAGE" größer als 2 Zeichen lang ist, dann ... Ansage = Ansage + "Heute haben Geburtstag, " + AnsageGEBURTSTAGE +" ."; //log("Ansage mit Geburtstag--------------------->" + Ansage); } // #################################################### // Wenn Müll dann mit ansagen // #################################################### if (AnsageMUELLheute.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLheute" größer als 2 Zeichen lang ist, dann ... Ansage = Ansage + " Achtung, heute ist " + AnsageMUELLheute +" ." + "Bitte an die Strasse stellen" + " !"; //log("Ansage mit Geburtstag und Muell heute--------------------->" + Ansage); } // #################################################### // Wenn Müll ZUKUNFT, dann mit ansagen // #################################################### if (AnsageMUELLzukunft.length > 2) { // wenn der Inhalt des Objektes "AnsageMUELLzukunft" größer als 2 Zeichen lang ist, dann ... Ansage = Ansage + " Achtung, morgen ist " + AnsageMUELLzukunft + " ." + "Bitte MORGEN an die Strasse stellen" + " !"; //log("Ansage mit Geburtstag und Muell heute und morgen--------------------->" + Ansage); } // #################################################### // ANSAGE/ Ausgabe // #################################################### Ansage = APIsay + Ansage + "/" + lautstaerke; log("Ansage=" + Ansage); try { require("request")(Ansage).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); };
-
@skorpil Setzt du das biitte noch auf "gelöst" ?
-
Mache ich