Visa Meshtastic-meddelanden i Home Assistant
Den här guiden visar hur du tar emot Meshtastic-meddelanden via MQTT i Home Assistant och visar de senaste tre meddelandena på en dashboard.
Förutsättningar
- En Meshtastic-nod med internetanslutning, till exempel via Wi-Fi eller en ansluten app.
- En MQTT-broker som både Meshtastic-noden och Home Assistant kan ansluta till.
- MQTT-integrationen installerad och ansluten till samma broker i Home Assistant.
1. Aktivera MQTT på Meshtastic-noden
I Meshtastic-appen öppnar du nodens Settings / Module settings / MQTT (menynamnen kan skilja sig mellan appversioner) och:
- Aktiverar MQTT och anger adress och eventuell inloggning till din broker.
- Aktiverar Uplink för den kanal vars meddelanden ska skickas till MQTT.
- Aktiverar JSON så att meddelandena publiceras i ett format som Home Assistant kan läsa.
Ändra inte Downlink om du bara vill visa meddelanden i Home Assistant. Downlink behövs inte för den här guiden.
2. Lägg till MQTT-sensorerna i Home Assistant
Lägg mqtt: och template: på samma toppnivå i Home Assistant-konfigurationen. MQTT-sensorn ligger under mqtt: sensor:. Ersätt !xxxxxxxx med nodens ID.
Exemplet nedan är inställt för Meshtastic-kanalen Priv, inte LongFast. Om du använder LongFast ändrar du Priv i state_topic till LongFast och ändrar value_json.channel == 1 till kanalens index i din Meshtastic-konfiguration. Om LongFast är din primära kanal är indexet vanligtvis 0. Du kan även byta namn på sensorn och dess entitets-ID från Priv till LongFast för att hålla namnen tydliga.
mqtt:
sensor:
- name: "Meshtastic Priv Meddelande"
unique_id: "meshtastic_priv_meddelande"
state_topic: "msh/2/json/Priv/!xxxxxxxx"
value_template: >-
{% if value_json is defined and value_json.type in ['text', 'sendtext'] and value_json.channel == 1 and value_json.payload is defined and value_json.payload.text is defined %}
{{ value_json.payload.text }}
{% else %}
{{ states('sensor.meshtastic_priv_meddelande') }}
{% endif %}
icon: "mdi:message-lock-outline"
template:
- trigger:
- platform: state
entity_id: sensor.meshtastic_priv_meddelande
sensor:
- name: "Meshtastic Senaste 3 Meddelanden"
unique_id: "meshtastic_senaste_3_meddelanden"
icon: mdi:message-text-clock
state: >
{% set msgs = this.attributes.meddelanden | default([], true) %}
{{ msgs[0] if msgs | length > 0 else 'Inga meddelanden' }}
attributes:
meddelanden: >-
{% set current = this.attributes.meddelanden | default([], true) %}
{% set new_msg = states('sensor.meshtastic_priv_meddelande') %}
{% if new_msg not in ['unavailable', 'unknown', 'none', ''] and (current | length == 0 or current[0] != new_msg) %}
{{ ([new_msg] + current)[:3] }}
{% else %}
{{ current }}
{% endif %}
Använd Kontrollera konfiguration och starta om Home Assistant när du har sparat ändringarna. MQTT-sensorn tar emot meddelanden från det angivna topicet. Mallen sparar upp till tre av de senaste meddelandetexterna i attributet meddelanden och lägger inte till samma text igen direkt efter sig själv.
3. Visa meddelandena på en dashboard
Lägg till ett Markdown-kort på dashboarden med följande innehåll för att visa de tre senaste meddelandena:
Rubriken i kortet nedan säger Privata Meddelanden. Om du använder LongFast ändrar du den texten till exempelvis Meddelanden på LongFast.
type: markdown
content: |
<ha-icon icon="mdi:message-text"></ha-icon> **Senaste Privata Meddelandena**
{% set msgs = state_attr('sensor.meshtastic_senaste_3_meddelanden', 'meddelanden') -%}
{% if msgs and msgs | length > 0 -%}
{%- for msg in msgs %}
- {{ msg }}
{%- endfor %}
{%- else -%}
Inga meddelanden än.
{%- endif %}
Felsökning och integritet
- Kontrollera att noden och Home Assistant ansluter till samma broker.
- Kontrollera att MQTT är aktiverat, att Uplink och JSON är aktiverade på Meshtastic-kanalen och att
state_topicinnehåller rätt nod-ID. - Se till att noden har internetanslutning och att den faktiskt tar emot meddelanden på kanalen.
- Publik MQTT innebär att publicerade paket kan vara åtkomliga för andra. Skicka inte känslig information och kontrollera kanalens kryptering och MQTT-inställningar innan du delar trafik.
