Telegram als Binding in openHAB integrieren

Eine meiner ersten Aktionen mit openHAB war die Integration für mobile Benachrichtungen mit Telegram. In meinem ersten Anwendungsfall wurde Telegram per Action angebunden und eine kleine Anleitung habe ich hier abgelegt.

Seit ein paar Versionen gibt es nun ein Telegram Binding. Mit diesem Binding ist auch ein einfacheres Verschicken von Nachrichten an Gruppen möglich. Es ist also höchste Zeit meine bestehende Umgebung zu aktualisieren / anzupassen.

Vorbereitung und Struktur

Weiterführende Informationen zu dem Thema findet Ihr hier. Einen Telegram-Bot habe ich bereits erzeugt, wenn Ihr dies noch benötigt, findet Ihr hier eine Anleitung.

Folgende Gruppen habe ich mir in Telegram erstellt für unser SmartHome erstellt:

  • Eidelsburger SmtartHome (für allgemeine Nachrichten z.B. Wetterwarnungen, Müllkalender, Statusmeldungen, Rauchmelder)
  • Eidelsburger SmartHome – Admin (für technische Nachrichten z.B. Neustart des Systems)
  • Eidelsburger SmartHome – Test (für Testnachrichten und neue Konfigurationen)

Damit kann ich für mich persönlich und für die ganze Familie die jeweiligen Nachrichten entsprechen kanalisieren und priorisieren.

Gruppen-ID’s aus Telegram

  • alle gewünschten Gruppen in Telegram für die weitere Verwendung erstellen
  • in der Telegram-App eine neue Gruppe erstellen und die notwendigen Benutzer hinzufügen (den Bot hatte ich bereits für die Nachrichten erstellt)
  • am Desktop-PC die URL https://web.telegram.org/ aufrufen
  • mit der zugehörigen Telefonnummer anmelden
  • den von Telegram verschickten Code vom mobilen Endgerät am Desktop-PC eingeben
  • nun die notwendige Gruppe auswählen
  • die URL in der Adressleiste sieht wie folgt aus: https://web.telegram.org/#/im?p=g1234567
  • die eindeutige Gruppen-ID befindet sich nach dem “p=g” (in diesem Beispiel: 1234567)
  • da alle Gruppen-Nummern in Telegram negativ sind, wäre die zu verwendende Nummer aus dem Beispiel: -1234567

openHAB-Binding

Hier gibt es ein paar Informationen über die Technik:

Das Binding ist über die Oberfläche wie folgt schnell und einfach installiert:

  • PaperUI – Add-ons – ACTIONS – Telegram Action (1.14.0) – bereits installiert, also nicht notwendig
  • PaperUI – Add-ons – ACTIONS – Telegram Binding (2.5.4) – INSTALL

Telegram.things

Im nächsten Schritt wird ein Thing entsprechend erstellt:

Thing telegram:telegramBot:HA_Bot [chatIds="-<channel main>","-<channel details>","-<channel test>", botToken="<token>", parseMode="Markdown"]

Hier ergänzt man in den chatIds die aus den Telegram-Gruppen extrahierten Nummern und passt seinen botToken entsprechend dem Bot an.

Telegram.items

Nun können die Standard-Items aus der Dokumentation hinzugefügt werden. Ich habe noch drei Variablen für die Verwendung der Telegram-ID’s erstellt (um mir etwas Tipparbeit zu sparen).

// Items for Telegram Groups
String TELEGRAM_CHANNEL_SMARTHOME "-<channel main>"
String TELEGRAM_CHANNEL_SMARTHOME_ADMIN "-<channel details>"
String TELEGRAM_CHANNEL_SMARTHOME_TEST "-<channel test>"

