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

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

Vorheriges Thema - Nächstes Thema

choetzu

hallo mi.ke. danke. hab ich so gemacht und heute morgen neu gestartet. Heute Nachmittag kam dann folgende Meldung:

Exception in thread HeartbeatThread:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 296, in Heartbeat
    self.Ping(basestation)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 394, in Ping
    return self.NotifyAndGetResponse(basestation, {"action":"set","resource":"subscriptions/"+self.user_id+"_web","publishResponse":False,"properties":{"devices":[basestation_id]}})
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 379, in NotifyAndGetResponse
    transId = self.Notify(basestation, body)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 370, in Notify
    self.request.post('https://arlo.netgear.com/hmsweb/users/devices/notify/'+body['to'], body, headers={"xcloudId":basestation.get('xCloudId')})
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 150, in post
    return self._request(url, 'POST', params, headers)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 141, in _request
    raise HTTPError('Request ({0} {1}) failed'.format(method, url), response=r)
HTTPError: Request (POST https://arlo.netgear.com/hmsweb/users/devices/notify/48E3575FAEEFD) failed
Raspi3, EnOcean, Zwave, Homematic

mi.ke

@maluk

Heute Nacht zur Zeit der DSL-Zwangstrennung  blieb wieder alles hängen.
(mein automatisches DOIF zum Python-Servers hatte ich zu Testzwecken ausgeschaltet)
Die verwendete Version des Moduls ist die vom 21.06.2018.

Meldung im arlo.log
2018-06-27 03:52:42,011 INFO: Timeout occured in handle arlo events - restart event handler

Meldungen im Fhem-Log:
Exception in thread HeartbeatThread:
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 301, in Heartbeat
    self.Ping(basestation)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 399, in Ping
    return self.NotifyAndGetResponse(basestation, {"action":"set","resource":"subscriptions/"+self.user_id+"_web","publishResponse":False,"properties":{"devices":[basestation_id]}})
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 384, in NotifyAndGetResponse
    transId = self.Notify(basestation, body)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 375, in Notify
    self.request.post('https://arlo.netgear.com/hmsweb/users/devices/notify/'+body['to'], body, headers={"xcloudId":basestation.get('xCloudId')})
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 154, in post
    return self._request(url, 'POST', params, headers, raw)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 133, in _request
    r = self.session.post(url, json=params, headers=headers)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 555, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 490, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))



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

tom44


Hallo Maluk,

Leider funktioniert bei mir die Adresse unten nicht, es wird kein einziges package gefunden.
Zitat
Falls dies nicht funktioniert, kann man noch mit dem Parameter "-i https://pypi.python.org/simple" den Server festlegen, von dem die Installations-Informationen geholt werden sollen,
also z.B. sudo pip install -i https://pypi.python.org/simple cffi

es mag vielleicht eine blöde Frage sein. Wie komme ich denn an eine aktuelle Adresse, um die packages herunterzuladen?
FHEM 17762 auf Raspberry Pi 3 Model B Rev | nanoCUL868, CUL 868 MhZ, Rolladen- Aktoren, Heizung | Z-Wave, FIBARO FGD211 Universal Dimmer 500W, Popp Plug-in Dimmer, FIBARO Wall Plug, Everspring PIR Motion Sensor, FIBARO Door Opening Sensor | Netatmo

maluk

Hallo tom44,

normalerweise brauchst du den Parameter -i https://pypi.python.org/simple nicht angeben. Ich musste nur auf meinem Cubietruck die sudo pip install Befehle vor dem zu installierenden Paket um -i https://pypi.python.org/simple erweitern, also sudo pip install -i https://pypi.python.org/simple urllib3[secure] usw. Funktioniert das bei dir nicht?

tom44

Hallo Maluk,

danke für deine Antwort. Nein, es wird - wenn ich das richtig interpretiere - nicht das richtige Verzeichnis gefunden. Beim ersten Versuch (ohne Adresse) findet er nicht das package (von mir fett hervorgehoben), beim zweiten Versuch (mit Adresse) findet er keine distribution ...
:
Zitat
XXX@raspberrypi:~# sudo apt-get install python-cffi
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package python-cffi
XXX@raspberrypi:~# sudo pip install -i https://pypi.python.org/simple python-cf                                   fi
Downloading/unpacking python-cffi
  Could not find any downloads that satisfy the requirement python-cffi
