Modul für Netgear Arlo-Kameras

Begonnen von maluk, 02 Dezember 2018, 22:20:58

Vorheriges Thema - Nächstes Thema

m0urs

So, ich habe mal meine Prozedur public gemacht, die ich für die Steuerung von Arlo aus FHEM heraus mittlerweile einsetze. Ich brauche aber auch nur aktiv/inaktiv schalten meiner Kameras, d.h. mehr ist bisher dort auch nicht implementiert. Es funktioniert aber auch mit der aktivierten Zwei-Faktor-Authentifizierung einwandfrei. Man benötigt dazu aber ein IMAP-Konto an dem man sich die 2FA-Mail schicken lassen kann. Wenn jemand Fragen hat, gerne melden.

https://github.com/m0urs/arlo-fhem

maluk

Eine kurze Zwischen-Info: ich bin an der Integration der 2FA mit E-Mail dran und im Prinzip funktioniert das auch. Das große Problem ist, dass das HttpUtils-Modul von FHEM gerade noch viele Timeouts verursacht, da der Arlo-Server bei seinen Antwort das Header-Attribut "Content-Length" nicht mitsendet. Hier werde ich wohl selbst Support benötigen, daher dauert es noch ein bisschen mit der Lösung. Außerdem wird die Authentifizierung natürlcih viel komplizierter und dauert dadurch auch viel länger. Das bisherige Vorgehen, dass bei abgebrochener Verbindung ein Login synchron durchgeführt wird, wird daher auch nicht mehr funktionieren. Aber auch hierfür wird es eine Lösung geben ...

maluk

#287
Für die Beta-Tester gibt es jetzt eine erste Version, die 2-Faktor-Authentifizierung per E-Mail unterstützt (siehe Anhang). Damit das umgeschriebene Modul funktioniert, sind folgende Vorarbeiten notwendig:

Zuerst muss der IMAP-Client für Perl installiert werden:

sudo apt-get install -y libmail-imapclient-perl

Danach muss in FHEM das Arlo_Cloud Device erweitert werden: zunächst das Attribut mailServer setzen. Hier muss der IMAP-Server des Mail-Providers (z.B. imap.gmx.net) eingetragen werden. Bitte beachten, dass die Verbindung zum IMAP-Server verschlüsselt erfolgt und Port 993 verwendet wird. Falls irgendjemand hier etwas anderes benötigt, bitte melden. Außerdem muss die Definition für das Arlo_Cloud Device um das E-Mail-Passwort erweitert werden. Hierzu im Device auf DEF klicken und dort hinter den letzten Crypt-Parameter mit Leerzeichen getrennt das Passwort für den Mail-Server eingeben. Nach Klicken auf "modify Arlo_Cloud" wird auch dieses Passwort verschlüsselt.

Danach einen reconnect durchführen und beten, dass es funktioniert  :)  Zunächst erfolgt die normale Anmeldung bis zur Anforderung des 2FA-Codes. Dann wird 5 Sekunden gewartet und die E-Mails werden geprüft. Anhand der Absender-Adresse und einem enthaltenen 6-stelligen Code wird die E-Mail erkannt. Der Code der neuesten E-Mail wird verwendet, um sich anzumelden. Wenn das schief geht, wird nach 5 Sekunden ein erneuter Versuch unternommen.

Falls das mit den Mails noch nicht ganz funktioniert, kann man mit "set Arlo_Cloud loginSecondFactor 123456" den per Mail erhaltenen Code auch selbst angeben (das wir normal automatisch aufgerufen).

Ganz fertig bin ich mit der Implementierung noch nicht, da aufgrund des asynchronen Anmelde-Vorgangs einige Anpassungen notwendig sind:

- Retry bei temporären Anmeldeproblemen ist noch nicht implementiert (war in der bisherigen Version enthalten)
- Abfragen von Recordings funktioniert nur, wenn die Verbindung aktiv ist
- Starten von Recordings funktiniert vermutlich nur sauber, wenn die Verbindung aktiv ist

Bin auf Eure Rückmeldungen gespannt. Bitte das Modul nur auf Test-Systemen einsetzen oder dann, wenn Ihr es in Ordnung ist, dass in den nächsten Tagen nicht alles reibungslos funktioniert.

dinkel75

Wenn der Login des Emails ebenfalls mit 2FA ist, dann kann das nix werden, oder?

maluk

#289
Nein, das kann nicht klappen. Du müsstest dir dann selbst was bauen, wie du den 2FA-Code abrufst und dann den Aufruf "set Arlo_Cloud loginSecondFactor 123456" auslösen.

Aber noch ein Hinweis: ich habe für Arlo eine neue E-Mail-Adresse angelegt, damit das getrennt von meiner normalen E-Mails abläuft. Wenn du das gleiche machst, ist dein Problem gelöst  :) Bei GMX geht das ohne 2FA. Du musst danch nur deinen Arlo-Account auf die neue E-Mail-Adresse umstellen.

dinkel75

So hab ichs auch gemacht. Neue GMX Adresse und fertig!

dinkel75


maluk

Ich habe das Modul jetzt bei FHEM eingecheckt. Ab morgen Vormittag wird es beim nächsten FHEM-Update mitgeliefert. Hier nochmal die Zusammenfassung, wie die 2-Faktor-Authentifizierung aktiviert wird:

Zuerst muss der IMAP-Client für Perl installiert werden:

sudo apt-get install -y libmail-imapclient-perl

