Autostart Python-Script auf Raspi LXQT

15.01.2025 - Lesezeit: 2 Minuten

Literatur

Den Autostart Ordner anlegen, falls er nicht existiert. Danach eine Startdatei anlegen.

mkdir ~/.config/autostart
nano .config/autostart/wnfjukebox.desktop

Das Programm im Terminal starten, damit man eventuelle Fehlermeldungen sehen kann.

[Desktop Entry]
Type=Application
Name=wnfJukebox-Anzeige
Exec=xterm -hold -e '/home/bernd/bin/wnfjukenbox'

Das Programm arbeitet als Anzeige für MQTT. Da das Netzwerk beim Autostart noch nicht hochgefahren ist, muss auf das Netzwerk gewartet werden

from time import sleep
import paho.mqtt.client as mqtt

cMQTT_HOST = '192.168.80.107'
cMQTT_TOPIC = '/c2023/wnfPlay'

aMusikAnzeige = None

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe(cMQTT_TOPIC)

def on_message(client, userdata, msg):
    global aMusikAnzeige
    # print(client)
    # print(userdata)
    # aJetzt = datetime.datetime.now().strftime("%H:%M")
    # print(aJetzt + " " + msg.topic + " " + str(msg.payload))
    if aMusikAnzeige:
        aMusikAnzeige.anzeige(msg)

def starteAnzeige(aAnzeige):
    global aMusikAnzeige
    aMusikAnzeige = aAnzeige
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    # auf dem Raspi mit LXQT wird das Programm von Autostart gestartet
    # es kann sein, dass das Netzwerk noch nicht hochgefahren wurde.
    # Deshalb wir hier auf das Netzwerk gewartet.
    aConnected = False
    aAnz = 0
    while not aConnected and (aAnz < 10):
        try:
            client.connect(cMQTT_HOST, 1883, 60)
            aConnected = True
            client.loop_start()
        except Exception as E:
            print(E)
            sleep(5)
            aAnz += 1
Tags: LQXT Raspi Autostart