Seite 2 von 3

Re: Shelly Pro Dimmer 2PM

Verfasst: 1. Jan 2025 15:45
von runa
Hallo Udo1Toni,

ich hab die beiden genannten Bindings noch Installiert und dann ein MQTT Thing mit deinem Code erzeugt. Die UID konnt ich nicht übernehmen weil die laut OH nicht veränderbar ist aber ich glaube dass ist nicht rlevant. Hab von allen Einstellungen Scrennshots gemacht.

Das erzeugte Thing geht auf online ( "grün") was schon mal mehr ist als wenn ich den Dimmer über das Shelly Beta Binding installieren will.

Hab dann die beiden Channels im Model angelegt und die Slider sehen auch so aus wie bei allen anderen mir bekannten Shellies. Leider haben Sie keine Verbindung zum ShellyProDimmer2 obwohl der online zu sein scheint. D.H. Ich sehe keine OH Änderungren im MQTT Explorer und auch nicht in der Shelly Oberfläche under der IP Adresse des ShellyProDimmer2. Die IP Adresse seint auch nicht relevant hierfür zu sein oder ? ( sonst wäre er nicht online ).

Irgend was stimmt wohl noch nicht an den beiden Channel configs. Vielleicht hast Du noch eine weitere Idee. Vorab schon mal vielen Dank

Re: Shelly Pro Dimmer 2PM

Verfasst: 1. Jan 2025 21:45
von udo1toni
Die Screenshots sind nicht hilfreich :) wichtiger wäre ein echtes JSON vom Status (das kannst Du direkt im MQTT Explorer in die Zwischenablage übernehmen und hier als Code markiert einfügen) Es kann gut sein, dass Shelly ein ganz bestimmtes Format für das JSON zum steuern erwartet.
Probiere es mal so:

Code: Alles auswählen

UID: mqtt:topic:mosquitto:shellyprodm2pm_1
label: Shelly pro Dimmer 2 pm 1
thingTypeUID: mqtt:topic
configuration:
  payloadNotAvailable: "false"
  availabilityTopic: shellyprodm2pm-fce8c0d8c2ac/online
  payloadAvailable: "true"
bridgeUID: mqtt:broker:mosquitto
channels:
  - id: ch1
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 1
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":0,"brightness":%d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/command/light:0
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:0
      transformationPattern:
        - REGEX:(.*brightness.*)∩JSONPATH:$.brightness
  - id: ch2
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 2
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":1,"brightness":%d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/command/light:1
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:1
      transformationPattern:
        - REGEX:(.*brightness.*)∩JSONPATH:$.brightness
