Setup Home Assistant MQTT
Het integreren van Meshtastic in Home Assistant brengt een nieuw niveau van controle en monitoring voor uw mesh-netwerk. Op deze pagina begeleiden we je door het proces van het maken van Meshtastic MQTT-sensorentiteiten binnen Home Assistant. Of je nu het batterijniveau en de omgevingsomstandigheden in de gaten wilt houden of zelfs meldingen wilt ontvangen van uw mesh-netwerk, deze integraties bieden je de tools om dit mogelijk te maken.
- Voeg via het instellingen menu -> Apparaten & Diensten -> Integratie toevoegen, de MQTT integratie toe.
- Zorg ervoor dat je mesh-node is verbonden met een MQTT-broker en JSON als uitvoer gebruikt.
- Open configuratie.yaml en voeg de volgende regel toe:
- Maak een nieuw tekstbestand met de naam mqtt.yamlin de hoofdmap van Home Assistant (dezelfde map als configuratie.yaml).
- Kopieer de volgende code naar het bestand mqtt.yaml.
Aan de hand van je NodeID (hex) kijken we of we je volledige NodeID kunnen terugvinden in onze database zodat onderstaande (mqtt.yaml) gewoon een kwestie is van kopieëren en plakken.
mqtt.yaml configuratie
sensor: # Node #1 - name: "Node 1 Battery Voltage" unique_id: "node_1__battery_voltage" state_topic: "msh/3300-3329/2/json/LongFast/!da5c87d4" state_class: measurement value_template: >- {% if value_json.from == 3663497172 and value_json.payload.voltage is defined and value_json.payload.temperature is not defined %} {{ (value_json.payload.voltage | float) | round(2) }} {% else %} {{ this.state }} {% endif %} unit_of_measurement: "Volts" # Telemetry packets come in two flavors: The default node telemetry, and the I2C sensor data. # Both packets contain "voltage" so we check for temperature to ignore the sensor packet here. - name: "Node 1 Battery Percent" unique_id: "node_1_battery_percent" state_topic: "msh/3300-3329/2/json/LongFast/!da5c87d4" state_class: measurement value_template: >- {% if value_json.from == 3663497172 and value_json.payload.battery_level is defined %} {{ (value_json.payload.battery_level | float) | round(2) }} {% else %} {{ this.state }} {% endif %} device_class: "battery" unit_of_measurement: "%" - name: "Node 1 ChUtil" unique_id: "node_1_chutil" state_topic: "msh/3300-3329/2/json/LongFast/!da5c87d4" state_class: measurement value_template: >- {% if value_json.from == 3663497172 and value_json.payload.channel_utilization is defined %} {{ (value_json.payload.channel_utilization | float) | round(2) }} {% else %} {{ this.state }} {% endif %} unit_of_measurement: "%" - name: "Node 1 AirUtilTX" unique_id: "node_1_airutiltx" state_topic: "msh/3300-3329/2/json/LongFast/!da5c87d4" state_class: measurement value_template: >- {% if value_json.from == 3663497172 and value_json.payload.air_util_tx is defined %} {{ (value_json.payload.air_util_tx | float) | round(2) }} {% else %} {{ this.state }} {% endif %} unit_of_measurement: "%" - name: "Node 1 Messages" unique_id: "node_1_messages" state_topic: "msh/3300-3329/2/json/LongFast/!da5c87d4" value_template: >- {% if value_json.from == 3663497172 and value_json.payload.text is defined %} {{ value_json.payload.text }} {% else %} {{ this.state }} {% endif %}
Home Assistant-entiteiten kunnen worden aangemaakt voor iedere gegevenstype dat verzonden wordt naar MQTT. Bijvoorbeeld: hoogte, breedtegraad_i, lengtegraad_i, tijd, stroom en neighbors. Gebruik bovenstaand sjabloon als richtlijn om wanneer dit gewenst is, extra entiteiten aan te maken.
Op de Meshtastic website wordt bij dit onderwerp vermeld dat je enkele gegevens van de node moet aanpassen, als je boven in dit scherm je nodeid en postcode ingevoerd hebt, is dit niet langer nodig en kan je wanneer je dit wilt de titels (onder Name:) naar eigen inzicht veranderen. Heb je, je postcode en Node ID (Hex) niet ingevuld, wijzig dan de volgende gegevens.... da5c87d4
, 3663497172
en 3300-3329
.
Controleer de configuratie en herstart Home Assistant
Voer in Home Assistant "CHECK CONFIGURATION
" de sectie met ontwikkelaarstools uit en laad vervolgens alle yaml-configuratie opnieuw
Entiteitenkaart voor telemetrie (Entities Card)
Maak een nieuwe Entiteitenkaart aan en selecteer de entiteiten die je zojuist hebt aangemaakt.
Logboekkaart voor Berichten
De logboekkaart is handig om de berichten die ontvangen worden uit de mesh, bij te houden. Hieronder ziet u een voorbeeld van hoe de logboekkaart zou worden ingesteld.
Activeer Home Assistant automatiseringen
Het is mogelijk om Home Assistant automatiseringen te laten activeren op basis van berichten of gebeurtenissen op uw mesh. Dit voorbeeld wacht op een bericht met @Tropho en stuurt vervolgens een pop-upmelding naar zijn flip-telefoon met het bericht. Optioneel kun je ALLE berichten uit de mesh als HA-meldingen naar je telefoon laten sturen.
Voeg de volgende code toe aan uw Automations.yaml-bestand. Zorg ervoor dat u de topic, regex_search en service voor uw configuratie wijzigt.
- alias: Meshtastic - New notification description: any message with an @Tropho will send to mobile device trigger: - platform: mqtt topic: msh/2/json/LongFast/!67ea9400 condition: - condition: template value_template: "{{ trigger.payload_json.payload.text | regex_search('@Tropho') }}" # or send ALL messages from the mesh to HA notifications (except for range tests) # value_template: "{{ trigger.payload_json.payload.text is defined and "seq " not in trigger.payload_json.payload.text}}" enabled: true action: - service: notify.mobile_app_trophos_galaxy_z_flip5 data: # show the message as coming from "Meshtastic": message: "Meshtastic: {{ trigger.payload_json.payload.text }}" # or show the device id instead: # message: "{{ trigger.payload_json.from }}: {{ trigger.payload_json.payload.text }}" - delay: hours: 0 minutes: 0 seconds: 30 milliseconds: 0 mode: single
Ditzelfde type automatisering is erg handig om andere acties in Home Assistant te activeren. Je kunt bijvoorbeeld een ventilator aanzetten als de temperatuur een bepaalde waarde bereikt, of een geluid afspelen op een speaker als er een nieuw bericht binnenkomt.
Maak een entiteit
Het is mogelijk om vanuit Home Assistant een invoertekstvak te maken om berichten naar je mesh te sturen.
Invoerteksthelper
Maak eerst een helper-entiteit voor invoertekst. De voorkeursmanier om een invoertekst te configureren is via de HA-interface onder Instellingen > Apparaten & Diensten > Helpers. Klik op de knop Toevoegen en kies vervolgens de optie Tekst. Maak voor de zekerheid een tekstinvoerhulpje met een maximale lengte van 190. Zie voorbeeld hieronder:
Creëer een entiteit
Deze automatisering controleert het verzendvak op wijzigingen. Nadat u een bericht hebt getypt, drukt u op Enter of klikt u op het vakje. De automatisering stuurt een tekstreeks in JSON naar de mqtt-broker. Zorg ervoor dat u publiceert naar een kanaal met de naam 'mqtt' en dat u de apparaat-ID en fromhet veld in het onderstaande voorbeeld bijwerkt. Er kan een veld channelworden toegevoegd om op een andere kanaalindex dan het primaire kanaal te verzenden, of er tokan een veld worden toegevoegd met een knooppuntnummer om een DM te verzenden.
- alias: Meshtastic - Send Automation description: "" trigger: - platform: state entity_id: - input_text.meshtastic_send_box condition: [] action: - delay: hours: 0 minutes: 0 seconds: 1 milliseconds: 0 - service: mqtt.publish data: qos: 0 retain: false topic: msh/2/json/mqtt/!67ea9400 payload: >- {"from":1743426560,"type":"sendtext","payload":"{{ states('input_text.meshtastic_send_box') }}"} - delay: hours: 0 minutes: 0 seconds: 1 milliseconds: 0 - service: input_text.set_value data: value: " " target: entity_id: input_text.meshtastic_send_box - delay: hours: 0 minutes: 0 seconds: 2 milliseconds: 0 mode: single
Voeg deze kaart toe aan uw dashboard door naar Dashboard bewerken -> + KAART TOEVOEGEN. Zoek vervolgens OP ENTITEIT naar Meshtastic Send Box en vink het vakje naast het item aan. Klik op "Doorgaan" en vervolgens op "Toevoegen aan Dashboard".