Eigene Python Skripte in Home Assistant ausführen

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!

Python Scripte in Home Assistant ausführen
HACS: Python Scripts Pro for Home Assistant

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:

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

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
( 424 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

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! 😉

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um Home Assistant.

Schreibe einen Kommentar