Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Hvordan teste MQTT på Home Assistant


Anbefalte innlegg

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:

 

Sitat

- platform: mqtt
  state_topic: "testtopic/temp"
  name: "Test fra jsklient"
  qos: 0
  unit_of_measurement: "°C"

 

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

 

  • Like 4
Lenke til kommentar
Del på andre sider

Takker [emoji5]️ Jeg ble litt demotivert da bildene forsvant, jeg hadde selvfølgelig ikke lagret dem på disk... Skal få dem på plass når motivasjonen er tilbake (og jeg får tid).

Jepp, det enkleste er nok å bruke Mosquittos kommandoer fra shellet. Jeg ville i midlertid sjekke at det fungerte også fra annen maskin. Installerte diverse MQTT software på PCen, men like greit å bruke HiveMQ sin Javascriptklient fant jeg ut. Har nå satt opp Espeasy og tipping bucket regnmeter, så får snart testet om dette fungerer i praksis [emoji106]

Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Er vel egentlig lettere da man bruker ResinOS som er et containeros for å deploye applikasjoner hvor man slipper å forholde seg til så mye annet enn HA. Alle custom bash scripts og guider for å deploye HA er vel mer stress tenker jeg ;)

Lenke til kommentar
Del på andre sider

38 minutter siden, sjabby skrev:

Er RPi3 kraftig nok til å kjøre bra med docker?

 

Ja, så lenge programmet du skal kjøre i docker fungerer fint på en RPi3 så er den kraftig nok. Docker fungerer ikke som den vanlige virtualisering du er vandt med, men heller se på det som en egen beholder/sandkasse til det programmet du skal kjøre hvor docker bruker de samme ressursene fra kernelen til OSet du kjører. Derfor er det også en del restriksjoner når det kommer til Docker "virtualisering" da du f.eks kun kan kjøre docker beholdere beregnet for ARM prosessorer bruker du en RPI. Det samme gjelder selve OSet, da du f.eks ikke kan kjøre en docker beholder med windows programmer i et linux miljø, men heller ikke docker beholdere med linux programmer i et windows miljø osv.

  • Like 1
Lenke til kommentar
Del på andre sider

6 timer siden, iblis skrev:

 

Ja, så lenge programmet du skal kjøre i docker fungerer fint på en RPi3 så er den kraftig nok. Docker fungerer ikke som den vanlige virtualisering du er vandt med, men heller se på det som en egen beholder/sandkasse til det programmet du skal kjøre hvor docker bruker de samme ressursene fra kernelen til OSet du kjører. Derfor er det også en del restriksjoner når det kommer til Docker "virtualisering" da du f.eks kun kan kjøre docker beholdere beregnet for ARM prosessorer bruker du en RPI. Det samme gjelder selve OSet, da du f.eks ikke kan kjøre en docker beholder med windows programmer i et linux miljø, men heller ikke docker beholdere med linux programmer i et windows miljø osv.

Pokker, jeg har lurt på hva Docker egentlig er.

Takk for ELI5-versjonen! ?

 

 

... litt synd at OS-interkompabilitet ikke er der. Men .NET Core fungerer jo på "alt", så det er vel en mulighet for meg.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.