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 :ok_woman: danke!