RuuviTag i Home Assistant

Ved hjelp av ESPHome og et ESP32-kort

RuuviTag

En RuuviTag er en liten batteridrevet sensor som kan måle miljøet den befinner seg i. I dette innlegget skal jeg kort vise hvordan man ved hjelp av et ESP32-kort kan samle inn data og sende det videre til Home Assistant.

En RuuviTag er en sensor som rett ut av boksen kan måle miljøet den befinner seg i. Med koden vi skal skrive så kan vi samle inn temperatur, luftfuktighet, lufttrykk, bevegelse, spenning på batteriet og litt til.

Som så mange andre innlegg jeg har skrevet i det siste så er dette like mye en huskeliste for meg selv. Men deler den med deg slik at flere også kan dra nytte av det.

Hva er en RuuviTag?

Som nevnt så er RuuviTag en sensor som måler temperatur, relativ luftfuktiget, lufttrykk og bevegelse. Dette sender den via lavenergi blåtann (BLE, bluetooth low energy) og støttes av de fleste moderne mobiltelefoner.

Rekkevidden er relativt god og med Ruuvi Station som er gratis APP-en (for iOS og Android) så kan man få inn dataene fra en RuuviTag rett på mobiltelefonen. Men det er ikke det vi skal gjøre i dette innlegget. Vi ønsker å få tak i dataene og lagre de i Home Assistant.

Før vi begynner, sørg for at du har siste firmware på din RuuviTag.

ESPHome

Utviklerkort som har en ESP32-brikke har støttet for ikke bare Wi-Fi men også blåtann. Dette gjør det mulig for et ESP32-kort å ta imot signaler fra RuuviTag og sende de videre via Wi-Fi til Home Assistant. Så i dette tilfellet er ESP32-kortet et mellomledd for å samle inn data, håndtere dem og sende de videre til Home Assistant.

ESP32
Utviklerkort med ESP32-brikke finnes i mange varianter. Felles er støtte for Wi-Fi og bluetooth

Jeg tar utgangspunkt i at du vet og kjenner til ESP32, har installert og kjører ESPHome.

Hvorfor ikke rett til Home Assistant?

Dette passer fint for dem som kjører kjører Home Assistant på en datamaskin som ikke har blåtann eller støtte for lavenergi blåtann.

I mitt tilfelle så jobber avstanden og bygningsmasse imot meg. Ved å plassere min ESP32 på et mer sentralt sted så kan den hente inn informasjon fra flere enheter enn RuuviTag.

Sette opp ny enhet i ESPHome

Koble kortet til via USB og opprett en ny enhet i ESPHome. Fylle ut og fullfør veilederen hvor man gir enheten et navn og fyller ut informasjon om ditt trådløse nettverk. Du har nå opprettet en .yaml-fil som du via ESPHome kan redigere.

Kopier koden under og legg den til i den opprettede .yaml-fila:

esp32_ble_tracker:

sensor:
- platform: ruuvitag
  mac_address: D9:A7:D1:5A:B2:05
  humidity:
    name: "RuuviTag Humidity"
  temperature:
    name: "RuuviTag Temperature"
  pressure:
    name: "RuuviTag Pressure"
  acceleration:
    name: "RuuviTag Acceleration"
  acceleration_x:
    name: "RuuviTag Acceleration X"
  acceleration_y:
    name: "RuuviTag Acceleration Y"
  acceleration_z:
    name: "RuuviTag Acceleration Z"
  battery_voltage:
    name: "RuuviTag Battery Voltage"
  tx_power:
    name: "RuuviTag TX Power"
  movement_counter:
    name: "RuuviTag Movement Counter"
  measurement_sequence_number:
    name: "RuuviTag Measurement Sequence Number"

Legg merke til linjen mac_address. Her må du erstatte MAC-adressen med din RuuviTag sin. Ruuvi Station på din mobiltelefon viser RuuviTagens MAC-addresse. Så du finner den lett der.