// Items for Telegram Groups
String telegramLastMessage "Telegram Bot Last Message" { channel = "telegram:telegramBot:HA_Bot:lastMessageText" }
String telegramLastMessageURL "Telegram Bot Last Message URL" { channel = "telegram:telegramBot:HA_Bot:lastMessageURL" }
DateTime telegramlastMessageDate "Telegram Bot Last Message Date" { channel = "telegram:telegramBot:HA_Bot:lastMessageDate" }
String telegramLastMessageName "Telegram Bot Last Message Sender" { channel = "telegram:telegramBot:HA_Bot:lastMessageName" }
String telegramLastMessageUsername "Telegram Bot Last Message Username" { channel = "telegram:telegramBot:HA_Bot:lastMessageUsername" }
String telegramLastMessageChatId "Telegram Bot Last Message chatId" { channel = "telegram:telegramBot:HA_Bot:chatId" }
String telegramLastMessageReplyId "Telegram Bot Last Message replyId" { channel = "telegram:telegramBot:HA_Bot:replyId" }

Telegram.rules

Nun kann in einem Regelwerk ganz einfach eine Nachricht an eine Telegram-Gruppe verschickt werden.

val telegramAction = getActions("telegram","telegram:telegramBot:HA_Bot")
telegramAction.sendTelegram(Long::parseLong(TELEGRAM_CHANNEL_HA_DETAILS), "%s %s", "Telegram Bot", "online")

In meinen bestehenden Rules-Dateien muss ich natürlich die vorherige Konfiguration der Telegram Action noch entsprechend suchen und aktualisieren (das wird bei den meisten Lesern nicht notwendig sein).

Fazit

Damit konnte ich mit relativ wenig Aufwand von den Telegram Actions auf das Telegram Binding wechseln. Die Action habe ich aktuell noch im System, wird aber von mir nicht mehr verwendet.

Jetzt kann ich meinen Bot auch an Gruppen einfach Nachrichten senden und die SmartHome-Funktion auf ein paar Anwender mehr verteilen.

Wie nutzt Ihr Telegram in eurem SmartHome? Habt Ihr ein anderes Nachrichtensystem verwendet? Mir würde ja noch eine Integration in Microsoft Teams sehr gut gefallen. 🙂

openHAB 2.5.6 veröffentlicht

Am 21.06.2020 wurde ein neues Update für openHAB veröffentlicht.

Die Version 2.5.6 ist komplett kompatibel zur den vorherigen  2.5.x Versionen.

Es gab mit der neuen Version 9 neue Add-ons und einige Erweiterungen und Bugfixes der bestehenden Plugins.

In den Release Notes werden die Änderungen kurz und im GitHub dann im Detail beschrieben.

Habt Ihr die Version 2.5.6 bei euch schon installiert? Wer war schon so mutig?

openHAB 2.5.5 veröffentlicht

Am 18.05.2020 wurde ein neues Update für openHAB veröffentlicht.

Die Version 2.5.5 ist komplett kompatibel zur den vorherigen  2.5.x Versionen. Mit den grob einmal pro Monat geplanten neuen Versionen hat sich der Build- und Deploy-Prozess scheinbar gut eingespielt.

Es gab mit der neuen Version 4 neue Add-ons und einige Erweiterungen und Bugfixes der bestehenden Plugins.

In den Release Notes werden die Änderungen kurz und im GitHub dann im Detail beschrieben.

Habt Ihr die Version 2.5.5 bei euch schon installiert?

Aktualisierung openHAB 2.5.1 auf 2.5.4

Ich habe hier bereits erklärt wie man von openHAB 2.4.x auf 2.5.x wechseln kann. Nun stand ein kleinerer Wechsel von openHAB 2.5.1 auf 2.5.4 an (hier handelt es sich lediglich um Bugfix-Releases).

Die Änderungen könnt Ihr hier einsehen:

Sicherung mit dem integrierten Backup

Da ich wegen den kleineren Änderungen keine komplette Image-Sicherung vornehmen wollte, habe ich die openHAB-integrierte Sicherungsfunktion wie folgt verwendet:

# openHAB stoppen
sudo systemctl stop openhab2.service
sudo $OPENHAB_RUNTIME/bin/backup

# OPTIONAL - Restore durchführen:
# sudo $OPENHAB_RUNTIME/bin/restore $OPENHAB_BACKUPS/openhab2-backup-19_01_14-17_27_42.zip

# openHAB wieder starten
sudo systemctl start openhab2.service

Das Backup wird in diesem Verzeichnis abgelegt:

/openHAB-share/openhab2-userdata/backups/

Aktualisierung der Installation

