Hallo zusammen, ich weiß der Thread ist schon ein Jahr alt.
Aber ich hab mal etwas getüftelt und habe für mich etwas brauchbares entwickelt, ohne Node Red benutzen zu müssen.
Ich generiere auf „Knopfdruck“ im ioBroker einen Snapshot der ArloCams mit diesem vorher installiertem Modul: https://github.com/tchellomello/python-arlo
Ich glaube es ist darauf zu achten, das keine "merkwürdigen Sonderzeichen" in den Cam und Basenamen vorhanden sind (wie bei mir vorher HaustÜr - bin aber nicht sicher)
Ich habe das Python Modul (wie auf der GitHub Page beschrieben) unter dem User Pi auf meinem Raspi installiert.
dann findet man unter: /home/pi/.local/lib/python2.7/site-packages
die installierten Python Sachen.
(Ordner ist im Normalfall nicht sichtbar - im /home/pi Verzeichnis sieht man es mit dem Befeh: ls -a )
in dem Ordner sind bei mir folgende Ordner zu finden:
- certifi, - chardet, - idna, - pyarlo, - pyarlo-0.2.4.egg-info, - requests, - sseclient, -urllib3
plus einige andere Ordner die mit ...info enden.
Alle Ordner aus dem Verzeichnis: /home/pi/.local/lib/python2.7/site-packages
habe mir in einen Arlo Orner gepackt unter: /home/iobroker/Arlo
Jetzt erstelle ich mit: sudo nano snapshot.py - eine Python Datei, die mir dann (in meinem Fall für alle drei Kameras) einen Snapshot macht und den zurückgegebenen Link in eine .html Datei speichert.
in Zeile 4: USERNAME & PASSWORD geändert werden, hier bitte Eure Daten eintragen.
#!/usr/bin/python
from pyarlo import PyArlo
arlo = PyArlo("USERNAME", "PASSWORD")
base = arlo.base_stations[0]
cam1 = arlo.cameras[0]
cam1.schedule_snapshot()
cam1.snapshot_url
file1 = open("/opt/iobroker/iobroker-data/files/html/Haustuer.html","w")
file1.write('<meta http-equiv="refresh" content="0; URL=')
file1.write(cam1.snapshot_url)
file1.write('">')
file1.close()
cam2 = arlo.cameras[1]
cam2.schedule_snapshot()
cam2.snapshot_url
file2 = open("/opt/iobroker/iobroker-data/files/html/Wohnzimmer.html","w")
file2.write('<meta http-equiv="refresh" content="0; URL=')
file2.write(cam2.snapshot_url)
file2.write('">')
file2.close()
cam3 = arlo.cameras[2]
cam3.schedule_snapshot()
cam3.snapshot_url
file3 = open("/opt/iobroker/iobroker-data/files/html/Terrasse.html","w")
file3.write('<meta http-equiv="refresh" content="0; URL=')
file3.write(cam3.snapshot_url)
file3.write('">')
file3.close()
Alles anzeigen
speichern und anschließend noch das Script ausführbar machen:
chmod +x snapshot.py
Wenn Ihr das Script jetzt aufruft:
python snapshot.py oder ./snapshot.py (geht nur nach chmod +x)
sollten im Verzeichnis:
/opt/iobroker/iobroker-data/files/html/
drei html Dateien zu finden sein, wenn Ihr im Code die Namen nicht angeglichen habt:
Haustuer.html, Terrasse.html und Wohnzimmer.html
(die Dateinamen kann man einfach auch nachträglich im Code noch anpassen)
im iobroker könnt Ihr jetzt mit dem basic_html Widget einfach:
<a href=/html/Haustuer.html><b>Haustür</b></a>
<a href=/html/Terrasse.html><b>Terrasse</b></a>
<a href=/html/Wohnzimmer.html><b>Wohnzimmer</b></a>
verarbeiten ggf. den Namen der HTML-Datei und die Bezeichnung im Link anpassen.
Um einen Snapshot auszulösen, habe ich einen Datenpunkt in iobroker angelegt:
als "Schalter" (bei mir hab ich den Datenpunkt "Snapshot" genannt)
Diesen kann man z. B. mit "hqWidgets-on/off" einbinden.
bei min: false & bei max: true
eintragen.
Jetzt brauchen wir noch ein kleines Blockly-Script:
Datenpunkt "Snapshot" ggf. anpassen in meinem Blockly heißt er: XSD.0.Snapshot
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="on" id="FD([,3lZ[xilp,L`gDym" x="138" y="63">
<field name="OID">XSD.0.Snapshot</field>
<field name="CONDITION">true</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="exec" id="c*Jj32.`ekREc;^uU(_?">
<mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="COMMAND">
<shadow type="text" id="clt_qL..1s=kIEYSUJDB">
<field name="TEXT">/home/iobroker/Arlo/snapshot.py</field>
</shadow>
</value>
</block>
</statement>
</block>
</xml>
Alles anzeigen
Wenn man jetzt das "hqWidgets-on/off" in VIS drückt, wird der Snapshot ausgelöst.
Mit den Hyperlinks die man im VIS angelegt hat, wird man dann zu seinem Snapshot weiter geleitet und bekommt den Snapshot angezeigt.
Mit einer DynDns Adresse (oder festen IP vom Provider) und dem freigegebenem Port 8082 am Router kann man die Links auch von unterwegs öffnen und (bei installiertem und konfiguriertem Telegarm Adapter) sich bei auslösen das ganze per Telegram zu senden lassen:
Anbei ein Blockly dazu:
wobei in den Links "deineDYNDNS" geändert werden muss in Deine persönliche DynDns oder feste IP.
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="on_ext" id="SIJ1julPR|K9.t|/Am}6" x="-337" y="-163">
<mutation items="1"></mutation>
<field name="CONDITION">true</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id=":G:TUoVd=,68hT7|{x(^">
<field name="oid">XSD.0.Snapshot</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="telegram" id="E~p,8;)^rLSo,Dc~NQEO">
<field name="INSTANCE">.0</field>
<field name="LOG"></field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">default</field>
<value name="MESSAGE">
<shadow type="text" id="6#tuPrMeXW6~N{mXV08N">
<field name="TEXT">--> Snapshot <--------------------</field>
</shadow>
<block type="text_join" id="qlP[ZDvp%-6z9BT~X=Cm">
<mutation items="2"></mutation>
<value name="ADD0">
<block type="text" id="~kKv_*;QwoA9Rnf28n!Y">
<field name="TEXT">---> Snapshot <--- </field>
</block>
</value>
<value name="ADD1">
<block type="time_get" id="qPH#^4bHB1+caQ1VtwNM">
<mutation format="true" language="false"></mutation>
<field name="OPTION">custom</field>
<field name="FORMAT">SS:mm:ss - TT.MM ---</field>
</block>
</value>
</block>
</value>
<next>
<block type="telegram" id="+p4=jSbwyT+mg9]pT3_P">
<field name="INSTANCE">.0</field>
<field name="LOG">log</field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">HTML</field>
<value name="MESSAGE">
<shadow type="text" id="R:-?k.zZGd,N?jOB;R}B">
<field name="TEXT"><a href="http://deineDYNDNS:8082/html/Haustuer.html">Haustür</a> </field>
</shadow>
</value>
<next>
<block type="telegram" id="u2E/^kkO`p-|CQ2)(`|l">
<field name="INSTANCE">.0</field>
<field name="LOG">log</field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">HTML</field>
<value name="MESSAGE">
<shadow type="text" id="PGxRg[cKf_MhL#;3*#og">
<field name="TEXT"><a href="http://deineDYNDNS:8082/html/Terrasse.html">Terrasse</a> </field>
</shadow>
</value>
<next>
<block type="telegram" id="H?,pL|)u|~!q_gcBFeIp">
<field name="INSTANCE">.0</field>
<field name="LOG">log</field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">HTML</field>
<value name="MESSAGE">
<shadow type="text" id="TG6fJh}bSAQtX^%rw^Mf">
<field name="TEXT"><a href="http://deineDYNDNS:8082/html/Wohnzimmer.html">Wohnzimmer</a> </field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>
Alles anzeigen
Bei mir funktioniert das wesentlich zuverlässiger als die Lösung über Node Red.