Modul für Netgear Arlo-Kameras

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

Vorheriges Thema - Nächstes Thema

choetzu

Zitat von: maluk am 25 April 2021, 22:29:56
Ich werde mich parallel mal nach einer Cloud-freien Alternative zu Arlo umsehen. Hardwareseitig sind die Arlo-Kameras ja gut, aber die fehlende offizielle API macht sie für meinen Einsatzzweck quasi nutzlos.

hey maluk, verstehe ich dich richtig, dass du hier dem Arlo Modul die rote Karte gibst und auf ein anderes System setzen willst?
Raspi3, EnOcean, Zwave, Homematic

StephanFHEM

Zitat von: maluk am 25 April 2021, 22:29:56
Ich werde mich parallel mal nach einer Cloud-freien Alternative zu Arlo umsehen. Hardwareseitig sind die Arlo-Kameras ja gut, aber die fehlende offizielle API macht sie für meinen Einsatzzweck quasi nutzlos.

args.... hab gerade weil die Hardware gut ist und genau das mitbringt was ich gesucht habe auf dieses System gesetzt (was ja auch nicht gerade günstig war). Ein Kernbaustein war für mich die Möglichkeit zur FHEM-Anbindung und sich bei Bedarf ein Foto senden zu lassen. es wäre schon ganz schön übel, wenn das plötzlich wegfällt...

maluk

Noch habe ich nicht ganz aufgegeben. Momentan werden aber alle meine Anmeldeversuche von Arlo geblockt, daher kann ich noch nicht sagen, wann und ob ich das Modul wieder zum Laufen bekommen.

maluk

Zitat von: m0urs am 26 April 2021, 13:07:47
Ich hatte schon mal geschrieben, was ich seit einiger zeit zusammen mit FHEM benutze. Funktioniert auch mit der neuen Cloudflare-Authentication von Arlo und auch mit 2FA. Die Python-Library unterstützt alle möglichen Features der Arlo-Cams. Ich nutze allerdings nur sehr rudimentäre Funktionen, wie Aktivieren/Deaktivieren bzw. Modus umschalten der Kameras und einstellen der Helligkeit. Mehr brauche ich für mich nicht, da ich nur sicherstellen will, dass die Cams aus sind, wenn ich in den Garten gehe bzw. sicher bin, dass die Cams aktiv sind, wenn ich abends ins Bett gehe oder das Haus verlasse etc.

Aber vielleicht hilft es ja jemandem weiter. Bei Fragen, gerne bei mir melden.

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

Das Problem liegt auf jeden Fall am Anti-Bot-Schutz von Cloudflare. Beim Python-Modul pyaarlo ist die Komponente cloudscraper eingebunden, die das umgehen soll. Der Zugriff über pyaarlo klappt bei mir aber auch nicht immer.

@m0urs: Hast du hier auch manchmal Probleme? Vielleicht habe ich es mit meinen Tests auch übertrieben und Cloudflare hat meine IP kurzfristig gesperrt  :)

Sicher kann ich auf jeden Fall sagen, dass das Problem nicht ohne Python lösbar sein wird. Die cloudscraper-Komponente führt JavaScript aus, das der Anti-Bot-Schutz normalerweise an den Browser zurückliefert und erhält über den Weg Cookies, die für die weitere Verarbeitung zwingend notwendig sind. Es gibt keine vergleichbare Komponente für Perl und so etwas nachzuimplementieren wäre sehr aufwendig. Mein Plan ist jetzt, die cloudscraper-Komponente so in das FHEM-Modul zu integrieren, dass sie zum Login verwendet wird und danach die Cookies an an mein bisheriges Modul zurückgibt. Aber das wird eine größere Anpassung, die auf jeden Fall Zeit in Anspruch nehmen wird. Zumindest gibt es damit aber eine Chance, das Modul am Leben zu erhalten.

Trotzdem werde ich zukünftig endgültig einen Bogen um Hardware machen, die ausschließlich über die Cloud steuerbar ist und keine offizielle API anbietet.

mi.ke

Hi maluk,

klasse das Du es trotzdem versuchst, vielen Dank dafür.

