Ein Webcam-Bot ist ein automatisches Tool der mit Befehle wie z.B. „cam1“ die aktuelle Bildaufnahme einer Webkamera abholt und diese an einen Benutzer sendet, als Standbild (nicht Livestream). Es können verschiedene Arten von Kamerabilder abgefragt werden, wie Wetterkameras, Verkehrskameras, Gartenkameras, Bürokameras und noch vieles mehr. Typische Backendsysteme zur Anzeige sind Telegram, Watsapp, Viber, Twilio, Slack, Microsoft Teams und viele mehr. In diesen Artikel geht es nur um die Anbindung an Matrix/Element. Der Matrix-Server ist die Zentrale für die Kommunikation. Element ist die Weboberfläche oder der Mobile Client auf dem Smartphone.
Zum Beispiel möchte man wissen wie der Zustand ( Wetter, Verkehr) einer Autobahn gerade ist, holt man sich mit einem Kurzbefehl das aktuelle Bild einer bestimmten Verkehrskamera und bekommt das Ergebnis als Bild in Element angezeigt.
Was braucht es :
- Raspberry Pi 3+ / 4 mit 2 GB RAM
- NodeRED raspberrypi-und-nodered
- Matrixserver / Admin Zugang zur homeserver.yaml
- NodeRED Package node-red-contrib-matrix-chat
- Software zur Steuerung webcam-bot-element-matrix
NodeRED ist lauffähig installiert und über den Browser erreichbar. Zuerst benötigt es den „registration_shared_secret“ aus der homeserver.yaml des Synapse Server (Matrix-Server).
Ein Beispiel wie ein solcher Key aussehen könnte:
registration_shared_secret: "pOXgfdsrt4wt45z45z45z35t4gsdfg34ADcZg0otR"
Nun den Flow aus dem Git-Repo „flow.js“ in NodeRED importiert. Im Anschluß muss der Zugang zum Matrix Server in dem NodeRED Flow konfiguiert werden. Beim ersten Deployment zeigen die Matrix-Nodes noch „disconnected“. Zuerst muss der Node „Shared Secret Registration“ konfiguriert werden.
Bei Server URL muss die Matrix-URL eingetragen werden, also die bei Aufruf die Webseite des laufenden Webserver anzeigt. In der Regel ist das „matrix.domainname.de“. In dem Feld Registration Shared Secret wird der „registration_shared_secret“ aus der „homeserver.yaml“ eingetragen.
Nach dem klicken auf den „inject“ wird ein Benutzer „example“ mit dem Passwort „super-secret-password“ in Matrix angelegt. Der Benutzer und das Passwort kann wenn gewünscht, vor der Einrichtung noch angepasst werden. Im Anschluß werden im Debug Fenster ein paar Parameter angezeigt, die nun zur weiteren Einrichtung benötigt werden.
Nun muss der Node „Matrix Receive“ konfiguriert werden.
In der Server URL wieder die URL für den Matrix eintragen. Bei User ID den Benutzer „@example:deinedomain.de“ und bei Passwort „super-secret-password“.
WICHTIG hier: im Anschluß auf das Feld „Update Access Token“ klicken. Dort sollte automatisch der Access Token und weiter unten die Device ID eingetragen werden. Wenn hier nichts erscheint ist die Einrichtung mit dem „Shared Secret Registration“ nicht erfolgreich gewesen.
Erstelle in Element nun einen beliebigen Raumname wie z.B. „#testraum:deinedomain.de“. In diesen Raum wird nun der Benutzer „@example:deinedomain.de“ eingeladen. Der Benutzer sollte nun automatisch den Raum betreten und sichtbar sein. Nun kann die Kommunikation zwischen Matrix/Element und NodeRED getestet werden. Hierzu einfach „ping“ als Text eingeben und es sollte ein „pong“ vom Benutzer Example zurückkommen. Wenn das geklappt hat, kann es weitergehen mit „cam1“ , „cam2“ oder „help“.
Wenn alles erledigt ist können Anpassungen von eigenen Kameras eingetragen werden. Und nochmal es werden keine Videostreams übertragen sondern nur ein Snapshot von einem Video als Standbild.
Viel Spaß beim ausprobieren und einrichten in der Matrixwelt.
Grüße Joachim