Reolink IP Cam Post-Data Befehl

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Stefan67
Beiträge: 4
Registriert: 26.05.2022, 11:21
System: CCU

Reolink IP Cam Post-Data Befehl

Beitrag von Stefan67 » 26.05.2022, 17:32

Hallo Community,

ein Neuling braucht Hilfe!

Homematic CCu3:
ich möchte gerne per Script die Auto Tracking Funktion der IP Kamera Reolink RLC-823A Ein und ausschalten.

Request URL:
string url="'http://192.168.3.44:2244/api.cgi?cmd=Se ... rd=5xxxxx8'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);

bis hierhin funktioniert es,
aber wie kann ich den dazugehörige POST-Data Befehl anhängen und wie sollte der Script-CODE aussehen?

[{
"cmd": "SetAiCfg",
"action": 0,
"param": {
"aiTrack": 0,
"trackType": {},
"AiDetectType": {
"people": 1,
"vehicle": 1,
"dog_cat": 1,
"face": 0
},
"channel": 0
}
}]

Danke
Gruß
Stefan
Dateianhänge
Data example.jpg
Auto Tracking Funktion: aiTrack: für Ein und ausschalten
Reolink Post Data.JPG
API command

roland90427
Beiträge: 19
Registriert: 01.08.2016, 19:57
Wohnort: Durmersheim
Danksagung erhalten: 3 Mal

Re: Reolink IP Cam Post-Data Befehl

Beitrag von roland90427 » 15.06.2022, 12:45

Hallo Stefan,

ich bin gerade mit meiner Reolink RLC-511WA am (fast) gleichen Problem.

So wie Du es machst weiss ich nicht, ob das überhaupt zu realisieren ist: Als erstes muss ein Login an die Cam gesendet werden und die gibt im Positiv-Fall einen Token zurück. Alle weiteren Commands an die Cam müssen diesen Token beinhalten.

Ich habe dafür ein bash-Script welches das alles macht. Das Script läuft bereits unter Debian und das muss ich noch auf meinen Raspberry PI (piVccu3) portieren und testen. Aber ich brauche noch ein paar Tage, dann werde ich die Lösung und das Script veröffentlichen.

Hier mal als Vorgeschmack die Aufrufe für einen GetDevInfo der Cam:

Code: Alles auswählen

2022-06-15 12:31:59 ... ./reolink.sh check
/usr/local/addons/cuxd/curl -m 5 -kfsSL -H 'Content-Type:application/json' -d [{"cmd":"Login","action":0,"param":{"User":{"userName":"XXXXX","password":"YYYYYY"}}}] -X POST https://x.y.z.X/cgi-bin/api.cgi?cmd=Login&token=null
2022-06-15 12:32:00 ... cmd=Login ok, token returned: 982e1af5e1b704e
/usr/local/addons/cuxd/curl -m 5 -kfsSL -H 'Content-Type:application/json' -d [{"cmd":"GetDevInfo","action":0,"param":{}}] -X POST https://x.y.z.X/cgi-bin/api.cgi?cmd=GetDevInfo&token=982e1af5e1b704e
2022-06-15 12:32:01 --> Camera 'Camera Terrasse' online
/usr/local/addons/cuxd/curl -m 5 -kfsSL -H 'Content-Type:application/json' -d [{"cmd":"Logout","action":0,"param":{}}] -X POST https://x.y.z.X/cgi-bin/api.cgi?cmd=Logout&token=982e1af5e1b704e
2022-06-15 12:32:01 ... Logout ok
Roland
Dateianhänge
reolink.log.txt
(826 Bytes) 58-mal heruntergeladen

Stefan67
Beiträge: 4
Registriert: 26.05.2022, 11:21
System: CCU

Re: Reolink IP Cam Post-Data Befehl

Beitrag von Stefan67 » 21.06.2022, 09:45

Hallo Roland,

Danke für deine Antwort.
Für die PTZ Steuerung braucht man ein Token, aber für die Auto Tracking Funktion um sie ein und auszuschalten ist kein Token notwendig.
Ich habe schon sehr viele Scripte ausprobiert, aber alle haben nicht funktioniert.

Zum Beispiel:

curl -s -k -X POST -H "Content-Type : application/json" -d "[{\"cmd\":\"SetAiCfg\",\"action\":0,\"param\":{\"aiTrack\":0,\"trackType\": {},\"AiDetectType\":{\"people\":1,\"vehicle\":1,\"dog_cat\":1,\"face\":0},{\"channel\":0,}}]" "https://192.168.1.21:2221/cgi-bin/api.c ... ord=passwd";
dom.GetObject("CUxD.CUX2801002:2.CMD_EXEC").State("wget -q -O - "#url);


Error 1 at row 1 col 13 near ^ -k -X POST -H "Content-Type : application/json" -d "[{\"cmd\":\"SetAiCfg\",\"ac
Parse following code failed:
curl -s -k -X POST -H "Content-Type : application/json" -d "[{\"cmd\":\"SetAiCfg\",\"action\":0,\"param\":{\"aiTrack\":0,\"trackType\": {},\"AiDetectType\":{\"people\":1,\"vehicle\":1,\"dog_cat\":1,\"face\":0},{\"channel\":0,}}]" "https://192.168.1.21:2221/cgi-bin/api.c ... ord=passwd";
dom.GetObject("CUxD.CUX2801002:2.CMD_EXEC").State("wget -q -O - "#u


Gruß
Stefan

roland90427
Beiträge: 19
Registriert: 01.08.2016, 19:57
Wohnort: Durmersheim
Danksagung erhalten: 3 Mal

Re: Reolink IP Cam Post-Data Befehl

Beitrag von roland90427 » 21.06.2022, 10:02

Hallo Stefan,

das Problem bei Dir scheinen die Quotes/Double Quotes zu sein, mit denen Cuxd beim Aufruf nicht umgehen kann. Weiterhin hatte ich ein Problemchen mit

Code: Alles auswählen

-H 'Content-Type:application/json'
welches ich ohne Leerstellen schreiben musste.

Benutzt Du einen Raspi oder eine CCU2/3 ? Versuche mal von der Kommandozeile den curl-Cmd abzusetzen - falls bei dir möglich.

Viele Grüße
Roland

Stefan67
Beiträge: 4
Registriert: 26.05.2022, 11:21
System: CCU

Re: Reolink IP Cam Post-Data Befehl

Beitrag von Stefan67 » 22.06.2022, 09:42

Hallo Roland,

ich habe eine CCu3,
hab’s nochmals getestet, leider ohne Erfolg.

Ich habe den Support von Reolink angeschrieben und mein Problem geschildert,
des Weiteren habe ich eine Anfrage gestartet, die CGI Commands zu vereinfachen ohne Token wie bei Foscam oder INSTAR Kameras.

Gruß
Stefan

roland90427
Beiträge: 19
Registriert: 01.08.2016, 19:57
Wohnort: Durmersheim
Danksagung erhalten: 3 Mal

Re: Reolink IP Cam Post-Data Befehl

Beitrag von roland90427 » 22.06.2022, 11:35

Hallo Stefan,

wie ich in diversen Foren gelesen habe, kommt man mit Putty auch auf die CCU3 Kommandozeile. Dort kannst Du mal den Login-Cmd (von oben) per curl ausprobieren. Wenn der funktioniert, dann sollten auch Shell-Scripts (kein Bash, nur sh!) laufen, die unter /usr/local/addons/xxx liegen.

Dann ist es gerade egal ob der SetAiCfg einen Login-Token braucht oder nicht. Ich vermute mal stark, daß deinem Wunsch für SetAiCfg ohne Login-Token von Reolink nicht entsprochen wird. Weil die API's ein defacto-Standart von einigen oder sehr vielen Cam-Herstellern sind.

siehe dazu die Doku unter https://www.domoticz.com/forum/download ... f32e31435e

Meine Intension zur Steuerung der Camera ist, daß alle Funktionen aktiv sind, wenn wir abwesend sind. bzw. während der Nacht bei Anwesenheit. Ansonsten wollen wir keine Emails, Aufzeichnungen, Pushs o.ä. wenn wir anwesend sind und in den Überwachungsbereich der Camera(s) reinlaufen.

Dies habe ich mit den API's SetRecV20, SetFtpV20, SetPushV20, SetEmailV20 bislang realisiert indem über HomeMatic per Shell-Script die Funktionen jeweils enabled/disabled wurden. Aber Deine Idee mit den SetAiCfg ist eleganter, sofern sie so funktioniert wie ich das brauche.

Hier der relevante Auszug für "value" von GetAiCfg:

"value" : {
"AiDetectType" : {
"dog_cat" : 1,
"face" : 1,
"people" : 1,
"vehicle" : 1

},
"aiTrack" : 0,
"channel" : 0,
"trackType" : {
"dog_cat" : 0,
"face" : 0,
"people" : 1,
"vehicle" : 0

}

Ich bin mir nicht sicher, ob unter "AiDetectType" alle relevanten Arten immer aktiv (1) sein müssen und die relevanten Arten unter "trackType" entweder aktiv (1) bzw. inaktiv (0) gesetzt werden müssen. Und ob "aiTrack" dementsprechend auch auf 1 oder 0?

Vielleicht hast Du da mehr Infos als ich. Ich teste mal damit.

Viele Grüße
Roland

roland90427
Beiträge: 19
Registriert: 01.08.2016, 19:57
Wohnort: Durmersheim
Danksagung erhalten: 3 Mal

Re: Reolink IP Cam Post-Data Befehl

Beitrag von roland90427 » 21.07.2022, 13:57

Hallo Stefan,

meine Doku ist verfügbar unter viewtopic.php?f=19&t=74888

Viele Grüße
Roland

DarkGhost95
Beiträge: 362
Registriert: 13.02.2020, 07:56
System: CCU
Hat sich bedankt: 28 Mal
Danksagung erhalten: 3 Mal

Re: Reolink IP Cam Post-Data Befehl

Beitrag von DarkGhost95 » 06.12.2022, 10:58

Hallo, ich habe nochmal eine Frage dazu.
Ich will mir auch eine Reolink kaufen und habe eine CCU3 im Einsatz und steuere Sobald die Alarmanlage an ist mehrere Instar kamera einfach dann das die Bereiche aktiv geschaltet werden.
Gibt es hier so ein Script auch was bei den Reolink funktioniert?

roland90427
Beiträge: 19
Registriert: 01.08.2016, 19:57
Wohnort: Durmersheim
Danksagung erhalten: 3 Mal

Re: Reolink IP Cam Post-Data Befehl

Beitrag von roland90427 » 06.12.2022, 12:51

Hallo,

ja gibt es - siehe in meinem Post vor deiner Frage den Link. Du solltest dir aber nur eine der 2 getesteten Reolinks zulegen, ansonsten musst du selbst basteln und das ist zeitaufwendig.

adxenom
Beiträge: 24
Registriert: 01.04.2018, 17:16
System: CCU
Wohnort: Aalen

Re: Reolink IP Cam Post-Data Befehl

Beitrag von adxenom » 28.12.2022, 21:17

Hallo,

habe mir eine Reolink RLC-523WA zugelegt.

Alle API Befehle lassen sich direkt ueber ein Homematic-Script ansteuern, ohne auf ein Shell-Script zurueckgreifen zu muessen. Ein Token ist nicht erforderlich.

Nachfolgend eine Sammlung einiger Kamera-Befehle, welche ich in meiner CCU3 Haussteuerung verwendet habe. Diese koennt Ihr in Homematic-Scripte integrieren, um bspw. beim Betaetigen der Tuerklingel einen Kamera-Snapshot an Pushover geschickt zu bekommen, oder um Kamerapositionen anzufahren.

!Reolink RLC-523WA, Firmware v3.1.0.1387_22100631_v1.0.0.30
!Autotracking:
var cmd=0; !Hinweis: 1=ein, 0=aus
var par="[{\"cmd\":\"SetAiCfg\",\"action\":0,\"param\":{\"aiTrack\":1,\"bSmartTrack\":"#cmd#",\"trackType\":{\"people\":1,\"vehicle\":0,\"dog_cat\":0,\"face\":0},\"channel\":0}}]";
var ip="<DEINEKAMERAIP192.168.xxx.xxx>";
var usr="<DEINKAMERAUSERNAME>";
var pw="<DEINKAMERAPASSWORT>";
system.Exec("curl -m 3 -s POST \"http://"#ip#"/cgi-bin/api.cgi?user="#usr#"&password="#pw#"\" -d '"#par#"'");

!PTZ Positionen anfahren
var pos=2;
var par="[{\"cmd\":\"PtzCtrl\",\"action\":0,\"param\":{\"channel\":0,\"op\":\"ToPos\",\"speed\":64,\"id\":"#pos#"}}]";
var ip="<DEINEKAMERAIP192.168.xxx.xxx>";
var usr="<DEINKAMERAUSERNAME>";
var pw="<DEINKAMERAPASSWORT>";
system.Exec("curl -m 3 -s POST \"http://"#ip#"/cgi-bin/api.cgi?user="#usr#"&password="#pw#"\" -d '"#par#"'");

!Alarm manuell ein/aus
var cmd=1; !Hinweis: 1=ein, 0=aus
var par="[{\"cmd\":\"AudioAlarmPlay\",\"action\":0,\"param\":{\"alarm_mode\":\"manul\",\"manual_switch\":"#cmd#",\"times\":1,\"channel\":0}}]";
var ip="<DEINEKAMERAIP192.168.xxx.xxx>";
var usr="<DEINKAMERAUSERNAME>";
var pw="<DEINKAMERAPASSWORT>";
system.Exec("curl -m 3 -s POST \"http://"#ip#"/cgi-bin/api.cgi?user="#usr#"&password="#pw#"\" -d '"#par#"'");

!Alarm Anzahl Alarmzyklen
var cmd=2; !Hinweis: 1 Zyklus entspricht ca. 1 Sekunde
var par="[{\"cmd\":\"AudioAlarmPlay\",\"action\":0,\"param\":{\"alarm_mode\":\"times\",\"manual_switch\":0,\"times\":"#cmd#",\"channel\":0}}]";
var ip="<DEINEKAMERAIP192.168.xxx.xxx>";
var usr="<DEINKAMERAUSERNAME>";
var pw="<DEINKAMERAPASSWORT>";
system.Exec("curl -m 3 -s POST \"http://"#ip#"/cgi-bin/api.cgi?user="#usr#"&password="#pw#"\" -d '"#par#"'");

!Snapshot an Pushover
var ip="<DEINEKAMERAIP192.168.xxx.xxx>";
var usr="<DEINKAMERAUSERNAME>";
var pw="<DEINKAMERAPASSWORT>";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -O /tmp/reolink.jpg 'http://"#ip#"/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=123456>&user="#usr#"&password="#pw#"'");
var message = system.Date("%d.%m.%y")#" - "#system.Date("%H:%M:%S");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -F token=<DEINPUSHOVERTOKEN> -F user=<DEINPUSHOVERUSER> -F title='Snapshot' -F message='"#message#"' -F attachment=@'/tmp/reolink.jpg' -F priority=-1 https://api.pushover.net/1/messages.json", 2000);

Nach dem gleichen Muster koennt Ihr alle anderen in der API Docu beschriebenen Befehle umsetzen, bspw. um Push- oder Email-Benachrichtigung bei Anwesendheit aus- und wieder einzuschalten.

Die Reolink Camera API User Guide kann hier heruntergeladen werden: https://community.reolink.com/topic/419 ... -sept-2022

Bei Bedarf koennen die API Befehle hier gestestet werden: https://www.postman.com/

Beispiel einer Pushover-Kamera-Snapshot-Meldung, hier ausgeloest durch unsere Katze:
Screenshot_20221228_210517_Pushover.jpg
Gruss,
Alexander

Antworten

Zurück zu „HomeMatic allgemein“