Signal für IO-Broker

Signal für IO-Broker

Mein IO-Broker soll mir Texte senden können - per Signal. Allerdings wollte ich keinen Adapter verwenden, bei dem ich in Abhängigkeit eines Dritten bin. Es musste also eine alternative Lösung her.

Zusammengefasst sollen einfache Textnachrichten per Signal versendet werden. Ich brauche dafür auch keine eigene Telefonnummer, ich verlinke die Instanz gegen meine eigene Nummer. Dass meine Waschmaschine fertig ist, darf gerne als Notiz an mich selbst ankommen. Mich interessiert die Nachricht, nicht von wem diese stammt.

Wenn Cloud-basierte Dienste in der Lage sind Signal-Nachrichten zu versenden, dann müsste das mein lokales System doch ebenfalls können. Gefunden habe ich bei meiner Suche ein kleines Projekt auf GitHub, welches genau dies ermöglicht: https://github.com/AsamK/signal-cli. Also genau das, was ich suchte um von der Kommandozeile aus Nachrichten zu versenden.

Mein IO-Broker läuft auf Ubuntu 24.04. Sinngemäß funktioniert diese Anleitung auch für andere Systeme sowie einer Raspberry Pi basierten Lösung oder was auch immer. Zusammengefasst: Irgendeine Linux-Anwendung soll Nachrichten per Signal versenden. In dem Fall, oder bei den kommenden Ubuntu-Versionen, müssen die entsprechenden Versionsnummern der eingesetzten Software geändert werden.

 

Installation

Im ersten Schritt wird die benötigte Software installiert. signal-cli installiere ich unter /opt - behalte aber die Versionsnummer im Pfad bei. /opt/signal-cli wird dann als Symlink auf die jeweils aktuelle Version gesetzt. Damit kann man bei Updates ohne Probleme zur aktuellen oder wieder zurück zur Vorgängerversion springen. signal-cli benötigt ein installiertes Java. Um einen QR-Code für die Verbindung zwischen Signal auf dem Smartphone und meinem IO-Broker zu erzeugen, wird an der CLI ein QR-Code erstellt und angezeigt. Dafür ist qrencode notwenig.

# Zum Benutzer iobroker wechseln
sudo -u iobroker bash

# Signal darüber informieren, sich zu verbinden
signal-cli link -n iobroker > /tmp/signal.txt &

# Kurz warten und den QR-Code erstellen
qrencode -t ANSI `cat /tmp/signal.txt`

 

# Natürlich sollte hier das jeweils aktuelle Release von der GitHub Seite ausgewählt werden ;-)
wget https://github.com/AsamK/signal-cli/releases/download/v0.13.9/signal-cli-0.13.9.tar.gz

# entpacken ...
tar xvfz signal-cli-0.13.9.tar.gz

# ... und nach /opt verschieben. Wie erklärt noch den SymLink setzen.
mv signal-cli-0.13.9 /opt/
ln -sv signal-cli-0.13.9/ signal-cli

# Falls noch nicht vorhanden: Java installieren
apt install openjdk-21-jre
# Und gleich noch qrencdoe
apt install qrencode

Nun kommt der eigentliche interessante Teil: signal-cli muss initial einmalig auf mein Signal verbunden werden. Da IO-Broker Nachrichten versenden können soll, wechsle ich im ersten Schritt per sudo zum Benutzer iobroker.

Hierbei wird via signal-cli der Link-Vorgang initiiert. Dies muss gestartet werden und läuft im Hintergrund weiter. Für den Fall, dass man zu langsam ist und die Sitzung beendet wird, beginnt man einfach nochmals von vorne. Sobald der Link-Vorgan im Hintergrund läuft, kann man den QR-Code erstellen. Damit dieser korrekt dargestellt wird, sollte die Konsole entsprechend groß genug sein. Sobald man den QR-Code hat wechselt man zum Smartphone, startet Signal und wählt Einstellungen/Gekoppelte Geräte/Neues Gerät und folgt den Anweisungen. Signal ist nun verbunden, in der Liste der vertrauten Geräte erscheint der IO-Broker.

Integration in IO-Broker

Eine erste Testnachricht wird wie folgt verschickt:

date | ./signal-cli -u +49177....24 send --notify-self --message-from-stdin +49177....24

Die Nummer ist natürlich gegen die eigene Handynummer zu tauschen. Es sollte eine Notiz an einen selbst ankommen.

Um aus IO-Broker heraus einfacher Nachrichten versenden zu können, habe ich den obigen Befehl in ein kurzes Shell-Skript gepackt. Auch hier ist die eigene Nummer entsprechend anzupassen.

#!/bin/sh
# Ein einfaches Hilfsskript um per Signal-Nachrichten zu versenden
NO="+49177....14"
cat | /opt/signal-cli/bin/signal-cli -u $NO send --notify-self --message-from-stdin $NO

Dieses Skript habe ich unter /usr/local/bin/signal-send abgelegt. Zeit, das Ganze im IO-Broker zu integrieren. Dafür habe ich ein einfaches Blockly-Skript erstellt. Die Variable Message dient hier nur als Platzhalter und kann natürlich um beliebige Objekte erweitert oder ausgetauscht werden.

Fertig

Die Testnachricht kam an, alles funktioniert wie es soll. Mein IO-Broker teilt mir nun das ein oder andere wichtige Ereignis via Signal mit: Die Waschmaschine im Keller, welche fertig ist und noch viele weitere, spannende Dinge.

Bitte ein BYD – zum Update

Bitte ein BYD – zum Update

Ich habe eine Photovoltaikanlage mit einem Batteriespeicher von BYD. Die funktioniert und tut soweit, was sie soll. Nur beim Update stellt diese sich gerne quer.

