iobroker-community-adapters / ioBroker.shelly

Integrate your Shelly devices into ioBroker via MQTT or CoIoT
Other
168 stars 68 forks source link

Feature request - Shelly Plus Plug S: make LED light steering available in iobroker #836

Open chris299 opened 1 year ago

chris299 commented 1 year ago

I'm sure that

Shelly device

Shelly Plus Plug S

Protocol (CoAP / MQTT)

MQTT

The problem

it would be great to steer the LED behaviour of Shelly Plus Plug S and especially the colour through iobroker states.

by URL it is simple, i.e.

http://192.168.33.1/rpc/PLUGS_UI.SetConfig?config={"leds":{"colors":{"switch:0":{"on":{"rgb":[100,100,50],"brightness":100}}}}}

see https://shelly-api-docs.shelly.cloud/gen2/Devices/ShellyPlusPlugS/#plugs_ui

Version of nodejs

16.20.1

Version of ioBroker js-controller

4.0.24

Version of Adapter

6.4.1

Operating system running ioBroker

Ubuntu

Checklist of files to include below

Additional information & file uploads

No response

github-actions[bot] commented 1 year ago

Thanks for reporting @chris299!

  1. Check if this topic is not covered in the documentation
  2. Ensure that you use the latest beta version: NPM version
  3. Attach all necessary log files in debug mode, screenshots and other information to reproduce this issue
  4. Search for the issue topic in other/closed issues to avoid duplicates!
BooosesThaSnipper commented 1 year ago

Ich schau mir das Thema mal an, wenn ich in zwei, drei Wochen auch einen habe.

klein0r commented 1 year ago
http://192.168.33.1/rpc/PLUGS_UI.SetConfig?config={"leds":{"colors":{"switch:0":{"on":{"rgb":[100,100,50],"brightness":100}}}}}

(natürlich besser per MQTT)

chris299 commented 1 year ago

@klein0r ich habe das bei mir nun per Blockly gebastelt, aber ein Datenpunkt für die Farben (jeweils für AN und AUS) wäre schon schick ;-) grafik

klein0r commented 1 year ago

@chris299 Ich kann das nicht blind implementieren, das hat in der Vergangenheit nur so mittelgut geklappt 😄 Habe keinen Plus Plug S zum testen

chris299 commented 1 year ago

@klein0r wenn es nur an der fehlenden Hardware liegt, sponsore ich gern einen. ;-) Wohin muss der denn?

BooosesThaSnipper commented 1 year ago
http://192.168.33.1/rpc/PLUGS_UI.SetConfig?config={"leds":{"colors":{"switch:0":{"on":{"rgb":[100,100,50],"brightness":100}}}}}

(natürlich besser per MQTT)

Per MQTT geht da auf den ersten Blick leider nichts. Sehe auf meinem Mosquitto Server keine Konfiguration oder Status Infos die per MQTT übertragen werden.

@klein0r wenn es nur an der fehlenden Hardware liegt, sponsore ich gern einen. ;-) Wohin muss der denn?

Mein Shelly Plus Plug S kam heute per Post, ich schau es mir die Tage mal an.

BooosesThaSnipper commented 1 year ago

@klein0r ich brauch mal deine Hilfe:

Das JSON hat mehrere ebenen so dass ich mich durch die Ebenen durchhangeln muss, soweit ja bei JSON kein Problem: http_publish_funct: value => value ? JSON.parse(value).leds.colors.power.brightness : undefined,

Damit kann ich Problemlos den Wert abfragen und taucht auch so im ioBroker auf. Problem ist nur, dass die eine Ebene "switch:0" heißt, wie kann ich den Doppelpunkt escapen, damit ich hier keinen Fehler bekomme?

der JSON Parse teil würde (mit Fehler) aktuell so aussehen: http_publish_funct: value => value ? JSON.parse(value).leds.colors.switch:0.on.rgb.brightness : undefined,

Könntest du mir hier kurz unter die Arme greifen?

klein0r commented 1 year ago
http_publish_funct: value => value ? JSON.parse(value).leds.colors['switch:0'].on.rgb.brightness : undefined,
BooosesThaSnipper commented 1 year ago

@klein0r vielen Dank, der Tipp hat geholfen.

Der Code um alle Werte auszulesen ist fertig und tut bereits, hab nur aktuell Probleme beim schreiben von Daten, da muss ich mir nochmals den Code anschauen um zu verstehen, wie http requests dann gesendet werden, um Daten per http anstelle von mqtt zu verändern. Irgendwie hab ich für Gen2 Geräte noch an keiner anderen Stelle gesehen, dass per http_cmd / http_cmd_funct Daten verändert werden.

klein0r commented 1 year ago

um Daten per http anstelle von mqtt zu verändern.

Wozu? Hier hatte ich mal etwas zusammengeschrieben vor einiger Zeit:

https://github.com/iobroker-community-adapters/ioBroker.shelly/blob/v6.4.5/docs/en/dev/dev.md

BooosesThaSnipper commented 1 year ago

@klein0r das hat auch wieeder geholfen, so langsam komme ich in den Code rein und das Verändert der Parameter aus dem ioBroker heraus klappt auch. Nun hänge ich beim gleichen Problem wie oben wieder mit dem Escapen vom switch:0, dieses mal jedoch bei der mqtt_cmd_funct.

Hier klappt das ohne Probleme: method: 'PLUGS_UI.SetConfig', params: { config: { leds:{colors:{power:{brightness:value} } } } },

Hier hänge ich jedoch gerade: method: 'PLUGS_UI.SetConfig', params: { config: { leds:{colors:{power:{switch:0:{off:{brightness:value} } } } } } },

Habe bereits einfache Hochkomma und Doppelte Hochkomma getestet und versucht den Doppelpunkt mittels Urlencoding (%3A) zu ersetzen, aber leider startet der Adapter dann nur noch, wenn ich es irgendwie in einfache Hochkommas packe. Dann kann er jedoch den Wert nicht verändern.

Kannst du mir hier nochmals helfen?

BooosesThaSnipper commented 1 year ago

kurzes Update zum Status, alle Werte bis auf die RGB Werte können bei mir auf meiner Entwicklungsumgebung bereits gelesen und geschrieben werden. Bei den RGB Werten hänge ich aktuell, werd die nächste Woche jedoch keine Zeit finden, hier weiter zu machen. Bin jedoch noch dran.

tcfigge commented 2 weeks ago

Hallo,

gibt es da schon Neuigkeiten, oder übersehe ich das im Adapter? Danke!