MQTT. Hassio.

15 maart 2019. Hassio is een installatie van Home-Assistant (HA) met alle versieringen eromheen. Hassio is dus eigenlijk HA+.
MQTT (Message Queuing Telemetry Transport) of in Nederlands: berichtenwachtrij voor telemetrietransport is een belangrijk onderdeel van HA. Vooral dus voor het verzenden van metingen, uitslagen, toestanden.
Is de lamp aan of uit? Hoeveel graden is het in de slaapkamer? Moet de verwarming aan omdat het koud is? Dat soort vragen. En de antwoorden zijn meestal kort.

Home-Assistant is een van oorsprong Nederlands product voor de automatisering van het huis(houden). Vier jaar geleden begon het en het concurreert met het Duitse OpenHAB. Home-Assistant is open source. Het staat iedereen vrij de code te bekijken en te verbeteren.
Tot mijn verbazing las ik dat er een ingebouwde MQTT-broker in HA zit. Maar je kunt ook zelf je eigen Mosquitto-server te installeren.
De Sonoff-Tasmota code die op mijn Sonoff Basic met ESP8266 draait, biedt óók de mogelijkheid om via MQTT te communiceren. Dát wilde ik wel eens proberen. En dan ook maar meteen kennismaken met Home-Assistant op een gloednieuwe Raspberry Pi 3B+.

Hassio en HA lijken goed gedocumenteerd. Helaas gaat de ontwikkeling zo snel dat veel documentatie gedateerd is, of kleine foutjes (nog) niet aangepast zijn.
Drie dagen geleden, in het begin, had ik vooral problemen met alle voorgestelde configuraties – heel behulpzaam – en de voorgestelde gebruikers en bijbehorende wachtwoorden – meer verwarrend helaas. Misschien kwam het omdat ik voor het eerst met yaml te maken had, de bestandsopmaak voor configs in HA. (YAML – YAML Ain’t Markup Language)
In eerste instantie installeerde ik ondersteuning voor de Configurator, SSH, SaMBa en de ingebouwde MQTT. MQTT bleef fouten spugen zodat ik niet verder kwam. In het forum stelde ik hier vragen over en kreeg op zijn minst wonderlijke antwoorden als zouden er twee instanties van MQTT aanwezig zijn die met elkaar ruzie maakten. Ik had toch echt alleen de ingebouwde versie geïnstalleerd. Als dat zo zou zijn, dan laat je die ene toch in tact en stopt de andere. Na een nachtje nadenken over dit soort ongerijmdheden stuitte ik uiteindelijk op een document dat zei dat de ingebouwde MQTT op localhost moest draaien. In de configuration.yaml dus
mqtt:
  broker: "localhost"
(in de documentatie staat: broker: localhost)
geplaatst. Warempel, dat loste de conflicten op.

Voor de zoeker naar de instellingen voor de ESP8266 plaats ik hieronder mijn huidige configuratie. Ik kan mqtt-berichten sturen maar het werkt nog niet helemaal naar behoren. Er zal nog wat fijnslijperij aan te pas moeten komen.
light:
  - platform: mqtt
    name: Lamp1 Serre
    command_topic: "cmnd/sonoff1/POWER1"
    state_topic: "stat/sonoff1/RESULT"
    value_template: "{{ value_json.POWER1 }}"
    availability_topic: "tele/sonoff1/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: true

Met de opdrachten kan ik de lamp aan- en uitschakelen, maar met de meer visuele schakelaars kan ik de lamp alleen aan zetten.

Stuur een bericht aan de lamp.
Stuur een bericht aan de lamp vanuit Home-Assistant.

Visuele bediening van de Sonoff Basic met ESP8266 schakelaar/lamp
Visuele bediening van de Sonoff Basic met ESP8266-schakelaar/lamp

Lamp is niet beschikbaar
Lamp is niet beschikbaar

Het state_topic bleek niet langer thuis te horen in deze configuratie. Een aanpassing van de retain-waarde naar ‘false’ was onontbeerlijk om af te komen van de meldingen dat de lamp ‘unavailable’ zou zijn. Zeer waarschijnlijk zorgde deze verkeerde instelling voor het onregelmatig plotseling aanfloepen van de lamp! De lamp ging plotseling branden, maar ik heb niet geconstateerd dat’ie ook plotseling weer uit ging.

Er is momenteel ook nogal wat te doen over Zigbee2MQTT, een applicatie die stelt dat je ook zonder zigbee-gateway van bijvoorbeeld Ikea of Aldi (=Müller) via mqtt vanuit HA je spullen kunt aansturen. Dat scheelt weer in centen, stroomgebruik en apparaten!