Wie kann man eigene Python Skripte in Home Assistant ausführen? Da Home Assistant selbst zum Großteil in Python geschrieben ist und 24/7 läuft, liegt es nahe, den Home Assistant auch für andere, über das Smart Home hinaus gehende Python Skripte zu nutzen. Cronjobs kann man bequem mit Automations nachbauen und schon hat man einen Mini-PC der für einen vollkommen automatisch die eigenen Tools und Skripte in Python ausführt!
Um eigene Python Skripte tatsächlich „auf“ Home Assistant ausführen zu können, muss man jedoch zu einem kleinen Hilfsmittel greifen. Ich nutze hierfür die über HACS verfügbare Custom Component Python Scripts Pro for Home Assistant. Wie die Installation und Einrichtung erfolgt, ist im Repository der Custom Component sehr gut beschrieben!
Nach der Installation dieser Custom Component muss man in der configuration.yaml die gewünschten/benötigten Packages/Libraries angeben. Diese werden dann von Home Assistant beim nächsten Neustart automatisch nachgeladen/installiert (sollte man hier sehr viele und umfangreiche Packages angeben, kann der Boot etwas länger dauern – bitte nicht in Panik geraten!).
Ein wenig mehr Erklärung hierzu findest du in meinem passenden Video zu dem Beitrag:
Bei mir sehen die Requirements beispielsweise wie folgt aus:
Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:
Follow Home Assistant
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!
python_script: requirements: - instagrapi - datetime - mysql.connector
Die Packages Datetime, MYSQL und Instagrapi sind also nach einem Neustart von Home Assistant installiert und können somit in meinen Python-Skripten genutzt werden.
Ein Python-Skript kann dann an einem beliebigen Ort abgelegt werden, da beim Aufruf der gesamte Pfad zum Python-Skript angegeben wird. Ich habe der Ordnung halber im root einen Unterordner „python_scripts“ angelegt, in dem dann meine Python-Skripte liegen.
Ein Beispielskript könnte sein:
import requests import mysql.connector from datetime import datetime from datetime import date now = datetime.now() r = requests.get('https://some.domain/json/data.json') resp = r.json() mydb = mysql.connector.connect( host="some.host", user="my_secret_user", password="the_secret_password", database="some_database" ) mycursor = mydb.cursor() sql = "INSERT INTO netzfrequenzen (value, timestamp) VALUES (%s, %s)" val = (resp, now.strftime('%Y-%m-%d %H:%M:%S')) mycursor.execute(sql, val) mydb.commit()
Dieses Python Skript ruft eine JSON-Datei auf einem externen Server auf und speichert den Inhalt dann in einer MYSQL-Datenbank. Keine Raketenwissenschaft, aber in meinen Augen über ein Python-Skript auf Home Assistant relativ schlank gelöst.
In einer Automation habe ich dann folgenden Code:
- alias: 'Get Netzfrequenz' trigger: - platform: time_pattern minutes: "/5" action: - service: python_script.exec data: file: python_scripts/my_python_script.py cache: false
Alle 5 Minuten führe ich mein Python Skript aus, so dass alle 5 Minuten in meiner externen Datenbank die aus dem JSON ermittelten Daten gespeichert werden.
Was konkret dieses Beispielskript macht, spielt für diesen Beitrag keine Rolle. Aber sinngemäß habe ich mit meiner Installation von Home Assistant einen Cronjob aufgesetzt, der alle 5 Minuten per Python-Skript Daten von einer anderen Webseite ausliest und diese in meiner externen Datenbank speichert. Rund um die Uhr!
Je nach Python Skript kann das Ausführen des Skriptes natürlich dein Home Assistant ausbremsen (wer beispielsweise eine komplette Webseite mit sehr vielen Inhalten scrapen möchte, sollte dies nicht über sein Home Assistant machen!), aber kleinere Tools oder Skripte verkraftet Home Assistant (oder konkret ein Raspberry Pi 4) ohne Probleme! 😉
Produktempfehlungen