ioBroker / AdapterRequests

This Place is used to track the status of new Adapter-Requests.
248 stars 36 forks source link

Reolink Kamera Adapter #596

Closed smartsourcefreak closed 1 year ago

smartsourcefreak commented 3 years ago

Hi.

Es wäre großartig, einen Adapter für die Kameras von Reolink zu haben. Reolink stellt auf der homepage nur minimale api-Fukntionalität zur Verfügung siehe hier

Es scheint jedoch verschiedene Projekte zu geben, welche in Abstimmung mit Reolink zumindest einen vollfunktionalen api-access per python umgesetzt haben. Leider fehlen mir die Programmierkenntnisse um die Kameras von Reolink über python einzubinden.

OpenHAB scheint hier schon etwas weiter mit der Implementierung zu sein, zumindest in deren Forum ist einiges mehr dazu zu finden als hier beim ioBroker.

Einfache Funktionen wie ScreenShot über URL Abfrage oder Video-Capturing per ffmpeg wurde hier ja schon mehrfach diskutiert und lässt sich auch manuell umsetzten, per adapter wäre natürlich viel einfacher und schöner. Sehr interessant wäre die auch Ansteuerung der Preset-Postionen und das generelle Steuern der Kameras welche über PTZ (Pan/Tilt/Zoom) steuerbar sind. Zudem Blockly Triggering duch Kamera Kamera Bewegungserkennung. Gerne auch das Setzen von Kameraeinstellungen wie Nachtsicht an/aus oder framerate. Je mehr Funktionalität, desto besser. Zumal es für ioBroker m.M.n. noch nicht so viel Kameraspezifisches gibt.

Und ich bin bestimmt nicht der einzige, dem die Reolink Kameras doch generell sehr brauchbar erscheinen!

Vielen Dank im voraus!

smartsourcefreak commented 3 years ago

+1

smartsourcefreak commented 3 years ago

Bei mir wäre es vor allem die Reolink E1 Zoom, welche eine Indoor PTZ IP-Cam ist. Zum anderen noch die RLC-410w, eine fest angebrachte Outdoor IP-Cam ohne PTZ.

loemic87 commented 3 years ago

Ich würde mich auch sehr über einen Adapter freuen. Ich betreibe 4x RLC-410-5MP.

nukleuz80 commented 3 years ago

Das wäre wirklich Klasse! RLC-410w

michihorni commented 2 years ago

Ich schließe mich an, habe 4 Kameras RLC-410W

Bi3m3r commented 2 years ago

Hallo, ich würde mich auch dem Interesse Anschließen. Besonders Interesse habe ich an der Kombination von Bewegungserkennung & Blockly.

Habe 3x RLC-810A (8MP PoE), diese binde ich derzeit ganz einfach über URL ScreenShot in Vis ein.

Peet1985 commented 2 years ago

Hallo,

ich hätte auch interesse. Vorallem die Benachrichtigung bei Objekterkennung wäre genial.

Gruß Peet

rowdy238 commented 2 years ago

Hi,

schließe mich hier auch an.

Habe aktuell 3 reolink Kameras. Go RLC-410W RLC-811A

Demnächst kommt noch ne Reolink Duo PoE dazu.

Grüße Rowdy

Goersch commented 2 years ago

ich häng mich auch dran - habe eine RLC-511WA. Objekterkennung, schalten des Spots und aktivierung/deaktivierung der Objekterkennung wäre für mich interessant.

ghost commented 2 years ago

Habe auch seit Gestern die RLC-511WA und teste gerade die Reolink API. Ausser einem erfolgreichen Login komme ich da aber nicht weiter, da es scheinbar keine Dokumentation der Kommandos gibt. Habe da mal ein Issue eröffnet. Schaut euch mal das an: https://github.com/fwestenberg/reolink/blob/main/reolink/camera_api.py Hört sich vielverspechend an, aber ich habe keinerlei Ahnung, wie man das gebraucht oder installiert. Habt ihr eine Idee? Mir käme es darauf an, Aufzeichnungen zu starten, manuell akkustischen und optischen (Flashlight) Alarm auszulösen. Zudem wäre es nicht schlecht, einen Stream in*.mp4 aufzuzeichnen.