Danach in FHEM das Arlo_Cloud Device erweitern: zunächst das Attribut mailServer auf den IMAP-Server des Mail-Providers (z.B. imap.gmx.net) setzen. Bitte beachten, dass die Verbindung zum IMAP-Server verschlüsselt erfolgt und Port 993 verwendet wird. Außerdem muss die Definition für das Arlo_Cloud Device um das E-Mail-Passwort erweitert werden. Hierzu im Device auf DEF klicken und dort hinter den letzten Crypt-Parameter mit Leerzeichen getrennt das Passwort für den Mail-Server eingeben. Nach Klicken auf "modify Arlo_Cloud" wird auch dieses Passwort verschlüsselt.

Hobbel

Ich habe heute auf 2FA umgestellt, klappt soweit gut - vielen Dank für die Anpassung des Moduls!

Hier ein paar Tipps, die mir bei der Umstellung aufgefallen sind:

  • Wenn nach dem FHEM-Update und nachfolgendem FHEM restart der IMAP-Client für Perl noch nicht installiert ist, dann werden keine Arlo devices mehr in FHEM geladen und angezeigt.
  • Wenn man eine neue GMX E-mail für 2FA einrichtet, dann nicht vergessen in den E-Mail Einstellungen bei GMX Pop3/Imap zu aktivieren.
  • Wenn man den neuen ACCOUNT zum 2FA login bei FHEM verwenden möchte, dann das bestehende Arlo_Cloud device löschen und entsprechend neu anlegen. Im FHEM Arlo wiki ist der entsprechende define zu finden, allerdings muss zwischen meinArloPasswort und meinEmailPasswort ein Leerzeichen sein.

AyshaHM

Hallo liebe mitleidende,
Erst einmal vielen Dank an maluk für die viele Arbeit!!!

Ich habe die 2FA bei mir eingerichtet.
Der Login funktioniert mal und mal nicht. Irgendwann geht die Verbindung auf inaktive.
Wenn ich dann auf reconnect  klicke habe ich immer login failed einen neue Verbindung geht nicht mehr.
Mach ich da was falsch oder ist das Modul noch nicht stabil und wird da noch dran gearbeitet?

Überings:
Ich kann bei Arlo immer noch die 2FA abschalten. Bei einem gute Passwort in der Arlo Cloud währe es für mich völlig i.o. gewesen. Leider kann man das neue Modul nicht mehr für die 1FA benutzen.
Schade.

einen schönen Sonntag noch für alle
Gruß AyshaHM  :D


Hardware: Raspberry  4

tobias.vorberg

Ich hatte ähnliche Probleme. Die konnte ich lösen in dem ich Arlo.com auf die Whitelist gesetzt habe. Vorher hat er die eMails mal als Spam oder unbekannt wegsortiert.

Hobbel

Soweit ich weiss dreht Arlo am 30.11. die 1FA ab.
Ich habe gute Erfahrungen damit gemacht das Arlo_Cloud device mit dem attr expiryTime 0 zu versehen.
Damit geht die Verbindung nicht mehr auf inactive und das Modul funktioniert gut.

ojb

Hallo,

ich habe auch gerade umgestellt und es schein zu funktionieren. Vielen vielen Dank für das Modul.

Liebe Grüße
Oli
FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

ojb

Ok, ich hatte auch das Problem, dass die Cloud nach einiger Zeit auf 'inactive' geht.
Mit 'expireTime 0' scheint es zu gehen.

Ich wollte übrigens den Zustand, also z.B. wann geht die Cloud auf 'inactive' in einem FileLog tracken. Das schaffe ich aber nicht, es werden zwar die Zustände wie 'reconnect', 'checkMail' geloggt aber nicht der 'inactive' und 'active'.
Habe dann mein Glück versucht mit 'addStateEvent = 1' im FileLog, aber das bringt auch nichts.

Any help appreciated.

Liebe Grüße
Oli
FHEM unter Debian auf Asus EEBox: KNX (Wetterstation, Rollläden, Beleuchtung), Maple-CUN (Temperatur und Feuchte über 1-Wire, Intertechno-Funksteckdosen), PV-Anlage mit Plenticore und BYD, Viessmann Wärmepumpe, 1-Wire (Temperatur, Feuchte, Stromverbrauch), Husquarna-Automower, ...

maluk

Die expiryTime dient dazu, die Verbindung zur Cloud nach der definierten Zeit abzubauen, wenn keine Basisstation mehr aktiv ist (also alle Basisstationen im Status disarmed oder offline sind). Wer das nicht möchte, muss wie beschrieben die expiryTime auf 0 setzen. Wenn man die expiryTime gesetzt hat, wird das Inaktiv-Setzen im Logfile mit Verbose-Level 3 geloggt ('Arlo set to inactive.'). Falls das Attribut verbose auf 2 oder 1 gesetzt ist, findet man im Logfile keine Einträge.

Ansonsten kann es noch Timeout- oder Fehler-Situationen geben, in denen der Status auf inactive wechselt, aber auch in diesen Fällen müsste es im Logfile den oben beschriebenen Eintrag geben.

Ich selbst arbeite ausschließlich mit expiryTime, da beim Setzen des arm-Status einer Basisstation automatisch wieder die Verbindung aufgebaut wird. Solange die Kamera nichts überwachen, brauche ich auch keine Cloud-Verbindung. Der einzige Nachteil daran ist, dass das Abrufen von Recordings aus dem inactive-Status heraus länger dauert.