Tausta: miksi päädyin integrointiin?

Olin juuri saanut Zigbee-laitteet (ovihälyttimet ja vesivuotovahdit) toimimaan Home Assistantissa, mutta törmäsin klassiseen ongelmaan: kuuluvuus. Toinen ovihälytin jäi “ei käytettävissä” -tilaan, vaikka matkaa Raspberry Pi -koordinaattoriin oli vain 15 metriä ja muutama seinä.

Ratkaisu? Pelkkä koordinaattorin siirtäminen korkeammalle ja USB-jatkojohdon käyttö (erossa USB 3.0 -häiriöistä) ratkaisi ongelman täysin. Zigbee on herkkä, mutta palkitseva kun sen saa toimimaan!

Minulla on ennestään useita sensoreita, joista osa lähettää tietoa WiFi kautta mqtt:llä Telegraf ja InfluxDB ja siitä visualisoitavaksi Grafanaan sekä LoraWan-kautta tietoa lähettäviä sensoreita. Näiden kaikkien sensoritieto on hyödyllistä myös Home Assistantissa.

Esimerkki tekemistäni LoraWan-sensoreista löytyy LoraWan-repositioriossani ja näitä tässä ohjeessa nyt hyödynnän.

Arkkitehtuuri

Minulla on tässä tarkoituksessa kaksi Raspberry Pi:tä:

  1. LoRaWAN-Pi: ChirpStack, Mosquitto MQTT, Telegraf, InfluxDB, Grafana
  2. HA-Pi: Home Assistant

Tavoite: ulkona toimivan Ultra-Low-Power LoraWan BME280-sensorin (lämpötila, kosteus, paine) data Home Assistantiin reaaliajassa.

Ratkaisu: MQTT-silta

MQTT on kevyt, reaaliaikainen ja Home Assistantin natiivisti tukema protokolla. Se on täydellinen silta näiden järjestelmien välille.


Vaihe 1: ChirpStackin MQTT-aiheet

Ensimmäinen askel oli selvittää, mitä dataa ChirpStack lähettää. Asensin Asetukset - Laitteet ja Palvelut - MQTT integraation ja selvitin millaista tietoa mqtt-palveluun lähetetään:

  1. Mene MQTT-integraation asetuksiin
  2. Valitse “Kuuntele aihetta”
  3. Tilaa: application/# (wildcard kuuntelee kaikkea)
  4. Aktivoi LoRaWAN-laite (lähetä dataa)

Tulos:

Viesti 0 vastaanotettu aiheessa application/
5451bccb2-598b-42b7-aa6d-f708b217c639/device/
3c2c1fcffeccc81c/event/up 11.40:

{"deduplicationId":"0823e9db-079f-4d92-8265-b920f3e649e2"
,"time":"2026-05-28T08:40:51.127080428+00:00",
"deviceInfo":
{"tenantId":"52f14cc4-ccf1-4fcd-8f87-4025e1d49242",
"tenantName":"HiltsuStack",
"applicationId":"5451bccb2-598b-42b7-aa6d-f708b217c639",
"applicationName":"BME280-ULP-OTA",
"deviceProfileId":"3295e635-fe5b-4d91-bed9-a43f7d76badf",
"deviceProfileName":"BME280-ULP",
"deviceName":"Ulkosensori","devEui":"3c2c1fcffeccc81c",
"deviceClassEnabled":"CLASS_A","tags":{"location":"koti",
"pupose":"mittaukset"}},"devAddr":"000758e7","adr":false,
"dr":3,"fCnt":1731,"fPort":1,"confirmed":true,
"data":"NyZuXw==","object":{"pres":1010.0,"batt_pct":95.
0,"hum":38.0,"temp":15.0,"batt_v":4.14},"rxInfo":
[{"gatewayId":"0016c001f11a4b01","uplinkId":704717440,
"gwTime":"2026-05-28T08:40:51.127080428+00:00",
"nsTime":"2026-05-28T08:40:51.127656078+00:00",
"rssi":-53,"snr":11.25,"channel":1,"rfChain":1,
"location":{},"context":"WUDvvg==",
"crcStatus":"CRC_OK"}],"txInfo":{"frequency":868300000,
"modulation":{"lora":{"bandwidth":125000,
"spreadingFactor":9,"codeRate":"CR_4_5"}}},
"regionConfigId":"eu868"}

Tämän perusteella oikea json olisi:

{
  "deduplicationId": "0823e9db-079f-4d92-8265-b920f3e649e2",
  "time": "2026-05-28T08:40:51.127080428+00:00",
  "deviceInfo": {
    "applicationName": "BME280-ULP-OTA",
    "deviceName": "Ulkosensori",
    "devEui": "3c2c1fcffeccc81c"
  },
  "object": {
    "pres": 1010.0,
    "batt_pct": 95.0,
    "hum": 38.0,
    "temp": 15.0,
    "batt_v": 4.14
  }
}

Vaihe 2: Home Assistantin konfiguraatio

Tässä kohtaa törmäsin useaan sudenkuoppaan. Nyky-Home Assistantissa (2026+) ei kannata määrittää MQTT:tä pelkästään YAML:ssa eikä pelkästään UI:ssa – paras tapa on yhdistelmä. Oikea tapa: UI + Packages

1. Lisää MQTT-yhteys UI:n kautta:

  • Asetukset → Laitteet ja palvelut → + Lisää integraatio → MQTT
  • Syötä broker, portti, käyttäjätunnus ja salasana
  • Tallenna

2. Luo packages-rakenne File editorilla (asenna File editor jos et ole asentanut ennestään):

