NEWS
[gelöst] Skript auf AXIOS/httpGet umbauen
-
@joergeli
Danke für die Info.
Bei mir ist das nicht ! so.Folgendes Script zum Starten von Licht:
// Bewegung: Bad_EG -> Dimmer einschalten on('alias.0.HM.Bewegung.Bad_EG.MOTION', function (obj) { // Bewegung erkannt var Status_auto = getState('javascript.0.System.Automatik.Licht.Bad_EG').val; // Automatik Licht true var Licht_level = getState('alias.0.HM.Dimmer.Bad_EG.LEVEL').val; // Licht level aktuell var Hell = getState('alias.0.HM.Bewegung.Bad_EG.BRIGHTNESS').val; // Helligkeit var Modus_Dusche = getState('javascript.0.System.Modus.Modus_Dusche').val; // Modus Dusche aktiv? if(Status_auto === true && Licht_level === 0 && Modus_Dusche == false) { // Automatik Licht auf true und Licht ist aus und Modus überprüfen if (Hell < 35) { setState('alias.0.HM.Dimmer.Bad_EG.LEVEL',5); log("Helligkeit = " + Hell + "; Dimmer Bad_EG auf 5% eingeschaltet."); setTimeout(function() { pruef_aus(); }, 120000); // nach 2 min. Prüfung } } }); function pruef_aus() { var level = getState('alias.0.HM.Dimmer.Bad_EG.LEVEL').val; // Licht level aktuell var Modus_Dusche = getState('javascript.0.System.Modus.Modus_Dusche').val; // Modus Dusche aktiv? if (level > 0) { if (getState('alias.0.HM.Bewegung.Bad_EG.MOTION').val == false){ if (Modus_Dusche == false) { setState('alias.0.HM.Dimmer.Bad_EG.LEVEL', 0); log("Licht Bad EG ausgeschaltet."); } } else { log("Licht Bad EG nicht ausgeschaltet. Erneute Prüfung nach 2 min."); setTimeout(function() { pruef_aus (); }, 120000); // nach 2 min. erneute Prüfung } } } // ----------------------------------------------------------------------------------------------------------- // Bewegung: Bad_EG -> Spiegelschrank einschalten on('mqtt.2.Wemos_BadEG.PIR1', function (obj) { // Bewegung erkannt mit Wemos var Status_auto2 = getState('javascript.0.System.Automatik.Licht.Bad_EG').val; // Automatik Licht true var Licht_state = getState('mqtt.2.Wemos_BadEG.POWER').val; // Licht Spiegelschrank aktuell var Hell2 = getState('alias.0.HM.Bewegung.Bad_EG.BRIGHTNESS').val; // Helligkeit var Modus_Dusche2 = getState('javascript.0.System.Modus.Modus_Dusche').val; // Modus Dusche aktiv? if(obj.state.val == "ON" && Status_auto2 == true && Licht_state == "OFF" && Modus_Dusche2 == false) { // Automatik Licht auf true und Licht ist aus und Modus überprüfen if (Hell2 < 100) { httpGet("http://192.168.243.175/cm?cmnd=Power1%20On", { responseType: 'text' }, (err, response) => { if (err) { console.error(err); } else { log (""); } }); log("Helligkeit = " + Hell2 + "; Licht Bad EG - Spiegelschrank eingeschaltet."); setTimeout(function() { pruef_aus2(); }, 120000); // nach 2 min. Prüfung } } }); function pruef_aus2() { var state2 = getState('mqtt.2.Wemos_BadEG.POWER').val; // Licht Spiegelschrank aktuell var Modus_Dusche2 = getState('javascript.0.System.Modus.Modus_Dusche').val; // Modus Dusche aktiv? if (state2 == "ON") { if (getState('alias.0.HM.Bewegung.Bad_EG.MOTION').val === false){ if (Modus_Dusche2 === false) { httpGet("http://192.168.243.175/cm?cmnd=Power1%20Off", { responseType: 'text' }, (err, response) => { if (err) { console.error(err); } else { log (""); } }); log("Licht Bad EG - Spiegelschrank ausgeschaltet."); } } else { log("Licht Bad EG - Spiegelschrank nicht ausgeschaltet. Erneute Prüfung nach 2 min."); setTimeout(function() { pruef_aus2(); }, 120000); // nach 2 min. erneute Prüfung } } } // Bewegung: Bad_EG -> Spiegelschrank - Status ändert sich on('mqtt.2.Wemos_BadEG.POWER', function (obj) { // Status Power ändert sich if (obj.state.val == "ON") { if (getState("javascript.0.Geräte.Bad-EG.Spiegelschrank").val != true) { setState("javascript.0.Geräte.Bad-EG.Spiegelschrank", true); } } else { if (getState("javascript.0.Geräte.Bad-EG.Spiegelschrank").val != false) { setState("javascript.0.Geräte.Bad-EG.Spiegelschrank", false); }} }); on('javascript.0.Geräte.Bad-EG.Spiegelschrank', function (obj) { // Status Variable ändert sich if (obj.state.val == true) { if (getState("mqtt.2.Wemos_BadEG.POWER").val != "ON") { httpGet("http://192.168.243.175/cm?cmnd=Power1%20On", { responseType: 'text' }, (err, response) => { if (err) { console.error(err); } else { log (""); } }); } } else { if (getState("mqtt.2.Wemos_BadEG.POWER").val != "OFF") { httpGet("http://192.168.243.175/cm?cmnd=Power1%20Off", { responseType: 'text' }, (err, response) => { if (err) { console.error(err); } else { log (""); } }); }} });
Wenn ich dieses Script neu starte mit:
dann kommt sofort im log:
javascript.0 08:31:27.975 info Start JavaScript script.js.Scripte.Licht.Bad_EG (JavaScript/js) javascript.0 08:31:27.987 warn script.js.Scripte.Licht.Bad_EG: request package is deprecated - please use httpGet (or a stable lib like axios) instead! javascript.0 08:31:27.987 info script.js.Scripte.Licht.Bad_EG: registered 4 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
und dieses ist umgestellt auf httpGet.
Äußerst merkwürdig das ganze.
-
@bahnuhr sagte in [gelöst] Skript auf AXIOS umbauen:
arum kommt dies im log ?
(httpGet ist in JS auch rot unterstrichen)
Benutze doch httpGet.hatte das auch - das passierte als ich ein script kopierte und dieses dann auf httpget änderte- obwohl das orginal abgeschalten war, kam diese meldung
habe dann das alte nochmal gestartet und wieder beendet, dann war die meldung weg
-
@liv-in-sky sagte in [gelöst] Skript auf AXIOS umbauen:
habe dann das alte nochmal gestartet und wieder beendet, dann war die meldung weg
Dieser Versuch hab ich schon hinter mir.
iob hatte ich gestern komplett neu gestartet.Meldung kommt trotzdem !
-
@bahnuhr Hast Du Scripts in global liegen?
-
@haus-automatisierung sagte in [gelöst] Skript auf AXIOS umbauen:
@bahnuhr Hast Du Scripts in global liegen?
ja !
Das ist ne Idee, schau ich gleich mal nach.Nachtrag:
alle durchgeschaut; da ist nix mit request.
Nachtrag2:
doch eines gefunden, ändere das gleich mal ab. -
@bahnuhr sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
@haus-automatisierung sagte in [gelöst] Skript auf AXIOS umbauen:
Nachtrag2:
doch eines gefunden, ändere das gleich mal ab.Alles andere hätte mich jetzt auch echt gewundert
-
@haus-automatisierung sagte in [gelöst] Skript auf AXIOS umbauen:
Alles andere hätte mich jetzt auch echt gewundert
ja, mich ja auch.
Deshalb war es ja merkwürdig.wär ich aber bestimmt noch drauf gekommen.
-
erledigt, warn ist weg.
Es lag an dem globalen Script.
Danke -
@bahnuhr sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
Nachtrag:
alle durchgeschaut; da ist nix mit request.
Nachtrag2:
doch eines gefunden, ändere das gleich mal ab.Du weißt, wie man automatisch nach Begriffen in allen Scripten suchen kann?
Dazu im Scripte-Tag das Lupensymbol rechts oben anklicken und dann den entspr. Suchbegriff eingeben (hier: request).
Dann werden alle Scripte aufgelistet, die diesen Suchbegriff enthalten, s. Screenshot:
Danach nicht vergessen, die Suche wieder auszuschalten: das "durchgestrichene T" nochmals anklicken.
-
Hallo
Ich habe auch 8 Scripte und 5 Blocklys, wo noch
request
läuft.
Reicht mWn nicht, einfachrequest
durchhttpGet oder axios
zu ersetzen.Könnte da wer über meine Scripte drüberschaun?
Das ist zB eins von den 8.
var url = "http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365"; var pfad = "Volkszaehler."; var idAKTUELLER_VERBRAUCH = pfad + "AKTUELLER_VERBRAUCH"; var idAKTUELLE_ERZEUGUNG = pfad + "AKTUELLE_LIEFERUNG"; // var idAKTUELLE_HEIZUNG = pfad + "AKTUELLE_HEIZUNG"; // Vorgegebene Funktion, die nur dazu dient, das JSON einzulesen // Angelehnt an: http://www.iobroker.net/docu/?page_id=3691 var request = require("request"); function readJson(url, callback) { request(url, function(err, state, body) { if (body) { var json = {}; if (body !== "") { try { json = JSON.parse(body); } catch (ex) { json = {}; } if (!json) { json = {}; } } callback(null, json); } else { var error = "(" + err + ") ERROR bei Abfrage von: " + url; log(error, "warn"); callback(error, null); } }); } // Erzeugen der Objekte in ioBroker createState(idAKTUELLER_VERBRAUCH, 0, { name: 'Aktueller Verbrauch', desc: 'Aktueller Verbrauch', type: 'number', role: 'value', unit: 'W' }); createState(idAKTUELLE_ERZEUGUNG, 0, { name: 'Aktuelle Erzeugung', desc: 'Aktuelle Erzeugung', type: 'number', role: 'value', unit: 'W' }); // createState(idAKTUELLE_HEIZUNG, 0, { // name: 'Aktuelle Heizung', // desc: 'Aktuelle Heizung', // type: 'number', // role: 'value', // unit: 'W' // }); // Startet das Skript alle 2 Sekunden neu schedule("*/2 * * * * *", function() { readJson(url, function(err, json) { if (!err) { var wert1 = json.data[0].tuples[0][1]; var wert2 = json.data[1].tuples[0][1]; // var wert3 = json.data[2].tuples[0][1]; // Setzen der Werte in ioBroker // Man füllt die oben erzeugten Objekte jetzt mit den Werten setState(idAKTUELLER_VERBRAUCH, wert1); setState(idAKTUELLE_ERZEUGUNG, wert2); // setState(idAKTUELLE_HEIZUNG, wert3); } else { log("Fehler beim Auslesen des JSON fuer Volkszaehler. Keine Daten erhalten.", "warn"); } }); });
-
@negalein sagte: request durch httpGet oder axios zu ersetzen.
Lass Zeile 10 weg und ersetze Zeilen 12, 13 durch
httpGet(url, (err, response) => { if(!err) { const body = response.data;
Die Funktion liest nicht nur das JSON ein, sondern wandelt es auch in ein Objekt.
-
@paul53 sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
request durch httpGet oder axios zu ersetzen.
habs jetzt so geändert.
var url = "http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365"; var pfad = "Volkszaehler."; var idAKTUELLER_VERBRAUCH = pfad + "AKTUELLER_VERBRAUCH"; var idAKTUELLE_ERZEUGUNG = pfad + "AKTUELLE_LIEFERUNG"; // var idAKTUELLE_HEIZUNG = pfad + "AKTUELLE_HEIZUNG"; // Vorgegebene Funktion, die nur dazu dient, das JSON einzulesen // Angelehnt an: http://www.iobroker.net/docu/?page_id=3691 //var request = require("request"); function readJson(url, callback) { httpGet(url, (err, response) => { if(!err) { const body = response.data; var json = {}; if (body !== "") { try { json = JSON.parse(body); } catch (ex) { json = {}; } if (!json) { json = {}; } } callback(null, json); } else { var error = "(" + err + ") ERROR bei Abfrage von: " + url; log(error, "warn"); callback(error, null); } }); } // Erzeugen der Objekte in ioBroker createState(idAKTUELLER_VERBRAUCH, 0, { name: 'Aktueller Verbrauch', desc: 'Aktueller Verbrauch', type: 'number', role: 'value', unit: 'W' }); createState(idAKTUELLE_ERZEUGUNG, 0, { name: 'Aktuelle Erzeugung', desc: 'Aktuelle Erzeugung', type: 'number', role: 'value', unit: 'W' }); // createState(idAKTUELLE_HEIZUNG, 0, { // name: 'Aktuelle Heizung', // desc: 'Aktuelle Heizung', // type: 'number', // role: 'value', // unit: 'W' // }); // Startet das Skript alle 2 Sekunden neu schedule("*/2 * * * * *", function() { readJson(url, function(err, json) { if (!err) { var wert1 = json.data[0].tuples[0][1]; var wert2 = json.data[1].tuples[0][1]; // var wert3 = json.data[2].tuples[0][1]; // Setzen der Werte in ioBroker // Man füllt die oben erzeugten Objekte jetzt mit den Werten setState(idAKTUELLER_VERBRAUCH, wert1); setState(idAKTUELLE_ERZEUGUNG, wert2); // setState(idAKTUELLE_HEIZUNG, wert3); } else { log("Fehler beim Auslesen des JSON fuer Volkszaehler. Keine Daten erhalten.", "warn"); } }); });
Seitdem kommt immer
javascript.0 2024-05-21 22:00:04.003 warn script.js.common.Volkszaehler: Fehler beim Auslesen des JSON fuer Volkszaehler. Keine Daten erhalten. javascript.0 2024-05-21 22:00:04.003 warn script.js.common.Volkszaehler: (timeout of 2000ms exceeded) ERROR bei Abfrage von: http://10.0.1.93/middleware.php/data.json?from=now&uuid[]=bc3edcd0-24c4-11ea-b257-bdbd9553c516&uuid[]=deda8550-24c4-11ea-b402-275ee0956365
-
Rein zur Info. Vielleicht bringt das ja jemandem etwas
Hatte eine "request" Statusabfrage für ein 2 Kanal Shelly Relais in Blockly.
Habe die nun auf httpGet umgebaut.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="E[*Zo^$tgAM,^`rYg^])">kanal0</variable> <variable id="TQ)gbSh^wT5;8tF}T^nr">kanal1</variable> <variable id="dS7SBWx%D(:^gT-)AED1">response</variable> </variables> <block type="variables_set" id="s?@slMwdnK+,UEa?{1|c" x="138" y="-62"> <field name="VAR" id="E[*Zo^$tgAM,^`rYg^])">kanal0</field> <value name="VALUE"> <block type="text_join" id=";vat3UEcQWG?a+Bcf%[("> <mutation items="2"></mutation> <value name="ADD0"> <block type="get_value" id="_O~dp%pE-r6XZb/n+g,/"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Shelly_(Boilersteuerung)_IP_Adresse</field> </block> </value> <value name="ADD1"> <block type="text" id=";9%*x8:DvKn4Zr1[rpX4"> <field name="TEXT">/relay/0</field> </block> </value> </block> </value> <next> <block type="variables_set" id="u:=x,qNiiV.kHPx1mQUp"> <field name="VAR" id="TQ)gbSh^wT5;8tF}T^nr">kanal1</field> <value name="VALUE"> <block type="text_join" id="L`G9_Q4~#Wj)H~?%+j^t"> <mutation items="2"></mutation> <value name="ADD0"> <block type="get_value" id="b/ie;GOcmF(3vcM~Imhu"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Shelly_(Boilersteuerung)_IP_Adresse</field> </block> </value> <value name="ADD1"> <block type="text" id="`xl:v4wa7(m~J2oHj^ay"> <field name="TEXT">/relay/1</field> </block> </value> </block> </value> <next> <block type="schedule" id="Os$n~Pf|//l((B`LiMpv"> <field name="SCHEDULE">10 * * * * *</field> <statement name="STATEMENT"> <block type="http_get" id="eTyh=%eunC]8ho{Z4vlO"> <field name="TIMEOUT">2000</field> <field name="UNIT">ms</field> <field name="TYPE">text</field> <value name="URL"> <shadow type="text" id="[35arL4q*P_qtNi):l5H"> <field name="TEXT">http://</field> </shadow> <block type="variables_get" id="*[](iu^7hov;{JkB3L[0"> <field name="VAR" id="E[*Zo^$tgAM,^`rYg^])">kanal0</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="zvA`Um(v7L{n71nJf{yM"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Boiler_OG_(0)_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="SB#5wbEL^bwf%5h/h+@K"> <value name="PATH"> <shadow type="text" id="W4tzCjd7*0c8w2+f|j@S"> <field name="TEXT">data.ison</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="Z*xk#JW7EGF)0Wyr5sn4"> <field name="VAR" id="dS7SBWx%D(:^gT-)AED1">response</field> </block> </value> </block> </value> <next> <block type="debug" id="mVL(4bm-Y:}~?D6=?.NL" disabled="true"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="5UdI+a16i%{s:wlq1X]q"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="`x#N1!oziArCcey3/Z(@"> <value name="PATH"> <shadow type="text" id="_jb`1^PkZLv-b:ZQ)qNm"> <field name="TEXT">data.ison</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="/F~$0I}thMJ900NaYe-j"> <field name="VAR" id="dS7SBWx%D(:^gT-)AED1">response</field> </block> </value> </block> </value> </block> </next> </block> </statement> <next> <block type="http_get" id="Zn}GLtb{e^dt+$NODz=)"> <field name="TIMEOUT">2000</field> <field name="UNIT">ms</field> <field name="TYPE">text</field> <value name="URL"> <shadow type="text" id="IqhveZy7llAw)bU5EJ]["> <field name="TEXT">http://</field> </shadow> <block type="variables_get" id="c#$N_,}o#kE?^YY1%6|="> <field name="VAR" id="TQ)gbSh^wT5;8tF}T^nr">kanal1</field> </block> </value> <statement name="STATEMENT"> <block type="update" id=":ir}AMj5X`8@yNEA,s$c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Boiler_EG_(1)_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="?AW79Fmiu,jnO`rx^$t0"> <value name="PATH"> <shadow type="text" id="F%Lf#dE60sB[Coga^6Yz"> <field name="TEXT">data.ison</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="-_ii~1doIWAi}55O7]qV"> <field name="VAR" id="dS7SBWx%D(:^gT-)AED1">response</field> </block> </value> </block> </value> <next> <block type="debug" id="F$[alX?Xq;`cQe0s_yKI" disabled="true"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="5YG7`78f-Zph)R[VX)0M"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="MuksX?ZFb5e-HyJCkaJj"> <value name="PATH"> <shadow type="text" id="0Q@*AE];_d@%SN]QU)#K"> <field name="TEXT">data.ison</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="uUx0xQ;$8aeYI6Lk[wV*"> <field name="VAR" id="dS7SBWx%D(:^gT-)AED1">response</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </xml>
-
@djmarc75
Hallo,
ich nehme mal an es geht um dieses Blockly
https://forum.iobroker.net/topic/57207/adresse-aus-gps-koordinaten-ermitteln/16Ich hab es versucht umzubauen, aber habe leider funktionierende keine Lösung gefunden.
Kannst Du dein Blockly posten? -
-
@djmarc75
Jetzt wirds klarer - werde ich morgen dann mal nachbauen.
Danke -
@djmarc75 sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
@c1olli sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
Kannst Du dein Blockly posten?
Logo:
Es wäre für @c1olli sicher einfacher, wenn Du die xml vom Blockly posten würdest
-
@c1olli sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
mal nachbauen
Hier der Code:
Anzupassen sind natürlich die 4 Datenpunkte.
-
@spicer sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
Es wäre für @c1olli sicher einfacher, wenn Du die xml vom Blockly posten würdest
geht es um einfacher oder um Verstehen?
-
@homoran sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
@spicer sagte in [gelöst] Skript auf AXIOS/httpGet umbauen:
Es wäre für @c1olli sicher einfacher, wenn Du die xml vom Blockly posten würdest
geht es um einfacher oder um Verstehen?
Einfacher. So muss er das nicht alles selber bauen