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:
mqtt: !include mqtt.yaml

  • 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

Home Assistant-integraties voor Meshtastic (1)

Entiteitenkaart voor telemetrie (Entities Card)

Maak een nieuwe Entiteitenkaart aan en selecteer de entiteiten die je zojuist hebt aangemaakt.

Home Assistant-integraties voor Meshtastic (2)

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.

Home Assistant-integraties voor Meshtastic (3)

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.

Home Assistant-integraties voor Meshtastic (4)

Voeg de volgende code toe aan uw Automations.yaml-bestand. Zorg ervoor dat u de topic, regex_searchen servicevoor 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:

Home Assistant-integraties voor Meshtastic (5)

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".