Elektronik2000.de

Elektronik2000.de Forum (http://elektronik2000.de:443/forum/)
-- E2000 - PLUS - Software (http://elektronik2000.de:443/forum/forum.php?id=117)
  -- E2000 - PLUS - Creator (http://elektronik2000.de:443/forum/forum.php?id=139)


Seiten (2): [1] 2 »
 
$!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.
 
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 (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
 
$!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
 
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
 
$!LV3R
Moin Moin,

gibt es bereits neue Erkenntnisse bezüglich der MQTT Funktionen im E2000+ System ?

Schöne Grüße
 
$!LV3R
Ja ich nochmal,

ich habe mir den LED Stribe Controller "H801" besorgt und diesen mit Tasmota geflasht.
Jetzt stoße leider wieder auf Probleme mit den MQTT befehlen für dieses Gerät.
Der "H801" besitzt 5 steuerbare Kanäle welche mit dem MQTT Topic "cmnd/tasmota_XXXXXX/Color" angesprochen werden. Die Kanäle sind wie folgt aufgeteilt --> RGBCWWW --> Rot,Grün,Blau,Kalt Weiß, Warm Weiß.

Um jetzt einen Kanal anzusteuern, muss ein Zahlenwert entweder in "HEX" oder in "DEZ" mit dem Topic "cmnd/tasmota_XXXXXX/Color" an den H801 gesendet werden.

Beispiel:
HEX: 00FF000000 = Mit diesem Wert wäre jetzt der 2. Kanal (Grün) voll angesteuert, also Grün = 100%
DEZ: 0,255,0,0,0 = Entspricht ebenfalls Grün = 100%

Problem:
In der E2000+ Logik kann ich leider keine HEX Zahlenwerte oder mehrere Dezimalwerte, getrennt mit einem Komma, senden. Kann diese Funktion im E2000+ System nachgerüstet werden?
 
kot120
Hallo,

falls es dir nur um die Kommunikation E2000-H801 geht hier mein Alternativvorschlag:
Nutze den HTTP Baustein von E2000 um mit Tasmota-Geräten zu kommunizieren.

Gruß Tom
 
patpommi (Betatester)
Hallo $!LV3R !

Vielleicht habe ich es ja falsch verstanden, aber hast du es schon mit dem MQTT-Aktoren Baustein versucht?
Im Prinzip kannst du damit mehr oder weniger alles senden...

In meinem Beispiel sende ich Zigbee-Daten über ein Zigbee to MQTT-gateway für eine Zigbee-Leuchte.
Es lassen sich aber z.B. auch befehle für eine IR-Fernbedienung senden.

Ich hoffe das hilft dir.
Grüße aus dem Auetal,
Ralf
Anhänge
 
$!LV3R
Moin patpommi,

verzeih mir die Späte Antwort. Ja der MQTT Aktoren Baustein funktioniert:) = Normaler Smile. In diesem kann ich, wie auch in deinem Beispiel, einen kompletten "Befehl" eingeben und versenden. Ebenfalls konnte ich auch hier die gewünschten Zahlenwerte versenden*gut* = Sehr gut!. Ich weiß nicht warum, aber ich habe es die ganze Zeit mit dem MQTT Publisher Baustein versucht.*hmm* = Hmm...

Ich habe hier nochmal das Beispiel meiner 1. Frage eingefügt, um einen Shelly Dimmer 2 anzusteuern, mit dem MQTT Aktoren-Baustein. Dieser schaltet den Shelly EIN, mit der Dimmstufe 100%, und wieder AUS, mit der Dimmstufe 0%.

{"brightness": 100, "turn": "on"}

Wie kann ich jetzt in der Logik das hinbekommen, dass die Dimmstufe variabel angesprochen werden kann?
Der MQTT Aktoren Baustein besitzt keinen Anlagoen Eingang, um den Zahlenwert anzusteuern. Bei dem MQTT Publisher kann ich die Topic-Zeile eingeben (shellies/shellydimmer2-xxxxxxxxF11/light/0/set) aber nicht genau deklarieren, welcher Zahlenwert im String geändert werden soll.
Anhänge
shellydimmer2.jpg (171,7 KB)
Zuletzt bearbeitet 16.11.2023 - 17:18:42 Uhr von $!LV3R
Seiten (2): [1] 2 »
 

23.11.2024 - 12:36:50