[erledigt:] Python3.7 - RPI0 Tastendruck per MQTT senden

Begonnen von JensS, 13 Januar 2021, 20:22:53

Vorheriges Thema - Nächstes Thema

JensS

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
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

rudolfkoenig

Nur damit ich es richtig einsortieren kann: hat das Problem _irgendetwas_ mit FHEM zu tun?

JensS

#2
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.
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.