Tiedosto: /homeassistant/configuration.yaml:

Lisää loppuun:

homeassistant:
  packages: !include_dir_named packages

Luo hakemisto /homeassistant/packages Luo tiedosto /homeassistant/packages/lorawan.yaml:

Lisää tiedostoon sensorisi mqtt-tiedot:

mqtt:
  sensor:
    - name: "Ulkosensori Lämpötila"
      unique_id: "ulkosensori_temp_3c2c1fcffeccc81c"
      state_topic: "application/0823e9db-079f-4d92-8265-b920f3e649e2/device/3c2c1fcffeccc81c/event/up"
      value_template: "{{ value_json.object.temp }}"
      unit_of_measurement: "°C"
      device_class: "temperature"
      device:
        identifiers: "3c2c1fcffeccc81c"
        name: "Ulkosensori"
        manufacturer: "LoRaWAN"
        model: "BME280-ULP"

    - name: "Ulkosensori Kosteus"
      unique_id: "ulkosensori_hum_3c2c1fcffeccc81c"
      state_topic: "application/0823e9db-079f-4d92-8265-b920f3e649e2/device/3c2c1fcffeccc81c/event/up"
      value_template: "{{ value_json.object.hum }}"
      unit_of_measurement: "%"
      device_class: "humidity"
      device:
        identifiers: "3c2c1fcffeccc81c"
        name: "Ulkosensori"

    - name: "Ulkosensori Paine"
      unique_id: "ulkosensori_pres_3c2c1fcffeccc81c"
      state_topic: "application/0823e9db-079f-4d92-8265-b920f3e649e2/device/3c2c1fcffeccc81c/event/up"
      value_template: "{{ value_json.object.pres }}"
      unit_of_measurement: "hPa"
      device_class: "atmospheric_pressure"
      device:
        identifiers: "3c2c1fcffeccc81c"
        name: "Ulkosensori"

    - name: "Ulkosensori Akku"
      unique_id: "ulkosensori_batt_3c2c1fcffeccc81c"
      state_topic: "application/0823e9db-079f-4d92-8265-b920f3e649e2/device/3c2c1fcffeccc81c/event/up"
      value_template: "{{ value_json.object.batt_pct }}"
      unit_of_measurement: "%"
      device_class: "battery"
      device:
        identifiers: "3c2c1fcffeccc81c"
        name: "Ulkosensori"

Tarkista konfiguraatio Asetukset - Järjestelmä - Nopea uudelleenlataus.

Käynnistä uudelleen Tarkista määritykset ensin Nopea uudelleenlataus-toiminnolla

3. Käynnistä uudelleen

Käytä “Käynnistä Home Assistant uudelleen” (packages vaativat täyden restartin).


Tulokset

Asetukset → Laitteet ja palvelut → MQTT:

MQTT Laitteet Ulkosensorin lähettämä data

Miksi tämä toimii?

  • ChirpStack lähettää MQTT-viestit aiheeseen application/{app_id}/device/{dev_eui}/event/up
  • Mosquitto välittää viestit eteenpäin
  • Home Assistant kuuntelee aihetta ja päivittää sensorit value_template:n mukaisesti
  • Packages mahdollistavat siistin modulaarisen konfiguraation ilman YAML-konflikteja

Akun taso sensorilla Sensorin lähettämä akun varaus


Vinkkejä ja sudenkuoppia

Käytä packages-rakennetta

Kun sinulla on useita sensoreita, packages pitävät konfiguraation siistinä. Voit luoda uuden tiedoston jokaiselle laitteelle:

packages/lorawan.yaml
packages/zigbee.yaml
packages/shelly.yaml

unique_id on pakollinen Ilman unique_id:tä et voi lisätä sensoreita dashboardille etkä näe niitä entity-listalla.

device_class ja unit_of_measurement Nämä mahdollistavat automaattiset ikonit ja oikean yksikkömuunnoksen.

Älä määritä MQTT:tä kahteen kertaan

Joko UI tai YAML (ei molempia)! Poikkeus: UI-yhteys + packages-sensorit (tämä toimii!)


Vianetsintä

Sensorit näyttävät “unavailable”?

  • Odota seuraavaa mqtt-viestiä tai aktivoi laite manuaalisesti
  • Tarkista MQTT-yhteys: Asetukset → Laitteet ja palvelut → MQTT

Ei näy laitteita ollenkaan?

Virhe: “extra keys not allowed”?

  • Poistitko broker-asetuksen packages-tiedostosta? Se pitää määrittää UI:n kautta.

Seuraavat askeleet

Nyt kun perusyhteys toimii, voit:

  • Lisätä dashboardille: Yleiskatsaus → + Lisää kortti → Entities
  • Luoda automaatioita: Esim. hälytys jos akku < 20%
  • Historiadatan visualisointi: InfluxDB + Grafana (jos käytössä)
  • Lisätä enemmän sensoreita: kopioi vain sensor-lohko ja vaihda devEui

Yhteenveto

LoRaWAN + ChirpStack + Home Assistant on tehokas yhdistelmä, mutta vaatii hieman säätöä. Tärkeimmät opit:

  • Käytä MQTT:ta siltaamaan eri Raspberry Pi:t
  • UI + Packages on nykyaikaisin tapa konfiguroida
  • Tarkista ChirpStackin MQTT-aiheet ennen konfigurointia
  • unique_id on pakollinen kaikille sensoreille

Onnea matkaan!


Lähteet ja lisälukemista:

Home Assistant MQTT-dokumentaatio

ChirpStack MQTT-integraatio

ChirpStack asennus RaspberryPi

Home Assistant Packages