NEWS
Fehler: Bild via Telegram verschicken
-
Grüße,
ich musse leider mein System komplett neu aufsetzen. Seit dem funktioniert mein Script nicht mehr.
Hat jemand eine Idee, woran dies liegt?var source_url = 'http://10.0.20.10:81/image/Haustuer', dest_path = '/opt/iobroker/iobroker-data/files/_temp'; var request = require('request'); var fs = require('fs'); on({id: "doorbird.0.Doorbell.1.trigger"/*HM-Sen-DB-PCB PEQ0653647:1.PRESS_SHORT*/, val: true}, function (obj) { if (getState("vars.0.klingelfreigabe").val == true) { //doppelklingel verhindern setState("vars.0.klingelfreigabe"/*klingelfreigabe*/, false); setStateDelayed("vars.0.klingelfreigabe"/*klingelfreigabe*/, true, 40000, true); //fuer 10 sekunden sperren setTimeout(function(){ saveImage(); }, 2500); } //senden nach MILISEKDUNGEN }); function sendImage (pfad) { setTimeout(function() { setState("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, ''); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, 'camera=Haustuer&snapshot', 100, false); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, '', 150, false); //Bild wird auf dem Server gespeichert und danach leeren damit der es abspielt sendTo('telegram.0', "Türklingel:"); sendTo('telegram.0', pfad); sendTo('telegram', '/opt/iobroker/iobroker-data/files/doorbird.0/Doorbell1_1.jpg'); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image1.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image1.jpg'); } }); }); } -
Grüße,
ich musse leider mein System komplett neu aufsetzen. Seit dem funktioniert mein Script nicht mehr.
Hat jemand eine Idee, woran dies liegt?var source_url = 'http://10.0.20.10:81/image/Haustuer', dest_path = '/opt/iobroker/iobroker-data/files/_temp'; var request = require('request'); var fs = require('fs'); on({id: "doorbird.0.Doorbell.1.trigger"/*HM-Sen-DB-PCB PEQ0653647:1.PRESS_SHORT*/, val: true}, function (obj) { if (getState("vars.0.klingelfreigabe").val == true) { //doppelklingel verhindern setState("vars.0.klingelfreigabe"/*klingelfreigabe*/, false); setStateDelayed("vars.0.klingelfreigabe"/*klingelfreigabe*/, true, 40000, true); //fuer 10 sekunden sperren setTimeout(function(){ saveImage(); }, 2500); } //senden nach MILISEKDUNGEN }); function sendImage (pfad) { setTimeout(function() { setState("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, ''); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, 'camera=Haustuer&snapshot', 100, false); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, '', 150, false); //Bild wird auf dem Server gespeichert und danach leeren damit der es abspielt sendTo('telegram.0', "Türklingel:"); sendTo('telegram.0', pfad); sendTo('telegram', '/opt/iobroker/iobroker-data/files/doorbird.0/Doorbell1_1.jpg'); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image1.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image1.jpg'); } }); }); }@t1m0 Nicht manuell nach files schreiben… Nimm irgendein anderes Verzeichnis. Und request am besten auch direkt loswerden
-
Grüße,
ich musse leider mein System komplett neu aufsetzen. Seit dem funktioniert mein Script nicht mehr.
Hat jemand eine Idee, woran dies liegt?var source_url = 'http://10.0.20.10:81/image/Haustuer', dest_path = '/opt/iobroker/iobroker-data/files/_temp'; var request = require('request'); var fs = require('fs'); on({id: "doorbird.0.Doorbell.1.trigger"/*HM-Sen-DB-PCB PEQ0653647:1.PRESS_SHORT*/, val: true}, function (obj) { if (getState("vars.0.klingelfreigabe").val == true) { //doppelklingel verhindern setState("vars.0.klingelfreigabe"/*klingelfreigabe*/, false); setStateDelayed("vars.0.klingelfreigabe"/*klingelfreigabe*/, true, 40000, true); //fuer 10 sekunden sperren setTimeout(function(){ saveImage(); }, 2500); } //senden nach MILISEKDUNGEN }); function sendImage (pfad) { setTimeout(function() { setState("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, ''); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, 'camera=Haustuer&snapshot', 100, false); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, '', 150, false); //Bild wird auf dem Server gespeichert und danach leeren damit der es abspielt sendTo('telegram.0', "Türklingel:"); sendTo('telegram.0', pfad); sendTo('telegram', '/opt/iobroker/iobroker-data/files/doorbird.0/Doorbell1_1.jpg'); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image1.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image1.jpg'); } }); }); }@t1m0 ,
hier mit "axios" und das Verzeichnis "/opt/iobroker/snapshots" habe ich mit "mkdir" manuell erzeugt.const fs = require('fs'); const axios = require('axios'); const camUrl = 'http://192.168.1.116:5000/api/doorbell/latest.jpg?h=600'; var snap = ''; var bell = true; async function sendImage() { const writer = fs.createWriteStream(snap); try { const response = await axios({ url: camUrl, method: 'get', responseType: 'stream' }) response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve => { sendTo('telegram.0', {text: snap, caption: 'Jemand klingelt an der Haustür !!!'}); sendTo("email", { to: "tuerklingel@gmx.net", subject: "Message from ioBroker", text: "Jemand klingelt an der Haustür !!!", attachments: [{path: snap}] }); }); }); } catch (err) { console.log('Kamera hat ein problem'); } } on({id: "mqtt.0.piface.input.DoorBell_1", val: true}, function (obj) { if (bell) { snap = '/opt/iobroker/snapshots/snap_' + formatDate(obj.state.lc, 'TT.MM.JJJJ_hh:mm:ss') + '.jpg'; sendImage(); } bell = false; setTimeout(function() { bell = true; }, 120000); }); -
@t1m0 Nicht manuell nach files schreiben… Nimm irgendein anderes Verzeichnis. Und request am besten auch direkt loswerden
Vielen Dank euch beiden!
Script läuft wieder. Jedoch bekomme ich noch ein paar Fehlermeldungen :/javascript.0 2024-07-07 22:49:38.285 warn script.js.test2: setForeignState(id=mqtt.0.BlueIris.admin, state={"val":"","ack":false,"ts":1720385378285,"q":0,"from":"system.adapter.javascript.0","lc":1720385378285,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist javascript.0 2024-07-07 22:49:38.235 warn script.js.test2: setForeignState(id=mqtt.0.BlueIris.admin, state={"val":"camera=Haustuer&snapshot","ack":false,"ts":1720385378235,"q":0,"from":"system.adapter.javascript.0","lc":1720385378235,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist javascript.0 2024-07-07 22:49:38.135 warn script.js.test2: setForeignState(id=mqtt.0.BlueIris.admin, state={"val":"","ack":false,"ts":1720385378135,"q":0,"from":"system.adapter.javascript.0","lc":1720385378135,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist javascript.0 2024-07-07 22:49:35.440 warn script.js.test2: setForeignState(id=vars.0.klingelfreigabe, state={"val":false,"ack":false,"ts":1720385375440,"q":0,"from":"system.adapter.javascript.0","lc":1720385375440,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv istSo sieht das Script bei mir nun aus:
const fs = require('fs'); const axios = require('axios'); const camUrl = 'http://10.0.20.10:81/image/Haustuer'; var snap = '/opt/iobroker/snapshots/snap.jpg'; async function sendImage() { const writer = fs.createWriteStream(snap); try { const response = await axios({ url: camUrl, method: 'get', responseType: 'stream' }) response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve => { setState("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, ''); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, 'camera=Haustuer&snapshot', 100, false); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, '', 150, false); //Bild wird auf dem Server gespeichert und danach leeren damit der es abspielt sendTo('telegram.0', "Türklingel:"); sendTo('telegram.0', {text: snap, caption: ''}); sendTo('telegram', '/opt/iobroker/iobroker-data/files/doorbird.0/Doorbell1_1.jpg'); }); }); } catch (err) { console.log('Kamera hat ein problem'); } } on({id: "doorbird.0.Doorbell.1.trigger"/*HM-Sen-DB-PCB PEQ0653647:1.PRESS_SHORT*/, val: true}, function (obj) { if (getState("vars.0.klingelfreigabe").val == true) { //doppelklingel verhindern setState("vars.0.klingelfreigabe"/*klingelfreigabe*/, false); setStateDelayed("vars.0.klingelfreigabe"/*klingelfreigabe*/, true, 40000, true); //fuer 10 sekunden sperren setTimeout(function(){ sendImage(); }, 2500); } //senden nach MILISEKDUNGEN }); -
Vielen Dank euch beiden!
Script läuft wieder. Jedoch bekomme ich noch ein paar Fehlermeldungen :/javascript.0 2024-07-07 22:49:38.285 warn script.js.test2: setForeignState(id=mqtt.0.BlueIris.admin, state={"val":"","ack":false,"ts":1720385378285,"q":0,"from":"system.adapter.javascript.0","lc":1720385378285,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist javascript.0 2024-07-07 22:49:38.235 warn script.js.test2: setForeignState(id=mqtt.0.BlueIris.admin, state={"val":"camera=Haustuer&snapshot","ack":false,"ts":1720385378235,"q":0,"from":"system.adapter.javascript.0","lc":1720385378235,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist javascript.0 2024-07-07 22:49:38.135 warn script.js.test2: setForeignState(id=mqtt.0.BlueIris.admin, state={"val":"","ack":false,"ts":1720385378135,"q":0,"from":"system.adapter.javascript.0","lc":1720385378135,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist javascript.0 2024-07-07 22:49:35.440 warn script.js.test2: setForeignState(id=vars.0.klingelfreigabe, state={"val":false,"ack":false,"ts":1720385375440,"q":0,"from":"system.adapter.javascript.0","lc":1720385375440,"c":"script.js.test2"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv istSo sieht das Script bei mir nun aus:
const fs = require('fs'); const axios = require('axios'); const camUrl = 'http://10.0.20.10:81/image/Haustuer'; var snap = '/opt/iobroker/snapshots/snap.jpg'; async function sendImage() { const writer = fs.createWriteStream(snap); try { const response = await axios({ url: camUrl, method: 'get', responseType: 'stream' }) response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve => { setState("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, ''); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, 'camera=Haustuer&snapshot', 100, false); setStateDelayed("mqtt.0.BlueIris.admin"/*BlueIris/admin/*/, '', 150, false); //Bild wird auf dem Server gespeichert und danach leeren damit der es abspielt sendTo('telegram.0', "Türklingel:"); sendTo('telegram.0', {text: snap, caption: ''}); sendTo('telegram', '/opt/iobroker/iobroker-data/files/doorbird.0/Doorbell1_1.jpg'); }); }); } catch (err) { console.log('Kamera hat ein problem'); } } on({id: "doorbird.0.Doorbell.1.trigger"/*HM-Sen-DB-PCB PEQ0653647:1.PRESS_SHORT*/, val: true}, function (obj) { if (getState("vars.0.klingelfreigabe").val == true) { //doppelklingel verhindern setState("vars.0.klingelfreigabe"/*klingelfreigabe*/, false); setStateDelayed("vars.0.klingelfreigabe"/*klingelfreigabe*/, true, 40000, true); //fuer 10 sekunden sperren setTimeout(function(){ sendImage(); }, 2500); } //senden nach MILISEKDUNGEN });@t1m0 Mach den Debug-Modus im Script aus… (oben rechts)
-
@t1m0 Mach den Debug-Modus im Script aus… (oben rechts)
@haus-automatisierung
danke!
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