Shelly Plus Plug S - LED Farbe und Brightness wechslen über REST

Es wird besser, aber leider noch nicht richtig:

ok, dann folgendes:

msg.payload = 'config={"leds":{"mode":"switch","colors":{"switch:0":{"on":{"brightness":10},"off":{"brightness":100}}}}}';
return msg;

Okay, das war es für die “function”-node! :grinning:

Leider geht es jetzt mit der http-request-node weiter:

Natürlich teste ich mit der “richtigen” IP!
“GET” habe ich auch mit allen 3 Varianten (für Nutzdaten(payload)) durch, funktioniert auch nicht.

Oh man, so langsam bin ich mit meinem Latein auch am Ende :upside_down_face::see_no_evil: wenn du das am Browser machst, brauchst du davor mal die Anmeldedaten vom Shelly?

Nein, meine Shelly’s haben auch keinen Passwortschutz.
Ich kopiere das hier:

http://<Shelly-IP>/rpc/PLUGS_UI.SetConfig?config={"leds":{"mode":"switch","colors":{"switch:0":{"on":{"brightness":10},"off":{"brightness":100}}}}}

in die Adressleiste des Browsers und bekomme diese Rückmeldung:
image

Shelly vorher:
image
Shelly nachher:
image

Strange… Vielleicht mal noch sowas anlog dieser Lösung:
https://flows.nodered.org/flow/f0a1a4d30712a5e8b37a9287a8cdb3d4
Das würde die Seite direkt öffnen…

Du wirst es nicht glauben, aber es geht viiiiiiiiiel einfacher:


und in der http-request-Node steht der komplette Befehl unter URL drin:

Eine Besonderheit gilt es noch zu beachten, wenn man die HTTP-Request-Node in einen Flow einbindet und damit triggert:
Es darf kein payload mit Inhalt geschickt werden, auch bei einer Inject-Node vorher alle Ausgänge löschen. Im Flow habe ich mir damit beholfen, dass ich eine “trigger”-Node mit 1ms davor gesetzt habe, die als Nachricht boolean “true” sendet.

Trotzdem Danke für Deine Bemühungen!

2 „Gefällt mir“

:joy::joy::joy: Ok, dachte das hattest du schon probiert :see_no_evil::see_no_evil::see_no_evil: aber cool, dass es jetzt doch noch so easy geht :+1:

Hatte ich auch, aber mit dem “String” als Payload der “Inject”-node :woozy_face:
In der HTTP-Request-Node hatte ich URL nur die IP (hatte mich von diversen Suchergebnissen im www blenden lassen, die alle mit “Change”- und “function”-Nodes gearbeitet hatten. :face_with_diagonal_mouth:

Vielen herzlichen Dank an @harryp für die Lösung! Ich habe mich aufgrund deiner Beiträge dazu entschieden, Node Red als Addon zu HA zu installieren und konnte meine Problemstellung damit zufriedenstellend lösen.

Gruß

Werner

1 „Gefällt mir“

Gerne!
Du wirst bestimmt nach und nach alle Deine Automatisierungen von HA auf Node-Red umstellen. Wetten? :grinning:

1 „Gefällt mir“

Ich muss da noch viel lernen. Da der Node “events: state” keine Werte von - bis kennt, habe ich mir mit einem Helfer “Schwellenwert Sensor” beholfen, da ich ja nicht nur für min/max eine Farbe darstellen möchte, sondern auch für ein oder zwei Zwischenstufen. Man muss schon kreativ sein, um an eine Lösung zu kommen. Nicht immer wird einem alles am Silbertablett präsentiert. Ich mag das. :wink:

1 „Gefällt mir“

Du konntest auch hinter der “event-state”-node eine “switch”-node einbauen und darin die verschiedenen Zustände Deines “payload” abfragen und entsprechend Aktionen auslösen.

Bei mir funktioniert es so:

in der configuration.yaml:

rest_command:
  set_color:
    url: "{{ url }}"

ein Script erstellen mit folgendem Inhalt (unter Automatisationen → scripts und dann die drei Punkte als yaml bearbeiten)

Scriptname: change_shelly_color

description: Changes the color of the Shelly Plug
fields:
  ip:
    description: IP address of the Shelly Plug
    example: 192.168.11.73
    required: true
  red:
    description: Red value (0-255)
    example: 100
    required: true
  green:
    description: Green value (0-255)
    example: 100
    required: true
  blue:
    description: Blue value (0-255)
    example: 100
    required: true
sequence:
  - service: rest_command.set_color
    data:
      url: >
        {% set config = {
          "leds": {
            "mode": "switch",
            "colors": {
              "switch:0": {
                "on": {"rgb": [red, green, blue], "brightness": 100},
                "off": {"rgb": [red, green, blue], "brightness": 100}
              }
            },
            "power": {"brightness": 100}
          }
        } %} http://{{ ip }}/rpc/PLUGS_UI.SetConfig?config={{ config | tojson |
        urlencode }}

und dann den Dienst so aufrufen:

service: script.change_shelly_color
data:
  ip: '192.168.11.104'
  red: 100
  green: 1
  blue: 1

Die Farben gehen dabei nur von 0-100

Neustart nicht vergessen!

Viel Spaß damit :slight_smile:

PS.: Das Script habe ich mit Chat GPT4o erstellt - hat mir sehr viel geholfen - solltet ihr auch probieren