AdapterRequests icon indicating copy to clipboard operation
AdapterRequests copied to clipboard

Reolink Kamera Adapter

Open smartsourcefreak opened this issue 3 years ago • 42 comments

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 avatar Mar 18 '21 21:03 smartsourcefreak

+1

smartsourcefreak avatar Mar 18 '21 21:03 smartsourcefreak

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.

smartsourcefreak avatar Mar 18 '21 22:03 smartsourcefreak

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

loemic87 avatar Mar 20 '21 07:03 loemic87

Das wäre wirklich Klasse! RLC-410w

nukleuz80 avatar Apr 05 '21 18:04 nukleuz80

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

michihorni avatar Jul 02 '21 09:07 michihorni

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.

Bi3m3r avatar Aug 19 '21 08:08 Bi3m3r

Hallo,

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

Gruß Peet

Peet1985 avatar Sep 23 '21 07:09 Peet1985

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

rowdy238 avatar Oct 25 '21 10:10 rowdy238

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.

Goersch avatar Nov 24 '21 20:11 Goersch

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.

ghost avatar Nov 27 '21 09:11 ghost

+1

janwilke avatar Dec 09 '21 11:12 janwilke

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

rowdy238 avatar Dec 26 '21 09:12 rowdy238

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

Goersch avatar Dec 26 '21 13:12 Goersch

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

inpex avatar Jan 05 '22 17:01 inpex

Das hört sich gut an 👍

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

nukleuz80 avatar Jan 05 '22 18:01 nukleuz80

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ß

ghost avatar Jan 06 '22 16:01 ghost

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

Goersch avatar Jan 06 '22 17:01 Goersch

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.

HTPC-Schrauber avatar Feb 01 '22 10:02 HTPC-Schrauber

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.

Diginix avatar Feb 01 '22 10:02 Diginix

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

Uwe1984 avatar Feb 20 '22 20:02 Uwe1984

habe auch großes interesse an einem Adapter

jarvisde avatar Feb 24 '22 11:02 jarvisde

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

AtomicIX avatar Apr 13 '22 20:04 AtomicIX

+1

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

Sectorchan avatar Apr 17 '22 18:04 Sectorchan

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

Jade64 avatar Apr 29 '22 14:04 Jade64

mir wäre die PTZ-Steuerung am wichtigsten

+1

Farmer-cb avatar May 02 '22 05:05 Farmer-cb

+1

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

blackfalcon87 avatar May 12 '22 10:05 blackfalcon87

+1

RLC-810A

Kiter1988 avatar Jun 02 '22 09:06 Kiter1988

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

Diginix avatar Jun 14 '22 08:06 Diginix

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 avatar Jun 18 '22 05:06 ghost

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!

ghost avatar Jun 18 '22 20:06 ghost