also formatBeforePublish einfach noch mit der id ergänzt (auch wenn die ohnehin schon über das Topic festgelegt ist... sei's drum, in der Doku steht, es sei erforderlich... hatte ich nicht mehr auf dem Schirm...)

Die UID musst Du nicht anpassen, die ist tatsächlich nur beim Anlegen des Things wählbar. Einer der Gründe, warum ich die reine Textkonfiguration vorziehe...

Re: Shelly Pro Dimmer 2PM

Verfasst: 2. Jan 2025 15:10
von runa
Hallo Udo1Toni,

die zweite Version bringt schon mal Meldungen im MQTT Explorer unterhalb des Prodimmer2 aber leider schaltet der Dimmer noch nicht und eine Veränderung der Helligkeit wird auch in keine Richtung übertragen , werder von OH zum Shelly noch vom Shelly zu OH.

Code: Alles auswählen

{"id":0,"source":"WS_in","output":false,"brightness":80,"temperature":{"tC":20.7, "tF":69.2},"aenergy":{"total":39.403,"by_minute":[0.000,0.000,0.000],"minute_ts":1735826160},"apower":0.0,"current":0.000,"voltage":234.7}
hier der Vollständigkeit auch der Status Code vonid:1. Hier hängt aber keine Lampe dran und dieser Dimmer ist auch nicht kalibriert.

Code: Alles auswählen

{"id":1,"source":"calibration","output":false,"brightness":100,"temperature":{"tC":24.4, "tF":75.9},"errors": ["cal_abort:no_load"],"aenergy":{"total":0.204,"by_minute":[0.000,0.000,0.000],"minute_ts":1735827060},"apower":0.0,"current":0.000,"voltage":233.1,"flags":["uncalibrated"]}
Ich hab dennoch für beide Channels je einen Dimmer ( slider ) und einen Schalter ( switch ) angelegt aber nur die Veränderungen des Dimmers tauchen nun im MQTT Explorer unter Command auf. Das ist neu mit deiner 2. Version. In der Statuszeile des Shellyprodimmers wird die brightness aber nur verändert wenn ich sie über die Weboberfläche des Shellyprodimmers anpasse, zumindest beim Channel1 ( channel 2 ja nicht kalibriert, hier auch keine Dimmfunktion vorhanden.

Re: Shelly Pro Dimmer 2PM

Verfasst: 2. Jan 2025 22:06
von udo1toni
Bist Du sicher, dass Du die Steuerung per mqtt aktiviert hast? Es gibt da ein Bit enable_control in der mqtt Konfiguration.
Mindestens ankommend muss das außerdem funktionieren (nur mit dem Dimmer Item. Bitte kein Switch Item verlinken!)
Ansonsten müsstest Du einen Schritt zurück machen (Channel json1 und json2):

Code: Alles auswählen

UID: mqtt:topic:mosquitto:shellyprodm2pm_1
label: Shelly pro Dimmer 2 pm 1
thingTypeUID: mqtt:topic
configuration:
  payloadNotAvailable: "false"
  availabilityTopic: shellyprodm2pm-fce8c0d8c2ac/online
  payloadAvailable: "true"
bridgeUID: mqtt:broker:mosquitto
channels:
  - id: json1
    channelTypeUID: mqtt:string
    label: JSON Status CH1
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: "%s"
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:0
  - id: json2
    channelTypeUID: mqtt:string
    label: JSON Status CH2
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: "%s"
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:1
  - id: ch1
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 1
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":0,"brightness":%d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/command/light:0/set
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:0
      transformationPattern:
        - REGEX:(.*brightness.*)∩JSONPATH:$.brightness
  - id: ch2
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 2
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":1,"brightness":%d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/command/light:1/set
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:1
      transformationPattern:
        - REGEX:(.*brightness.*)∩JSONPATH:$.brightness
und zunächst schauen, ob die Payload in openHAB ankommt.
Im Beispiel habe ich noch bei den commandTopics hinten ein /set ergänzt, keine Ahnung, ob es das braucht (früher gab es das auch mal bei shelly...)
Ich habe dieses Thing bei mir gegen den mqtt Broker laufen lassen und bekomme die passenden Meldungen abgehend sowie die korrekte Reaktion ankommend.
Ich hasse die Shelly API...
Der Pro 2 PM Dimmer kann leider auch nicht mit einer alternativen Firmware betrieben werden, oder zumindest nicht mit Tasmota

Re: Shelly Pro Dimmer 2PM

Verfasst: 8. Jan 2025 09:11
von runa
Hallo Udi1toni,

ich war ein paar Tage offline und hab gestern deine dritte Version aufgespielt. Unter Channels tauchen jetzt 4 Möglichkeiten auf, JSON Status Ch1, Ch2 und Dimmer Channel 1 und 2. Die Dimmer binde ich als Item ganz normal als Slider ein oder muss ich irgend etwas abweichend vom Standard beachten ?

Was mache ich mit den neuen Möglichkeiten JSON Status 1 und 2 ? Wie binde ich diese ein ?

Bezüglich der MQTT Config bin ich mir nicht sicher wenn Du ohne Shelly mehr Reaktionen im MQTT Explorer bekommst als ich.

Anbei die Config des Shellies. Ich denke aber nachdem alle Statusänderungen des Shellies auch im MQTT Explorer angezeigt werden ist der Shelly Dimmer Pro wohl bezüglich MQTT richtig eingerichtet.

Ich betreibe meinen Mosquitto über Docker auf einer Synology mit Standard IP und #.61 und Standard Port 1883. Im OH wird der MQTT Broker unter Things online angezeigt. Deinen Code binde ich als Thing Über MQTT Binding - Generic MQTT ein und wähle dann als Bridge meinen MQTT Explorer. Alle drei Versionen von Dir werden nach beschriebener Thing Installation online angwezeigt. Was kann ich denn im Bezug auf richtige MQTT Configuration im OH bzw. im Shelly prüfen.

Konnte bisher aus Zeitgründen nur das Thing einrichten. Items der 3. Version habe ich noch nicht getestet. Kannst Du mir schicken was bei Dir im MQTT Explorer auftaucht wenn du im OH den Slider betätigst.

Freu mich dass Du mit soviel Energie und Expertise an meinem Problem arbeitest.

Grüße Runa

Re: Shelly Pro Dimmer 2PM

Verfasst: 8. Jan 2025 17:14
von udo1toni
Die beiden Channel json1 und json2 sind String Channel, entsprechend musst Du sie jeweils mit einem String Item verkoppeln. Es geht hier lediglich darum, die ungefilterte Payload in openHAB zu Gesicht zu bekommen, für die Funktion selbst sind sie unerheblich.

Auch wenn es nervt.... :) Bist Du sicher, dass sowohl REGEX als auch JSONPATH installiert sind? Es kam bei anderen Anwendern auch schon mal vor, dass einzelne Addons plötzlich nicht mehr installiert waren...

Hast Du das Thing mal komplett neu angelegt (d.h. unbedingt mit einer neuen UID)?

Re: Shelly Pro Dimmer 2PM

Verfasst: 8. Jan 2025 19:25
von runa
Hallo Udo1toni,

Regex Transformation und Jsonpath Transformation sind installiert

hab jetzt alle 4 Channels installiert. Die beiden String Channel reagieren sofort auf Schaltänderungen des shelly uns zeigen output true/false sowie die gewählte brightness an. ( auch alle übrigen Parameter wie Temp etc. scheinen online zu sein )

Code: Alles auswählen

"timer","output":false,"brightness":65,"temperature":{"tC":20.8, "tF":69.4},"aenergy":{"total":124.687,"by_minute":[0.000,0.000,0.000],"minute_ts":1736360640},"apower":0.0,"current":0.000,"voltage":232.2}
Die Reaktionszeit ist auch nahezu in echtzeit.

