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 -
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? -
@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); } }); } });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden