NEWS
[gelöst] Reolink IPcam PTZ Presets
-
Hallo,
Ich habe eine Reolink IPcam und möchte zeitgesteuert die PTZ Presets ansteuern.
Im ipcamtalk wurde berichtet dass es mit folgenden Zeilen funktionieren soll:
var url="http://192.168.AAA.BBB/cgi-bin/api.cgi?cmd=PtzCtrl&token=849ed76fc1f37fe"; var json=[{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":32,"id":1}}];
Wie kann ich das in ein Java Script einbringen. Die beiden Zeilen alleine reichen scheinbar nicht.
(Habe keine Ahnung von Java Programmierung)
Grüsse
Andi
-
Ich hab auch keine Ahnung aber das sind ja nur Variablen. Also die legen einen Zustand fest auf den man dann zugreifen kann.
Schau dir mal blockly an, da kannst du immer noch mal selbst was machen.
Und was genau willst du denn machen?
Kamera bei bestimmter Zeit nach oben stellen usw.?
Ich habe auch reolink Kameras, nur keine ptz.
Also beim Live Bild könnte ich dir weiter helfen…
-
Moin Lutzer,
Ich will die Positionen zeit gesteuert anfahren. Die Kamera ist so positioniert dass mehrere Bereiche abgedeckt werden können.
Wie hast du die Live Bild Darstellung denn realisiert?
Mit den CGI Befehlen von Reolink (habe ich in den FAQ gefunden) oder selber was in Blockly gebastelt?
Evtl. kann ich ja aus deinem Beispiel was für mich bauen…
Grüße
Andi
-
Sorry das erst so spät antworte, hatte selbst noch was probiert.
IP und Zugang anpassen, versteht sich ja.
Was geht ist ein Standbild:
Snap URL:''http://192.168.2.119/cgi-bin/api.cgi?cm … ord=123456''
Das öffnent der VLC Player:
rtsp://admin:123456@192.168.2.23:554//h264Preview_01_main
Also das Standbild bekomme ich in der Vis angezeigt, nur das Video halt nicht.
Reolink selbst beschreibt das so:
Preview URL:rtmp://192.168.2.119/bcs/channel0_main.bcs?channel=0&stream=0&user=admin&password=123456
https://reolink.com/wp-content/uploads/ ... -v1.61.pdf
-
Servus Grobi79,
auf welchem Betriebssystem hast Du den IoBroker laufen?
Wenn Linux, dann teste bitte mittels CURL und der PTZ URL ob Du ein Preset anfahren kannst.
Mittels Script sollte das aber auch mittels Request gehen… hier unser Beispiel:
on({id: 'javascript.0.Werkstatt.Kameraposition', val: 1}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; try { require("request")('http://camera.eichelbrunn.com/cgi-bin/hi3510/ptzgotopoint.cgi?-point=1').on("error", function () {console.error(e);}); } catch (e) { console.error(e); } });
Herzliche Grüße
Equilora aka Harald
-
Hallo,
der läuft bei mir auf einem Raspberry mit Stretch.
Curl scheint ein guter Ansatz zu sein, leider fehlt mir da einiges an Erfahrung.
Ich schaffe es nicht die login Daten vernüftig zu übergeben:
curl http://192.168.0.21/cgi-bin/api.cgi?cmd=Login&token=null&user=admin&password=abcdefg [1] 17076 [2] 17077 [3] 17078 pi@All-In-One_RasPi:~ $ [ { "cmd" : "Login", "code" : 1, "error" : { "detail" : "login failed", "rspCode" : -7 } } ] ^C [1] Fertig curl http://192.168.0.21/cgi-bin/api.cgi?cmd=Login [2]- Fertig token=null [3]+ Fertig user=admin
Ich müsste die Login Daten in folgender Form übergeben:
[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"abcdefg"}}}]
Ich bekomme den korrekten Syntax nicht auf die Reihe. Kannst du mir da nochmal einen Tip geben?
Grüße
Andi
-
Servus Grobi79,
ist grad ein wenig Blindflug…..
Kannst Du bitte Kameramodell und Firmwareversion der Reolink hier mal posten?
Das würde helfen den Befehlssatz zu finden - Danke!
Herzliche Grüße
Equilora aka Harald
-
Hallo Harald,
ich habe die ReoLink C1-Pro (Firmware v2.0.0.1288_18020705)
In folgenden Beitrag ist sehr schön beschrieben wie man die Kommandos herausfindet:
https://ipcamtalk.com/threads/control-r … api.16815/
(Beitrag von Lord Business)
Ich kann das nur nicht richtig umsetzen was da geschrieben steht.
Grüße
Andi
-
Servus Andi,
der Reolink Support was die API angeht ist wohl Fox Alpha (Für den Popo), mal sehen was ich morgen erreiche bei denen direkt.
Bis auf weiteres sollte der CURL Aufruf so aussehen…..
curl -d '[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":""}}},{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ZoomInc","speed":32}}]' 101.101.187.102/api.cgi?cmd=Login
Anmerkung: Direkt auf der Command Line und natürlich die IP anpassen, sowie username und password
Bitte nicht ungeduldig werden, manche Hersteller brauchen etwas länger.
Herzliche Grüße
Equilora aka Harald
-
Hallo Harald,
Super, vielen Dank!!
Das hat prima funktioniert, ich habe den Befehl noch ein wenig angepasst, jetzt kann ich die Presets ansteuern
curl -d '[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":""}}},{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":32,"id":1}}]' 192.168.0.21/api.cgi?cmd=Login&cmd=PtzCtrl&token=1640dd95bcac9f2
Den Befehl führe ich zeitgesteuert per Blockly aus.
Ich bin mir nur unsicher wie lange der (generierte) Token gültig ist, werde ich sehen.
Super Support hier im Forum!!
Grüße
Andi
-
Servus Andi,
gut das es funktioniert, dann bitte [gelöst] vor dem Threadtitel einfügen.
Herzliche Grüße
Harald aka Equilora
-
Servus Andi,
Reolink hat noch nicht geantwortet, was ich auch sehen kann sind die eher sparsam mit den Infos zur CGI und PTZ Doku.
Betreffend dem Token, nach Angaben anderer Plattformhersteller kann da auch immer was aus Gross- Kleinbuchstaben samt Zahlensalat besteht reingeschrieben werden, das scheint auch zeitlich nicht begrenzt zu sein in der aktuellen Reolink Firmware.
Sollte sich bei kommenden Updates der Firmware was ändern gibt es 2 Möglichkeiten.
1. Du generierst Dosenfutter beim Scripstart mit einer Random Funktion und übergibst diese im Request mit (z.B einer Variablen), das ganze wird mittels Scheduler immer wieder neu aufgerufen, dabei entspricht das Zeitplanfenster der Lebenszeit eines Tokens.
2. Sollte der Hersteller auf einem auf dem Endgerät generiereten Token bestehen, kannst Du das mittels dem Parser Adapter und einer Regex vor Scriptstart erledigen.
Wir machen das hier mit unterschiedlichen Videosurvillance Plattformen, welche einen Zugriffs Token fordern.
Bis dahin viel Erfolg und ich melde mich sobald Reolink sich meldet bei uns.
Herzliche Grüße
Equilora aka Harald
-
@grobi79 Hallo Andi!
Ich weiss, dein Posting ist bereits sehr alt und ich hoffe, ich erreiche dich trotzdem irgendwie.
Ich möchte GENAU dasselbe wie du - meine Reolink RLC-423 Presets per CURL/HTTP anstossen.
Bräuchte das für HomeBridge um bei Bewegung in einer Zone die Cams dorthin auszurichten - ein TRACKING quasi.
Leider schaffe ich es nicht - ich erhalte nach dem curl-command immer einer "please login first"
Es würde mich freuen, wenn wir darüber kommunizieren könnten. Auch gerne per Email. mario@ottakring.com.
Viele Grüsse und Danke sehr, falls du dir dafür Zeit nehmen möchtest.
Mario -
Hallo Leute,
Ich stehe aktuell gerade vor dem gleichen Problem allerdings mit meiner RLC-823A PTZ Kamera von Reolink.
Ich hab versucht den Curl Befehl in meinem Iobroker in der Console auszuführen aber leider funktioniert es nicht wie gewünscht und ich erhalte diese Fehlermeldungen:
Wenn ich diesen Befehl ausführe bekomm ich diese Meldung
curl -d '[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","Passwort!":""}}},{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":32,"id":1}}]' 10.0.0.117/cgi-bin/api.cgi?token=f9c58db3ee3b767
<HTML> <HEAD><TITLE>404 Not Found</TITLE></HEAD> <BODY BGCOLOR="#cc9999" TEXT="#000000" LINK="#2020ff" VLINK="#4040cc"> <H2>404 Not Found</H2> The requested URL '/cgi-bin/api.cgi?token=f9c58db3ee3b767' was not found on this server. <HR> <ADDRESS><A HREF="http://www.acme.com/software/thttpd/">thttpd/2.25b 29dec2003</A></ADDRESS> </BODY> </HTML>
Wenn ich diesen Befehl ausführe diese Meldung:
curl -d '[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","Passwort!":""}}},{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":32,"id":1}}]' 10.0.0.117/cgi-bin/api.cgi?cmd=PtzCtrl&token=f9c58db3ee3b767
<HTML> <HEAD><TITLE>404 Not Found</TITLE></HEAD> <BODY BGCOLOR="#cc9999" TEXT="#000000" LINK="#2020ff" VLINK="#4040cc"> <H2>404 Not Found</H2> The requested URL '/cgi-bin/api.cgi?cmd=PtzCtrl' was not found on this server. <HR> <ADDRESS><A HREF="http://www.acme.com/software/thttpd/">thttpd/2.25b 29dec2003</A></ADDRESS> </BODY> </HTML>
Kann mir eventuell jemand sagen warum das nicht funktioniert bzw. was ich hier falsch gemacht habe.
Token hab ich wie im Link oben beschrieben richtig ausgelesen.
Ist es bei meiner Kamera eventuell etwas anderes als bei der hier beschriebenen. ?Danke schon mal für eure Tipps und Hinweise
LG
mandragora -
@mandragora
Hallo mandragora. Bist du mit der reolink 823 weiter gekommen? Ich überlege mir ebenfalls diese zuzulegen finde aber noch keine Erklärung wie ich die PTZ Presets aus ioBroker ansteuern könnte -
@mandragora Probier doch mal als CGI Pfad nur "IP:PORT/api.cgi?cmd="
Das komplette Kommando sieht für PTZ Pos 1 dann so aus:
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
PS: Bei meiner RLC 423 funktioniert es mit "IP:PORT/cgi-bin/api.cgi?cmd=" und "IP:PORT/api.cgi?cmd="