Die beiden Dimmerchannel 1 und 2 zeigen weiterhin keine Verbindung, weder zum String Channel noch zum Shelly selbst. Ist auch weiterhin in beide Richtungen keine Verbindung da.

Hier der Code des Channel 1. Profil ist Standard sollte auch so sein oder ?

Code: Alles auswählen

label: Dimmer Channel 1
type: Dimmer
category: ""
groupNames:
  - Shelly_pro_Dimmer_2_pm_1_Version_3
tags:
  - Point
was unterscheidet das Sting Item vom Slider Item ?

Grüße Runa

Re: Shelly Pro Dimmer 2PM

Verfasst: 8. Jan 2025 22:19
von udo1toni
Es gibt kein Slider Item, nur ein Dimmer Item. Das DImmer Item hält als Status ein PercentType (0 % - 100 %) und kennt die Befehle ON, OFF, INCREASE, DECREASE sowie 0 % - 100 %
Das String Item hält als Status einen beliebigen String und kennt als Befehl ebenfalls einen beliebigen String.

Slider ist der Widget Typ, den kann man mit einem Dimmer Item verbinden, um eben einen Schiebesteller zu erhalten, der von 0 % bis 100 % die Helligkeit steuern kann.

Hast Du das Thing komplett gelöscht und neu erstellt (mit anderer UID)? Das wäre die nächste Möglichkeit, um diesen Fehler wegzubekommen, wie erwähnt funktioniert die Konfiguration bei mir (ohne echten Shelly, jedoch gegen den MQTT Broker mit dem korrekten JSON) tadellos.

Re: Shelly Pro Dimmer 2PM

Verfasst: 9. Jan 2025 10:34
von runa
Hallo Udo1Toni,

ich hab alle " alten" Thing Versionen gelöscht, im MNodell alles entfernt und alle Items gelöscht. Anschließend nur deine letzte Version ( Version 3 )mit den String Channels nochmalals generic MQTT Thing mit neuer UID installiert

Code: Alles auswählen

UID: mqtt:topic:98afa0ba00
label: Shelly pro Dimmer 2 pm 1 Version 3
thingTypeUID: mqtt:topic
configuration:
  payloadNotAvailable: "false"
  availabilityTopic: shellyprodm2pm-fce8c0d8c2ac/online
  payloadAvailable: "true"
bridgeUID: mqtt:broker:synologyMQTTmosquitobroker
channels:
  - id: json1
    channelTypeUID: mqtt:string
    label: JSON Status CH1
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: "%s"
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:0
  - id: json2
    channelTypeUID: mqtt:string
    label: JSON Status CH2
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: "%s"
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:1
  - id: ch1
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 1
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":0,"brightness":%d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/command/light:0/set
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:0
      transformationPattern: "[REGEX:(.*brightness.*)∩JSONPATH:$.brightness]"
  - id: ch2
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 2
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":1,"brightness":%d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/command/light:1/set
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:1
      transformationPattern: "[REGEX:(.*brightness.*)∩JSONPATH:$.brightness]"
es gibt weiterhin keine Verbindung zu On/OFF bwz zu brightness.

Hab mal im shelly forum etwas gesucht und da scheint ein anderer Nutzer auch Schwierigkeiten zu haben MQTT Control commands an seinen ProDimmer2 zu senden.

Anbei mal den Lösungsansatz der da beschrieben wurde. Vielleicht ist das für Dichhilfreich um deinen Thing Code umzubauen

Code: Alles auswählen

Problems when adding BLU devices in the app / Probleme beim Hinzufügen von BLU Geräten in der App
×
Shelly community

    Existing user? Sign In   

    Forums
    Ungelesener Inhalt
    Mein Aktivitätenverlauf
    Browse
    Anschlussdiagramme
    Clubs

This Topic

    Alle Aktivitäten

    Home
    APIs
    MQTT
    MQTT Control for Shelly Pro Dimmer?