janwilke commented 2 years ago

+1

rowdy238 commented 2 years ago

Gibt es hier irgendwelche Neuigkeiten? Wäre auch bereit ne Kamera "zu Testwecken" zeitweise zur Verfügung zu stellen.

Goersch commented 2 years ago

Ich könnte ebenfalls eine Kamera für Testzwecke zur Verfügung stellen.

inpex commented 2 years ago

Hallo, könntet Ihr vielleicht ein paar Ideen sammeln was genau der Adapter können soll. Vielleicht lasse ich mich dazu breitschlagen an der Entwicklung mitzuwirken.

Liebe Grüße

nukleuz80 commented 2 years ago

Das hört sich gut an 👍

Bewegungserkennung und deren Einstellungen wie Sensitivität wären aus meiner Sicht sehr wichtig.

ghost commented 2 years ago

Also bei meiner RLC-511WA wäre es cool, Aufnahmen zu starten (Aufzeichnung auf SD-Card mit wählbarer Länge), Flashlight Ein/Aus, Sirene Ein/Aus. Ein direkter Stream für die VIS wäre genial. Das mache im Moment über einen Umweg mit MotionEye über Docker. Unter Python ist es kein Problem einen Stream zu programmieren, verstehe nicht, wieso das für ioBroker so ein Problem ist, RTSP Streams direkt in die VIS einzubauen. Glaube bei HomeAssistant gibt es ein Pendant, da könnte man mal rüberschauen. Habe allerdings keinen HA und bleibe lieber bei meinem geliebten ioBroker. Hoffe das was geht. Gruß

Goersch commented 2 years ago

Hi, mir würde ein Flag "Objektbewegung" erkannt reichen, sowie den Spot/die Sirene ein-/ausschalten zu können.

HTPC-Schrauber commented 2 years ago

Es gibt auch eine rudimentäre API-Dokumentation direkt von Reolink: https://support.reolink.com/hc/en-us/articles/900000625763-What-is-CGI-API

Laut dem Dokument kann man Videos in verschiedenen Varianten abgreifen. Man kann nach Aufnahmen suchen. Man kann Snapshots machen. Und man kann scheinbar den Status der Bewegungserkennung abfragen.

Ausprobieren kann ich das nicht, da ich (noch) kein System von Reolink habe.

Diginix commented 2 years ago

Motion Status abfragen geht. aber eben pollen. Das müsste man für Echtzeit dann sekündlich, was ordentlich Traffic erzeugt. Die Ausgabe bei meinen 2 unterschiedlichen Reolink Kameras sieht dann so aus: [ { "cmd" : "GetMdState", "code" : 0, "value" : { "state" : 0 } } ]

Mir fehlt für meine RLC-423 die PTZ Steuerung. Das geht mWn leider per CGI nicht. Man muss dazu aktiv eine Session erzeugen.

Uwe1984 commented 2 years ago

Ich wäre auch froh wenn jemand einen Adapter erstellt und bin gerne bereit zu testen

jarvisde commented 2 years ago

habe auch großes interesse an einem Adapter

AtomicIX commented 2 years ago

Hallo, Ich hätte auch großes Interesse. Besitze: 2x RLC520 2x RLC510 1x RLC811A Interessante Funktionen wären: Aufzeichnung starten Bewegung erkennen Sirene Auslösen

Sectorchan commented 2 years ago

+1

Bei Bewegungserkennung ein Script ausführen wäre eine TOP sache!

Jade64 commented 2 years ago

