Autor Thema: [erledigt:] Python3.7 - RPI0 Tastendruck per MQTT senden  (Gelesen 144 mal)

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 746
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
« Letzte Änderung: 14 Januar 2021, 18:58:31 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, 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.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23622
Antw:Python3.7 - RPI0 Tastendruck per MQTT senden
« Antwort #1 am: 13 Januar 2021, 20:43:04 »
Nur damit ich es richtig einsortieren kann: hat das Problem _irgendetwas_ mit FHEM zu tun?

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 746
Antw:Python3.7 - RPI0 Tastendruck per MQTT senden
« Antwort #2 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.
« Letzte Änderung: 14 Januar 2021, 18:59:12 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, 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.

 

decade-submarginal