Jeg har lekt meg litt med MQTT og Home Assistant og tenkte å skrive noen linjer om hvordan raskt teste MQTT uten å ha noen ferdige sensorer oppe og gå.
Jeg har Home Assistant versjon 0.45 installert via All In One-installer (AIO). Dette kjører på en Raspberry Pi 3.
Fordelen med AIO er at den installerer rubel og bit (nesten), slik at du slipper problemer med integrasjon og oppsett i etterkant.
MQTT-brokeren Mosquitto blir bl.a automatisk installert og er klar til å bruk. Det samme gjelder OpenZwave og en rekke andre ting.
Følgende kommando sjekker om Mosquitto-servicen er oppe og går:
systemctl status mosquitto
Hvis Mosquitto kjører vil følgende output vises:
mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto)
Active: active (running) since Mon 2017-06-05 15:03:08 CEST; 4 days ago
Process: 453 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/mosquitto.service
└─676 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Sett brukernavn og passord for Mosquitto. Denne brukernavnet/passordet brukes av alle tjenester som kobler til brokeren:
sudo mosquitto_passwd /etc/mosquitto/pwfile dittmosquittobrukernavn
Så legger du inn koblingen mellom Home Assistant og Mosquitto-serveren. Legg følgende inn i configuration.yaml:
mqtt:
broker: 127.0.0.1
port: 1883
client_id: hass
keepalive: 60
username: dittmosquittobrukernavn
password: dittmosquittopassord
Hvis du nå restarter Home Assistant vil HA lytte etter MQTT-meldinger fra Mosquitto. Da trenger vi bare å registrere en Sensor som lytter på et MQTT topic. Dette gjøres under Sensors. Jeg har en egen fil for dette: sensors.yaml. I sensors.yaml legger jeg inn følgende:
Nå lytter Home Assistant på meldinger med topic "testtopic/temp"
hvis du nå restarter Home Assistant vil du få opp følgende øverst i State-vinduet:
Denne har ingen verdi ennå, fordi det foreløpig ikke er sendt noen meldinger via Mosquitto på topicet "testtopic/temp".
Da kan vi prøve å sende en melding. Det finnes nedlastbare programmer som snakker MQTT, men det enkleste er kanskje å bruke HiveMQ sin Javascript MQTT-klient fra nettleser.
Gå til: http://www.hivemq.com/demos/websocket-client/
Fyll inn info for oppkobling mot Mosquitto
Host: IP-adressen eller hostname til enheten som Mosquitto kjører på
Port: 9001 OBS: Denne klienten bruker websockets. Porten for websockets er derault konfigurert til 9001 i mosquitto.conf
ClientID: Tast inn hva som helst.
La de andre innstillingene være.
Trykk Connect.
DISCLAIMER: Jeg aner ikke om brukernavn og passord går "ut av huset" når du kobler opp mot en lokal MQTT-broker slik vi gjør her, men tipper at det ikke gjør det.
Siden vi har sagt til Home Assistant at vi skal lytte på topicet "testtopic/temp", så legg dette inn i feltet Topic. Legg hvilken som helst tallverdi inn i Message og trykk Publish:
Gå inn i Home Assistant og du vil se at sensorverdien er oppdatert:
Hvis den ikke er oppdatert, så må du begynne å feilsøke. Du kan ha feil i Home Assistant-konfigurasjonen eller det kan være problemer med MQTT/Mosquitto.
For å se på logget til Mosquitto kan du skrive følgende inn i shellet på RPi:
mosquitto_sub -u dinmosquittobruker -P dittmosquittopassord -v -t '#'
Hvis du så trykker Publish igjen, skal du sen følgende melding (topic) i Loggen:
testtopic/temp 21
Neste steg er å la en sensor ta over meldingssendingen som vi nå gjorde via browser. Den enkleste veien her er kanskje firmwaren ESPEasy som kjører på en av de mange ESP-kortene der ute