Elektronik2000.de Forum
» E2000 - PLUS - Software
» E2000 - PLUS - Creator
Shelly Geräte & MQTT
Seiten (1): [1]  
Autor Beitrag
 
$!LV3R
Shelly Geräte & MQTT
Moin Moin,

derzeit spiele ich viel mit Produkten aus der Shelly Familie herum. Dabei sind mir jetzt einige Fragen aufgekommen, im Bezug auf eine MQTT Ansteuerung über ein E2000 Plus System.

Meine 1. Frage jetzt bezieht sich auf die "Dimmer 2" von Shelly. Diese erwarten einen "json String" als Befehl. Die Topic von dem Gerät sieht folgender maßen aus: shellies/shellydimmer2-xxxxxxxxxxx/light/0/set (die xxxx sind für die Shelly ID) .
Der json Befehl, der dann unter den genannten Topic gesetzt werden muss, sieht dann so aus: {"brightness": 100, "turn": "on"}

Mit diesem Befehl würde jetzt der Dimmer 2 die Lampe auf 100% einschalten. Dies funktioniert auch wunderbar mit dem "MQTT Aktoren Baustein" von E2000. Um jetzt aber einen variablen Dimm-wert per MQTT zu übertragen, muss ja in der Logik ein analoger Wert irgendwie mit der richtigen json Syntax den Shelly erreichen. Dazu habe ich den "MQTT Publisher" Baustein genommen. Allerdings kann ich hier keinen "json String" übertragen sondern nur einen analogen Zahlen-Wert.

Ich habe dann versucht den json String in dem Topic Feld mit zu integrieren was soweit auch funktioniert laut MQTT Broker. Das sieht dann bei mir so aus: shellies/shellydimmer2-xxxxxxxxxxxx/light/0/set = {brightness:}
Wenn jetzt ein Analoger Wert gesendet wird, kommt dieser beim Shelly aber so an : shellies/shellydimmer2-xxxxxxxxxxxx/light/0/set = {brightness:} = yy (yy = Analoger Wert)
Gibt es die Möglichkeit eine Variable im Topic vom Baustein zu setzen, welche dann den Analogen Wert vom Eingang annimmt?
Hier mal als Beispiel: shellies/shellydimmer2-xxxxxxxxxxxx/light/0/set = {brightness: $1} ($1 = Analoger Wert vom Eingang).

Vielleicht hat jemand auch eine andere Lösung für mein Problem parat. Die anderen Fragen folgen später ;) = Zwinker
Erstmal vielen Dank und schöne Grüße aus dem Norden.
$!LV3R ist offline  
 
Manni-Pi (Entwickler)

Manni
Hallo $!LV3R ,
ich habe deinen Wunsch mit den JSON-Strings beim MQTT Publisher mal in unsere Liste aufgenommen. Mal sehen ob wir das umsetzen können.

Gruß
Manfred 8) = Cooler Smilie
Manni-Pi ist offline  
 
Manni-Pi (Entwickler)

Manni
Hallo $!LV3R ,
einfach mal zur Info. Ich habe alle meine Shellys auf Tasmota umgestellt. Einfach die Tasmota Firmware drauf flashen und in der neuen e2000 gibts dann die Tasmota Bausteine. Darunter auch einen Tasmota Dimmer Baustein. Damit kannst Du die Shellys dann ansprechen. Aber keine Angst, den MQTT-JSON String werden wir aber auch noch umsetzen.

Gruß
Manfred 8) = Cooler Smilie
Manni-Pi ist offline  
 
$!LV3R
Moin Manni,

vielen Dank für deine Antwort. Ja genau, die Tasmota Bausteine hatte ich mir auch bereits angeguckt. Allerdings habe ich die Shellys (bis jetzt: 9 x Dimmer2 | 4 x Shelly 2.5 | 1 x Shelly RGBW | 1 x Shelly EM | 1 x Shelly Button) bereits alle im Schaltschrank bzw. in UP Dosen verbaut (außer den Shelly Button :D = Breites Grinsen) und die originale Firmware drauf gelassen, da ich mit dieser sehr zufrieden bin. Nutze die Geräte nur lokal per MQTT-Ansteuerung und funktioniert auch alles tadellos. Daher habe ich die Dinger bisher nicht geflasht. Ich habe aber noch einen WLAN-China-Dimmer den ich mal zum rumspielen mit Tasmota flashen werde *gut* = Sehr gut!

Vielleicht kannst du mir noch bei der 2. Frage helfen.

Wie oben erwähnt habe ich auch einen "Shelly Button" im Einsatz und nutze diesen als portablen WLAN Schalter. Dieser Shelly Button sendet per MQTT einen JSON String {"event":"$",“event_cnt":zahl} unter dem Topic shellies/shellybutton1-xxxxxxxxx/input_event/0.

Bei diesem JSON String kommt bei dem "event": ein "S" für einen kurzen Tastendruck, ein "SS" für einen Doppel-Tastendruck und ein "SSS" für einen dreifachen kurzen Tastendruck. Das gleiche Spiel gibt es dann nochmal für einen bis dreifachen langen Tastendruck, dann aber mit dem "L" im "event".

Leider kann der E2000 "MQTT Subscriber - Baustein" diese Antwort derzeit nicht verarbeiten, vermutlich weil keine Zahl sondern ein Buchstabe gesendet wird. Kann dies ebenfalls nachgerüstet werden?

Derzeit behelfe ich mir damit, dass ich den "event_cnt" auswerte. Dies ist ein Tastzähler und zählt bei jedem Tastendruck, egal ob kurz, lang oder mehrfach gedrückt, einen Wert höher. Somit kann ich aber auch nur eine Schaltaktion ausführen, aber es geht :) = Normaler Smile.

Schöne Grüße
$!LV3R ist offline  
 
Manni-Pi (Entwickler)

Manni
Hallo $!LV3R,
da ich ioBroker zusätzlich laufen habe kann ich alles in JavaScript auswerten und für e2000 wiederum als MQTT übergeben. Ich werde dein Problem trotzdem mal in unsere Liste aufnehmen und versuchen ob wir bei JSON nicht nur Zahlen sondern auch beliebige Strings auswerten können. Müsste dann im MQTTSUB ein zusätzliches Feld geben um den auszuwertenden String da einzugeben der dann am Ausgang einen Highimpuls ausgibt.

Gruß Manfred 8) = Cooler Smilie
Manni-Pi ist offline  
Seiten (1): [1]  
 
Suche
» Erweiterte Suche
Optionen
Druckansicht Druckansicht
Thema weiterempfehlen Thema weiterempfehlen