NEWS
Screenshot aus DAFANG (hack) speichern
-
Hallo zusammen,
ich würde mir gerne aus meiner gehackten dafang Cam einen Screenshot per telegram zusenden lassen.
Leider bekomme ich aber kein Bild gespeichert, habe bisher folgende Lösungsansätze probiert:- Via Blockly und einem wget. Den Befehl habe ich natürlich erstmal in der SSH getestet und da bekomme ich leider folgende Antwort:
wget --output-document opt/iobroker/iobroker-data/files/vis.0/dafang.jpeg http://root:mypassword@192.168.xx.yy/cgi-bin/currentpic.cgi Verbindungsaufbau zu 192.168.xx.yy:80 ... verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 301 Moved Permanently Platz: https://192.168.xx.yy/cgi-bin/currentpic.cgi [folgend] --2020-04-02 16:09:28-- https://192.168.xx.yy/cgi-bin/currentpic.cgi Verbindungsaufbau zu 192.168.xx.yy:443 ... verbunden. FEHLER: Dem Zertifikat von ▒192.168.xx.yy▒ wird nicht vertraut. FEHLER: Das Zertifikat von ▒▒192.168.xx.yy▒▒ hat keinen bekannten Austeller. Der Zertifikat-Eigent▒mer passt nicht zum Hostname ▒192.168.xx.yy▒.
- mit einem Skript, welches ich gefunden habe:
var source_url = 'https://root:meinpq@192.168.x.y/cgi-bin/currentpic.cgi', dest_path = '/opt/iobroker/iobroker-data/files/vis.0/'; var request = require("request"); var fs = require('fs'); on({id: 'dein-Datenpunkt.0.XYZ', change: "any"}, function (obj) { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile('/tmp/' + 'Postbild.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); } }) }) // Bilder werden nach vis gespeichert const bild1 = fs.readFileSync('/tmp/Postbild.jpg'); writeFile('vis.0','/Postbild.jpg', bild1); });
Hier wird das Bild richtig angelegt, ist aber leer.
Hat jemand von euch schonmal erfolgreich Bild aus seiner dafang auf den iobroker gespeichert?
Danke im Voraus!
-
@baeri sagte in Screenshot aus DAFANG (hack) speichern:
FEHLER: Dem Zertifikat von ▒192.168.xx.yy▒ wird nicht vertraut
hier hilft die google suche
https://netzaffe.de/2015/03/01/ueberprfung-von-ssl-zertifikaten-bei-wget-und-curl-ignorieren.html -
Dankeschön,
habe google tagelang durchforstet, leider bin ich nicht auf das Schlagwort "Zertifikat ignorieren" o.ä. gekommen.
Leider klappt es immer noch nicht:wget --output-document opt/iobroker/iobroker-data/files/vis.0/dafang.jpeg http://root:ismart12@192.168.xx.yy/cgi-bin/currentpic.cgi --no-check-certificate --2020-04-03 12:25:48-- http://root:*password*@192.168.xx.yy/cgi-bin/currentpic.cgi Verbindungsaufbau zu 192.168.xx.yy:80 ... verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 301 Moved Permanently Platz: https://192.168.xx.yy/cgi-bin/currentpic.cgi [folgend] --2020-04-03 12:25:48-- https://192.168.xx.yy/cgi-bin/currentpic.cgi Verbindungsaufbau zu 192.168.xx.yy:443 ... verbunden. WARNUNG: Dem Zertifikat von ▒192.168.xx.yy▒ wird nicht vertraut. WARNUNG: Das Zertifikat von ▒▒192.168.xx.yy▒▒ hat keinen bekannten Austeller. Der Zertifikat-Eigent▒mer passt nicht zum Hostname ▒192.168.xx.yy▒. HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 401 Unauthorized Authentifizierung mit Benutzername/Passwort fehlgeschlagen.
Scheinbar funktioniert der Login so nicht...
-
@baeri
ich habe bei google lediglich wget eingegeben und die erste fehlermeldung 1:1 kopiertWARNUNG: Dem Zertifikat von ▒192.168.xx.yy▒ wird nicht vertraut.
-
I am sorry!
Danke dennoch für die Hilfestellung. Auch das mit dem Login klappt.
Laut SSH wurde das Bild gespeichert, auch wenn ich in SSH in den Ordner navigiere, sehe ich das Bild.
Im Dateimanager im VIS Editor sehe ich es allerdings nichtGleiches passiert, wenn ich das Bild über mein Blockly Skript speichern will. Im SSH sehe ich eine Datei, im Dateimanager nicht.
Edit: Senden via telegram geht aber komischerweise
-
Mittlerweile läuft es ganz gut, allerdings stehe ich noch vor 2 Problemen:
- Wieso sehe ich im Dateimanager der vis die abgelegte Datei nicht? Per ssh ist Sie zu sehen und sie kann auch per telegram versendet werden. Gibt's dazu ein Workaround, würde das gemachte Bild auch gerne für die VIS zur Verfügung haben.
Mein Skript hierzu ist:
wget --output-document /opt/iobroker/iobroker-data/files/vis.0/snapshot.jpeg --user root --password MEINPW http://192.168.xx.yy/cgi-bin/currentpic.cgi --no-check-certificate
- Der Link zum Stream lautet ja http://192.168.xx.yy/cgi-bin/currentpic.cgi.
Damit kann ich das Bild in meine VIS einbinden, voraussetzung ist aber, dass ich parallel mit dem Rechner auf der Seite eingeloggt bin. Möchte ich jetzt z.B. vom Tablet das Bild sehen, geht das leider nicht. Ich muss mich ja irgendwie mit dem Gerät einloggen.
Dieses Format hier funktioniert nicht: http://root:pw@192.168.xx.yy/cgi-bin/currentpic.cgi
Dieses auch nicht: http://192.168.xx.yy/cgi-bin/currentpic.cgi/control?key=1&user=root&pass=MEINPW
Ich nutze den Fully Browser in der Free Version, dort kommt auch beim Öffnen der Seite kein Popup mit der Anmeldeaufforderung.
Die Frage daher, wie ist es möglich username und pw im Link zu übermitteln?
Optional: Wie schalte ich die http Anmeldung ab? zB über einen SSH Befehl?Danke euch!
- Wieso sehe ich im Dateimanager der vis die abgelegte Datei nicht? Per ssh ist Sie zu sehen und sie kann auch per telegram versendet werden. Gibt's dazu ein Workaround, würde das gemachte Bild auch gerne für die VIS zur Verfügung haben.
-
Zur ersten Frage: Hast Du mal versucht, eine Datei mit dem Namen snapshot.jpg manuell im VIS Datei Manager hochzuladen und zu prüfen, ob diese dann in Dateimanager sichtbar ist? Danach die Datei mit dem Script updaten.
So funktioniert das bei mir mit einem Snapshot einer D-Link-Webcam. -
-
@baeri Bilder die mit Wget in den ioBroker geschrieben werden sind in der VIS so nicht nutzbar. Die müssen über writeFile in einen "offiziellen" Ordner im ioBroker verschoben werden.
Das Problem hatte ich damals mit meinem Klingelscript auch und hier
https://forum.iobroker.net/topic/29461/aufruf-welche-guten-javascripts-setzt-ihr-ein?page=1
kannst du sehen wie ich das dann (mit Hilfe aus dem Forum) verschoben habe. -
Danke euch, das mit dem Zwischenspeichern und dann verschieben hat geklappt!
Jetzt fehlt nur noch die Loginmöglichkeit für einen Stream
-
@baeri Stream mache ich über motioneye, da meine Kamera nur RSTP kann der in VIS so nicht nutzbar ist.
Ist vielleicht für dich auch eine Möglichkeit, da dann das Login über motioneye erfolgt.
Alternativ könnte auch der ONVIF Adapter klappen. Da habe ich aber keine Erfahrung dazu. -
Motioneye klingt interessant. Läuft das auf nem pi 4 4GB nebenher? Oder sollte man dafür besser einen eigenen Pi aufsetzen?
-
@baeri Auf dem Pi4 habe ich keine Erfahrung.
Mit einem Pi3 geht es definitiv nicht nebenher. Bei mir istder in einem Container auf einem NUC. Aber da recht unaufgeregt mit einer Kamera:
2 CPUs 50% ausgelastet
Speicher ca. 250 MB
Containergröße 16 GB -
Muss das Thema nochmal aufgreifen.
Ich speichere das Bild aus meiner Dafang in einem tmp Ordner zwischen und kopiere es dann in den vis0 Ordner.Das Skript funktioniert aber immer erst beim zweiten Triggern. Lasse mir u.a. das Bild direkt aus dem Temp Ordner per Telegram schicken, das Bild ist aber beim ersten Versuch immer 0 KB groß.
Ich vermute, dass die Dafang da evtl Login Probleme hat und dadurch ein leeres Bild angelegt wird.Kennt jemand diese Problematik? Und kann ich Sie nur umgehen, indem ich das automatisch zwei mal ausführen lasse oder gibt es da elegantere Abhilfe?
Danke im Voraus!
-
@baeri Du musst beim Trigger eine kleine Verzögerung einbauen bis das Bild gespeichert ist. Dann sollte das funktionieren.
-
Das habe ich natürlich. Aber das Bild bleibt 0 KB groß. Ich nehme an, dass der wget Befehl evtl zu schnell ist und er sich nicht richtig bei der Cam einloggt. Das ganze funktioniert immer nach einem zweiten Request.
Wenn ich dann einige Minuten keinen Request mehr gesendet habe, brauche ich wieder zwei.Gibt es eine einfache Möglichkeit die Bildgröße zu prüfen? Dann könnte ich abhängig davon immer einen zweiten Request schicken.
Oder gibt es einen Befehl, mir dem ich mich erstmal nur auf der Cam einloggen kann und erst nach einem kurzen Timer das Bild ziehe? -
Hey,
Ich habe Iobroker + Pivccu3 + Motioneye zusammen auf einem Raspi4 installiert, es läuft schon dreiviertel Jahr ohne Probleme und die Xiaofang + Dafang Kamera sind in Motioneye eingebunden. Insgesamt läuft es bei 5 fps und 3 Kameras stabil. So hat man immer jeweils einen Http Snapshot Pfad und auch einen Http Stream Link
Edit: das Problem bei dem Dafang Hack ist ja, dass der Aufruf zum Snapshot per Https erfolgt und auch PanTilt......
-
Danke für den Tipp.
Aber habe derzeit nur eine Cam, dafür will ich erstmal kein Motioneye aufsetzen.
Habe aktuell folgende Lösung:
Wenn es klingelt sende ich die erste Telegramnachricht "Es hat geklingelt" und speichere den Wert der absoult gesendeten Telegramnachrichten in zwei Variablen. Dann speichere ich das Bild und schicke es nach ein paar Sekunden via Telegram. Wenn das Bild korrupt bzw 0KB groß ist, verweigert der Telegram Adapter das Senden. Danach schreibe ich den aktuellen Wert des Nachrichtenzählers in eine der beiden Variablen. Demnach kann ich vor dem zweiten Sendeversuch prüfen, ob die beiden Variablen noch gleich sind und wenn das der Fall ist den zweiten Sendevorgang starten. Zur Sicherheit habe ich noch einen dritten Sendevorgang mit größeren Wartezeiten eingebaut. Wenn das auch nicht geht, kommt eine Fehlermeldung, aber aktuell funktioniert es beim zweiten Senden stabil und auch noch in einer angemessenen Zeit.Danke für eure Hilfe soweit!
-
Hallo, deine Lösung hört sich gut an. Da ich auch diese Kamera habe wäre
es möglich eine Kopie von deinem Blockly zu bekommen?
danke. -
na klar, schick mir mal ne PN