Etter dette er det bare å lagre og laste opp koden til ESP32-kortet. Etter vellykket opplasting så vil det etter kort tid bli synlig informasjon som kommer fra RuuviTagen. Eks. slik:

[21:10:33][D][ruuvi_ble:102]: Got RuuviTag (D9:A7:D1:5A:B2:05):
[21:10:33][D][ruuvi_ble:105]:   Humidity: 35.33%
[21:10:33][D][ruuvi_ble:108]:   Temperature: 24.46°C
[21:10:33][D][ruuvi_ble:111]:   Pressure: 986.55hPa
[21:10:33][D][ruuvi_ble:114]:   Acceleration: 0.966G
[21:10:33][D][ruuvi_ble:117]:   Acceleration X: 0.068G
[21:10:33][D][ruuvi_ble:120]:   Acceleration Y: -0.012G
[21:10:33][D][ruuvi_ble:123]:   Acceleration Z: 0.964G
[21:10:33][D][ruuvi_ble:126]:   Battery Voltage: 2.971V
[21:10:33][D][ruuvi_ble:129]:   TX Power: 4dBm
[21:10:33][D][ruuvi_ble:132]:   Movement Counter: 86
[21:10:33][D][ruuvi_ble:135]:   Measurement Sequence Number: 577
[21:10:33][D][sensor:092]: 'RuuviTag Humidity': Sending state 35.33250 % with 2 decimals of accuracy
[21:10:33][D][sensor:092]: 'RuuviTag Temperature': Sending state 24.46000 °C with 2 decimals of accuracy
[21:10:33][D][sensor:092]: 'RuuviTag Pressure': Sending state 986.54999 hPa with 2 decimals of accuracy
[21:10:33][D][sensor:092]: 'RuuviTag Acceleration': Sending state 0.96647 G with 3 decimals of accuracy
[21:10:33][D][sensor:092]: 'RuuviTag Acceleration X': Sending state 0.06800 G with 3 decimals of accuracy
[21:10:34][D][sensor:092]: 'RuuviTag Acceleration Y': Sending state -0.01200 G with 3 decimals of accuracy
[21:10:34][D][sensor:092]: 'RuuviTag Acceleration Z': Sending state 0.96400 G with 3 decimals of accuracy
[21:10:34][D][sensor:092]: 'RuuviTag Battery Voltage': Sending state 2.97100 V with 3 decimals of accuracy
[21:10:34][D][sensor:092]: 'RuuviTag TX Power': Sending state 4.00000 dBm with 0 decimals of accuracy
[21:10:34][D][sensor:092]: 'RuuviTag Movement Counter': Sending state 86.00000  with 0 decimals of accuracy
[21:10:34][D][sensor:092]: 'RuuviTag Measurement Sequence Number': Sending state 577.00000  with 0 decimals of accuracy

Home Assistant

Under Konfigurasjon og Integrasjoner skal det nå ha dukket opp en ny enhet for ESPHome. Legg den til og du har tilgang til dataene som kommer fra RuuviTag og kan legge til f.eks. et kort som dette.

Eksempel på RuuviTag-kort i Home Assistant
Eksempel på RuuviTag-kort i Home Assistant

Kode

type: entities
entities:
  - entity: sensor.ruuvitag_temperature
  - entity: sensor.ruuvitag_humidity
  - entity: sensor.ruuvitag_pressure
  - entity: sensor.ruuvitag_battery_voltage
  - entity: sensor.ruuvitag_tx_power
title: RuuviTag

Helge Johnsen

Dette er mitt private nettsted. Jeg jobber til daglig som seniorutvikler i et av Norges større konsulentbyråder. I denne bloggen skriver jeg om store og små ting som rører seg i min private verden. Bloggen består stort sett av tips, egne prosjekter og tanker. Les mer om meg her.

Har du noen tanker eller kommentarer om dette blogginnlegget så finner du meg på en rekke sosiale medier.