MQTT Control for Shelly Pro Dimmer?
njh

By njh
December 28, 2024 in MQTT

njh

    njh Newbie
    New Members
        4

Posted December 28, 2024 (edited)

Hello,

I have recently bought a Shelly Pro Dimmer 2 and it is working really well with dimming my 240v LED light bulbs 🙂

And I am successfully getting MQTT status messages:

shellyprodm2pm-xxxxxx/status/light:1
{"id":1,"source":"init","output":true,"brightness":100,"temperature":{"tC":42.8, "tF":109.0},"aenergy":{"total":120.716,"by_minute":[385.540,359.149,379.843],"minute_ts":1735339380},"apower":21.3,"current":0.102,"voltage":247.4}

 

However it doesn't seem to support "MQTT Control" commands?
Or at least, there is nothing in the documentation:
https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Light#mqtt-control

This is the equivalent documentation page for Switch (which I use for my 4PM):
https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch#mqtt-control

I am running firmware version 1.4.4 (679fcca9).
Does anyone know if it is supported or there is planned support for it?

 

Thanks,

njh.
Edited December 28, 2024 by njh

    Quote Translate 

AlexAn

    AlexAn Enthusiast
    Members
        90

Posted December 28, 2024 (edited)

shellyXY-IDdeinerShelly/rpc {"id":0, "src":"user_1", "method":"Light.Set", "params":{"id":0, "brightness": xy}

shellyXY-IDdeinerShelly/rpc {"id":0, "src":"user_1", "method":"Light.Set", "params":{"id":0, "on":true}

shellyXY-IDdeinerShelly/rpc {"id":0, "src":"user_1", "method":"Light.Set", "params":{"id":0, "on":false}
Edited December 28, 2024 by AlexAn

    Quote Translate 

njh

    njh Newbie
    New Members
        4

    Author

Posted December 29, 2024

Yeah, I am using the RPC commands as a work-around. And then receiving the non-RPC status messages.
I found that in JavaScript it can abbreviated to:

return JSON.stringify({method:'Light.Set', params:{id:0, brightness:message}})


But it is very frustrating that MQTT Control isn't implemented for the "Light" component type.

 

    Quote Translate 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Guest
Reply to this topic...
Go to topic listing

    Alle Aktivitäten

    Home
    APIs
    MQTT
    MQTT Control for Shelly Pro Dimmer?

    Language Privacy Policy Contact Us Cookies 

Powered by Invision Community
bin gespannt ob das für Dich hilfreich ist.

Grüße Runa

Re: Shelly Pro Dimmer 2PM

Verfasst: 11. Jan 2025 00:48
von udo1toni
Ja, das kannst Du auch probieren, allerdings muss der Rückgabewert für die Helligkeit auch funktionieren. Die json Strings brauchst Du nicht mehr, die waren nur zum testen :)
Hier mein Versuch mit rpc (steht für Remote Procedure Call):

Code: Alles auswählen

UID: mqtt:topic:mosquitto:shellyprodm2pm_1
label: Shelly pro Dimmer 2 pm 1
thingTypeUID: mqtt:topic
configuration:
  payloadNotAvailable: "false"
  availabilityTopic: shellyprodm2pm-fce8c0d8c2ac/online
  payloadAvailable: "true"
bridgeUID: mqtt:broker:mosquitto
channels:
  - id: ch1
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 1
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":0, "src":"user_1", "method":"Light.Set", "params":{"id":0, "brightness": %d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/rpc
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:0
      transformationPattern: REGEX:(.*brightness.*)∩JSONPATH:$.brightness
  - id: ch2
    channelTypeUID: mqtt:dimmer
    label: Dimmer Channel 2
    configuration:
      retained: false
      postCommand: false
      formatBeforePublish: '{"id":1, "src":"user_1", "method":"Light.Set", "params":{"id":0, "brightness": %d}'
      commandTopic: shellyprodm2pm-fce8c0d8c2ac/rpc
      step: 1
      stateTopic: shellyprodm2pm-fce8c0d8c2ac/status/light:1
      transformationPattern: REGEX:(.*brightness.*)∩JSONPATH:$.brightness
Es ändern sich also lediglich das commandTopic und formatBeforePublish, der Rückempfang bleibt gleich (und der muss auch funktionieren)

Vergiss bitte ON und OFF, das gibt es bei Dimmern in openHAB so nicht, und weil Shelly die Dimmer so steuert, wie sie das tun, gibt es auch keine vernünftige Möglichkeit, das nachträglich sinnvoll einzubauen. Glücklicherweise braucht man aber auch kein ON oder OFF, weil 0 % gleichbedeutend mit OFF und ein Wert ungleich 0 % gleichbedeutend mit ON ist.