ChirpStack (lokaal)

De gateway dient aangemeld te worden op een Network Server en indien dat binnen het eigen (thuis)netwerk dient te blijven is ChirpStack een mogelijkheid om te gaan gebruiken. Deze kan op verschillende systemen geïnstalleerd worden, ik gebruik de Kerlink Gateway.

ChirpStack Network Server

Op de website keros.docs.kerlink.com is te lezen hoe de Kerlink Gateway in een zogenaamde Edge-computing model is te configureren, hetgeen inhoudt dat ChirpSoft lokaal geïnstalleerd wordt. zie Edge Computing voor de documentatie. De Chirpsoft GUI kan dan benaderd worden via http://[kerlink ip adres]:8080

Gateway toevoegen

De gateway wordt automatisch herkend, tenminste als de Lora Forwarder ingesteld is op de localhost node (127.0.0.1), en is dan zichtbaar in de Gateway sectie

Device Profile

Om devices toe te kunnen voegen aan de gateway is een profiel nodig en die wordt gemaakt via de ‘Device Profiles‘ optie. Standaard waardes kunnen gebruikt worden, echter voor de functie van de sensor is een codec nodig die ingevuld dient te worden en voorzien van javascript functies.

Applications

Om end-devices te kunnen gebruiken is ook een Application nodig. Voeg via Applications deze toe

en vervolgens kunnen daar de end-devices aan worden toegevoegd. Hiervoor is het Device EUI en de APP Key nodig, deze worden met het device meegeleverd. Bijvoorbeeld een deur-sensor:

en de toegevoegde devices komen in het overzicht met een ‘Last seen‘ tijdstip:

De uplink data die verstuurd wordt door de sensoren komen binnen in de gateway en worden door de MQTT-Forwarder doorgestuurd naar een MQTT broker. In een standaard installatie op een Kerlink gateway is Mosquitto MQTT Broker geïnstalleerd op de gateway zelf. Via de ‘Events’ van een sensor is de ‘UP-Data’ te zien

In de details van het bericht zien we het volgende mits de juiste codec gebruikt wordt voor de deur-sensor:

De tracker geeft de coordinaten op dezelfde manier door aan MQTT.

De MQTT Forwarder is op de Kerlink aanwezig en stuurt de uplink data dus door naar localhost (127.0.0.1) hetgeen in het bestand /etc/chirpstack-mqtt-forwarder/chirpstack-mqtt-forwarder.toml ingesteld is.

[mqtt]
  topic_prefix="eu868"
  server="tcp://127.0.0.1:1883"
  ...

Om Mosquitto MQTT Broker te gebruiken die al op de Home Assistant server staat kan een verwijzing gemaakt worden in het bestand /etc/chirpstack/chirpstack.toml

[integration.mqtt]
server = “tcp://[IP-adres-HA]:1883/”
json = true
username = "mqtt username"
password = "mqtt password"

Uitlezen van de MQTT data kan met een subscribe op het topic. De (object) data die ontvangen wordt door MQTT is aanwezig in het volgende topic: application/+/device/+/event/+ en daar kunnen een MQTT-entiteiten voor gemaakt worden.

MQTT Entiteiten

In het bestand configuration.yaml dient een verwijzing te staan naar mqtt, in mijn geval is dat naar een apart bestand genaamd mqtt.yaml in de directory settings/additional/ dus:

mqtt: !include settings/additional/mqtt.yaml

In het bestand mqtt.yaml komen de volgende verwijzingen:

binary_sensor:
  - name: "Door1"
    state_topic: "application/9c83323c-4d90-4ca3-8142-1ac17edae2eb/device/a84041b5845b2ac5/event/up"
    value_template: "{{ value_json.object.DOOR_OPEN_STATUS }}"
    payload_on: "1.0"
    payload_off: "0.0"
    device_class: "door"
    qos: 0
sensor:
  - name: "lgt-92-gps-lat"
    state_topic: "application/9c83323c-4d90-4ca3-8142-1ac17edae2eb/device/a84041885182708a/event/up"
    value_template: "{{ value_json.object.latitude }}"
    qos: 0
  - name: "lgt-92-gps-lon"
    state_topic: "application/9c83323c-4d90-4ca3-8142-1ac17edae2eb/device/a84041885182708a/event/up"
    value_template: "{{ value_json.object.longitude }}"
    qos: 0

in bovenstaand voorbeeld is 9c83323c-4d90-4ca3-8142-1ac17edae2eb het ID van de Application zoals die gevonden is in ChirpStack:

a84041b5845b2ac5 is het ID van de deur-sensor en a84041885182708a is het ID van de tracker. Ook die zijn terug te vinden in ChirpStack:

Zoals eerder al gezien in de uplink-data is er in het bericht een object met daarin de sensor-gegevens. Hier vinden we dus OPEN_DOOR_STATUS voor de deur-sensor en longitude en latitude voor de tracker. Die worden met een json value-template opgehaald uit het bericht.

In Home Assistant zijn dan de binaire_sensor en de sensors bekend na een herstart van Home Assistant.

Automatsering voor device_tracker op basis van de tracker-sensors

Van de inhoud van de beide tracker-sensors kan nu met een automatisering een device_tracker voor Home Assistant worden gemaakt die zich aanpast aan de coordinaten uit de sensors.

Hiermee wordt dus de device_tracker locatie bijgehouden:

en kan dan weer in een dashboard en/of automatisering gebruikt worden.