Reolink-Kameras und Hub einrichten

Hallo @Will_71

Ich hoffe, ich habe mich nicht an die falsche Person gewandt (Entschuldigung, falls doch).

Ich habe 4 Reolink-Kameras (eine kabelgebunden und 3 per WLAN).

Alle sind an einen Reolink-Hub angeschlossen, um Videos und Bilder zu speichern.

Ich habe die Reolink-Integration unter Gladys installiert (ich nutze derzeit HA, möchte aber langfristig zu Gladys wechseln, da ich das Produkt intuitiver finde, auch wenn mir noch einige Funktionen fehlen), aber ich bekomme meine Kameras nicht erkannt.

Ich habe versucht, die Konfiguration mit der Adresse des Hubs zu machen und eine andere Konfiguration mit der IP-Adresse meiner kabelgebundenen Kamera, aber der Scan findet keine Kamera (zu beachten, dass die 3 WLAN-Kameras zwar eine IP-Adresse haben, aber keine aus meinem lokalen Netzwerk).

Gibt es Tricks, die man kennen sollte? Eine besondere Konfiguration, wenn man einen Hub hat?

Unter HA hatte ich nur den Hub konfiguriert, aber ich denke, unter Gladys ist das anders.

Danke für deine Hilfe

Betreff,

Ich glaube, ich habe meine Antwort, eigentlich.

Ich habe auf GitHub nachgeschaut und, soweit ich sehen kann, unterstützt die Integration den HomeHub nicht.

@filbou40 ich habe mir erlaubt, den Titel zu ändern, damit er aussagekräftiger ist.

Hallo @filbou40,

Du hast dich nicht in der Person geirrt. Eigentlich habe ich im Moment keine Antwort bezüglich des Hubs. Ich habe eine Kamera und die wurde sofort erkannt.
Aber wir werden versuchen, dass du deinen Hub wie bei Home Assistant wiederfindest. Ich werde die nächsten 4 Tage nicht verfügbar sein, aber sobald ich kann, werde ich dich kontaktieren, um Tests durchzuführen, wenn es dir nichts ausmacht.

Bis dahin könntest du mir bitte die Modelle deines Hubs und deiner Kameras angeben?
Vielen Dank im Voraus.

Danke @Will_71 für dein Feedback,

