Moin zusammen,
ich schaffe es nicht, den Switch-Status meines Pro 4 PM per MQTT abzufragen. Per HTTP (curl) klappt es, nur per MQTT nicht. Aber der Reihe nach.
Ich schalte Schalter 1 aus:
$ mosquitto_pub -h localhost -t "shellypro4pm-083af2xxxxxx/rpc" -m '{"id": 1, "src":"bashscript", "method": "Switch.Set", "params": {"id": 0, "on": false}}' -q 1
Auf einer zweiten Konsole lausche ich auf die Antwort:
$ mosquitto_sub -h localhost -v -t "shellypro4pm-083af2xxxxxx/#"
shellypro4pm-083af2xxxxxx/status/switch:0 {"id":0, "source":"MQTT", "output":false, "apower":0.0, "voltage":226.8, "current":0.000, "pf":0.00, "aenergy":{"total":15.924,"by_minute":[8.275,63.708,244.980],"minute_ts":1645355401},"temperature":{"tC":32.5, "tF":90.6}}
Das an Schalter 1 angeschlossene Licht geht aus und ich bekomme eine Antwort via MQTT. MQTT und die IP-Verbindung funktionieren also.
Nun will ich den Status abfragen:
$ mosquitto_pub -h localhost -t "shellypro4pm-083af2xxxxxx/rpc" -m '{"id": 1, "src":"bashscript", "method": "Switch.GetStatus", "params": {"id": 0}}' -q 1
Auf der zweiten Konsole lausche ich wieder auf die Antwort:
Da kommt aber nix. Ja, die regelmäßigen MQTT-Messages wegen Stromverbrauch/Temperatur etc. kommen einige Sekunden später, aber keine auf meine Anfrage bezogene Antwort. Versuche ich das Gleiche per HTTP (curl), klappt es aber:
$ curl -X POST -d '{"id": 1, "method": "Switch.GetStatus", "params": {"id": 0}}' http://10.xx.xx.xx/rpc
{"id":1,"src":"shellypro4pm-083af2xxxxxx","result":{"id":0, "source":"MQTT", "output":false, "apower":0.0, "voltage":228.5, "current":0.000, "pf":0.00, "aenergy":{"total":15.927,"by_minute":[0.000,0.000,0.000],"minute_ts":1645356237},"temperature":{"tC":27.3, "tF":81.1}}}
Hat jemand eine Idee, wo mein Fehler liegen könnte?
Der Shelly Pro 1 (ohne PM) verhält sich übrigens genauso!
Danke und Grüße,
Sven