NEWS
Blink Camera System
-
Leider ist es mir nicht gelungen das Skript mit exec (JS oder Blockly) wegen fehlender Berechtigung aufzurufen. Ich habe das dann mit dem Linux-Control Adapter gelöst.
Daran bin ich auch fast gestorben, denn auch mit dem Linux-Control klappt es bei mir nicht.
Die einfache Lösung:
Man muss blinkpy mit dem user "iobroker" installieren:sudo -H -u iobroker pip install blinkpy
Danach kann man das Python Skript normal via exec aufrufen.
-
Howto Blink in IoBroker einbinden
WICHTIG: Diese Anleitung ist noch ein Entwurf, ich brauche hier vermutlich noch Input von den Profis hier im Forum, aber Ziel ist es, eine für jeden nachvollziehbare Anleitung als Basis für die Einbindung der Blink-Kameras in IoBroker zu erhalten! edit 2025-03-28: es scheint zu funktionieren.
Basis dieses How-To sind die Informationen zusammengefasst aus diesem Thread und dem GitHub-Projekt: https://github.com/fronzbot/blinkpy
Ich habe mal hier aus dem Thread die Informationen, Codezeilen und Scripte übernommen, damit ein ordentliches How-To für Neulinge nachvollziehbar dokumentiert ist.... Gerne könnt ihr mir helfen, das How-To zu vervollständigen, zu berichtigen, und lauffähig zu machen, damit alle ihre Blink-Kameras in Iobroker einbinden können)
Will vorher noch anmerken, dass ich nicht der Coding-Spezialist bin und mit dem "Try and Error-Prizip" arbeite.
Start des HOWTO (Stand 2025-03-28)
Ich werde den Stand (nach Korrekturen) dann immer updatenWelche Funktionen erwarten euch nach erfolgreicher Durchführung:
- Blink Kameras sind in IoBroker eingebunden
- Zugriff auf das letzte gespeicherte Bild der Kameras
- Zugriff auf das letzte gespeicherte Video der Kameras
- Anzeige des Bilds in der Visu
- Anzeige des Videos in der Visu
- Scharfschalten und Deaktivieren via Datenpunkt
Grundlagen:
(bei mir läuft das ganze in einer Proxmox Installation auf Debian 11.3.0 in einem Container, sollte aber auch auf einem PI funktionieren)- funktionierende IoBroker-Installation
- funktionierende Homebridge-Installation (läuft bei mir in der V.1.85, ebenfalls in einer VM auf Proxmox)
- mindestens eine in der Blink-App funktionierende Kamera
- NodeJS und NPM (über Konsolenbefehl
nodejs -v
und
npm -v
abrufbar)
edit: (ich habe aktuell die Versionen NodeJS 22.14.0 und NPM10.9.2 installiert)zusätzlich installierte Adapter Ioboker:
- HAM (Homebridge Zubehör-Manager V5.3.1)
Im Homebridge-Adapter muss ersten Tab unter "zusätzliche NPM Module installieren" noch "homebridge-blink-for-home@3.7.6" eingetragen werden und der Haken "beim nächsten Start die Homebridge Plugins von NPM installieren" gesetzt sein! Im Tab Konfigurationsdatei muss folgender Code eingetragen werden:
"platforms" : [ { "name" : "Blink", "username" : "<your blink email address>", "password" : "<your blink password>", "pin" : "<pin>", "platform" : "Blink" } ]
Die Daten in den <> Klammern durch die eigenen Anmeldedaten ersetzen.
- Javascript Adapter und Grundverständnis für die Anwendung des scripens
Über die Konsole installiert: (via Putty oder wie bei mir über die Proxmox-eigene Konsole)
- Python, Ich habe V 3.11.2 installiert. Installation kann man überprüfen mit
python --version Python 3.11.2
Falls Python und Pip nicht installiert sind, geht man wie folgt vor:
Konsolenbefehle:
Version abfragenpython3 --version pip3 --version sudo apt update sudo apt install python3 sudo apt install python3-pip
- Blinkpy:
Installation als User "iobroker" siehe Beitrag von @Dr-Bakterius
sudo -H -u iobroker pip install blinkpy
sudo -H -u iobroker pipx install blinkpy
(edit: 27.03.2025, Hinweis @Thomas-Braun)
ich habe pip3 installiert und mit folgendem Befehl blinkpy installiert:sudo -H -u iobroker pip3 install blinkpy
Danach werden 2 Scripte angelegt
Script 1: "anmelden.py" (erstellen im Ordner: /home/iobroker)
erstellt wird das Script mitcd /home/iobroker
nano anmelden.py
Inhalt des Scripts:
import asyncio from aiohttp import ClientSession from blinkpy.blinkpy import Blink from blinkpy.auth import Auth async def start(): blink = Blink(session=ClientSession()) # Can set no_prompt when initializing auth handler auth = Auth({"username": <your username>, "password": <your password>}, no_prompt=True) blink.auth = auth await blink.start() await blink.save("/opt/iobroker/blink_auth.json") return blink blink = asyncio.run(start())
<your username>
<your password>
müssen mit den Anmeldedaten aus der Blink-Anmeldung (in der App) ersetzt werden.mit Strg + x beenden, speichern, Name bestätigen
mitpython3.11 anmelden.py
das Script ausführen
(Bei mir kam eine Fehlermeldung bzgl fehlendem aiohttp-Addon, das habe ich dann nochmal nachinstalliert)
pip3 install aiohttp
Danach sollte man/wird man nach seinen Anmeldedaten gefragt und erhält dann den 2FA Code welchen man angibt. Anschließend wird in /opt/iobroker die Datei blink_auth.json erstellt. Diese enthält die Anmeldedaten für künftige Abfragen. Den Pin auch in der Instanz des Homebridge Zubehör Adapter unter Konfigurationsdatei "PIN" eintragen.
Danach kann man das Skript wenn man möchte wieder löschen. (ich habe es nicht gelöscht)Um jetzt ein Bild abzufragen braucht man folgendes Skript:
erstellt wird das Script mitcd /opt/iobroker/bild.py
nano bild.py
Name kann frei gewählt werden.
Zugriffsrechte anpassen
/opt/iobroker/bild.py
mit den Rechten674
(ich habe die Rechte auf 655 gesetzt)cd /opt/ibroker chmod 755 bild.py
import asyncio from aiohttp import ClientSession from blinkpy.blinkpy import Blink from blinkpy.auth import Auth from blinkpy.helpers.util import json_load async def start(): blink = Blink() auth = Auth(await json_load("/opt/iobroker/blink_auth.json")) # Anmeldeinformationen laden blink.auth = auth # Anmeldeinformationen senden await blink.start() # Verbindung starten camera = blink.cameras['<Kameraname>'] # Kameraname angeben await camera.snap_picture() # Bild aufnehmen await blink.refresh() # Daten vom Blink-Server abfragen await camera.image_to_file('/opt/iobroker/blink.jpg') # Bild speichern return blink blink = asyncio.run(start())
<Kameraname>
muss mit dem Namen der Blink-Kamera in der App übereinstimmen!mit Strg + x beenden, speichern, Name bestätigen
mitpython3.11 bild.py
das Script ausführen
Der Aufruf des Bildes wird dann über den Javascript-Adapter gemacht:
Hierzu ein Blockly erstellen und u.a. diese Zeile (von @Dr-Bakterius ) eingeben:
(Trigger z.b. Cronjob, Tastendruck eines Button-Widgets fehlt hier noch, oder ggf. Datenpunkt "Bewegung" als Trigger)
Werde dann hier später noch ein komplettes Blockly-Script einfügenDas Bild liegt dann hier ab:
/opt/iobroker/blink.jpgÜber ein "Image-Widget" kann dann das Bild in die Visu eingebunden werden:
Ein Beispiel ergänze ich dann, wenn es bei mir funktioniert!Ergänzung für Abfrage des Videos und Kamera "ARM" und "DISARM" wird später noch ergänzt.
Ende des HowTos.
Ich hoffe hier um aktive Hilfestellung, damit wir eine verständliche Anleitung für jedermann hinbekommen.Bis demnächst, Gruß Brekkis
-
@brekkis sagte in Blink Camera System:
sudo -H -u iobroker pip install blinkpy
Besser:
sudo -H -u iobroker pipx install blinkpy
pip sollte auf modernen Python-Installationen nicht mehr verwendet werden.
-
@thomas-braun Ok, habe deinen Hinweis im HowTo eingearbeitet. Danke dir. Ist dir sonst noch was aufgefallen, was falsch oder nicht so schön ist....?
-
Da ich die Hardware nicht habe kann ich auch nichts aus eigener Erfahrung beitragen.
Nur bist du sicher, das z. B. mindestens nodejs@22 benötigt wird? Widerspricht der derzeitigen Empfehlung von nodejs@20 für den ioBroker.Die python Version wird so geprüft:
python --version Python 3.13.2
-
@thomas-braun Das habe ich doof geschrieben, das ist keine Mindestanforderung, sondern meine aktuell installierte Version. Ich schreibe das mal um. Danke
-
Und so als Vorausblick:
Da wird es wohl 'irgendwann' mal ein Debian-Paket zu geben.
Liegt momentan im Testing-Zweig und dürfte dann im Sommer zum Release von Debian 13 'Trixie' direkt aus dem Paket-Manager perapt install python3-blinkpy
installierbar sein. -
So, jetzt ist schon wieder ein Punkt, wo ich nicht weiterkomme.
Ich habe das Script und die Einstellungen soweit, dass ein Bild "Blink.jpg" im Ordner
/opt/iobroker/iobroker-data
abgelegt wird. Wie kann ich von der Vis auf das Bild zugreifen, bzw. es mir anzeigen lassen? Habe das Bild schon in den Imageordner auf den die Vis zugreift gelegt, aber da erscheint kein Blink.jpg!
was mache ich noch falsch?Gruß Brekkis
-
/opt/iobroker/iobroker-data
da kommst du nicht dran
leg dir ein Ordner für die Bilder an da hin
/opt/iobroker/pics
-
moin, vielleicht weisst Du wie ich das gerade biege. Dieses Problem verfolgt mich schon seit dem ersten Versuch (s.o).
pi@iobroker:~ $ sudo -H -u iobroker pip3 install blinkpy error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. For more information visit http://rptl.io/venv note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification.
pi@iobroker:/home/iobroker $ python3 --version Python 3.11.2 pi@iobroker:/home/iobroker $ pip3 --version pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11) pi@iobroker:/home/iobroker $
pi@iobroker:/home/iobroker $ nodejs -v v20.19.0 pi@iobroker:/home/iobroker $ npm -v 10.8.2 pi@iobroker:/home/iobroker $
Beim letzten mal habe ich dann den "override" Befehl genutzt.
pi@iobroker:~ $ pip install blinkpy --break-system-packages Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting blinkpy Downloading https://www.piwheels.org/simple/blinkpy/blinkpy-0.23.0-py3-none-an y.whl (30 kB) Collecting python-dateutil>=2.8.1 Downloading https://www.piwheels.org/simple/python-dateutil/python_dateutil-2. 9.0.post0-py2.py3-none-any.whl (229 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 2.7 MB/s eta 0:00:00 Requirement already satisfied: requests>=2.24.0 in /usr/lib/python3/dist-package s (from blinkpy) (2.28.1) Collecting python-slugify>=4.0.1 Downloading https://www.piwheels.org/simple/python-slugify/python_slugify-8.0. 4-py3-none-any.whl (10 kB) Collecting sortedcontainers~=2.4.0 Downloading https://www.piwheels.org/simple/sortedcontainers/sortedcontainers- 2.4.0-py2.py3-none-any.whl (29 kB) Collecting aiohttp>=3.8.4 Downloading aiohttp-3.11.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_a arch64.whl (1.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 5.8 MB/s eta 0:00:00 Collecting aiofiles>=23.1.0 Downloading https://www.piwheels.org/simple/aiofiles/aiofiles-24.1.0-py3-none- any.whl (15 kB) Collecting aiohappyeyeballs>=2.3.0 Downloading https://www.piwheels.org/simple/aiohappyeyeballs/aiohappyeyeballs- 2.6.1-py3-none-any.whl (15 kB) Collecting aiosignal>=1.1.2 Downloading https://www.piwheels.org/simple/aiosignal/aiosignal-1.3.2-py2.py3- none-any.whl (7.6 kB) Collecting attrs>=17.3.0 Downloading https://www.piwheels.org/simple/attrs/attrs-25.3.0-py3-none-any.wh l (63 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.8/63.8 kB 1.4 MB/s eta 0:00:00 Collecting frozenlist>=1.1.1 Downloading frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_ aarch64.whl (276 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 276.4/276.4 kB 5.0 MB/s eta 0:00:00 Collecting multidict<7.0,>=4.5 Downloading multidict-6.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_a arch64.whl (135 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 135.7/135.7 kB 4.1 MB/s eta 0:00:00 Collecting propcache>=0.2.0 Downloading propcache-0.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_a arch64.whl (232 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 232.4/232.4 kB 5.0 MB/s eta 0:00:00 Collecting yarl<2.0,>=1.17.0 Downloading yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch 64.whl (340 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 340.6/340.6 kB 4.6 MB/s eta 0:00:00 Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.1->blinkpy) (1.16.0) Collecting text-unidecode>=1.3 Downloading https://www.piwheels.org/simple/text-unidecode/text_unidecode-1.3- py2.py3-none-any.whl (78 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.2/78.2 kB 1.1 MB/s eta 0:00:00 Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.17.0->aiohttp>=3.8.4->blinkpy) (3.3) Installing collected packages: text-unidecode, sortedcontainers, python-slugify, python-dateutil, propcache, multidict, frozenlist, attrs, aiohappyeyeballs, aio files, yarl, aiosignal, aiohttp, blinkpy WARNING: The script slugify is installed in '/home/pi/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warn ing, use --no-warn-script-location. Successfully installed aiofiles-24.1.0 aiohappyeyeballs-2.6.1 aiohttp-3.11.14 ai
Das haut dann aber mit den Berechtigungen bestimmt alles nicht hin. Ja evtl. hast Du ja kurz Zeit für nen "kleinen" workarround
-
@arteck Danke für den Tipp, geht leider immer noch nicht.
Das Bild liegt im Ordner /opt/iobroker/pics. Von der Visu aus (Image oder HTML Widget, Ordnername und Bildname eingetragen) zeigt es aber nichts an.Wenn ich über WINSCP auf das Dateisystem zugreife und auf den Ordner /opt/iobroker/pics navigiere und das Bild ins Windowssystem herunterlade und öffne sehe ich das Bild von der Kamera.
Ich kann es einfach nicht in der Vis anzeigen. Verflucht.
Bild-Widget bei Quelle: ../opt/iobroker/pics/blink.jpg
Es wird nur ein Frame mit Fragezeichen dargestellt. Oh mann, ich bin auf der Zielgeraden und dann sowas.... -
@varg sagte in Blink Camera System:
Ja evtl. hast Du ja kurz Zeit für nen "kleinen" workarround
pipx verwenden. Ist auch kein Workaround sondern der vorgesehene Weg.