Das Update in einer Linux-Distribution auf Debian-basieren wird wie folgt durchgeführt:

sudo systemctl stop openhab2.service
sudo apt-get update
sudo apt-get upgrade

Während des “update” Vorgangs waren Daten von raspbian nicht erreichbar. In der sources.list habe ich folgende Anpassungen vorgenommen:

sudo vi /etc/apt/sources.list

Folgenden Mirror ergänzen:
http://mirror.netcologne.de/raspbian/raspbian/

#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://mirror.netcologne.de/raspbian/raspbian/ jessie main contrib non-free rpi

Mit dem ersten Befehl wird der openHAB-Dienst beendet. Die beiden nächsten Zeilen starten die Aktualisierung.

Mit den oben genannten Befehlen wird direkt von 2.5.1 auf 2.5.4 mit allen Abhängigkeiten aktualisiert.

Folgendes habe ich nach dem update noch durchgeführt:

# openHAB stoppen
sudo systemctl stop openhab2.service

# Cache leeren
sudo openhab-cli clean-cache

# Log-Dateien für einen sauberen Start sichern
sudo mv openhab.log openhab.log.old
sudo mv events.log events.log.old

# Neustart
sudo shutdown -r now

Funktionstest

Bei diesem update liegen keine “Breaking Changes” vor d.h. der Funktionstest sollte recht einfach funktionieren.

Folgende Punkte habe ich nach dem Update kontrolliert:

  • Legacy Add-ons – keine Änderungen notwendig
  • Discontinued Add-ons – keine Änderungen notwendig
  • Visual Studio Code
  • Weboberflächen testen (BasicUI, ClassicUI, HabBot, PaperUI)

Danach habe ich noch alle individuellen Bindings und Funktionen aus unserem SmartHome auf Funktionsfähigkeit getestet.

Fazit

Nach ca. einer Stunde arbeit war das kleine Update auf openHAB 2.5.4 in unserem SmartHome erledigt. Großartige Neuerungen gibt es keine, aber dafür sind wieder einige Fehler gefixt worden.

Habt Ihr auch schon auf openHAB 2.5.4 aktualisiert? Hat es bei euch ohne Probleme funktioniert?

Die Sitemap in openHAB

Eine Sitemap in openHAB präsentiert die Things und Items des SmartHome-Systems. Abhängig vom Kundenwunsch muss das entsprechende User Interface (UI) ausgewählt und parametriert werden.

Die Sitemap ist die Visualisierung für den Endanwender, also der Client für den Browser / Web oder die SmartPhone-App.

Hier ist an einem Beispiel meine Struktur in der Android-App dargestellt (auf der höchsten Ebene):

Meine Idee hinter der Struktur war folgender Ansatz:

  • Abbildung der Räume des “Haus” als höchstes Navigationselement (pro Raum sind dann alle im Raum enthaltenen Funktionalitäten abgebildet z.B. Licht, Steckdosen, Dimmer, Rollladen etc.)
  • In den “Zentralfunktionen” sind alle Funktionen für den regelmäßigen Betrieb zusammengefasst z.B. MomeMatic, Tor, LED, Tasmota
  • Im Bereich “Sicherheit” sind die Rauchwarnmelder hinterlegt
  • Bei den “Verbrauchern” gibt es eine übersicht z.B. über die Waschmaschine
  • Bei den vielen “Alexa”-Komponenten (bzw. Echo-Geräten) habe ich eine eigene Kategorie eingefügt
  • Für die ganzen Umwelt-Daten gibt es die Kategorie “Wetter” z.B. Astrologie, Wetter und Wetterwarnungen
  • Meine Anwesenheiten und den Müllkalender regle ich unter “Informationen”
  • Im Bereich “Eigene Funktionen” sind spezielle Multimedia-System z.B. Wecker, Fritzbox, SamsungTV, Onkyo AVR, Kodi (Fire TV Stick) abgelegt

Ich habe die Sitemap.map bei mir manuell erstellt bzw. aus dem Beispiel von openHAB aufgebaut. Das habe ich diese Dokumentation verwendet.

