Arlo-Kameras per Desktop-Icon schalten

surveilance

Die folgende Anleitung bezieht sich im zweiten Abschnitt auf https://github.com/ptagr/arlosrvc, einen Java-Service, der das Ein- und Ausschalten des Arlo Videoüberwachungssystems von Netgear ermöglicht, ohne die App zu benutzen oder sich mit dem Webservice verbinden zu müssen. Diese Lösung wurde angedacht, um über den Klick auf ein Desktop-Icon die Videoüberwachung scharf schalten und wieder abschalten zu können.
Die erste Variante zeigt, wie man das Script erstellt, wenn man den Java-Service nicht ständig aktiv halten kann, die zweite Variante funktioniert über einen dauerhaft laufenden Service auf einem Rechner oder einen NAS.

1. Steuerung per Script

Ich hatte dazu zunächst mit einem Script experimentiert und mir dazu die einzelnen Informationen aus dem Internet zusammen gesucht. Einige Blogger hatten bereits die Kommunikation des Arlo Web Portals analysiert und Login, sowie die Ermittlung der Device-IDs der Geräte und die ARM- und DISARM-Anforderung veröffentlicht.

Anmeldung

Mit einem Script bekommt man das Token, mit dem man sich bei den folgenden Aktionen identifizieren muss.

echo "--- Anmeldung ---"
ARLO_CONNECT="$(curl -H "Content-Type: application/json;charset=UTF-8" -d '{"email":"<EMAIL-ADRESSE>;","password":"<PASSWORT>;"}' -X POST "https://arlo.netgear.com/hmsweb/login")"
echo "CONNECT Ergebnis: "$ARLO_CONNECT
echo
echo "--- Kopiere Token ---"
ARLO_TOKEN="$(echo ${ARLO_CONNECT:78:174})"
echo "TOKEN Ergebnis: "$ARLO_TOKEN

<EMAL-ADRESSE> und <PASSWORT> wird dabei mit den Accountdaten ersetzt, die man auch im Arlo Web Portal verwendet. Die Startposition des Token hängt von der Länge der E-Mail-Adresse ab. Vergleicht man die Ausgaben von $ARLO_CONNECT und $ARLO_TOKEN, sieht man, wie der erste Parameter in echo ${ARLO_CONNECT:78:174} angepasst werden muss. Es gibt schönere Lösungen, aber für den einmaligen Aufwand reicht das 😉

Geräte IDs finden

Nun muss man einmalig die Geräte-IDs finden. Für die Kameras ist das die Serial Number, die man im Arlo Web Portal auch unter Settings -> <Kamera auswählen> -> Devive Info finden kann. Allerdings findet man dort keine Informationen zur Basis-Station und der XCLOUDID. Daher erweitert man das Script um

echo
echo "--- Hole Device_IDs ---"
ARLO_IDS="$(curl -H "Authorization: $ARLO_TOKEN" -X GET "https://arlo.netgear.com/hmsweb/users/devices")"
echo "DEVICES Ergebnis: "$ARLO_IDS
echo

In der Ausgabe sucht man nun die Werte für xCloudId (sie ist für alle Geräte gleich) und die deviceId der Basis-Station. Weiterhin benötigt werden die userId und die deviceIds (= Seriennummern) der Kameras, die man zur einfacheren Wiederverwendung in Variablen schreiben kann.

DEVICE_XCLOUDID="2TN524V-1820-183-470142614"
DEVICE_BASE="4RD3817YA36DC"
DEVICE_ID1="52M1815LBD3F9"
DEVICE_ID2="52M1815KC05F7"
DEVICE_ID3="52M1815XC074D" 

Ein- und Ausschalten

Für den Schaltvorgang muss ein JSON-Objekt vorbereitet werden, das folgende Sytax hat:

{
    "from":"<userId>_web",
    "to":"$DEVICE_BASE", "action":"set",
    "resource":"modes",
    "transId":"web!245.ebb3a8!1504266382584",
    "publishResponse":true,
    "properties":
    {
        "active":"<mode>"
    }
}

