Jeg hadde lyst å ha en temperaturføler på kontor/arbeidsplass som rapporterte måleverdier til min egen Home Assistant. Her er et innlegg om hvordan det ble løst.
Jeg bestemte meg for å bruke en esp32 sammen med en BME280 sensor. På esp32 har jeg brukt esphome. På arbeidsplass er det et gjestenettverk som denne kan bruke.
I esphome settes wifi opp slik som vist nedenfor. Hvis den ikke kommer på nett innen 1 minutt, vil den opprette et lokalt wifi nett som en kan koble seg til med mobil og deretter legge inn hvilket wifi nett sammen med passord som esp32 skal bruke. Esphome kaller det et "Fallback hotspot". Dette er en engangs-konfigurasjon.
wifi:
ssid: "hjemmenett"
password: !secret heime_wifi
domain: .lan
power_save_mode: none
ap:
ssid: "Kontordings Fallback Hotspot"
password: "et eller annet passord"
Og så har jeg tatt vekk api: i fra yaml-filen fordi jeg ikke vil at esp32 skal prøve å sende data til en Home Assistant som ikke er der via standard api.
Deretter laget jeg en time komponent der en hvert 15. minutt sender temperatur, fuktighet og trykk via en https post til en webhook.
time:
- platform: sntp
id: sntp_time
timezone: Europe/Oslo
servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
- 2.pool.ntp.org
on_time:
- seconds: 0
minutes: /15
then:
- http_request.post:
url: https://hooks.nabu.casa/en_eller_annen_url..........
verify_ssl: false
headers:
Content-Type: application/json
json: |-
root["kontortemperatur"] = id(temp).state;
root["kontorfuktighet"] = id(hum).state;
root["kontortrykk"] = id(pres).state;
Så gjenstår bittelitt konfigurasjon i HA
En lager en ny automasjon som har en webhook trigger. Data som esp32 sender, kan en hente ved hjelp av {{ trigger.json.navnpåsensor | float(0) }}
Webhook ID som automasjonen foreslå, lar en være uforandret. Trykk på tannhjulet bak webhook ID og ta vekk avkrysningen på "kun tilgjengelig fra det lokale nettverket"
Så må en inn på oppsett for Home Assistant Cloud. Nederst der er det en seksjon for Webhook'er. Her trykker en "Administrer" på den webhook som automasjonen har opprettet og kopierer url som står der. Denne url skal en bruke i sin helhet i esp32.
Så det var egentlig det hele. Dataene tikker inn hver 15. minutt.
Har en ikke Nabu Casa sin skytjeneste så er det andre måter å sette opp denne url'en på, men har en først gått denne veien så har en vel kontroll på hvordan en får aksess til sin HA utenfra via en webhook.
Oppsettet for BME280 er her, men ikke så veldig relevant for dette med webhooks. Den er standard esphome....
sensor:
- platform: bme280_i2c
temperature:
name: "${devicename} Temperature"
id: temp
oversampling: 16x
filters:
- offset: -3.3
pressure:
name: "${devicename} Pressure"
id: pres
filters:
- offset: 7.0
humidity:
name: "${devicename} Humidity"
id: hum
address: 0x76
iir_filter: 16x
update_interval: 60s