Home Assistant status via Telegram – Versie 1.1

Status: Dit is de laatste versie van deze automatisering.

Beschrijving

Automatisering om eenvoudig de status van jouw Home Assistant op te kunnen vragen via Telegram. Dit kan bijvoorbeeld handig zijn wanneer je geen verbinding hebt, bijvoorbeeld omdat je buitenshuis bent en geen Nabu Casa-account of VPN-verbinding hebt. Met één commando in Telegram krijg je een status-bericht terug met o.a. schijfgebruik, geheugen, etc.

Update

Verbeterde versie van versie 1.0, waarbij de layout van het status-bericht is aangepast en iconen zijn toegepast om er een overzichtelijker geheel van te maken.

Telegram-integratie

Voor diverse type notificaties maak ik al langere tijd gebruik van de Telegram-integratie van Home Assistant. Naast het ontvangen van notificaties, biedt deze je namelijk ook de mogelijkheid om interacties te doen met Home Assistant. Mocht je deze dus nog niet geïnstalleerd hebben, dan heb je deze in ieder geval nodig.

Scenario

Het commando /status in de Telegram-chat met Home Assistant geeft een status-bericht terug dat er alsvolgt uitziet;

Opbouw

In principe zijn alle beschikbare entiteiten binnen Home Assistant mogelijk om te gebruiken in het status-bericht. Zo maak ik bijvoorbeeld de Bestandsgrootte integratie om de grootte van de database inzichtelijk te krijgen. De systemmonitor integratie gebruik ik voor het inzicht in temperaturen, geheugen, CPU, etc. Met andere woorden, wat je inzichtelijk wilt maken is afhankelijk van wat je aan integraties beschikbaar hebt.

Automatisering: Telegram status message

Er is één automatisering nodig voor deze oplossing, welke wordt getriggerd met het commando /status in de Telegram chat.

Ga hiervoor naar Instellingen > Automatiseringen & scenes > Automatisering toevoegen (knop rechts, onderin). Kies voor Automatisering toevoegen.

  • Klik op de 3 puntjes rechtsbovenin en kies voor Bewerken als YAML. Vervang vervolgens alle YAML-code die je te zien krijgt met deze code;
trigger:
  - platform: event
    event_type: telegram_command
    event_data:
      command: /status
condition: []
action:
  - service: notify.telegram
    data:
      message: >-
        🔥 {{ states.sensor["processor_use_percent"].state | int }}% CPU load.

        🌡️ {{ states.sensor["processor_temperature"].state | int }}°C CPU, {{
        states.sensor["systeem_temperatuur"].state | int }}°C Systeem.

        🧠 {{ states.sensor["memory_use"].state }}MB ({{
        states.sensor["memory_use_percent"].state | int }}%) gebruikt, {{
        states.sensor["memory_free"].state }}MB ({{
        100-(states.sensor["memory_use_percent"].state | int) }}%) vrij.

        💽 {{ states.sensor["disk_use"].state }}GB ({{
        states.sensor["disk_use_percent_config"].state | int }}%) gebruikt, {{
        states.sensor["disk_free"].state }}GB ({{
        100-(states.sensor["disk_use_percent_config"].state | int) }}%) vrij.

        🛢️ {{ states.sensor["home_assistant_v2_db_size"].state }}MB database.

        🌐 {{ states.sensor["speedtest_download"].state }}Mbit/s down, {{
        states.sensor["speedtest_upload"].state }}Mbit/s up, {{
        states.sensor["speedtest_ping"].state }}ms @ {{
        as_timestamp(states.sensor.speedtest_download.last_changed) |
        timestamp_custom('%a %d-%m-%Y %H:%M') }} uur.

        🚀 {{ as_timestamp(states.sensor["last_boot"].state) |
        timestamp_custom('%a %d-%m-%Y %H:%M') }} uur laatste boot.

        💾 {{ as_timestamp(states.sensor["laatste_samba_backup"].state) |
        timestamp_custom('%a %d-%m-%Y %H:%M') }} uur laatste backup.
mode: single

Vanaf het gedeelte message :>- zie je dus stap voor stap de informatie van de verschillende entiteiten opgesomd worden. Door steeds een open regel te laten tussen de informatieblokken, wordt de informatie netjes onder elkaar gezet in het Telegram-bericht, in plaats van dat alles achter elkaar komt te staan.

Tot slot

Afhankelijk van de entiteit en het type waarde dat deze bevat, is het soms prettig om wat te spelen met het format. Bijvoorbeeld datum-tijd velden bevatten flink wat informatie die de leesbaarheid niet altijd ten goede komt. Daarvoor gebruik ik dus bijvoorbeeld timestamp_custom(‘%a %d-%m-%Y %H:%M’) om tot een leesbare output te komen. Hetzelfde geldt bijvoorbeeld voor getallen, daarvoor kan het handig zijn om die om te zetten naar een INT om op hele getallen zonder talloze getallen achter de komma uit te komen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.