Loxone mit Raspberry Pi, MQTT & FHEM aufbohren

loxone mit fhem und mqtt erweitern

Loxone selbst bietet schon ein großes Potential. In Verbindung mit einem Raspberry Pi, MQTT & FHEM ist diese Kombination in meinen Augen derzeit unschlagbar. Wie Loxone in dieser Verbindung mittels Loxberry aufgebohrt bzw. erweitert werden kann, erfährst du in diesem Blogpost.

Aufbohren, aber wie?

Bereits in einem früheren Blogpost bin ich auf Loxberry eingegangen. Doch seit dieser Zeit hat sich viel getan!

Speziell für Loxone Nutzer wurde Loxberry entwickelt. Diese Software ist kostenfrei verfügbar, wird auf einen Raspberry Pi aufgespielt und erweitert Loxone ungemein. Es gibt jede Menge Plugins, mit deren Hilfe immer mehr Geräte direkt in Loxone integriert werden können. Somit ist Loxberry für Loxone Nutzer schon fast Pflicht.

Lange habe ich mich davor gescheut das MQTT Protokoll selbst umzusetzen oder besser gesagt zu verwenden. Doch nachdem es auch für den Loxberry ein MQTT Plugin gibt, habe ich mich nochmals daran gewagt – mit Erfolg. Wenn dir MQTT noch gar nichts sagt, lies es dir am besten selbst einmal durch. Das Protokoll ist schon ca. 30 Jahre alt und wurde für den Smart Home Bereich nun aber “neu entdeckt”.

Seit 2013 wird MQTT über die Organization for the Advancement of Structured Information Standards (OASIS) als Protokoll des Internet der Dinge standardisiert.

https://de.wikipedia.org

Selbst das von mir so geliebte System “FHEM” wird hier direkt als Plugin in Loxberry unterstützt und ist damit ebenfalls direkt in Loxone verwendbar. FHEM setze ich schon seit vielen Jahren aufgrund der extrem hohen Stabilität, Verarbeitungsgeschwindigkeit und der Menge an integrierbaren Systemen ein. Und in Verbindung mit MQTT können die Werte dann direkt von FHEM an Loxone übergeben und ausgewertet werden, sodass die gesamte Logik bei Loxone verbleiben kann.

Notwendige Hardware

Damit das System schnell und flüssig läuft, habe ich mich für den aktuellen Raspberry Pi 4 entschieden. Definitiv sinnvoll ist ein wärmeableitendes Gehäuse, da er schon deutlich wärmer wird, als die 3er Version. Ohne Lüfter wird er ansonsten schnell über 60 Grad heiß!

Das unten verlinkte Gehäuse hat mir sofort mehr als 10 Grad eingespart und sieht zudem in der schwarzen Aluminiumoptik schick aus. Ebenfalls wird ein originales USB C Netzteil empfohlen, da andere wohl zu Problemen führen können.

iuniker Raspberry Pi 4 Gehäuse, Raspberry Pi 4...
Raspberry Pi - offizielles Netzteil für Raspberry...

Letzte Aktualisierung am 24.11.2020 um 12:55 Uhr | Werbung | Bilder: Amazon Product Advertising API

Mehr wird auch schon gar nicht benötigt, sofern man den Raspberry Pi per WLAN anbinden möchte.

Loxberry Installation

Die Installation selbst ist auch für Anfänger leicht umzusetzen. Es wird vorab die aktuelle Image-Datei von Loxberry benötigt. Diese *.img-Datei wird dann z.B. mit dem Programm balenaEtcher auf eine MicroSD Karte aufgespielt.

Wenn sich der Raspberry Pi vor der eigentlich Inbetriebnahme mit deinem WLAN verbinden soll, muss nach dem Flashen in dem Boot-Verzeichnis der MicroSD Karte eine Datei mit dem Namen network.txt mit folgenden Inhalt angelegt werden:

auto lo
iface lo inet loopback
 
allow-hotplug wlan0
 iface wlan0 inet dhcp
 wpa-ssid WLAN-NAME
 wpa-psk WLAN-PASSWORD

WLAN-Name und WLAN-PASSWORT muss hier natürlich mit den eigenen Daten ersetzt werden.
Hier auch als Download-Datei: Loxberry network.txt (36 Downloads)