@all
Achtung, nur meine Meinung:
,,Ich ärgere mich auch maßlos über a.) die hohen Preise für eine gute Hardware, die erstens eine schlechte Software und zweitens schlicht keinen (er ist so schlecht, dass es keiner ist) Support bietet. Ich würde arlo auch nicht mehr kaufen, aber die mehreren hundert Euro sind halt nicht so einfach auf doof wegzuwerfen.
Ist aber bei Netgear (Mutti von arlo) leider Standard, Switche und die Router sind hardwareseitig klasse, aber keine oder nur rudimentäre Firmwareupdates und mieser Support."
meine Meinung ENDE-

Nun aber zurück zum SAML von Cloudflare...
Bei einem Webserver ist es doch so, dass python, php, perl und co serverseitig laufen und javascript auf der Anwenderseite (Browser), also auf dem PC des Users.

Jetzt ohne große Programmierkenntnisse; würde es nicht funktionieren den Login über Perl zu generieren, den Token über ein externes Javascript abzufangen, einen http-Header anzuhängen, den Cookie erzeugen, und im Erfolgsfall wieder zurück auf Perl zu wechseln?
Wenn ein ,,dummer Browser" das ,,out oft he box" kann...ich meine auch gelesen zu haben, dass HTTPMOD (Modul in FHEM) mit Cloudflare umgehen kann (Ich glaube es war die Heizölpreisabfrage)...
Vielleicht könnte man das adaptieren?

...eine 2stufen Authentifizierung über E-Mail stelle ich mir irgendwie viel komplizierter vor

Aber leider hab ich keine Programmierkenntnisse und bin nur Anwender, deshalb den Post bitte nicht überbewerten. 
Vielleicht hilft er ja trotzdem. Wenn nicht, bitte ignorieren
cheers
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

m0urs

Zitat von: maluk am 26 April 2021, 22:49:44
@m0urs: Hast du hier auch manchmal Probleme? Vielleicht habe ich es mit meinen Tests auch übertrieben und Cloudflare hat meine IP kurzfristig gesperrt  :)

Ja, beim Testen kam das hin und wieder auch schon mal bei mir vor ... ;-)

In der Praxis funktioniert das bei mir aber seit Wochen absolut stabil. Ich melde mich allerdings auch meistens nur einmal an, wenn nachts mein FHEM einmal durchstartet. Ansonsten bleibt die Anmeldung bestehen und Cloudflare verhält sich damit auch ruhig.

Rumpeltec

Guten Tag zusammen,

vorab ein großes Dankeschön an Maluk für seine Arbeit und das tolle Arlo Modul.
Ich bin eigentlich nur zu FHEM gekommen, da ich sonst Iobroker und seine Visualisierung nutze und es dort keine Unterstützung für Arlo gibt. Die Verbindung vom IoB zu Fhem funktioniert sehr gut und so konnte ich alles steuern und auch Snapshots abgreifen.

Im Zuge der Suche nach einem Ausweg habe ich mir jetzt in einer VM den Home Assistant installiert, als 4. SchlauHausServer. Unter Hass.io habe ich Arlo mittels HACS und AArlo in voller Funktion.
Schalten, gespeicherte Videos abrufen und !LiveStream! funktionieren.
Ich habe keine Programmierkenntnisse und kenne nicht wirklich die Unterschiede zwischen den Systemen bzw. Modulen.
Meine ganzen Systeme und Module habe ich mithilfe von so hilfreichen Foren wie diesem hier und viel Lesen und lernen, ohne Vorkenntnisse zum Laufen gebracht.

Die Visualisierung im IoB habe ich vorerst über ein Iframe gelöst, in dem das Dashboard des HA mit den Kameransichten und Alarmpanel, sowie den Button für die Bedienung dargestellt wird.
Vielleicht hilft diese Methode dem ein oder anderen zur Überbrückung. Den HA direkt steuern von IoB aus habe ich noch nicht geschafft. Mit Fhem habe ich es noch nicht versucht zu verbinden.

Gruß, Rumpel

mi.ke

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

maluk

mi.ke, die Lösung wird nur mit Python funktionieren. Wenn der Anti-Bot-Schutz von Cloudflare zuschlägt, wird es richtig komplex. Daher werde ich wie bereits beschrieben den Login mit Python und der cloudscraper-Komponente durchführen und den Rest wieder mit dem bestehenden FHEM-Modul machen. Für Euch ändert sich dadurch nichts, Ihr müsst nur Python3 und cloudscraper auf Eurem Raspberry installieren. Prototypisch habe ich das auch schon mal ausprobiert und es scheint zu funktionieren. Beim Notification-Listener gibt es aber auch noch ein Problem, das ich beheben muss.