Die <userId> wird durch den in der Anmeldung gefundenen Wert ersetzt. Der Wert für transId scheint nicht relevant zu sein und ist lediglich ein Zeitstempel. Er kann so übernommen werden. Das JSON-Objekt speichere ich zwecks Übersichtlichkeit ebenfalls in eine Variable und füge das an das Script an.

JSON_OBJECT="{"from":"EBXZ-183-47846310_web","to":"$DEVICE_BASE","action":"set","resource":"modes","transId":"web!019611306.aab573!7365209635128","publishResponse":true,"properties":{"active":"mode1"}}"

mode1 entspricht ARM und mode0 entspricht DISARM.
Damit sind alle notwedigen Daten vorhanden und das Komando kann an den Arlo Web Server gesendet werden.

echo
echo "--- GO ---"
curl -H "Content-Type: application/json;charset=UTF-8" \
     -H "Authorization: $ARLO_TOKEN" -H "xcloudid: $DEVICE_XCLOUDID" \
     -d "$JSON_OBJECT" \
     -X POST "https://arlo.netgear.com/hmsweb/users/devices/notify/"$DEVICE_BASE

2. Lokalen Service arlosrvc nutzen

Steht ein ständig laufender Rechner zur Verfügung oder kann man auf seiner NAS einen Java-Service dauerhaft laufen lassen, dann übernimmt der arlosrvc die Aufgaben, so dass man mit zwei einfachen Scripten ein- oder ausschalten kann. Das kleine Projekt findet man unter
https://github.com/ptagr/arlosrvc .

Installation

Zur Installation auf einem dauerhaft laufenden Rechner geht man mit einem Terminal in das Verzeichnis (z.B. /srv), in das arlosrvc installiert werden soll.

:~$ sudo apt-get update
:~$ sudo apt-get install git                # falls noch nicht installiert
:~$ sudo apt-get install npm                # falls noch nicht installiert 
:~$ sudo apt-get install nodejs-legacy      # falls noch nicht installiert 
:~$ git clone https://github.com/ptagr/arlosrvc.git
:~$ cd arlosrvc
:~$ sudo npm install

Der arlosrvc kann nun mit node /srv/arlosrvc/server.js gestartet werden. Allerdings stoppt der Server sobald man das Terminal schliesst.

Service dauerhaft im Hintergrund

Abhilfe schafft man, indem man den Service dauerhaft im Hintergrund laufen lässt. Entweder erstellt man einen syystemd-Service oder man installiert Forever, zumal npm nun auch bereits installiert ist. Eine ausführliche Ableitung findet sich -> hier.

:~$ sudo npm install forever -g

Jetzt genügt es, server.js mit Forever zu starten. Der Pfad bezieht sich auf die Angaben von oben.

:~$ sudo forever start /srv/arlosrvc/server.js

Steuern per Script

Für das Schalten werden die beiden Scripte benötigt, die auf der GutHub-Seite angegeben sind. Wird das Script auf einem anderen Rechner gestartet, muss localhost durch die IP des Rechners ersetzt werden, auf dem arlosrvc läuft. Zum Einschalten:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" 
-d 'username=ARLO_USERNAME&password=ARLO_PASSWORD&mode=mode1' 
"http://localhost:8080/api/arm"

Und zum Ausschalten:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" 
-d 'username=ARLO_USERNAME&password=ARLO_PASSWORD&mode=mode0' 
"http://localhost:8080/api/disarm"

Für diese beiden Scripte müssen jetzt nur noch die Desktop-Icons erstellt werden. Wie man das macht habe ich -> hier beschrieben.

Buy Me a Coffee at ko-fi.com

You May Also Like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Aus persönlichen Gründen...

... kann ich den Blog im Moment leider nicht wie gewohnt betreuen und Anfragen zeitnah beantworten. Lediglich die technische Funktionalität versuche ich aufrecht zu erhalten. Sollte es trotzdem was Neues hier geben, dann schreibe ich eine Info in die Telegram-Gruppe.


In der Telegram-Gruppe können Sie sich weiterhin mit anderen Lesern von Împuşcătura austauschen.

Zur Telegram-Gruppe