NEWS
Reolink RLC-820A Kamera Snapshot
-
@surfer09 Also bei mir gibt er aktuell nur den Text /tmp/KameraHaustuer.jpg bei Telegram aus
Mein IOBroker läuft auf Windows, hat es damit etwas zu tun??
-
@surfer09 bestimmt.
Es muss den Befehl
wget
geben - denn kann man auch für Windows finden. wichtig wäre das du es entweder so ablegst das im Suchpfad ist (in einer Eingabeaufforderung muss er den Befehl finden) oder du musst vor dem Befehl den ganzen Pfad angeben (C:\tools\wget
)
Hier gibt es das zum Beispiel: https://gnuwin32.sourceforge.net/packages/wget.htmUnd was unter Windows
C:
ist, ist unter Linux/
Du müsstest also einen Ordner anlegen / wählen den es unter Windows gibt, also statt/tmp/...
C:\Temp\KameraHaustuer.jpg
Am besten testest du den Befehl vorher einmal trocken in der Eingabeaufforderung und übernimmst ihn dann nach ioBroker/Blockly
-
@bananajoe Danke für die Info! Habe das wget jetzt unter I:\wget installiert.
Jetzt führt er zwar den Befehl aus, speichert auch eine jpg-Datei, die aber defekt ist. -
Habe das Problem gerade gefunden. Die http://192.168.1.135/cgi-bin.... muss innerhalb " " stehen.
Unter der Eingabeaufforderung unter Windows funktioniert der Snapshot, in Blockly funktioniert es nicht.
Beide Befehle funktionierten in der Eingabeaufforderung unter Windows, aber nicht unter Blockly
start I:\wget\bin\wget.exe --output-document I:\tmp\Test33.jpg "http://192.168.1.135/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=r4578hgzta35hfuet&user=admin&password=12345678"
I:\wget\bin>wget.exe --output-document I:\tmp\Test33.jpg "http://192.168.1.135/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=r4578hgzta35hfuet&user=admin&password=12345678"
-
@surfer09 dann Trick 17: Schreibe den Aufruf in eine Batch-Datei, also eine Text-Datei die auf
.cmd
oder.bat
endet und starte statt dessen diese über Blockly.Ich vermute aber ein Berechtigungsproblem, lösche die Bilddatei mal von Hand bevor du das Blockly ausführst und stelle sicher das alle in dem Verzeichnis schreiben dürfen. Bei
C:\Temp
wäre ich mir sicher, beiI:\Temp
nicht.Unter welchem Benutzer läuft denn der Dienst von ioBroker? Dieser Benutzer muss die nötigen Lese- und Schreibrechte Rechte auf das Verzeichnis haben wo das Bild hinsoll. Und Muss natürlich auf
wget
lesend zugreifen können. -
@bananajoe
Ja, das wäre jetzt auch meine nächste Idee gewesen. Schade, dass es so nicht funktioniert.
Der Dienst läuft unter "Lokales Systemkonto"
I:\tmp Vollzugriff vergeben
Selbst wenn ich in dem Bildordner die entsprechende Datei hinterlege bekomme ich über Telegram nur den hinterlegten Pfad als Text geschickt..
-
@surfer09 sagte in Reolink RLC-820A Kamera Snapshot:
Selbst wenn ich in dem Bildordner die entsprechende Datei hinterlege bekomme ich über Telegram nur den hinterlegten Pfad als Text geschickt..
das müsste man noch mal extra austüfteln wie da die Schreibweise für den Pfad ist ...
Wenn erI:\Temp\bild.jpg
nicht mal testen mal mitI:/Temp/bild.jpg
Vielleicht gibt die Beschreibung / Anleitung des Adapters auch etwas her
-
Falls du dich doch für ein normales Javascript entscheidest:
var request = require('request'); var fs = require('fs'); var bell = true; var snap = ''; function sendImage() { request.get({url: 'http://192.168.1.135/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=12345678&width=640&height=480', encoding: 'binary'}, function (err, response, body) { fs.writeFile(snap, body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.0', {text: snap, caption: 'Test !!!'}); } }); }); } on({id: "mqtt.0.piface.input.DoorBell_4", 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); });
Habe ich eben mit einer Reolink 810A getestet.
Der Ordner "/opt/iobroker/snapshots" muss vorhanden sein oder dein frei wählbaren Ordner eintragen und dein Auslöser (mqtt.0.piface.input.DoorBell_4) musst du noch eintragen.
In dem Ordner sind dann auch alle Snapshots mit Datum/Zeit gespeichert. -
@bananajoe Die Varianten habe ich auch schon alle ausgetestet. Das funktioniert leider nicht.
-
@wal Danke! Ich hab's gerade mal getestet, meine Daten angepasst leider funktioniert das auch nicht. Nicht wundern, zum Testen habe ich die Variable "Besuch ist da" hinterlegt, die ich manuell schalten kann.
var request = require('request'); var fs = require('fs'); var bell = true; var snap = ''; function sendImage() { request.get({url: 'http://192.168.1.135/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=12345678&width=640&height=480', encoding: 'binary'}, function (err, response, body) { fs.writeFile(snap, body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.2', {text: snap, caption: 'Test !!!'}); } }); }); } on({id: "0_userdata.0.Besuch-ist-da", val: true}, function (obj) { if (bell) { snap = 'I:tmp/Haustuer_' + formatDate(obj.state.lc, 'TT.MM.JJJJ_hh:mm:ss') + '.jpg'; sendImage(); } bell = false; setTimeout(function() { bell = true; }, 120000); });
Das Verzeichnis I:\tmp habe ich angelegt mit Vollzugriff für "Jeder".
-
@surfer09 sagte in Reolink RLC-820A Kamera Snapshot:
snap = 'I:tmp/Haustuer_'
Ist das ein Kopierfehler, da es snap = 'I:\tmp\Haustuer_' lauten sollte ?
evtl. auchsnap = 'I:\\tmp\\Haustuer_
testen
-
@wal Leider hat das auch keinen Erfolg gebracht. Es scheint unter Windows echt schwierig zu sein.
Ich habe beide Varianten jetzt ausgetestet:snap = 'I:\\tmp\\Haustuer_
und
snap = 'I:\tmp\Haustuer_
Er legt nich einmal einen Screenshot in das Verzeichnis ab. Mit der http-Adresse kann es aber nichts zu tun haben, der Aufruf funktioniert.
-
Ich hab's jetzt mit einer anderen Lösung hinbekommen. Über diesen Weg mit dem Skript funktioniert es nun bei mir.