Welche Funktionen interessieren euch aus der Sitemap im Detail (dann gehe ich auf diese Funktion / Visualisierung noch einmal genauer ein)? Auf der zweiten Ebene der Sitemap habe ich dann eher die Detailfunktionen und größeren Visualisierungen hinterlegt. 🙂

openHAB 2.5.4 veröffentlicht

Am 19.04.2020 wurde ein neues Update für openHAB veröffentlicht.

Die Version 2.5.4 ist komplett kompatibel zur den vorherigen  2.5.x Versionen.

Es gab mit der neuen Version 13 neue Add-ons und einige Erweiterungen und Bugfixes der bestehenden Plugins.

In den Release Notes werden die Änderungen kurz und im GitHub dann im Detail beschrieben.

Habt Ihr die Version 2.5.4 bei euch schon installiert?

openHAB 2.5.3 veröffentlicht

Am 19.03.2020 wurde ein neues Update für openHAB veröffentlicht.

Die Version 2.5.3 ist komplett kompatibel zur Version 2.5.x.

Es gab mit der neuen Version 3 neue Add-ons und einige Erweiterungen und Bugfixes der bestehenden Softwarekomponenten.

In den Release Notes werden die Änderungen kurz und im GitHub dann im Detail beschrieben.

Habt Ihr die Version 2.5.3 bei euch schon installiert?

Ich bin aktuell noch auf 2.5.1 und bei der Taktzahl an Updates warte ich ggf. noch ein paar “Fixes” ab. 🙂

Azure Sphere von Microsoft

Seit dem 24.02.2020 ist nach längerer Wartezeit Azure Sphere von Microsoft verfügbar (ursprünglich war eine Veröffentlichung in 2018 geplant). Hier gibt es ein paar Details zu dem Blog-Post von Microsoft.

Mit Sphere integriert Microsoft Sicherheitslösungen aus Hardware, Betriebssystem und Cloud-Komponenten für das Internet der Dinge (IoT) in eine ganzheitliche Lösung. Das Paket besteht aus zertifizierten Mikrocontrollern, einem eigenen Betriebssystem auf Linux-Basis und dem Cloud-Dienst “Security Service”.

Aus meiner Sicht ist das ein guter Ansatz um neue Geschäftsmodelle in Unternehmen zu etablieren und den Komplexitätsgrad in den Lösungen zu reduzieren. Durch den Security Service sollen proaktiv Bedrohungen und Angriffe erkannt und verhindert werden.

Welche IoT-Szenarien sehr Ihr für Microsofts neuen Service?

openHAB 2.5.2 veröffentlicht

Am 20.02.2020 wurde ein neues Update für openHAB veröffentlicht.

Die Version 2.5.2 ist “fast” komplett kompatibel zur Version 2.5.1 und 2.5.0 (laut Changelog ist eine Änderung nicht abwärtskompatibel). Wenn man das EXEC-Binding im Einsatz hat, sollte man nach dem Update einmal die Dokumentation lesen (hier ein paar Infos zu der Sicherheitslücke).

In den Release Notes werden die Änderungen kurz und im GitHub dann im Detail beschrieben.

Habt Ihr die Version 2.5.2 bei euch schon installiert?

Was versteht man unter “SmartHome”?

Unter dem Begriff “Smart Home” versteht man im allgemeinen ein vernetztes Zuhause das mit Sensoren, Technologien und Systemen erweitert wurde. Im Vordergrund steht die Verbesserung der Wohn- und Lebensqualität, Sicherheit und die effiziente Energienutzung und die Automatisierung von Abläufen.

Von Vorteil ist es, wenn alle eingesetzten Technologien unabhängig vom Anbieter miteinander kommunizieren können. Um alle Technologien einfach zu implementieren kann eine Heimautomatisierungssoftware (wie openHAB) unterstützen und Schnittstellen vereinheitlichen.

Die Teilaspekte des SmartHome definiert Wikipedia wie folgt:

  • Hausautomation
  • Smart Metering
  • Haushaltsgeräte-Automation
  • Vernetzte Unterhaltungselektronik
  • Sicherheit / Peace of Mind

Vernachlässigen darf man bei allem Komfortgewinn aber auch nicht die IT-Sicherheit einer eingesetzten Lösung oder das Thema Überwachung und Privatsphäre.