FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: JensS am 13 Januar 2021, 20:22:53

Titel: [erledigt:] Python3.7 - RPI0 Tastendruck per MQTT senden
Beitrag von: JensS am 13 Januar 2021, 20:22:53
Ich weiß nicht ob das hier das richtige Unterforum ist aber ich versuche es mal...
Zur Sprachsteuerung nutze ich Rhasspy über MQTT. Das läuft gut und so habe ich meinem Respeaker-Hat einen Python-Dienst geschrieben, welcher eine LED durch Topics steuert.#!/usr/bin/env python
from apa102_pi.driver import apa102
import paho.mqtt.client as mqtt
strip = apa102.APA102(num_led=4)
strip.clear_strip()

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


    client.subscribe("hermes/dialogueManager/sessionEnded/#")
    client.subscribe("hermes/hotword/toggleOff/#")

def on_message(client, userdata, msg):
    if msg.topic == "hermes/hotword/toggleOff" and "dialogueSession" in str(msg.payload) and '"siteId": "Schlafzimmer"' in str(msg.payload):
      strip.set_pixel(1,0,255,0,7)
      strip.show()
    elif msg.topic == "hermes/dialogueManager/sessionEnded" and '"siteId": "Schlafzimmer"' in str(msg.payload):
      strip.set_pixel(1,0,255,0,0)
      strip.show()
    else:
      strip.set_pixel(1,0,0,255,7)
      strip.show()

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("192.168.100.1", 1883, 60)

client.loop_forever()
Das funktioniert.
Nun möchte ich den vorhandenen Button nutzen, um diese Funktion aus- bzw. anzuschalten. Aber was ich auch mache, ich bekomme die Auswertung des Tasters in keine Schleife. Das Beispielscript von Seeedstudio läuft.import RPi.GPIO as GPIO
import time

BUTTON = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON, GPIO.IN)

while True:
    state = GPIO.input(BUTTON)
    if state:
        print("off")
    else:
        print("on")
    time.sleep(1)
Ich denke, client.loop_forever() scheint in sich zu laufen und in meinem Sript ist gar keine Schleife möglich - oder doch?
Gruß Jens
Titel: Antw:Python3.7 - RPI0 Tastendruck per MQTT senden
Beitrag von: rudolfkoenig am 13 Januar 2021, 20:43:04
Nur damit ich es richtig einsortieren kann: hat das Problem _irgendetwas_ mit FHEM zu tun?
Titel: Antw:Python3.7 - RPI0 Tastendruck per MQTT senden
Beitrag von: JensS am 13 Januar 2021, 21:24:22
Ja, im weitesten Sinn mit 10_RHASSPY.pm, welches FHEM per Spracheingabe steuert. Die optische Bestätigung am Satelliten erhöht den WAF, ist aber (gerade im Schlafzimmer) nicht immer gewünscht.

p.s. client.loop_start() war die Lösung.