Home Assistant status via Telegram – Versie 1.0

Status: Verouderd, versie 1.1 is beschikbaar.

Introductie

Naar aanleiding van de automatisering om Home Assistant te restarten via Telegram, kwam automatisch de behoefte aan het eenvoudig kunnen opvragen van de status van het systeem waarop Home Assistant draait. Is het systeem heel druk (hoog CPU en/of geheugen gebruik)? Wanneer was de laatste boot van het systeem. Dat soort vragen.

Naar aanleiding daarvan begon ik met het experimenteren met welke informatie allemaal eenvoudig in een notificatie opgenomen zou kunnen worden. En het opvragen van deze informatie n.a.v. een Telegram-commando is dan uiteraard niet zo gek ingewikkeld meer.

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

Wat ik wilde bereiken was via een eenvoudig commando in Telegram een uitgebreid status overzicht van het Home Assistant systeem. Het commando dat ik uiteindelijk ben gaan gebruik is /status (je moet het ook niet moeilijker maken dan nodig). Qua interactie ziet dat er alsvolgt uit;

Telegram overzicht bij het commando /status en het uitgebreide antwoord wat Home Assistant hierop teruggeeft.

Opbouw

In de basis maak ik gebruik van een hoop entiteiten binnen Home Assistant die ik sowieso al beschikbaar heb gemaakt. Ik gebruik bijvoorbeeld de Bestandsgrootte integratie om de grootte van de database inzichtelijk te krijgen. De systemmonitor integratie gebruik ik bijvoorbeeld 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, en je eigen creativiteit in wat je wilt gebruiken.

Automatisering: Telegram status message

Met één automatisering heb ik uiteindelijk deze oplossing gemaakt. Deze wordt getriggerd door het commando /status in de Telegram chat.

Yaml code:

alias: Telegram status message
description: ""
trigger:
  - platform: event
    event_type: telegram_command
    event_data:
      command: /status
condition: []
action:
  - service: notify.telegram
    data:
      message: >-
        CPU-gebruik: {{ states.sensor["processor_use_percent"].state | int }}%,
        CPU-temp: {{ states.sensor["cpu_temperatuur"].state | int }}°C,
        Systeem-temp: {{ states.sensor["systeem_temperatuur"].state | int }}°C,
        Geheugen-gebruik: {{ states.sensor["memory_use"].state }}MB ({{
        states.sensor["memory_use_percent"].state | int }}%), Geheugen-vrij: {{
        states.sensor["memory_free"].state }}MB ({{
        100-(states.sensor["memory_use_percent"].state | int) }}%),
        Disk-gebruik: {{ states.sensor["disk_use"].state }}GB ({{
        states.sensor["disk_use_percent_config"].state | int }}%), Disk-vrij: {{
        states.sensor["disk_free"].state }}GB ({{
        100-(states.sensor["disk_use_percent_config"].state | int) }}%),
        Database: {{     states.sensor["home_assistant_v2_db_size"].state }}MB,
        Speedtest: {{ states.sensor["fast_com_download"].state }}Mbit/s @ {{
        as_timestamp(states.sensor.fast_com_download.last_changed) |
        timestamp_custom('%a %d-%m-%Y %H:%M') }} uur, Laatste boot: {{
        as_timestamp(states.sensor["last_boot"].state) | timestamp_custom('%a
        %d-%m-%Y %H:%M') }} uur, Laatste backup: {{
        as_timestamp(states.sensor["laatste_samba_backup"].state) |
        timestamp_custom('%a %d-%m-%Y %H:%M') }} uur.
    enabled: true
mode: single

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

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