LoRaWAN-sensoreiden tiedot Home Assistantiin ChirpStackistä
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ä:
- LoRaWAN-Pi: ChirpStack, Mosquitto MQTT, Telegraf, InfluxDB, Grafana
- 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:
- Mene MQTT-integraation asetuksiin
- Valitse “Kuuntele aihetta”
- Tilaa:
application/#(wildcard kuuntelee kaikkea) - 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.
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:
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
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?
- Tarkista lokit: Asetukset → Järjestelmä https://www.home-assistant.io/docs/configuration/packages/→ Lokit
- Varmista packages-lataus: configuration.yaml sisältää packages: !include_dir_named packages
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