Modul für Netgear Arlo-Kameras (Python-Version)

Begonnen von maluk, 07 Mai 2018, 20:40:06

Vorheriges Thema - Nächstes Thema

choetzu

Hey maluk, wo stehst du z.Z. ? Ich muss nach wie vor mind 1mal pro Tag stopServer und startServer machen und manchmal sogar noch ein kill.. also läuft noch nicht zuverlässig.

Ansonsten tiptop
Raspi3, EnOcean, Zwave, Homematic

maluk

Ich bin gerade leider am Renovieren. Ich versuche mal, nächste oder übernächste Woche mich um das Problem zu kümmern. Ich kann es nachvollziehen, wenn ich die Internet-Verbindung kappe. Das muss ich irgendwie erkennen und dann intern den Arlo-Prozess stoppen und neu starten.

mi.ke

#92
Hi maluk

Habe vor 2 Tagen auch den Versuch gestartet, mein bisheriges "arlo-Gefriemel" mit Deinem Modul zu ersetzen.
Hat mit der aktuell anhängenden Version schon sehr gut funktioniert, vielen Dank für Deine Arbeit !!!

Einzig die Readings der Cameras gingen nicht ein (Broken-Pipe-Error).Die Lösung war, den Heartbeat auf 90.0 zu setzen.
Seit dem läuft es super auf dem TestServer (RPi Zero W)

Wenn Du die Möglichkeit hättest, das Modul zu erweitern, würde ich mir folgendes wünschen:
Support für mehr als eine BasisStation
Support für die (4000) Sirene vzgw. als Device
Also nochmals herzlichen Dank für das Modul.Grüße
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

mi.ke

Zitat von: mi.ke am 05 Juni 2018, 12:17:24

Support für mehr als eine BasisStation


Gerade gesehen, dass scheint ja schon zu funktionieren.
sensationell
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

#94
Hallo,

habe heute das Arlo-Modul installiert. Funktioniert insoweit, das ich meine Base Station sowie die beiden Kameras auch angezeigt bekomme. Ich kann den Modus auf "Arm" und "Disarm" setzen und das wird dann auch korrekt ausgeführt. Allerdings werden mir keine Readings angezeigt und ich kann auch z.B. keinen eigenen Modus setzen. In den Logs, auch mit DEBUG, sehe ich nicht wirklich eine Fehlermeldung. 

Hier im Thread gab es ja schon das Problem, dass keine Readings angezeigt werden. Irgendwie scheine ich aber die zündende Idee, was ich tun muss, um das zu beseitigen, nicht richtig gefunden zu haben.

Könnte mir noch mal jemand auf die Sprünge helfen? Vielen Dank!

P.S. Ein Stop des Servers via FHEM funktioniert anscheinend auch nicht. Es bleibt der python Prozess zurück und ich muss ihn manuell killen. Ein Start funktioniert dann wieder via Web-GUI.

choetzu

Zitat von: m0urs am 06 Juni 2018, 11:54:40
Hallo,

habe heute das Arlo-Modul installiert. Funktioniert insoweit, das ich meine Base Station sowie die beiden Kameras auch angezeigt bekomme. Ich kann den Modus auf "Arm" und "Disarm" setzen und das wird dann auch korrekt ausgeführt. Allerdings werden mir keine Readings angezeigt und ich kann auch z.B. keinen eigenen Modus setzen. In den Logs, auch mit DEBUG, sehe ich nicht wirklich eine Fehlermeldung. 

Hier im Thread gab es ja schon das Problem, dass keine Readings angezeigt werden. Irgendwie scheine ich aber die zündende Idee, was ich tun muss, um das zu beseitigen, nicht richtig gefunden zu haben.

Könnte mir noch mal jemand auf die Sprünge helfen? Vielen Dank!

P.S. Ein Stop des Servers via FHEM funktioniert anscheinend auch nicht. Es bleibt der python Prozess zurück und ich muss ihn manuell killen. Ein Start funktioniert dann wieder via Web-GUI.

Hast du nach dem Stop/Start jeweils ein "set Arlo_Basis updateReadings" gemacht? Das vergisst man leicht ;)

Ich habe seit zwei Tagen folgendes Doif als Workaround am Laufen:

([Arlo_Restart_Dummy:"push"])
(set Arlo_Cloud stopServer)
(set Arlo_Cloud startServer)
(set Arlo_BasisSecurity updateReadings)

DOELSE


Sobald ich beim dummy "push" auslöse, wird der Server getoppt (wait 0), wieder gestartet (wait 10) und dann eben das updateReading gemacht (wait 10). Geht eigentlich soweit gut. Ich musste bislang kein manuelles Prozess killing durchführen. Beobachte weiter.

Ich will dann - bis das Problem gelöst ist - in einem nächsten Schritt das Doif nicht nur via push auslösen, sondern automatisieren.  Melde mich dann.
Raspi3, EnOcean, Zwave, Homematic

m0urs

Zitat von: choetzu am 06 Juni 2018, 13:38:36
Hast du nach dem Stop/Start jeweils ein "set Arlo_Basis updateReadings" gemacht?