No distributions at all found for python-cffi
Storing complete log in /root/.pip/pip.log

Hast Du vielleicht eine Idee, was bei mir falsch läuft?

LG Tom
FHEM 17762 auf Raspberry Pi 3 Model B Rev | nanoCUL868, CUL 868 MhZ, Rolladen- Aktoren, Heizung | Z-Wave, FIBARO FGD211 Universal Dimmer 500W, Popp Plug-in Dimmer, FIBARO Wall Plug, Everspring PIR Motion Sensor, FIBARO Door Opening Sensor | Netatmo

mi.ke

Hi Maluk.

Ich wollte noch mal nachfragen wegen der Untertützung für die 2. BasisStation.

Die Version vom 22.06.2018 macht leider extreme Probleme.
(Fehlerbeschreibung in Antwort 117)

Danke 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

choetzu

Zitat von: choetzu am 26 Juni 2018, 22:10:18
hallo mi.ke. danke. hab ich so gemacht und heute morgen neu gestartet. Heute Nachmittag kam dann folgende Meldung:

Exception in thread HeartbeatThread:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 296, in Heartbeat
    self.Ping(basestation)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 394, in Ping
    return self.NotifyAndGetResponse(basestation, {"action":"set","resource":"subscriptions/"+self.user_id+"_web","publishResponse":False,"properties":{"devices":[basestation_id]}})
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 379, in NotifyAndGetResponse
    transId = self.Notify(basestation, body)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 370, in Notify
    self.request.post('https://arlo.netgear.com/hmsweb/users/devices/notify/'+body['to'], body, headers={"xcloudId":basestation.get('xCloudId')})
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 150, in post
    return self._request(url, 'POST', params, headers)
  File "/usr/local/lib/python2.7/dist-packages/Arlo.py", line 141, in _request
    raise HTTPError('Request ({0} {1}) failed'.format(method, url), response=r)