Ich fahre morgen für 10 Tage in den Urlaub, daher werde ich in diesen 10 Tagen nicht wirklich verfügbar sein (aber es gibt ohnehin keine Eile :wink:

Bei meiner Rückkehr werde ich natürlich für die Tests, die du möchtest, zur Verfügung stehen.

Ich habe einen Home Hub Version 1 (Reolink Home Hub | Hub WiFi avec Stockage Local Chiffré), an den ich angeschlossen habe:

  • eine Argus 3 Ultra
  • eine batteriebetriebene Video-Türsprechanlage (solarbetrieben)
  • eine RLC-510A
  • 2 E1 Zoom (eine davon solarbetrieben).

Die RLC ist an eine CPL-Steckdose angeschlossen

Ich kann dir natürlich genauere Informationen (Konfiguration auf dem Home Hub) geben, wenn du möchtest.

Nochmals danke

Okay, danke. Gute Ferien und ich halte dich über die Tests auf dem Laufenden.

Hallo @filbou40,

Gute Nachrichten: Ich bin während deiner Abwesenheit mit der Unterstützung des Home Hubs vorangekommen. Es ist implementiert und getestet, es fehlt nur noch die Validierung auf deiner echten Hardware.

Was gemacht wurde

Die Integration erkennt jetzt einen Home Hub (oder ein NVR) und listet die Kameras dahinter auf. Jede Kamera wird zu einem eigenen Gladys-Gerät, mit eigenen Funktionen je nach Modell — die Batterie beim Argus 3 Ultra, der Knopf bei der Video Doorbell, die PTZ-Presets bei den E1 Zoom usw. Der RTSP-Stream und die Snapshots zeigen jeweils auf den richtigen Kanal.

Zwei Punkte haben etwas Sorgfalt erfordert:

  • Die Identität der Kameras. Die Kanalnummer ist eine Position, keine Identität: Eine neu gepaarte Kamera kann ihren Platz ändern, und Gladys-Geräte, die durch den Kanal identifiziert werden, würden dann stillschweigend auf die falsche Kamera zeigen. Ich verwende daher die UID, die jeder Kamera eigen ist, wenn der Hub sie bekannt gibt.
  • Kameras mit Batterie. Der Hub weiß, ob eine Kamera schläft und antwortet in dieser Zeit für sie. Eine Kamera aufzuwecken ist viel teurer als die Abfrage selbst, daher ist eine schlafende Kamera vom automatischen Refresh ausgeschlossen — bleibt aber abrufbar, wenn du ihr Widget öffnest. Das ist wichtig für deine Installation, mit dem Argus und der Doorbell auf Solar.

Ich habe deine gesamte Installation simuliert (Hub + Argus 3 Ultra + Doorbell + RLC-510A + 2 E1 Zoom) und die 5 Kameras werden korrekt als 5 separate Geräte erkannt.

Was ich von dir brauche

Der Code basiert auf dem dokumentierten Antwortformat, aber ich habe keinen Home Hub zur Hand, um zu überprüfen, was deiner tatsächlich zurückgibt. Zwei Felder sind je nach Firmware-Version optional, und ich möchte bestätigen, dass sie bei dir vorhanden sind.

Falls du diese beiden Befehle von einer Maschine deines Netzwerks ausführen kannst (IP und Passwort ersetzen):

curl -k -s -X POST "http://<ip-des-hubs>/cgi-bin/api.cgi?cmd=Login" \
  -d '[{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"DEIN_PASSWORT"}}}]'

Die Antwort enthält ein « name » im Token-Block — das ist der Token, der in den zweiten Befehl eingefügt werden muss:

curl -k -s -X POST "http://<ip-des-hubs>/cgi-bin/api.cgi?cmd=GetChannelstatus&token=DER_TOKEN" \
  -d '[{"cmd":"GetChannelstatus","action":0,"param":{}}]'

Vergiss nicht, das Passwort aus der Ausgabe zu entfernen, bevor du es hier einfügst. Die Kamera-UIDs sind nicht sensibel, aber du kannst sie auch teilweise maskieren, wenn du möchtest — ich brauche vor allem zu wissen, ob die Felder uid und sleep ausgefüllt sind, nicht ihren genauen Wert.

Falls dein Hub nur HTTPS unterstützt, ersetze http:// durch https:// (das -k ist bereits für das selbstsignierte Zertifikat vorhanden).

Damit kann ich bestätigen, dass alles passt, und dir eine Version zum Testen anbieten. Keine Eile, nimm dir Zeit, um aus dem Urlaub zurückzukehren!

Hallo @Will_71,

Super. Ich schaue mir das bei meiner Rückkehr an (frühestens nächsten Dienstag, aber eher Mittwoch) und gebe dir Feedback.

Bis bald,

Hallo,

Danke für diese Integration!

Ich habe eine solarbetriebene Argus 4 Pro-Kamera, die mit Batterie betrieben wird. Ist die ohne Hub kompatibel?

Ich habe versucht, eine Verbindung herzustellen, aber ohne Erfolg. Ich frage mich sogar, ob ich die richtigen Anmeldedaten verwende…

Achtung bei Kameras mit Akku, bei TAPO ist z. B. der RTSP-Stream nicht erlaubt, sonst entleert sich die Batterie zu schnell. Bei Reolink denke ich, ist es ähnlich.

Ja, ich bestätige. Danke für deine Antwort.

Hallo @Will_71,

Also, ich wollte den Befehl auf meinem Windows-Handy ausführen, aber der Befehl wird zwar gestartet, aber es gibt keine Ausgabe (keine Meldung). Allerdings dauert es etwas, bis ich die Kontrolle zurückerhalte, also nehme ich an, dass er läuft.

Glaubst du, ich sollte es auf einer Linux-Maschine testen? In dem Fall muss ich eine finden :smiling_face:.

Danke

je complète.

Ich hatte den Befehl in einem normalen (nicht Admin-)Fenster ausgeführt.

Ich habe es in einem Admin-Befehlsfenster neu gestartet und das kommt dabei heraus:

Invoke-WebRequest: Kein Parameter mit dem Namen « k » gefunden.
Bei Zeichenzeichen Linie:1 : 6

  • curl -k -s -X POST « https://192.168.1.69/cgi-bin/api.cgi?cmd=Login » - …
  •  ~~
    
    • CategoryInfo : InvalidArgument : (:slight_smile: [Invoke-WebRequest], ParameterBindingException
    • FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

gut, wir fangen nochmal von vorne an. Beachte die vorherigen Nachrichten nicht.

Aber unter Windows, in einem Admin-CMD-Fenster, bekomme ich das hier:

[
{
« cmd » : « Login »,
« code » : 1,
« error » :
{
« detail » : « please login first »,
« rspCode » : -6
}
}
]

und das in http (das vorherige war in https)

302 Gefunden

302 Gefunden


nginx

Hallo @filbou40,

Kein Problem, du hast nichts kaputt gemacht — der Hub antwortet korrekt, es ist nur der Befehl, der bei ihm leer ankommt.

Was passiert. Unter Windows versteht cmd.exe die einfachen Anführungszeichen ‹ … ›, die ich um das -d gesetzt hatte, nicht (das ist eine Linux/macOS-Syntax). Dadurch wird das JSON mit deiner Kennung und deinem Passwort in Stücke gerissen, der Hub sieht keine Kennung und antwortet logischerweise bitte melde dich zuerst an. Das hat nichts mit deinem Passwort oder deiner Konfiguration zu tun.

Zum 302 Found in HTTP: Das ist normal, dein Hub erzwingt HTTPS. Du musst also https:// beibehalten, und das ist eine nützliche Information für mich — ich werde überprüfen, ob die Integration diesen Fall korrekt behandelt.

Die korrigierten Befehle für Windows. Auszuführen in einem CMD-Fenster (nicht PowerShell — in PowerShell ist curl ein Alias, der nicht die gleichen Optionen kennt, daher der Fehler „Kann keinen Parameter mit dem Namen ‹ k › finden“ aus deiner vorherigen Nachricht). Ein normales Fenster reicht aus, kein Admin-Recht erforderlich.

Alles in einer Zeile, und die internen Anführungszeichen sind korrekt mit " escaped und durch dein Passwort ersetzt:

curl -k -s -X POST "https://192.168.1.69/cgi-bin/api.cgi?cmd=Login" -H "Content-Type: application/json" -d "[{\"cmd\":\"Login\",\"action\":0,\"param\":{\"User\":{\"userName\":\"admin\",\"password\":\"DEIN_MDP\"}}}]"

Dieses Mal solltest du einen Token-Block mit einem name erhalten — das ist der Token, den du in den zweiten Befehl einsetzen musst, anstelle von LE_TOKEN:

curl -k -s -X POST "https://192.168.1.69/cgi-bin/api.cgi?cmd=GetChannelstatus&token=LE_TOKEN" -H "Content-Type: application/json" -d "[{\"cmd\":\"GetChannelstatus\",\"action\":0,\"param\":{}}]"

Der Token läuft nach einer Weile ab, also führe die beiden Befehle schnell hintereinander aus.

Was mich in der Antwort interessiert. Es ist die Ausgabe des zweiten Befehls. Vergiss nicht, dein Passwort aus dem ersten Befehl zu entfernen, bevor du etwas einfügst. Für die UID der Kameras kannst du sie kürzen, wenn du möchtest — ich brauche vor allem wissen, ob die Felder uid und sleep für jeden Kanal korrekt ausgefüllt sind, nicht ihren genauen Wert.

Danke

Hallo @Will_71,

Hier ist die Antwort auf den zweiten Befehl:

[
{
« cmd » : « GetChannelstatus »,
« code » : 0,
« value » :
{
« count » : 8,
« status » :
[
{
« channel » : 0,
« name » : « Abri Jardin »,
« online » : 1,
« sleep » : 0,
« uid » : « 9527000IWMNL1B1K »
},
{
« channel » : 1,
« name » : « camera porche »,
« online » : 1,
« sleep » : 1,
« uid » : « 9527000KN95C1JG7 »
},
{
« channel » : 2,
« name » : « Portail »,
« online » : 1,
« sleep » : 1,
« uid » : « 9527000ICVT7S58V »
},
{
« channel » : 3,
« name » : « salon »,
« online » : 1,
« sleep » : 0,
« uid » : « 9527000IXL6TIQIB »
},
{
« channel » : 4,
« name » : « veranda »,
« online » : 1,
« sleep » : 0,
« uid » : « 9527000IXL7E1YS3 »
},
{
« channel » : 5,
« name » : «  »,
« online » : 0,
« sleep » : 0,
« uid » : «  »
},
{
« channel » : 6,
« name » : «  »,
« online » : 0,
« sleep » : 0,
« uid » : «  »
},
{
« channel » : 7,
« name » : «  »,
« online » : 0,
« sleep » : 0,
« uid » : «  »
}
]
}
}
]

Okay, jetzt haben wir eine Antwort von deinem Hub. Ich schaue mir das am Nachmittag an und sage dir Bescheid, wann die nächste Version fertig ist.

OK. Danke und natürlich keine Eile.

Vielen Dank, diese Antwort ist sehr aufschlussreich. :+1:

Sie bestätigt, dass der Hub korrekt erkannt wird und die 5 Kameras richtig angezeigt werden, mit ihrer UID und ihrem Ruhezustand (« camera porche » und « Portail » schliefen zum Zeitpunkt des Tests, was bei Batteriemodellen normal ist).

Du hast erwähnt, dass Home Assistant alles korrekt abruft: Ich habe nachgeschaut, wie sie das machen, und das hat mir die Antwort gegeben. Dein Firmware sendet das Feld typeInfo nicht in der Kanalliste, aber es gibt einen anderen Befehl, GetChnTypeInfo, der das Kanalmodell Kanal für Kanal angibt. Das wäre der Befehl, den ich von Anfang an hätte verwenden sollen.

:warning: In cmd.exe ausführen, nicht in PowerShell (curl ist dort ein Alias, der -k nicht versteht). Das Token läuft nach einer Stunde ab: Wenn du please login first (code -6) erhältst, wiederhole Schritt 1.

Schritt 1 — Token abrufen (Passwort ersetzen):

curl -k -s -X POST "https://192.168.1.69/cgi-bin/api.cgi?cmd=Login" -H "Content-Type: application/json" -d "[{\"cmd\":\"Login\",\"action\":0,\"param\":{\"User\":{\"userName\":\"admin\",\"password\":\"TON_MDP\"}}}]"

Suche nach « name » im Token-Block: Das ist dein Token.

Schritt 2 — Typ jeder Kamera (LE_TOKEN ersetzen):

curl -k -s -X POST "https://192.168.1.69/cgi-bin/api.cgi?cmd=GetChnTypeInfo&token=LE_TOKEN" -H "Content-Type: application/json" -d "[{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":0}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":1}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":2}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":3}},{\"cmd\":\"GetChnTypeInfo\",\"action\":0,\"param\":{\"channel\":4}}]"

Es fragt den Hub und nicht die Kameras ab: Die schlafenden Kameras werden nicht geweckt. Mich interessiert das Feld type jedes ChnTypeInfo-Blocks.

Das sollte mir ausreichen, um deine Klingel automatisch zu identifizieren und ihr die Fähigkeit « Klingelknopf » hinzuzufügen. Nochmals vielen Dank, dein Hinweis zu Home Assistant hat mich auf die richtige Spur gebracht.