Es gibt, meines Wissens nach, 3 Varianten eine BYD-Batteriebox mit einem Update zu beglücken:

  • Die Be Connect App fürs Smartphone. Die gibt es im Android als auch Apple App-Store.
  • Die Be Connect Anwendung für Windows:
    • Per WLAN direkt auf die BYD-Box verbunden
    • Per LAN auf die BYD-Box verbunden

Mit WLAN habe ich das Problem, dass sowohl mein Android als auch iPad sich zwar mit dem BYD-WLAN verbinden, diese Verbindung allerdings sehr rasch wieder trennen: Hinter der BYD-Batterie gibt es kein Internet. Deswegen bevorzuge ich inzwischen die Variante übers heimische LAN.

Variante 1: Be Connect App

Suche im Appstore Deines Smartphones/Tables nach der Be Connect App von BYD. Sobald Du diese gefunden und installiert hast, startest Du diese einfach. Im lokalen LAN kannst Du nun das letzte Update herunterladen. Im nächsten Schritt trennst Du Deine WLAN-Verbindung und verbindest Dich auf ein WLAN mit dem Namen BYD-????. Hierbei sind ???? 4 Ziffern welche bei mir auf einem Aufkleber seitlich in dem kleinen Kasten mit der Sicherung ist. Das Passwort fürs WLAN lautet BYDB-Box.

Variante 2: Be Connect unter Windows

Du lädst die Be Connect Anwendung für Windows auf Dein Windows aus dem Internet. Sobald Du diese startest kannst Du, analog zu Variante 1, über den Update-Knopf das letzte Update herunterladen. Trenne nun Dein WLAN und verbinde Dich auf Deine Batterie. Der Rest ist analog zur Variante 1.

Meine Probleme

Und hier fangen meine Probleme an: Ich verliere regelmäßig, wie oben geschrieben, die Verbindung zum BYD WLAN. Oder aber, das BYD WLAN steht erst gar nicht zur Verfügung.

Bei letzterem hilft es die Batterie zu stoppen und neu zu starten (aus- und wieder einschalten). Nach kurzer Wartezeit ist das WLAN nun verfügbar.

Das erste Problem habe ich für mich dahingehend erledigt, dass ich nun per LAN direkt auf meine BYD-Box zugreife - auch ohne WLAN. Mein Windows Notebook darf sehr wohl mit dem WLAN verbunden sein - die BYD-Box kann auch über ihr Netzwerkkabel angesprochen werden.

Variante 3: Per heimischen LAN

Im ersten Schritt suche ich die IP-Adresse der Batterie-Box. Das kann ich zum Beispiel auf meinem Internet-Router erledigen. Sobald ich die IP ermittelt habe, kann ich diese zum Beispiel im Webbrowser eingeben: Es erscheint eine Anmeldemaske für die ich allerdings keine Zugangsdaten habe.

Wie in einem der Screenshots zu sehen ist, hat die Batterie bei mir die Adresse 10.96.101.34. Lasse Dich von der 10-punkt-irgendwas nicht stören. Bei vielen anderen lautet die IP meist 192.168. und irgendwelche weiteren, zwei Zahlen.

Als nächstes gehe ich auf den Startknopf und gebe

cmd

ein. Allerdings starte ich diese Anwendung nicht sofort, sondern wähle "als Administrator ausführen". Nun gebe ich folgende Befehle ein:

route add 192.168.16.0 mask 255.255.255.0 10.96.101.34

Austauschen musst Du lediglich die 10.96.101.34. Hier gehört die IP Deiner BYD-Box in Deinem Netzwerk rein. Alternativ zu Windows selbst, kann man diese Route in vielen Internet-Routern direkt eintragen. Dann würde sie jedem Gerät im Netz automatisch zur Verfügung stehen und nicht nur dem aktuell verwendeten Windows-System.

In folgendem Screenshot ist das ganze gezeigt. Hat man alles richtig gemacht, antwortet die 192.168.16.254 auf ping Anfragen.

 

Als nächstes besuche ich die BYD Homepage und wähle Download (https://www.bydbatterybox.com/downloads#).

Hier, etwas versteckt, findet sich der Download der Be Connect Software.

 

Der Download ist ein Zip-Archiv. Entpackt findet man einiges an Daten. Im markierten Ordner liegt die Dokumentation zur Software.

Die Software selbst findet sich unter BCP_....exe - die zweite Markierung im Screenshot. Diese ist kein Setup, kann also direkt gestartet werden.

 

Beim Login wählt man "Installer" und als Passwort "BYDB-Box".

Im ersten Schritt muss man auf den "Connect" Knopf drücken. Ist die Verbindung erfolgreich, kann man mit klick auf "Refresh" die Anzeigen aktualisieren. 

Es ist durchaus lohnenswert sich die ganzen Zahlen und Daten etwas näher anzuschauen. Das Windows-Programm liefert viel mehr Daten als die SmartPhone App.

 

Mit Klick auf Updates kann man zunächst die aktuellen Updates herunterladen. Die auf der Batterie aktuellen Versionen werden angezeigt, ebenso die verfügbaren Updates. Sollte man diese installieren wollen, klickt man auf Update. Während BMS einigermaßen zügig vorangeht, braucht BMS nach erreichen der 100% noch ca. 20 Minuten. Einfach warten und die Software neu starten. Die BMS-Versionsnummer sollte sich geändert haben (Infos hierzu siehe auch in der Doku welche ebenfalls im ZIP-Archiv enthalten ist).

Ich mag die Variante per LAN. Keine Probleme mit WLAN, die Windows-Anwendung zeigt viel mehr Details an als die SmartPhone App. Und während Updates laufen, kann ich weiterhin mein heimisches WLAN/LAN verwenden.