Ja, das habe ich ausgeführt. Es kommt zwar keine Fehlermeldung, aber es erscheinen auch keine Readings :-(

m0urs

Zitat von: m0urs am 06 Juni 2018, 16:12:18
Ja, das habe ich ausgeführt. Es kommt zwar keine Fehlermeldung, aber es erscheinen auch keine Readings :-(

Ich sehe im Log auch keinerlei Einträge der Form

"INFO: Send command to FHEM: "

Da die Readings ja, wenn ich es richtig verstehe, via Telnet-Kommandos an FHEM erzeugt werden, würde ich vermuten, dass irgendwie keine Kommunikation via Telnet stattfindet.

Ich habe Telnet mit und ohne Passwort probiert.

Was mir auffällt: Wenn ich vom Linux-Prompt ein Telnet auf FHEM mache, muss ich immer einmal Return-Taste drücken, bevor ich den "fhem>" Prompt bekomme. Ist das normal? Oder hat das eventuell etwas mit dem Problem zu tun?

maluk

Dein Problem muss auf jeden Fall mit der Telnet-Kommunikation zusammenhängen. Erscheinen irgendwelche Fehlermeldungen im FHEM-Log? Und war die Installation von python-fhem (sudo pip install fhem) erfolgreich?

Falls du hier nichts findest, kannst du in 49_Arlo.py die Zeile 352 (os.remove('/tmp/arlo_params')) auskommentieren und danach den Python-Server neu starten. Danach solltest du in der Datei /tmp/arlo_params sehen, mit welchem Telnet-Port und Telnet-Passwort das Python-Modul versucht, auf FHEM zuzugreifen. Falls die Werte korrekt sind und trotzdem nichts funktioniert, bitte folgendes Python-Programm ausführen (Telnet-Passwort und ggf. Telnet-Port anpassen, falls nicht 7072 verwendet wird):

import fhem
fhem = fhem.Fhem('localhost', port=7072, password='myFhemTelnetPassword')
fhem.connect()
g = fhem.get_dev_state('global')
print g


Mit diesem Mini-Programm sollte die Konfiguration des global-Device von FHEM ausgegeben werden. Falls dies nicht passiert, gibt es ein Problem mit der Kommunikation zwischen Python und FHEM. In diesem Fall bitte die Fehlermeldung posten.

m0urs

Zitat von: maluk am 07 Juni 2018, 21:58:06
Erscheinen irgendwelche Fehlermeldungen im FHEM-Log? Und war die Installation von python-fhem (sudo pip install fhem) erfolgreich?

Keine Fehlermeldungen und die Installation von python-fhem habe ich gerade noch mal neu gemacht. Erfolgreich.

Zitat von: maluk am 07 Juni 2018, 21:58:06
Falls du hier nichts findest, kannst du in 49_Arlo.py die Zeile 352 (os.remove('/tmp/arlo_params')) auskommentieren und danach den Python-Server neu starten. Danach solltest du in der Datei /tmp/arlo_params sehen, mit welchem Telnet-Port und Telnet-Passwort das Python-Modul versucht, auf FHEM zuzugreifen.

Sieht für mich ok aus. Ich nutze (derzeit) kein Telnet-Passwort. Hatte das aber auch schon mal mit Passwort versucht:


<arlo_user> <arlo_password> Arlo_Cloud 8001 - - 7072



Zitat von: maluk am 07 Juni 2018, 21:58:06
Falls die Werte korrekt sind und trotzdem nichts funktioniert, bitte folgendes Python-Programm ausführen (Telnet-Passwort und ggf. Telnet-Port anpassen, falls nicht 7072 verwendet wird):

Funktioniert einwandfrei. (Ich habe aber noch zwei Logging-Zeilen eingefügt, da sonst ein Fehler kam):


import fhem
import logging
logging.basicConfig()
fhem = fhem.Fhem('localhost', port=7072, password='')
fhem.connect()
g = fhem.get_dev_state('global')
print g


Hier noch der Output vom /tmp/arlo.log nach Neustart FHEM und einmal manuell updateReadings:


2018-06-08 08:42:10,959 INFO: Starting new HTTPS connection (1): arlo.netgear.com
2018-06-08 08:42:12,282 DEBUG: "POST /hmsweb/login/v2 HTTP/1.1" 200 None
2018-06-08 08:42:12,382 DEBUG: "GET /hmsweb/users/devices HTTP/1.1" 200 4108
2018-06-08 08:42:12,385 INFO: Start event handler
2018-06-08 08:42:12,392 INFO: Started arlo http server on port 8001
2018-06-08 08:42:13,262 DEBUG: "GET /hmsweb/client/subscribe?token=<hier_war_das_token> HTTP/1.1" 200 None
2018-06-08 08:43:13,733 INFO: Starting new HTTPS connection (2): arlo.netgear.com
2018-06-08 08:43:14,017 DEBUG: "GET /hmsweb/users/devices HTTP/1.1" 200 None
2018-06-08 08:43:14,064 DEBUG: "POST /hmsweb/users/devices/notify/4RD3837TA2965 HTTP/1.1" 200 None
2018-06-08 08:43:14,132 DEBUG: "POST /hmsweb/users/devices/notify/4RD3837TA2965 HTTP/1.1" 200 None


Ich bin ratlos ...

m0urs

Nachtrag:

Ich habe mal Logging-Zeilen am Beginn der beiden Funktionen "executeFhemCommand" und "fhemConnection" eingefügt:


def executeFhemCommand(self, command, deviceId, params):
    logging.debug('URS: Enter executeFhemCommand')
    fhemCommand = 'set ' + self.fhemDevice + ' ' + command + ' ' + deviceId + ' ' + params
    logging.info('Send command to FHEM: ' + fhemCommand)
    self.fhemConnection().send_cmd(fhemCommand)

  def fhemConnection(self):
    logging.debug('URS: Enter fhemConnection')
    if self.fhem == None:
      self.fhem = fhem.Fhem('localhost', port=self.fhemPort, password=self.fhemPassword)
      self.fhem.connect()
    return self.fhem



Müssten diese Zeilen nicht für einen Output im Log sorgen, sobald die Prozedure mal aufgerufen wird?

Beide Prozeduren produzieren nämlich keinen Logeintrag und scheinen überhaupt nicht aufgerufen zu werden, wenn ich ein "updateReading" mache? Oder verstehe ich da was falsch?

m0urs

Ich hab mein Problem gelöst. Nachdem auch Versuche mit den Python-Examples von der Arlo-Library nicht erfolgreich waren, auf einem zweiten (Test) Raspberry aber liefen, habe ich noch mal alle von Arlo.py benötigten Python-Module deinstalliert und sie durch "pip install arlo" noch mal neu installieren lassen.

Nun funktioniert auch das Fhem-Modul und die Readings  werden angelegt!

m0urs

Und wenn ich jetzt noch eine Bitte loswerden dürfte: Besteht die Möglichkeit noch einzubauen, dass man die Helligkeit setzen kann (Wert: brightness, -2 bis +2). Habs versucht selbst einzubauen, aber da ich wenig Erfahrung mit Perl und Python habe bin ich nicht so recht zum Ziel gekommen. Hintergrund ist, das ich nachts, wenn es ganz dunkel ist, die Helligkeit auf Maximum setzen möchte, damit das Bild besser wird. Tagsüber muss das dann aber wieder zurück auf den Normalwert.

Vielen Dank schon mal im voraus!

mi.ke

Zitat von: maluk am 07 Mai 2018, 20:40:06

Bitte beachten, dass der Python-Server aktuell nur mit einer Basisstation funktioniert. Falls jemand mehrere Basisstationen im Einsatz hat, bitte melden.


meld.....meld....meld....meld....meld.....meld....meld....meld....


Zitat von: mi.ke am 05 Juni 2018, 13:55:57
Gerade gesehen, dass scheint ja schon zu funktionieren.
sensationell
Cheers
mi.ke

Also, da bin ich wohl zu kurz gesprungen.
Erkannt wird die 2.te BAsisStation und auch die CAMs, aber es kommen keine  Readings (aussen lastVideo.*)

Könntest Du, wenn Deine Renovierung beendet ist, mal schauen, ob Du mir weiterhelfen könntest?

Vielen Dank und Grüße

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

FrankieSOC

Hallo Zusammen,

ich weiß nicht mehr wo ich suchen soll.
Ein paar Minuten nach einem Neustart (17:52), erhalte ich diese Fehlermeldung.(zwischen 18:22 - 18:24)

Exception in thread EventStream:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 283, in QueueEvents
    for event in event_stream:
  File "/usr/local/lib/python2.7/dist-packages/sseclient.py", line 65, in __next__
    next_chunk = next(self.resp_iterator)
  File "/usr/lib/python2.7/dist-packages/requests/models.py", line 653, in generate
    for chunk in self.raw.stream(chunk_size, decode_content=True):
  File "/usr/lib/python2.7/dist-packages/urllib3/response.py", line 256, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/usr/lib/python2.7/dist-packages/urllib3/response.py", line 186, in read
    data = self._fp.read(amt)
  File "/usr/lib/python2.7/httplib.py", line 578, in read
    return self._read_chunked(amt)
  File "/usr/lib/python2.7/httplib.py", line 620, in _read_chunked
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib/python2.7/socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
  File "/usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 188, in recv
    data = self.connection.recv(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 995, in recv
    self._raise_ssl_error(self._ssl, result)
  File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 851, in _raise_ssl_error
    raise ZeroReturnError()
ZeroReturnError


In der arlo.log gibt es keine Fehlermeldung. der letzte Eintrag ist von 18:18.

Nach der Fehlermeldung kann ich die Kamera nach on /off oder amr /disarm schalten, aber es gibt keine Readings mehr.
Und weiter habe ich beobachtet, dass der Stromverbrauch vom "Server" massiv ansteigt. (siehe Bild)

Wenn ich in der Arlo_Cloud StopServer ausführe, sinkt der Stromverbrauch wieder. Mit einem StartServer bringe ich das System, aber nicht mehr zum laufen, ich muss ihn wirklich neustarten.

Hat wer einen Tipp?

Viele Grüße
Frank