HTTPError: Request (POST https://arlo.netgear.com/hmsweb/users/devices/notify/48E3575FAEEFD) failed


Hi maluk
auch bei mir kommt noch die folgende Fehlermeldung.

Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 290, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 318, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 331, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 652, in __init__
    self.handle()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
    self.handle_one_request()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
    method()
  File "FHEM/49_Arlo.py", line 320, in do_GET
    except ConnectionError as e:
NameError: global name 'ConnectionError' is not defined


Gibts da wirklich keine Möglichkeit dies zu beheben?

danke.

An die anderen: seht ihr einen Workaround diese Logeinträge "auszuschalten"?

127.0.0.1 - - [31/Jul/2018 23:19:29] "GET /BASESTATION?device=Arlo_BasisSecurity&cmd=updateReadings&basestationId=48E3577FA00FD&cameraId= HTTP/1.0" 200 -
Raspi3, EnOcean, Zwave, Homematic

tobias.vorberg

Hi,

ich habe alles Installiert bekommen und das Modul eingebunden.
Nach dem "define Arlo_Cloud Arlo ACCOUNT hans.mustermann@xyz.de meinPasswort" kommt im FHEM-Log folgende Meldung:

Traceback (most recent call last):
  File "FHEM/49_Arlo.py", line 12, in <module>
    from Arlo import Arlo
ImportError: No module named Arlo

Es gibt dann den Raum Arlo und die Arlo_Cloud, aber ohne Funktion.
Mit Autocreate lasst sich auch nichts weiter anlegen.
Ich habe mal versucht einen anderen Port anzugeben als dritten Parameter, aber der geht immer Automatisch auf 8001

Jemand eine Idee?

Tobias

tobias.vorberg

Hat sich erledigt. Nach dem ich alles sauber neu installiert habe läuft es ohne Fehler.

maluk

Zitat von: tom44 am 30 Juli 2018, 21:47:15
Hallo Maluk,

danke für deine Antwort. Nein, es wird - wenn ich das richtig interpretiere - nicht das richtige Verzeichnis gefunden. Beim ersten Versuch (ohne Adresse) findet er nicht das package (von mir fett hervorgehoben), beim zweiten Versuch (mit Adresse) findet er keine distribution ...
:
Hast Du vielleicht eine Idee, was bei mir falsch läuft?

LG Tom

Wenn du mit pip installierst, musst du python- weglassen, also sudo pip install cffi

maluk

mi.ke / choetzu - ich habe Euch nicht vergessen, aber momentan so viel um die Ohren, dass ich leider nicht dazu komme, mich um das Modul zu kümmern. Das Problem mit den Verbindungsabbrüchen trifft mich manchmal auch, da auch bei Internet über Kabel ab und zu die Verbindung abbricht. Das Problem daran ist, dass der Fehler schwer zu reproduzieren ist.

maluk

Hi choetzu,

an der Fehlermeldung sehe ich, dass du nicht die aktuellste Version installiert hast. Lade dir mal die letzte Version herunter und starte den Python Server nochmal neu.

mi.ke

#132
Hi Maluk,
Kein Stress, wir sind glaub ich, alle happy, dass schon soviel mit dem Modul möglich ist !!

Aber nicht die Version vom 22.06.2018 nehmen, sondern die vom 21.06.2018.
Das einzige was dort nicht funktioniert ist, dass der "Heartbeat" bei wegbrechen der Internetverbindung abbricht.
Dann einfach automatische den Python-Server (mit DOIF oder notify) neustarten.

Ich schreibe bei jeder Aktualisierung der Readings (default 1 Std.) einen timestamp mit in ein Kamera-Reading. Wenn das Delta zu JETZT() > 3800 ist, wird der Python-Server neugestartet.
Und nachts zwischen 3:30 und 4:00 Uhr gibt es eine DSL-Zwangstrennung, da läuft das Script öfter und das Delta ist kleiner.

So läuft das Modul schon 3-4 Wochen sauber durch (bei einer Basisstation, die Kamera an der Zweiten, hat nicht alle Readings, die Base schaltet aber brav die Modis um)

Grüße

mi.ke

PS.
Ich häng Euch mal die Raw Definition des Neustart DOIFs an. Vielleicht hilft es ja jemandem.


defmod Arlo_Server_ueberwachnung_di DOIF ([Arlo_Server_Restart:"restart"]) \
   (set Arlo_Cloud stopServer)\
   (set Arlo_Cloud startServer)\
   (set Arlo_Aussenbereich updateReadings)\
   (set Arlo_Innenbereich updateReadings)\
   (set Arlo_Server_Restart fuse)\
DOELSEIF\
([Arlo_Server_Restart:"update"]) \
   (set Arlo_Aussenbereich updateReadings)\
   (set Arlo_Innenbereich updateReadings)\
   (set Arlo_Server_Restart fuse)\
DOELSE


attr Arlo_Server_ueberwachnung_di do always
attr Arlo_Server_ueberwachnung_di room Arlo
attr Arlo_Server_ueberwachnung_di timestamp-on-change-reading state
attr Arlo_Server_ueberwachnung_di wait 0,10,10,10,2:0,10,10,2
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

choetzu

Zitat von: maluk am 01 August 2018, 22:10:55
Hi choetzu,

an der Fehlermeldung sehe ich, dass du nicht die aktuellste Version installiert hast. Lade dir mal die letzte Version herunter und starte den Python Server nochmal neu.


done. Danke für den Hinweis. Und auch ich bin froh, wenn du von Zeit zu Zeit dran arbeitest. Null Stress, aber mach mal was ;) Nur Spass.. Schliesse mich mi.ke an.

@mi.ke Ich habe ähnliche DOIFs. Was ich aber noch nicht gelöst habe, ist, wenn FHEM nach einem Update All neu gestartet werden muss. Da muss ich immer manuell den Server neu starten.

lg c
Raspi3, EnOcean, Zwave, Homematic

mi.ke

Zitat von: choetzu am 01 August 2018, 22:54:35
Was ich aber noch nicht gelöst habe, ist, wenn FHEM nach einem Update All neu gestartet werden muss. Da muss ich immer manuell den Server neu starten.

Du macht doch wohl keine automatischen "Update All" ?!?!? :o

Naja, Otto (Otto123) hier aus dem Forum hat in seinem Blog dazu etwas sehr schön aufbereitet.
http://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html


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