Weitere Details zur Installation findest du hier: https://www.loxwiki.eu/display/LOXBERRY/Installation+von+LoxBerry

Hinweis: Nach der Installation ist es sehr empfehlenswert die IP Adresse des Loxberry fest im Router einzustellen, damit diese nicht mehr wechseln kann! Wie das funktioniert, kannst du hier nachlesen.

Die Plugins installieren

Damit FHEM gleich mittels MQTT Protokoll an Loxone angebunden werden kann, werden zwei Plugins für den Loxberry benötigt. Dies ist natürlich FHEM und das Plugin MQTT. Diese werden über das Webinterface von Loxberry installiert. Dazu wird die jeweils heruntergeladene zip-Datei einfach ausgewählt und den Rest erledigt Loxberry selbst.

loxberry plugin verwaltung installation

Im MQTT Plugin selbst muss nicht sehr viel eingestellt werden. Lediglich die Subscriptions werden um die Zeile fhem/# erweitert. Damit erhält Loxberry (als MQTT Broker) alle eingehenden Statusänderungen von FHEM.

loxberry mqtt subscribe

FHEM für MQTT vorbereiten

In FHEM ist etwas mehr Vorarbeit notwendig, damit die Verbindung später perfekt läuft. Aber keine Angst, es folgt die Schritt-für-Schritt. FHEM wird dazu nun über den Menüpunkt Plugins aus Loxberry heraus gestartet. Es sollte die WEB-Instanz aufgerufen werden, dann sollte das Webinterface erscheinen (s.u.).

Alle nachfolgenden Befehle werden direkt in die FHEM Commandozeile eingegeben.

fhem commando zeile
define lb_mosquitto MQTT loxberry:1883 loxberry DeinMQTTPasswort
define mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric IODev lb_mosquitto
attr mqttGeneric globalDefaults sub:qos=2 pub:qos=0 retain=1
attr mqttGeneric globalPublish *:topic={"fhem/$device/$reading"}

Alle Befehle nacheinander, Zeile für Zeile eingeben! Danach mit einem Klick auf “Save config” speichern.

Das MQTT Passwort findest du im MQTT Plugin unter Settings.

loxberry mqtt broker passwort

Damit werden schon mal alle FHEM Events per MQTT an das Topic “fhem/$device/$reading” gesendet.

Tipp: Sollen nicht alle Geräte senden, kannst du die gewünschten Geräte z.B. in den Raum MQTT packen und filtern, indem du die folgende Zeile in FHEM eingibst.
defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=MQTT

Da aber nicht nur Events zu Loxone gesendet werden, sondern es auch ermöglicht werden soll, die in FHEM angelegten Geräte direkt über Loxone zu steuern, sind ein paar weitere Zeilen Code notwendig. An dieser Stelle ein Danke an Matthias Kleine, der den Code veröffentlich hat.

Auch hier werden die Befehle wieder Zeile für Zeile in die Commandzeile eingegeben!

define SYS_MQTT MQTT_DEVICE
attr SYS_MQTT alias MQTT-Command
attr SYS_MQTT userattr subscribeReading_cmnd
attr SYS_MQTT subscribeReading_cmnd /fhem/cmnd
define n_SYS_MQTT_cmnd notify SYS_MQTT:cmnd:.* {}

In dieses notify wird der folgende Code eingefügt.

SYS_MQTT:cmnd:.* {
    if ($EVENT =~ qr/.*?: (.*)/p) {
        my $cmnd = $1;
        Log3($NAME, 5, "executed mqtt command: " . $cmnd);
        fhem($cmnd);
    }
}

Das sieht dann wie folgt aus:

fhem mqtt steuern

Damit ist die FHEM und MQTT Plugin Konfiguration abgeschlossen. Was nun noch fehlt sind die Einstellungen direkt in Loxone, um die Daten ein- und auslesen zu können.

Loxone für MQTT und FHEM konfigurieren

In der Loxone Config sind nun auch einige Anpassungen notwendig. Ich unterscheide hier zwischen Ein- und Ausgabe von den MQTT Daten.

MQTT Daten einlesen

Damit die Statuswerte von FHEM in Loxone ausgewertet werden können, ist nicht viel notwendig. Es wird lediglich ein virtueller Eingang erstellt, mit dem Befehl den du im Loxberry Plugin MQTT unter Incoming Overview sehen kannst. Dazu ist es natürlich notwendig ein Gerät in FHEM angelegt zu haben, ansonsten ist hier nichts zu sehen.

