Modul für Netgear Arlo-Kameras

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

Vorheriges Thema - Nächstes Thema

maluk

Ich habe gerade eine neue Version hochgeladen, die dann ab morgen vormittag beim FHEM update mitkommen wird. Dort habe ich jetzt hoffentlich die Verbindungsabbrüche eliminiert, die auch bei mir sporadisch aufgetreten sind. Ich habe das jetzt bei mir einige Tage laufen lassen, um Erfahrungen damit zu sammeln.

Eine wichtige Neuerung habe ich auch eingebaut: wenn alle Basisstationen disarmed sind, wird die Verbindung zur Cloud abgebaut. Wenn man neue Befehle absendet oder wieder in einer Basisstation die Überwachung wieder aktiviert bzw. einen Mode setzt, wird die Verbindung wieder aufgebaut. Wie lange eine Verbindung noch nach aktiv bleibt, wenn bei allen Basisstationen die Überwachung deaktiviert wurde, kann über das Attribut expiryTime gesetzt werden. Standardmäßig wird die Verbindung nach 10 Minuten abgebaut, die Angabe erfolgt in Sekunden (also 600 = 10 Minuten).  Wenn der Wert auf 0 gesetzt wird, wird wie bisher die Verbindung nie abgebaut. Diesen Wert würde ich aber nur setzen, falls es unerwartete Probleme gibt. Ansonsten gibt es keinen Grund für eine dauerhafte Verbindung.

mi.ke

Zitat von: mi.ke am 29 September 2019, 15:26:00

Wenn eine Kamera offline ist (Akku komplett leer, Verbindung gestört oder gestolen) merkt das Modul es nicht.

Die Readings dieses Gerätes state, signalStrength, batteryLevel und brightness werden trotzdem aktuallisiert, bleiben aber auf dem letzten Wert und bekommen einen neuen timstamp.
Es sieht also auf den ersten Blick so aus, als wäre das Gerät noch online.

Wenn man versucht ein solches "Offline-Gerät" zu schalten, passiert nichts. Im LOG gibt es dann eine Meldung mit LogLevel 4:
"action":"set","error":{"code":4000,"message":"Resource not found."}


@maluk
Kannst Du den Code 4000 irgendwie verwerten?
Ich finde, daß das noch eine elementare Sicherheitsfunktion wäre, wenn state auch "offline" könnte,
also Kamera (Akku komplett leer, Verbindung gestört oder gestolen)
und nicht sugestieren würde "es ist alles in Ordnung".

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, Hallo Forum,
ich habe das Modul Arlo aktiviert und kann die Kamera nun, ausgelöst mit einem Bewegungsmelder mit dem Befehl startRecording starten.

Mein DOIF sieht folgendermaßen aus:
([10:45-22:00] and [Bewegungsmelder:state] eq "motion")(set Arlo startRecording)

Frage: Wie kann ich die Aufnahme zeitlich begrenzen? Damit sie zum Beispiel nach 15 Sekunden stoppt?
Ein on-for-timer gibt es ja hier nicht.
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

choetzu

Hallo tom
Wieso verbaust du nicht in dein DOIF am Schluss ein (set Arlo stopRecording) ein? Und dann das wait Attribut auf 0,15 setzen. Dann hats den selben Effekt wie on-for-timer.
Lg c

Ps und ich würde auf den Event triggern und nicht auf den Status.
Raspi3, EnOcean, Zwave, Homematic

tom44


Hi C,

ZitatWieso verbaust du nicht in dein DOIF am Schluss ein (set Arlo stopRecording) ein? Und dann das wait Attribut auf 0,15 setzen. Dann hats den selben Effekt wie on-for-timer.

Weil ich leider nicht so viel Erfahrung habe .... ;-) Vielen Dank, ich habe das nun so erweitert:
([10:45-22:00] and [Bewegungsmelder:state] eq "motion")(set Arlo startRecording) (set Arlo stopRecording)
mit
attr arlo wait 0,15

ZitatPs und ich würde auf den Event triggern und nicht auf den Status.
Aus dem Event Monitor?
Das wäre dann wahrscheinlich?    
([Arlo:"^motionDetected:.1$"]) ()
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

Nico_98

Ich bekomm immer folgende Fehlermeldung:

Arlo call was not successful: {"data":{"error":"1021","message":"Access token is empty.","reason":"Access token is empty"},"success":false}

Hat jemand eine Idee?
Zugangsdaten sind richtig.
LG Nicolas

StephanFHEM

Ich wollte bei Black Friday zuschlagen aber schwanke noch zwischen Arlo und Blink XT. Eine Funktion die ich aber wirklich haben möchte scheint keines der Systeme zu bieten: einen Live Stream über TabletUI. Möchte damit Tier im Klein-Tierstall zuschauen können. Kann mir einer sagen ob das möglich ist? Oder muss da wieder auf eine ,,normale" IPCam ausweichen?

maluk

Zitat von: Nico_98 am 12 November 2019, 19:48:35
Ich bekomm immer folgende Fehlermeldung:

Arlo call was not successful: {"data":{"error":"1021","message":"Access token is empty.","reason":"Access token is empty"},"success":false}

Hat jemand eine Idee?
Zugangsdaten sind richtig.
LG Nicolas

Hallo Nicolas,