Die Idee ist top. Habe auch mehrere Reolinks. Gerne auch mit Anschluss an Videoanalysierer (TensorFlow). +1

Farmer-cb commented 2 years ago

mir wäre die PTZ-Steuerung am wichtigsten

+1

blackfalcon87 commented 2 years ago

+1

mir wäre ebenfalls PTZ am wichtigsten. Das wäre echt klasse wenn das gehen würde

Kiter1988 commented 1 year ago

+1

RLC-810A

Diginix commented 1 year ago

Habe das eben noch gefunden: https://www.reddit.com/r/reolinkcam/comments/rd847e/reolink_camera_api_user_guide_dec10_2021/ Dort verlinkt ein Reolink Mitarbeiter ein Worddokument mit ggf. interessanten API Infos: Link to the Reolink Camera API User Guide: https://drive.google.com/drive/folders/19vQBJia0wKvzwscA-EpTDSFV5OfNYUL6

PTZ Pos ansteuern klappt mit CURL so:

curl -d '[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"PASS"}}},{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":32,"id":1}}]' IP:PORT/api.cgi?cmd=Login&cmd=PtzCtrl&token=1640dd95bcac9f2

PASS, IP, PORT müssen angepasst werden

ghost commented 1 year ago

So wie ich das verstehe, muss zuerst mittels eines Login ein Token geholt werden. Dieses ist bei meiner RLC-511WA nur einige Sekunden gültig. Folgender Code zum holen des User funktioniert bei mir in JavaScript:

var fetch = require('node-fetch');

exec('curl -d \'[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"mypass"}}}]\' 192.168.178.xx/api.cgi?cmd=Login', async function (error, result, stderr) {

var json = JSON.parse(result.toString()); var url = 'http://192.168.178.xx/api.cgi?cmd=GetUser&token=' + json[0].value.Token.name; fetch(url).then(function(response) { return response.json(); }).then(function(data) { log(data); }).catch(function() { log("Error"); }); });

Exec holt das Token. Fetch liefert ein Json-Object (data), welches die gefragten Daten enthält. Arbeite daran, etwas sinnvolleres herauszuholen.

ghost commented 1 year ago

So, die Recherche hat sich für mich gelohnt. Meine Anforderungen sind damit schon weitgehend erfüllt. Aber vielleicht findet sich ja doch noch jemand, der einen Adapter bastelt.

