MQTT in HomeBridge

MQTT = Message Queuing Telemetry Transport en wordt gebruikt door apparaten die berichten versturen. Dit bericht wordt dan verstuurd met behulp van MQTT waarin o.a. een id staat. Indien het device een id heeft voor AAN en een ander id voor UIT, dan worden dus twee verschillende berichten gestuurd, afhankelijk van de status van het device. Dit is dus uitermate handig voor het ‘slimme huis’!

Nu dienen deze MQTT-berichten dus allereerst opgevangen te worden en daarvoor kan een Raspberry Pi gebruikt worden waarop een ‘MQTT Broker‘ wordt geïnstalleerd. Een MQTT-Broker is een stukje software dat berichten kan ontvangen en opslaat in een ‘topic‘. Dat ‘topic’ kan uitgelezen worden door een ‘MQTT-Client‘ die de rechten heeft om hetzelfde ‘topic’ te lezen. Een MQTT broker voor de Raspberry Pi is ‘Mosquitto‘ en die kan eenvoudig met apt geïnstalleerd worden.

Voor Homebridge is er een plugin genaamd ‘mqttthing‘ en daarmee kunnen devices gemaakt worden in HomeBridge die een MQTT-bericht versturen naar de MQTT-Broker op het moment dat ze aan- of uitgeschakeld worden. De npm-pagina is deze: https://www.npmjs.com/package/homebridge-mqttthing en met de Plugins-optie in HomeBridge kan deze toegevoegd worden. De Settings spreken voor zich en na een herstart van HomeBridge kunnen de Accessoires toegevoegd worden. Een voorbeeld voor een switch is alsvolgt:

 "accessories": [
        {
            "accessory": "mqttthing",
            "type": "switch",
            "name": "example-switch",
            "url": "mqtt://192.168.1.123",
            "username": "mqtt-user",
            "password": "mqtt-password",
            "topics": {
                "getOn": "tele/tasmota/switch1/RESULT",
                "setOn": "cmnd/tasmota/switch1/POWER"
            },
            "onValue": "ON",
            "offValue": "OFF",
        }
]

en hiermee wordt dus de status van de switch naar de MQTT-Broker gestuurd zodra deze bediend wordt.

In homebridge zijn de accessoires zichtbaar als deze met de ‘-I’ optie is opgestart. De example-switch:

Als deze wordt bediend komen de volgende berichten in de MQTT-Broker binnen:

stat/tasmota/switch1/RESULT
ON
stat/tasmota/switch1/RESULT
OFF

Andere applicaties kunnen dan lid worden van de topic ‘stat/tasmota/switch1/RESULT‘ en zien dan ON/OFF waarmee acties uitgevoerd kunnen worden.

In Apple Home worden de switches die op deze manier zijn toegevoegd uiteraard kenbaar gemaakt en in Home/Woning kunnen ‘Automatiseringen’ toegevoegd worden die deze switch aan- of uitzet als er een Apple Home accessoire bediend wordt.

Het resultaat van dit alles is nu dat een Apple Home accessoire een MQTT bericht verstuurd als deze bediend wordt.

Ik gebruik deze oplossing nu voor mijn Eve Elgato raam/deur sensors zodat ik in Home Assistant m.b.v. MQTT deze sensors kan gebruiken.