NEWS
Neuer Javascript Adapter
-
Hallo bislang habe ich den JavaScript-Adapter kleiner Version 8 genutzt.
Habe aktuell auf einer Testmaschine den 8.8.3 installiert, nun kommt folgender Warnhinweis:javascript.0 22:30:48.991 info Stopping script script.js.HAUS.Klingel.Klingel_Haustuer javascript.0 22:30:49.096 info Start JavaScript script.js.HAUS.Klingel.Klingel_Haustuer (Javascript/js) javascript.0 22:30:49.135 warn script.js.HAUS.Klingel.Klingel_Haustuer: request package is deprecated - please use httpGet (or a stable lib like axios) instead! javascript.0 22:30:49.146 info script.js.HAUS.Klingel.Klingel_Haustuer: registered 2 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
Gruß
Michael
Da weiß ich nicht was ich ändern soll. Anbei hänge ich das Script./*****Haustür Klingel******************************************************************* ** August 2020 ** RING, Kamera ** ** Klingelsperre 80 Sekunden ** geä:21.09.20, 17.06.22, 20.10.22, 01.07.23; 18.07.23; 01.08.23, 06.10.23, 29.04.24 *****************************************************************************************/ const idKlingel = "ring.0.doorbell_90474299.Events.doorbell" const id_Ereignis = "0_userdata.0.Haus.Klingel.Ereignis" const id_Ereignisliste = "0_userdata.0.Haus.Klingel.Ereignisliste" const id_Zähler = "0_userdata.0.Haus.Klingel.Zaehler" const id_sperre = "0_userdata.0.Haus.Klingel.Sperre" const id_people = "0_userdata.0.System.CamNr" const id_rp5 = "ping.0.debianiob.RP5.alive" var anzahlbesucher var request = require('request'); var fs = require('fs'); on({ id: idKlingel, change: "any" }, function (obj) { //if ((obj.state.val == true) && getState(id_sperre).val == false && getState(id_people).val == 3){ if ((obj.state.val == true) && getState(id_sperre).val == false) { setState(id_sperre, true) setState(id_Zähler, getState(id_Zähler).val + 1); var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss"); setState(id_Ereignis, ereignis_text.toString()); log('Klingel Auslöser: ' + formatDate(new Date(obj.state.ts), "hh:mm:ss")); request({ url: "http://192.168.178.7xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/Klingel.jpg", body); } } ); } setStateDelayed(id_sperre, false, 80000) }); //Ereignisliste erstellen___________________________________________________________________________________________________ function ereignis(text) { text = text.toString(); var ereignisStr = getState(id_Ereignisliste).val; var ereignisArr; if (ereignisStr) { if (ereignisStr == "<ul><li></li></ul>") { ereignisArr = []; } else { ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>"); } } else { ereignisArr = []; } ereignisArr = ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str = ereignisArr.join("</li><li>"); setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>"); } on(id_Ereignis, function (data) { log('Ereignis ' + data.newState.val + ' übergeben'); ereignis(data.newState.val); }); //Ereignisse zurücksetzen on({ time: { hour: 23, minute: 59 } }, function () { setState(id_Zähler, 0); setState(id_Ereignis, ""); setState(id_Ereignisliste, ""); anzahlbesucher = 0; log("*****Klingelereignisse gelöscht***** "); });
So funktioniert es mit dem neuen Javascript-Adapter:
/*****Haustür Klingel****************************************************************************** ** August 2020 ** RING, Kamera ** ** ** geä:21.09.20, 17.06.22, 20.10.22, 01.07.23; 18.07.23; 01.08.23, 06.10.23, 29.04.24, 06.12.24 ***************************************************************************************************/ const idKlingel = "ring.0.doorbell_90474299.Events.doorbell" const id_Ereignis = "0_userdata.0.Haus.Klingel.Ereignis" const id_Ereignisliste = "0_userdata.0.Haus.Klingel.Ereignisliste" const id_Zähler = "0_userdata.0.Haus.Klingel.Zaehler" var anzahlbesucher on({ id: idKlingel, change: "any" }, function (obj) { if (obj.state.val == true) { setState(id_Zähler, getState(id_Zähler).val + 1); var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss"); setState(id_Ereignis, ereignis_text.toString()); httpGet('http://192.168.178.1xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxx', { responseType: 'arraybuffer' }, async (err, response) => { if (!err) { writeFile('vis.0', '/klingelbild/Klingel.jpg', response.data, (err) => { if (err) { console.error(err); } }); } else { console.error(err); } }); } }); function ereignis(text) { text = text.toString(); var ereignisStr = getState(id_Ereignisliste).val; var ereignisArr; if (ereignisStr) { if (ereignisStr == "<ul><li></li></ul>") { ereignisArr = []; } else { ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>"); } } else { ereignisArr = []; } ereignisArr = ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str = ereignisArr.join("</li><li>"); setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>"); } on(id_Ereignis, function (data) { log('Ereignis ' + data.newState.val + ' übergeben'); ereignis(data.newState.val); }); //Ereignisse zurücksetzen on({ time: { hour: 23, minute: 59 } }, function () { setState(id_Zähler, 0); setState(id_Ereignis, ""); setState(id_Ereignisliste, ""); anzahlbesucher = 0; log("*****Klingelereignisse gelöscht***** "); });
-
@michihorn
Bitte verwende die SUCHFUNKTION. Zur Deprecation von request gibts gefühlt 100 Beiträge.Und schau mal in die Dokumentation:
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/upgrade-guide.md#request-to-httpget