Hallo zusammen!
Ich möchte mittels Tante Alexa mein HTPC-System steuern, d.h. Umschalten zwischen Firestick, Raspi und TV/HTPC. Das System ein-/ausschalten und einiges mehr.
Habe dieses seid einiger Zeit unter Nutzung des FAUXMO als Schnittstelle zwischen Alexa und Raspberry realisiert. Leider ist dieses nicht stabil, Antworten dauern z.T. zu lange und erzeugen eine Alexa Rückmeldung oder die Geräte werden nicht mehr erkannt.
Als Alternative habe ich Versuche mit einem NodeMCU gemacht, auf dem Tasmota läuft. Dieser nimmt mittels HueBridge zuverlässig die Sprachbefehle an.
MQTT ist installiert und auch kann ich hier per Python die Schalter setzten:
client.publish("cmnd/sonoff/Power1","0") => funktioniert. LED geht aus.
So weit habe ich es realisieren können. Im wesentlichen brauche ich aber eine Rückmeldung/Abfrage des Status von Power1 in Python und die Zuordnung zu einer Variable. Hier scheitere ich kläglich trotz intensiver suche.
Weiß jemand Rat?
Gruß
Coramon
Komplett (nur ein erstes Testscript, kommt aus dem Netz mit Anpassungen:
import paho.mqtt.client as mqtt, time, sys
# main
def on_connect(client, userdata, flags, rc):
print("Connected")
client.is_connected = True
def on_message(client, userdata, message):
''' note: message is a tuple of (topic, payload, qos, retain)'''
global last_topic, last_payload
last_topic = message.topic
last_payload = message.payload
print("Got a message with topic: [" + last_topic + "] and payload [" + last_payload + "]")
client = mqtt.Client()
# if you need a username and/or password for mqtt uncomment next line
# client.username_pw_set("myusr", password="mypwd")
client.on_connect = on_connect
client.on_message = on_message
client.is_connected = False
client.loop_start()
client.connect('192.168.178.42') # replace "control_central" with ip address or name of server
time.sleep(1)
if not client.is_connected:
print("problem connecting to the MQTT server; please check your settings")
sys.exit(1)
# edit subscribe and publish lines and use yours like "stat/tasmota/POWER"
print ("a")
#####
# Der Befehl funktioniert und setzt den Pin
#####
client.publish("cmnd/sonoff/Power1","0")
#####
# Die Abfrage und Zuordnung zur Veriable c geht nicht....
#####
c=client.subscribe("state/sonoff/Power1")
print(c)
# wait a little bit
time.sleep(1)
client.publish("cmnd/sonoff/Power1","1")
client.disconnect()
Display More