Python in HomeAssistant einbinden

Hallo HomeAssistant-Community,

vor Kurzem habe ich HomeAssistant installiert und mir überlegt, welche sinnvollen Spielereien ich damit anstellen könnte. Ich betreibe einen Discord-Server, auf dem ich mich gelegentlich mit Kollegen treffe. Da mein PC nicht immer eingeschaltet ist, bekomme ich nicht immer mit, wenn jemand einem Sprachkanal beitritt. Aus diesem Grund habe ich einen Discord-Bot in Python programmiert und über das Terminal in HA ausgeführt. Der Bot ruft dann einen Webhook auf, der eine Automatisierung auslöst, wodurch ein Lämpchen in meinem Zimmer eingeschaltet wird. (Falls jemand Interesse an dem Python-Skript hat, kann er oder sie sich gerne bei mir melden.)

Das Problem ist jedoch, dass ich jedes Mal, wenn ich das System neu starte, die Bibliotheken (discord und requests) erneut installieren und das Programm starten muss. Außerdem kann ich während das Python-Skript läuft, das Terminal nicht für andere Zwecke nutzen.

Gibt es einen besseren Weg, um das zu lösen? Ich habe über AppDeamon gelesen und versucht, es einzubinden, aber es hat nicht funktioniert. Bin ich mit AppDeamon auf dem richtigen Weg oder hat jemand eine bessere Idee?

Gruß Jakob

1 „Gefällt mir“

Hallo,
da wohl niemand eine Idee hatte, habe ich viel ausprobiert und habe es letztendlich hinbekommen, dass alles läuft, wie ich es mir vorgestellt habe. Keine Ahnung, ob man das so machen sollte, aber ich habe das Programm mit einem Shell-Command im Hintergrund ausgeführt. Das sieht dann in der configuration.yaml Datei folgendermaßen aus:

shell_command:
start_jakobs_bot: ‘python3 /config/python_scripts/Name_des_Programms.py > /config/python_scripts/Name_des_Programms.log 2>&1 &’

Damit das Programm automatisch beim Start des HomeAssistants ausgeführt wird habe ich noch folgende Automatisierung hinzugefügt:

alias: automatischer Programmstart beim einschalten des HomeAssistants
description: “”
trigger:

  • platform: homeassistant
    event: start
    condition: []
    action:
  • service: shell_command.start_jakobs_bot
    data: {}
    mode: single

Dann habe ich das Python-Programm in den Ordner “python_scripts” gelegt. Das Programm löst einen der beiden Webhooks aus, abhängig davon, ob jemand im Sprachkanal des Discord-Servers ist oder nicht. Dies wird in meinem Fall alle 30 Sekunden überprüft und nur bei Änderungen wird der andere Webhook ausgelöst. Hier ist das Python-Programm:

mein_discord_bot.txt (1,2 KB)

Die Webhooks wiederum lösen dann Automatisierungen in HomeAssistant aus.

Ich hoffe, dass diese Lösung auch anderen helfen kann. Wenn jemand eine bessere Lösung hat, zum Beispiel mit AppDaemon oder Pyscript, würde ich mich über Vorschläge freuen.

Viele Grüße
Jakob

1 „Gefällt mir“

Kann ich so auch lokale Module verwenden? Sieht nach einer interessanten Lösung aus!

Ich bin ein ziemlicher rookie was Programmieren und Python angeht. Meinst du mit lokalen Modulen selbst erstellte?

Ja genau. Also Module die nicht auf pypi veröffentlicht sind sodass man sie mit pip installieren kann.