NEWS
Eine Empfehlung für mich ... IP Kamera?
-
So heute greife ich das Thema Kamera nochmal auf. Vielleicht hast du die Muse mir zu helfen
Die Kameras sind alle installiert, eingerichtet und zeichnen auch auf und wird auf FTP abgelegt, wenn sich was bewegt....
Jetzt möchte ich aber nur dann tatsächlich aufzeichnen/bewegung erkennen, wenn ich nicht zuhause bin.
Ich habe nun seit gestern versucht über den Adapter und auch direkt über http://192..... usw. versucht aus und wieder einzuschalten.
Leider nicht gelungen.Hätte gehofft, dass ich das über den Adapter via false/true einfach schalen kann.
Nun die Frage, bin ich zu doof (wahrscheinlich) oder gibts die Funktion nicht?
Vg M
-
@michl75 du lässt die Kameras direkt auf FTP ablegen?
Man müsste mal in die Anleitung schauen ob man das auch per URL Ein- und Ausschalten kann.
ich meine das es über Zeitpläne läuft, keine Ahnung ob das auch mit einem Schalter geht.
Ich zeichne 24x7 bei Bewegung auf.
Ich schaue mir das sowieso nicht an - nur wenn es einen Grund dafür gibt (wo genau hat der Paketbote das Paket versteckt?)Ich nutze ja auch noch eine "video surveillance software" die könnte das (sogar per Alexa-Skill auf zuruf)
-
@bananajoe said in Eine Empfehlung für mich ... IP Kamera?:
du lässt die Kameras direkt auf FTP ablegen?
ja bei Bewegung wird es per FTP auf den Server abgelegt.
hätte halt bei Anwesenheit gern abgeschaltet, sonst müllt die Kamera meine Bewegungen oder die der Frau oder Kinder den Server zu.
-
@michl75 sagte in Eine Empfehlung für mich ... IP Kamera?:
bei Anwesenheit gern abgeschaltet
Dann steuer das doch per Skript
-
@djmarc75 said in Eine Empfehlung für mich ... IP Kamera?:
Dann steuer das doch per Skript
das habe ich bereits mit meinen anderen Kameras...
Dachte halt, dass man sowas über den Adapter steuern kann... wenn es schon so einen Adapter dafür gibt. Also ... nur so als Gedankengang....
-
Habe nun das hier gefunden:
soweit verständlich, aber vielleicht könnte mir einer das mit dem tokten erklären?
Vg M
-
@michl75 Öhm, ich kann zwar nicht erkennen was für ein Hersteller das ist, aber aus Erfahrung mit anderen API Abfragen:
Du musst dich zunächst mit Benutzernamen und Passwort an der API Anmelden.
Also Antwort erhältst du ein Token das du dann für alle anderen Abfragen nutzt.Statt jedes mal Benutzername und Passwort zu übertragen. Das Token steht dann auf der anderen Seite für eine Zeit X auf der Liste und erhält die Daten ohne extra Prüfung.
Sauber wäre sich dann am Ende auch wieder abzumelden damit da nicht duzende von Tokens in der Liste unnötig stehen (Dur wirst jedes mal ein anderes bekommen, auch wenn du vorher schon eines hattest)
Wenn es nur ein Bild sein soll steht da unter 2.8 was von Short Connection wo man eben dieses direkt erhält.
-
ah ok... jetzt kann ich das etwas nachvollziehen.
Bisher dachte ich das token ist eine decodierung von verschiedenen informationen.hm... da des nun doch anders ist als gedacht muss ich mich wohl geschlagen gehen da ich gleich null ideen habe wie ich sowas dann als script /Blockly machen kann.
ich hatte gehofft, dass bei der Reolink auch per (so ähnlichen vom -Befehl- her) ```
wget -q -O - 'http://192.168.xxx.xxx/api.cgi?cmd=Login&SetFtp&enablae=&user=admin&password=xxxx' -
@michl75 dein PDF ist von 2016 ...
-
@bananajoe said in Eine Empfehlung für mich ... IP Kamera?:
dein PDF ist von 2016 ...
sorry hab auch eines von 2022. hab den falschen link erwischt.
Reolink Kamera API 2022.pdf -
@michl75 3.6.2 SetRec lässt einen die Aufnameparameter manipulieren
könnte der Punkt für das ein/ausschalten sein.Also erst mit GetRec auslesen und mit
"enable":0,
zurück schreiben sollte aus seinNachtrag: Ok, das ist für zeitgesteuerte Aufnahmen, bestimmt gibt es auch etwas für Bewegungsgesteuerte. Bzw. vielleicht stimmt es doch weil so der erlaubte Aufnamezeitraum definiert wird.
Eventuell kann man das überSetAiCfg
ausschalten indem man nichts erkennen lässt -
@bananajoe Guten Morgen, ich werde es mir heute Nachmittag oder morgen anschauen, hab heute eine Veranstaltung bis spät Nachmittag, dann erst mal nach hause...
Leider hat das länger gedauert als gedacht heute...
Hatte heute mal über Handy bisschen geschaut als weniger los war, was man über dieses Thema so findet ... und das gefunden:
Hier mit virtuellem Ausgang Adresse: http://192.168.1.xx (Deine Kamera-IP) ab jetzt Virtuelle Ausgänge Befehl Befehl bei EIN: /api.cgi?cmd=Login HTTP-Post-Befehl: [\r\n {\r\n "cmd": "Login",\r\n "action": 0,\r\n "param": {\r\n "User": {\r\n "userName": "admin",\r\n "password": "DEINPW"\r\n }\r\n }\r\n }\r\n] Rückmeldung: "Token" : { "leaseTime" : 3600, "name" : "031465962723" } Das hinter "name" ist der token. --- Recording: Virtuelle Ausgänge Befehl bei EIN: /api.cgi?cmd=SetRec&token=<v> (<v> ist der token) Recording einschalten: HTTP-Post-Befehl: [{"cmd":"SetRec","action":0,"param":{"Rec":{"sch edu le":{"enable":1,"table":"11111111111111111111111 11 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111"}}}}] Recording ausschalten: HTTP-Post-Befehl: [{"cmd":"SetRec","action":0,"param":{"Rec":{"sch edu le":{"enable":0,"table":"11111111111111111111111 11 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111"}}}}] FTP: Virtuelle Ausgänge Befehl bei EIN: /cgi-bin/api.cgi?cmd=SetFtp&token=<v> FTP einschalten: HTTP-Post-Befehl: [{"cmd":"SetFtp","action":0,"param":{"Ftp":{"sch edu le":{"enable":1,"table":"11111111111111111111111 11 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111"}}}}] FTP ausschalten: HTTP-Post-Befehl: [{"cmd":"SetFtp","action":0,"param":{"Ftp":{"sch edu le":{"enable":0,"table":"11111111111111111111111 11 11111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111"}}}}]
jetzt muss ich nur noch rausfinden wie ich das in blockly / script zusammenbastelt
EDIT:
So habe ich nun mal angesetzt...
on({id: "0_userdata.0.Sicherheit-Kameras.Teich-1-Switch"/*Teich-1-Switch*/, change: "ne"}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == true) { // einschalten var request = require('request'), userName = "admin", password = "passwort", url = 'http://192.168.xxx.xxx/api.cgi?cmd=Login', auth = "Basic " + new Buffer(userName + ":" + password).toString(); request({ url : url, headers : {'Authorization' : auth} }, function (error, response, body) { console.log('error: ' + error); console.log('response: ' + JSON.stringify(response)); console.log('body: ' + body); } ); } else { // ausschalten } });
immerhin schon mal eine Rückmeldung:
09:26:36.354 info javascript.0 (656) script.js.Sicherheit_Haus.Kamera-Reolink-Schalten: body: [ { "cmd" : "Login", "code" : 1, "error" : { "detail" : "login failed", "rspCode" : -7 } } ]
werde dann Nachmittag weiter probieren...
-
Hallo
ich muss doch nochmal euch um Hilfe bitten.
Habe nun versucht über ein bash-script Linux das mal hinzubekommen, da ich hier iwo in einem Beitrag gelesen habe, so kanns einfacher gehen.
Aber erst mal für den Test denke ich ok.Problem ist, ich bekomme es nicht gebacken mit den Parametern. Ich verstehe hier einfach nicht, was daran falsch sein (soll) kann...
Könntet Ihr mir da helfen?
curl -X POST -H "Content-Type:application/json" -d "[{\"cmd\":\"SetFtpV20\",\"schedule\":{\"enable\":0}}]" "http://192.168.xxx.xxx/cgi-bin/api.cgi?user=admin&password=geheim"
Fehlermeldung:
userxxx@IOB04:~$ sh test.sh [ { "cmd" : "SetFtpV20", "code" : 1, "error" : { "detail" : "param error", "rspCode" : -4 } } ]
Vielleicht hat einer von euch eine Idee?
Vielen Dank vorab, Gruß M
-
Habe es endlich hinbekommen:
Ftp ausschalten:
curl -s POST "http://192.168.xxx.xxx/cgi-bin/api.cgi?user=admin&password=xxxxxx" -d '[{"cmd":"SetFtpV20","param":{"Ftp":{"enable":0}}}]'
Ftp einschalten:
curl -s POST "http://192.168.xxx.xxx/cgi-bin/api.cgi?user=admin&password=xxxxxx" -d '[{"cmd":"SetFtpV20","param":{"Ftp":{"enable":1}}}]'
-
Ich habe dasselbe mit Verwendung des Tokens in nodered realisiert. Falls jemand Interesse hat hier ein Export des Flows:
[{"id":"fb1a288cc293da53","type":"tab","label":"Turn on-off camera","disabled":false,"info":"","env":[]},{"id":"0e3e31965e6ad374","type":"http request","z":"fb1a288cc293da53","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://192.168.xxx.xxx/api.cgi?cmd=Login","tls":"602f4de630dce848","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":410,"y":220,"wires":[["89c6b097ff08b99f","a617e58931d42052"]]},{"id":"26f9053d8b0c9107","type":"change","z":"fb1a288cc293da53","name":"Setze username und password","rules":[{"t":"set","p":"payload","pt":"msg","to":"[{\"cmd\":\"Login\",\"param\":{\"User\":{\"Version\":\"0\",\"userName\":\"admin\",\"password\":\"xxxxxx\"}}}]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":140,"wires":[["0e3e31965e6ad374","e39f51e6d98fd406"]]},{"id":"89c6b097ff08b99f","type":"debug","z":"fb1a288cc293da53","name":"debug 22","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":900,"y":220,"wires":[]},{"id":"91418610952dc53e","type":"inject","z":"fb1a288cc293da53","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"2","topic":"","payload":"","payloadType":"date","x":180,"y":140,"wires":[["26f9053d8b0c9107"]]},{"id":"e39f51e6d98fd406","type":"debug","z":"fb1a288cc293da53","name":"debug 23","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":900,"y":140,"wires":[]},{"id":"cae7f2ad99648a54","type":"comment","z":"fb1a288cc293da53","name":"Anmeldung","info":"","x":150,"y":80,"wires":[]},{"id":"a617e58931d42052","type":"switch","z":"fb1a288cc293da53","name":"prüfen ob token angekommen","property":"payload.0.value.Token.name","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":450,"y":320,"wires":[["1da7db9e8b60b072","b3c40aeb809060dc"],[]]},{"id":"3d7f5a2e28d74a4c","type":"http request","z":"fb1a288cc293da53","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"","tls":"602f4de630dce848","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1070,"y":420,"wires":[["752e357d7e2d4f94"]]},{"id":"752e357d7e2d4f94","type":"debug","z":"fb1a288cc293da53","name":"debug 24","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1340,"y":420,"wires":[]},{"id":"1da7db9e8b60b072","type":"debug","z":"fb1a288cc293da53","name":"debug 25","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":860,"y":320,"wires":[]},{"id":"b3c40aeb809060dc","type":"change","z":"fb1a288cc293da53","name":"Baue URL","rules":[{"t":"set","p":"url","pt":"msg","to":"https://192.168.xxx.xxx/api.cgi?cmd=SetFtpV20&token=logintoken","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":420,"wires":[["219840d6c9438bb0"]]},{"id":"219840d6c9438bb0","type":"change","z":"fb1a288cc293da53","name":"füge Token hinzu","rules":[{"t":"change","p":"url","pt":"msg","from":"logintoken","fromt":"str","to":"payload.0.value.Token.name","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":420,"wires":[["7c0ee20f47187d33"]]},{"id":"7c0ee20f47187d33","type":"change","z":"fb1a288cc293da53","name":"Setze JSON payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"[{\"cmd\":\"SetFtpV20\",\"param\":{\"Ftp\":{\"enable\":1}}}]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":420,"wires":[["3d7f5a2e28d74a4c"]]},{"id":"602f4de630dce848","type":"tls-config","name":"I don't care","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false,"alpnprotocol":""}]