Die von m0urs entwickelte Python-Anbindung funktioniert natürlich auch. Mein ursprüngliches Modul war ebenfalls Python-basiert. Ich habe allerdings irgendwann bewusst auf Perl umgestellt, da die Notificatons dann FHEM-intern abgearbeitet werden. Für den reinen Login sehe ich aber kein Problem, Python aufzurufen.

Es bleibt daher schon noch einige Arbeit für mich zu tun, aber der Lösungsweg ist soweit klar. Also einfach gedulden, es wird demnächst eine Lösung geben.

ojb

Hallo maluk,

DANKE. Ich liebe das Modul auch. Schick mir mal eine PM damit ich Dir einen Kasten Bier oder ne gute Flasche Wein ausgeben kann.

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

#340
Nachdem ich etliche Stunden mit dem Versuch verbracht habe, nur den ersten Login-Schritt nach Python auszulagern und den Rest in FHEM zu machen und damit gescheitert bin, habe ich jetzt den kompletten Login-Prozess inkl. 2-Faktor-Authentifizierung nach Python verlagert. Alles was danach passiert, bleibt wie bisher im FHEM-Modul.

Anbei der aktuelle Stand meiner Entwicklung - alle Beta-Tester unter euch dürfen jetzt loslegen :)

Die angehängte Datei 49_Arlo.pm im Verzeichnis /opt/fhem/FHEM abelgen, vorher die vorhandene 49_Arlo.pm sichern. Die Datei 49_Arlo.py muss im Verzeichnis /opt/fhem/contrib abgelegt werden, nicht im Verzeichnis FHEM! Den genauen Speicherort muss ich noch mit Rudolf König klären, aber zu 90% bleibt es bei contrib.

Damit der Python-Login funktioniert, muss vorher Python3, PIP und Cloudscraper installiert werden:

sudo apt install python3 python3-pip
sudo pip3 install cloudscraper


Nach dem Kopieren der Datei und der Installation von Python/Cloudscraper muss in FHEM "reload 49_Arlo" durchgeführt werden, damit die neue Version aktiviert wird.

Bei mir tritt beim Login immer wieder folgender Fehler auf: "Detected a Cloudflare version 2 Captcha challenge, This feature is not available in the opensource (free) version." Falls das Arlo-Cloud-Device im Status "login failed" stehen bleibt und im Logfile der obige Fehler auftritt, einfach so lange "set Arlo_Cloud reconnect" versuchen, bis die Anmeldung klappt. Hier muss ich mir noch überlegen, wie ich den Fehler besser umgehe.

Auftretende Fehler bitte hier zurückmelden, das Fehlerhandling im Modul muss noch etwas verbessert werden.

Änderung 02.05.2021 13:35 Uhr
Ich habe nochmal eine neue 49_Arlo.pm hochgeladen. Teilweise gab es Probleme, dass keine Events angekommen sind. Hier habe ich noch etwas korrigiert.

dinkel75


choetzu

SUPER, gleich installiert.. Herzlichen Dank.. Ich teste nun das Ganze noch etwas durch und melde mich ggf..
Raspi3, EnOcean, Zwave, Homematic

Hobbel

#343
Vielen, vielen Dank!
Leider laufe ich warum auch immer in einen Python 3 f-string syntax error - bin auf Python 3.5.3-1 - System sagt neueste Version.
Arlo_Cloud device steht auf python-login und im log steht:

Traceback (most recent call last):
  File "contrib/49_Arlo.py", line 4, in <module>
    import cloudscraper
  File "/usr/local/lib/python3.5/dist-packages/cloudscraper/__init__.py", line 202
    print(f"Debug Error: {getattr(e, 'message', e)}")
                                                   ^
SyntaxError: invalid syntax

maluk

Aus deiner Python3-Version schließe ich, dass du noch Debian 9 (Stretch) installiert hast.  Ich habe bei mir Debian 10 (Buster) installiert, das bringt Python 3.7 mit und damit funktioniert die Cloudscraper-Komponente.

Debian 9 ist eigentlich seit Juli 2020 out of support, ich würde dir einen Update empfehlen. Alternativ gibt es auch Anleitungen im Netz, wie man Python 3.7 in Debian 9 installieren kann. Übrigens gibt es inzwischen schon Debian 11 mit Python 3.9 (allerdings noch nicht als stabiles Release).