mqtt fhem incoming overview
fhem_HUEDevice10_state
Das wäre ein Befehl, den man in Loxone als virtuellen Eingang anlegen würde, um die Werte abzuholen.

In Loxone wird dann ein Virtueller Eingang mit genau diesem Befehl erstellt. Hier könnte nun auch der oben genannte Wert fhem_HUEDevice10_state stehen.

loxone fhem virtueller eingang

Wichtig ist, dass dieser Eigang nicht als Digitaleingang verwendet werden darf! Also den Haken entfernen.

mqtt virtueller Eingang nicht anhaken

Damit werden die Änderungen an den Readings direkt an Loxone gesendet. Das ist grundsätzlich mit allen Readings möglich, die FHEM unterstützt. Wer sich mit FHEM noch gar nicht auskennt, dem lege ich diese Wiki-Eintrag sehr ans Herzen: https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM

FHEM Geräte per MQTT über Loxone steuern

Damit nicht nur Werte eingelesen werden können, sondern auch die in FHEM angelegten Geräte gesteuert werden können, sind nochmals kleine Anpassungen in Loxone notwendig.

Es wird ein virtueller Ausgang angelegt, mit dem Namen z.B. MQTT-Loxberry-Gateway und der Adresse:

/dev/udp/10.0.0.60/11884

Hier wird die IP 10.0.0.60 mit der des eigenen Loxberry ersetzt.

Danach wird ein “virtueller Ausgang Befehl” mit dem gewünschten FHEM Befehl erstellt. Hier kann jeder Befehl stehen, mit dem FHEM auch selbst steuerbar ist bzw. dessen Geräte.

mqtt loxberry gateway befehle
Der FHEM Befehl lautet an diesem Beispiel: set Kueche.Leiste on

Damit besteht ab sofort die Möglichkeit FHEM über MQTT Befehle zu steuern, ohne bei jedem FHEM Gerät ein subscribe auf ein bestimmtes Topic zu erstellen. Das erspart viel Arbeit und Zeit.

Viele weitere Infos sind auch im Loxwiki zu finden.

Klicke auf einen Stern um eine Bewertung abzugeben!

Durchschnittsbewertung 5 / 5. Bewertungen: 1

Es tut uns leid, dass dieser Beitrag für dich nicht hilfreich war!

Lassen Sie uns diesen Beitrag verbessern!

Wie können wir den Beitrag verbessern?

3 Gedanken zu „Loxone mit Raspberry Pi, MQTT & FHEM aufbohren“

3 Kommentare

  1. Schöner Artikel!

    Ich sende meine Befehle über einen notify aus FHEM über UDP direkt an Loxone. Ich verstehe nicht so ganz wofür ich MQTT brauche bzw. was der Vorteil sein könnte? Kann mich da jemand aufklären?

    • Hallo Sab,

      mit MQTT hast du die Möglichkeit, alle Geräte an eine Zentrale senden zu lassen. Die kann dann eben entscheiden, wie mit den empfangenen Daten umgegangen wird bzw. welche Daten evtl. sogar an andere Geräte weitergeleitet werden.
      Ich habe mich selbst lange um MQTT gesträubt, aber als es dann lief, fand ich es echt praktisch. Viele Geräte können auch von Haus aus das MQTT Protokoll, was eine “Vereinung” unterschiedlicher Geräte deutlich erleichtern kann.
      Trotzdem spricht nichts gegen die Umsetzung über UDP, das ist (würde ich sagen) Geschmackssache.

      VG
      Michael

  2. Hi,

    Ich stehe beim Schritt: “In dieses notify wird der folgende Code eingefügt.” an:

    Ich kann wählen zwischen:
    Change the condition:
    Change the executed command:
    modify: n_SYS_MQTT_cmnd SYS_MQTT:cmnd:.* set “logfile” “””und hier kann ich etwas reinschreiben”””

    Ich habe soeben versucht diese zusätzlichen 7 Zeilen Code da einfach einzufügen und auf “modify” zu drücken. Aber das scheint nicht zu funktionieren.
    Bräuchte hier ein wenig mehr Hilfe…

    Danke

Schreibe einen Kommentar

Do NOT follow this link or you will be banned from the site!