NEWS
Gelöst: Scriptumbau mit HttpGet...schon wieder
-
Moin
ich lese eifrig zum Thema HttpGet, doch leider klappt es nicht.
Ich will einer Kamera einen Snapshot abverlangen./*****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, 08.10.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 on({ id: idKlingel, change: "any" }, function (obj) { if (obj.state.val == true) { 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")); httpGet('http://192.168.178.124/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxxxxx', (err, reponse) => { if (err) { console.error(err); } else if (response.statusCode == 200) { const resObj = JSON.parse(response.data); writeFile("vis.0", "/klingelbild/Klingel.jpg", body); } } ); } }); //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***** "); });
Bitte um Unterstützung
Michael -
@michihorn sagte: Bitte um Unterstützung
Zeile 30:
body
? -
@paul53 Das ist ein Relikt aus dem HTTP Request und dem alten Adapter, sollte wohl jetzt "response.data" heissen, oder?
Die Kurzform sieht jetzt so aus und klappt.
const idKlingel = "ring.0.doorbell_90474299.Events.doorbell" on({ id: idKlingel, change: "any" }, function (obj) { if (obj.state.val == true) { httpGet('http://192.168.178.xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxx', { 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); } }); } });