Flash LED Ein: exec('curl -d \'[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"xxxx"}}},{"cmd": "SetWhiteLed", "param": { "WhiteLed": { "bright": 20, "channel": 0, "mode" : 3, "state": 1 }}}]\' 192.168.178.xx/api.cgi?cmd=Login', async function (error, result, stderr) { }); Aus: exec('curl -d \'[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"xxxx"}}},{"cmd": "SetWhiteLed", "param": { "WhiteLed": { "bright": 20, "channel": 0, "mode" : 0, "state": 0 }}}]\' 192.168.178.xx/api.cgi?cmd=Login', async function (error, result, stderr) { var json = JSON.parse(result.toString()); log(json[1].value.rspCode); //bei Erfolg = 200 }); Sirene Ein: exec('curl -d \'[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"xxxx"}}},{"cmd": "AudioAlarmPlay", "action": 0, "param": {"alarm_mode": "manul", "manual_switch": 1, "times": 1, "channel": 0 }}]\' 192.168.178.xx/api.cgi?cmd=Login', async function (error, result, stderr) { }); Aus: exec('curl -d \'[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"xxxx"}}},{"cmd": "AudioAlarmPlay", "action": 0, "param": {"alarm_mode": "manul", "manual_switch": 0, "times": 1, "channel": 0 }}]\' 192.168.178.xx/api.cgi?cmd=Login', async function (error, result, stderr) { var json = JSON.parse(result.toString()); log(json[1].value.rspCode); //bei Erfolg = 200 }); User und Pass, sowie die IP der Cam müssen angepasst werden. Der Port ist standard 80 und muss nicht angegeben werden - sofern er nicht in den Netzwerkeinstellungen der Cam verändert wurde. Wer z.B. PTZ steuern will, muss das zweite JSON-Object (cmd: usw.) gegen ein entsprechendes Object tauschen. Dazu bitte in der API nachschauen, da steht alles drin(Link von @Diginix).

Dank an @Diginix, ohne deinen Link zur API Anleitung hätte ich nicht mehr nachgesehen!

Wäre nett wenn man hier neue Erkenntnisse teilen könnte!

Goersch commented 1 year ago

Sehr cool - danke, das wird mir auch helfen 👍

aendue commented 1 year ago

Hallo, ich habe mit der Entwicklung eines Adapters angefangen. Zur Zeit habe ich nur die Abfrage von Kamera Informationen (Allgemein und Netzwerk) und der Motion Detention eingebaut. (Habe leider nur eine RLC510A). Wäre super, wenn das jemand testen könnte und mir eine Rückmeldung geben könnte.

https://github.com/aendue/ioBroker.reolink

Danke und viele Grüße

Peet1985 commented 1 year ago

Hallo, ich habe mit der Entwicklung eines Adapters angefangen. Zur Zeit habe ich nur die Abfrage von Kamera Informationen (Allgemein und Netzwerk) und der Motion Detention eingebaut. (Habe leider nur eine RLC510A). Wäre super, wenn das jemand testen könnte und mir eine Rückmeldung geben könnte.

https://github.com/aendue/ioBroker.reolink

Danke und viele Grüße

Hallo

Ich habe deinen Adapter mit einer RLC-520A getestet, habe auch als Voreinstellung die 510A drin gelassen, sind ja eigenlich die gleichen Kameras.

Der Adapter funktioniert super. Schade nur, dass man den Motion Detection im Interval abfragen muss und das er nicht gepusht wird aber das liegt an Reolink selbst. Ich habe jetzt den Interval auf 5s, für meine zwecke reicht das völlig aus.

Vielen Dank für deine Arbeit

Gruß Peet

aendue commented 1 year ago

Hallo, ich habe mit der Entwicklung eines Adapters angefangen. Zur Zeit habe ich nur die Abfrage von Kamera Informationen (Allgemein und Netzwerk) und der Motion Detention eingebaut. (Habe leider nur eine RLC510A). Wäre super, wenn das jemand testen könnte und mir eine Rückmeldung geben könnte. https://github.com/aendue/ioBroker.reolink Danke und viele Grüße

Hallo

Ich habe deinen Adapter mit einer RLC-520A getestet, habe auch als Voreinstellung die 510A drin gelassen, sind ja eigenlich die gleichen Kameras.

Der Adapter funktioniert super. Schade nur, dass man den Motion Detection im Interval abfragen muss und das er nicht gepusht wird aber das liegt an Reolink selbst. Ich habe jetzt den Interval auf 5s, für meine zwecke reicht das völlig aus.

Vielen Dank für deine Arbeit

Gruß Peet

Super, vielen Dank fürs testen. Ja du hast recht, leider geht die Abfrage nicht anders. Ich habe festgestellt, das bei einer bekannten Bewegung der Status für circa 30 Sekunden auf 1 springt.

Den aktuellen Adapter würde ich gerne noch ausbauen. Bin daher für Verbesserungsvorschläge und weiteren Integrationsvorschlägen dankbar^^.

Diginix commented 1 year ago

Habe ihn noch nicht installiert, allein schon weil ich "Motion" nicht brauche und blindes zyklischen Pollen im Netzwerk auch nicht so mag. Für mich wäre toll wenn ich den Alarmzeitplan meiner RLC-822a und RLC-423 dynamisch steuern könnte. Bei Abwesenheit jeden Tag 24 Stunden und bei Anwesenheit nur zu vordefinierten Zeiten in der Nacht. Bisher habe ich dazu aber bei Reolink gar nichts gefunden. Bei Instar geht das per mqtt und CGI super bequem. Nur leider habe ich auch 2 Reolink Kameras.

PTZ Pos. kann ich mittlerweile mit curl, wie oben geschrieben, steuern. Das könnte sicher auch in den Adapter, falls nicht schon geschehen.

Peet1985 commented 1 year ago

Hallo, ich habe mit der Entwicklung eines Adapters angefangen. Zur Zeit habe ich nur die Abfrage von Kamera Informationen (Allgemein und Netzwerk) und der Motion Detention eingebaut. (Habe leider nur eine RLC510A). Wäre super, wenn das jemand testen könnte und mir eine Rückmeldung geben könnte. https://github.com/aendue/ioBroker.reolink Danke und viele Grüße

Hallo Ich habe deinen Adapter mit einer RLC-520A getestet, habe auch als Voreinstellung die 510A drin gelassen, sind ja eigenlich die gleichen Kameras. Der Adapter funktioniert super. Schade nur, dass man den Motion Detection im Interval abfragen muss und das er nicht gepusht wird aber das liegt an Reolink selbst. Ich habe jetzt den Interval auf 5s, für meine zwecke reicht das völlig aus. Vielen Dank für deine Arbeit Gruß Peet

Super, vielen Dank fürs testen. Ja du hast recht, leider geht die Abfrage nicht anders. Ich habe festgestellt, das bei einer bekannten Bewegung der Status für circa 30 Sekunden auf 1 springt.

Den aktuellen Adapter würde ich gerne noch ausbauen. Bin daher für Verbesserungsvorschläge und weiteren Integrationsvorschlägen dankbar^^

Hallo,

heute ist mir aufgefallen, dass Motion unabhängig meiner, in der Kamera vergebenen, Filter und Bereiche anschlägt. Ich habe die Kamera zur Straße hin montiert und es wird eigentlich nur eine Bewegung gemeldet wenn sich eine Person auf meinem Grundstück bewegt, Autos und Tiere lösen die Bewegung nicht aus. Heute wurde aber immer Motion ausgelößt wenn ein Auto auf der Straße vorbei gefahren ist oder wenn ein Busch im Wind geschwankt hat. Kann es sein, dass hier die KI zur Personerkennung nicht mit berücksichtigt wird?

Gruß Peet

aendue commented 1 year ago

Habe ihn noch nicht installiert, allein schon weil ich "Motion" nicht brauche und blindes zyklischen Pollen im Netzwerk auch nicht so mag. Für mich wäre toll wenn ich den Alarmzeitplan meiner RLC-822a und RLC-423 dynamisch steuern könnte. Bei Abwesenheit jeden Tag 24 Stunden und bei Anwesenheit nur zu vordefinierten Zeiten in der Nacht. Bisher habe ich dazu aber bei Reolink gar nichts gefunden. Bei Instar geht das per mqtt und CGI super bequem. Nur leider habe ich auch 2 Reolink Kameras.

PTZ Pos. kann ich mittlerweile mit curl, wie oben geschrieben, steuern. Das könnte sicher auch in den Adapter, falls nicht schon geschehen.

Hallo, PTZ könnte ich mir mal anschauen...kann es aber leider nicht testen, weil die RLC510 kein PTZ unterstützt. Wie stellst du dir das mit dem Alarmzeitplan vor? Möchtest du das im Adapter konfigurieren und den Abwesenheitsstatus von einem anderen Adapter beziehen?

Diginix commented 1 year ago

Mir würde es reichen wenn der Zeitplan, wie auch immer codiert, in ein Objekt geschrieben wird oder ich gleich mit einem API request das ganze in meinem Skript löse ganz ohne Adapter. Bei Kameras mit umfangreicher CGI API braucht man ja auch kein Adapter sondern nutzt die Kommandos direkt in den Skripten. Wenn du herausfindest wie man den Alarmzeitplan per GET oder POST ändern kann, würde mir diese Info allein schon reichen.

aendue commented 1 year ago

Hallo, ich habe mit der Entwicklung eines Adapters angefangen. Zur Zeit habe ich nur die Abfrage von Kamera Informationen (Allgemein und Netzwerk) und der Motion Detention eingebaut. (Habe leider nur eine RLC510A). Wäre super, wenn das jemand testen könnte und mir eine Rückmeldung geben könnte. https://github.com/aendue/ioBroker.reolink Danke und viele Grüße

Hallo Ich habe deinen Adapter mit einer RLC-520A getestet, habe auch als Voreinstellung die 510A drin gelassen, sind ja eigenlich die gleichen Kameras. Der Adapter funktioniert super. Schade nur, dass man den Motion Detection im Interval abfragen muss und das er nicht gepusht wird aber das liegt an Reolink selbst. Ich habe jetzt den Interval auf 5s, für meine zwecke reicht das völlig aus. Vielen Dank für deine Arbeit Gruß Peet

Super, vielen Dank fürs testen. Ja du hast recht, leider geht die Abfrage nicht anders. Ich habe festgestellt, das bei einer bekannten Bewegung der Status für circa 30 Sekunden auf 1 springt. Den aktuellen Adapter würde ich gerne noch ausbauen. Bin daher für Verbesserungsvorschläge und weiteren Integrationsvorschlägen dankbar^^

Hallo,

heute ist mir aufgefallen, dass Motion unabhängig meiner, in der Kamera vergebenen, Filter und Bereiche anschlägt. Ich habe die Kamera zur Straße hin montiert und es wird eigentlich nur eine Bewegung gemeldet wenn sich eine Person auf meinem Grundstück bewegt, Autos und Tiere lösen die Bewegung nicht aus. Heute wurde aber immer Motion ausgelößt wenn ein Auto auf der Straße vorbei gefahren ist oder wenn ein Busch im Wind geschwankt hat. Kann es sein, dass hier die KI zur Personerkennung nicht mit berücksichtigt wird?

Gruß Peet

Hallo, hab mir nochmal die API Doku angeschaut...da gibt es leider nur eine Abfrage für Motion Detection...könnte mir aber auch vorstellen das die Doku unvollständig ist und es da noch andere Befehle gibt.

nukleuz80 commented 1 year ago

Hey @aendue,

danke erst einmal für deine Arbeit mit dem Adapter... Ich habe ihn installiert und eingerichtet - Datenpunkte werden erstellt und mit richtigen Daten beschrieben.

Die Bewegungserkennung scheint auch zu funktionieren - das werde ich testen/im Auge behalten...

Weiterhin wäre es super die Motion-Sensitivity einzustellen: grafik

Ist das möglich?

Danke und Grüße

EDIT: Ich nutze eine RLC-410W Könntest du die Rolle (Role) noch ändern in: sensor.motion/motion? grafik

aendue commented 1 year ago

Hey @aendue,

danke erst einmal für deine Arbeit mit dem Adapter... Ich habe ihn installiert und eingerichtet - Datenpunkte werden erstellt und mit richtigen Daten beschrieben.

Die Bewegungserkennung scheint auch zu funktionieren - das werde ich testen/im Auge behalten...

Weiterhin wäre es super die Motion-Sensitivity einzustellen: grafik

Ist das möglich?

Danke und Grüße

EDIT: Ich nutze eine RLC-410W Könntest du die Rolle (Role) noch ändern in: sensor.motion/motion? grafik

Hallo, danke fürs testen. Die Rolle passe ich noch an.

aendue commented 1 year ago

Ich hab im Forum ein Topic eröffnet: https://forum.iobroker.net/topic/56116/neuer-adapter-reolink-kamera

Bitte zu dem Adapter im Forum posten. Danke!