sorry, ich habe keine E-Mail-Benachrichtigungen mehr von FHEM bekommen und daher nicht mitbekommen, dass es hier Fragen gab. Der Fehler dürfte nur auftreten, wenn die Anmeldedaten falsch sind. Die spitzen Klammern (<>) aus dem Beispiel musst du weglassen, also nur
define Arlo_Cloud Arlo ACCOUNT hans.mustermann@xyz.de meinPasswort

angeben. Falls der Fehler trotzdem auftritt, bitte mal temporär das Attribut verbose am Cloud-Device auf 5 setzen und im Logfile schauen, welche Antwort von Arlo zurückkommt (danach wieder auf 3 setzen).

maluk

Zitat von: StephanFHEM am 18 November 2019, 20:56:51
Ich wollte bei Black Friday zuschlagen aber schwanke noch zwischen Arlo und Blink XT. Eine Funktion die ich aber wirklich haben möchte scheint keines der Systeme zu bieten: einen Live Stream über TabletUI. Möchte damit Tier im Klein-Tierstall zuschauen können. Kann mir einer sagen ob das möglich ist? Oder muss da wieder auf eine ,,normale" IPCam ausweichen?

Leider bin ich etwas spät für Black Friday. Live Streams bekommt man mit Arlo nur über das RTSP(S)-Protokoll. Das ist nicht ganz so einfach in TabletUI zu integrieren, aber mit etwas Aufwand könnte es funktionieren (ohne Garantie). Zu Blink kann ich nichts sagen, aber wenn due eine Stromversorgung in deinem Kleintierstall hast, kannst du eine normale Webcam verwenden. Der Vorteil von Arlo ist, dass die Kameras mit Akku funktionieren und dadurch unabhängig von einer Stromversorgung betrieben werden können.

herbert19

Gibt es eine Möglichkeit das aktuelle Bild der Arlokamera anzuzeigen?

Habe fhem auf Raspberry 4 installiert, läuft bestens, die Videos werden auch automatisch aus der Arlo-Cloud auf den raspberry kopiert. Ich möchte jedoch wenn es klingelt nicht warten, bis das Video kopiert ist, sondern auf die Kamera schauen, ähnlich wie es mit der ARLO-App am Tablett geht.

LG
Herbert

maluk

Hallo Herbert,

wenn dir ein Bild reicht, kannst du set <Kamera> snapshot aufrufen. Dann wir ein einzelnes Bild aufgenommen, das relativ schnell (innerhalb ca. 3 - 4 Sekunden) lokal aufgerufen werden kann. Sobald das Bild von Arlo kopiert wurde, wird das Attribut snapshotUrl aktualisiert. 

herbert19

Danke für die Antwort, das Snapshotbild wird jetzt auf dem raspi erzeugt.
Ich zeige es mit iframe https://192.168.26.180:8083/fhem/www/arlo/52M17C7NA8566_snapshot.jpg   an.

Leider habe ich noch nichts gefunden, damit das Bild im Firefox sofort aktualisiert wird.
Das Attribut snapshotUrl wird sofort aktualisiert.
Habe mal mit define Arlo_x  at +*00:00:20 get Arlo_vorne snapshot festgelegt, dass
alle 20 Sekunden ein Snaphshot gemacht wird. Dieser wird auch auf dem raspi abgelegt,
aber leider nicht sofort angezeigt bzw. aktualisiert.

Wie kann ich z.B. abhängig vom Attribut snapshotUrl sofort das aktuelle Bild anzeigen?

maluk

Du kannst eine kleine HTML-Datei in deinem Arlo-Web-Verzeichnis ablegen, die du dann in den iframe einbindest. In dieser HTML-Datei wird dann das Bild angezeigt und regelmäßig neu geladen. Durch Anhängen eines Parameters an die URL wird das Bild auch nie aus dem Cache geladen, sondern immer neu vom Server geladen. Hier der Beispiel-Code:

<html>
<head>
<script>
   function loadImage() {
     var d = new Date();
     document.getElementById("img").src = "52M17C7NA8566_snapshot.jpg?t=" + d.getTime();
     window.setTimeout(loadImage, 2000);
   }
</script>
</head>
<body onload="loadImage()">
  <img id="img">
</body>
</html>


Hier wird alle 2 Sekunden (Parameter 2000 in setTimeout bedeutet 2000 Millisekunden) das Bild neu geladen. Wenn du seltener oder häufiger aktualisieren möchtest, musst du diesen Parameter entsprechend anpassen.

herbert19

wie funktioniert das Einbinden der HTML-Datei in den iframe?
mit attr ?
Habe die html-Datei unter /opt/fhem/www/arlo/snapshot.html abgelegt.
Wo wird die Funktion "loadImage" angestossen?

Mein iframe sieht so auf:
Internals:
   CFGFN     
   DEF        iframe 192.168.26.180:8083/fhem/www/arlo/snapshot.html
   FUUID      5e09ddbb-f33f-7e75-2ea6-73b773f50a245abf
   LINK       192.168.26.180:8083/fhem/www/arlo/snapshot.html
   NAME       ss
   NR         395
   STATE      initialized
   TYPE       weblink
   WLTYPE     iframe
Attributes:
   htmlattr   width="480" height="560"
   room       Snapshot

maluk

Du darfst www nicht in den Pfad-Namen aufnehmen, da alles unter dem Verzeichnis www über host:8083/fhem aufgerufen werden kann. Außerdem kannst auch die IP-Adresse weglassen. Die Einbindung müsste wie folgt funktionieren:

define xyz weblink iframe /fhem/arlo/snapshot.html

loadImage wird automatisch beim Laden aufgerufen - siehe <body onload="loadImage()">