MQTT2+Shelly: erste Konfiguration und template-Entwicklung

Begonnen von miggun, 03 Dezember 2018, 21:05:34

Vorheriges Thema - Nächstes Thema

seule3008

Hi

Also umschalten kann ich ohne internet. Allerdings kann man doch bestimmt was schreiben, dass wenn ich in HomeKit  weiß anwähle er mir die Farben auf 0 stellt und weiß auf 100 zum Beispiel. Oder wäre sowas nicht machbar?

Viele Grüße

MadMax-FHEM

#751
Direkt in der Shelly Oberfläche?
Und tatsächlich zw. RGB und W?

Hmm, muss ich mal noch mal testen...
(evtl. geht das ja mit neuerer FW)

Ob das beim Schalten durch Homekit geht keine Ahnung.
Irgendwo hier im Forum gibt's was wo parrallel zu mqtt auch http-Requests an Shellys geschickt werden, für "echtes" on-for-timer (also im Shelly laufend)...

Das kann man verm. auch hierfür nehmen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Eventuell würde auch das (neulich etwas überarbeitete) shellybulb-Template helfen. Das behandelt Weißtöne in rgb etwas "speziell"...

Ansonsten sind rgbw-Geräte gerne mal "zickig" - ich kenne das von den MiLights und hatte das neulich auch bei einer ZigBee-(nicht-tint-Aldi-) Birne, dass "weiß" in RGB - freundlich gesagt - "nicht gut" aussah.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

seule3008

Hallo

ich denke ich muss mich von dem Weiß in den Streifen oder von den Shellys verabschieden. Echt traurig das die als RGBW beworben werden.

Eine andere Frage habe ich noch. Ich schalte den Trafo mit einem Shelly 2.5, weil ich nicht die ganze Zeit den Trafo laufen haben möchte. Kann man das SetList so anpassen, dass wenn ich an dem RGBW auf off drücke er den Rgbw und den 2.5 aus schaltet? Wenn ich das umschreibe auf den Shelly 2.5, dann geht es allerdings bekomme ich es nicht hin das er beide schaltet.

off:noArg (shellies/shellyrgbw2-F9920A/color/0/) and (shellies/shellyswitch25-C45BBE620428/relay/0/)command off

das habe ich versucht geht allerdings nicht.

Grüße

Christian

Beta-User

Geht ziemlich sicher, aber du musst "reines Perl" in der setList-Zeile verwenden. Falls der LED-Shelly keinen Strom hat, brauchst du dazu noch eine Verzögerung... Nicht ganz trivial, aber möglich. Ggf. nach den ersten Versuchen separaten Thread starten, wenn es nicht klappt...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

seule3008

Hallo

meinst du mit reinem Perl das hier? off:noArg {fhem "set Licht_WZ off; set Licht_Kueche off;";}

Das geht leider auch nicht.

Im Shelly habe ich (ON - Configure Shelly device to Turn ON, when it has power.)  eingestellt also sobalt der Strom bekommt geht das licht an.

Grüße

Beta-User

Nein. "Topic Payload" muss zurückgegeben werden.... Dazwischen kann "alles mögliche" passieren, z.B. auch ein weiteres publish usw.. Wie gesagt: nicht ganz trivial.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

seule3008

Danke für die schnelle Antwort allerdings sagt mir das nur Bahnhof  :o

Hast du da evtl eine Quelle wo das beschrieben ist oder wonach ich suchen muss? Oder evtl sogar einen Lösungsansatz?

Da wäre ich dir sehr dankbar. Ich hatte überlegt eine structure anzulegen, denn ein einzelnes anderes device schalten bekomme ich ja hin. Ginge das auch ?

Viele Grüße
Christian

Beta-User

Wie gesagt: das paßt hier nicht in diesen Thread, und leider müßte ich ein passendes Beispiel auch suchen (afaik macht sowas ähnliches sonos-mqtt).
Ansonsten ist es ok, wenn du ein anderes Device schalten kannst und das Problem damit lösen... (evtl. braucht es zwei ;;?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Zitatmeinst du mit reinem Perl das hier? off:noArg {fhem "set Licht_WZ off; set Licht_Kueche off;";}

Nein, er meint:
off:noArg {fhem "set Licht_WZ off;; set Licht_Kueche off"}
oder
off:noArg {fhem "set Licht_WZ off";; "<topic-fuer-licht_kueche-off> <message-fuer-licht_kueche-off>" }


@Beta-User: waere es sinnvoll fuer solche Faelle eine neue Syntax zu ueberlegen, wie z.Bsp.
off:noArg <cmd1Topic> <cmd1Msg>#<cmd2Topic> <cmd2Msg>#...
Bin nicht sicher, dass das so viel besser waere, als die vorherigen Varianten.

Beta-User

Zitat von: rudolfkoenig am 14 November 2021, 22:19:09
@Beta-User: waere es sinnvoll fuer solche Faelle eine neue Syntax zu ueberlegen, wie z.Bsp.
off:noArg <cmd1Topic> <cmd1Msg>#<cmd2Topic> <cmd2Msg>#...
Bin nicht sicher, dass das so viel besser waere, als die vorherigen Varianten.
Bin auch unsicher, v.a. fürchte ich Probleme bei der Erkennung des Musters vor dem Hintergrund, dass die JSON-Payloads anscheinend immer komplexer werden "müssen"...

Hier kommt ggf. auch ein Senden an einen group-Topic in Frage (mind. Tasmota kennt so etwas, für Shelly kann ich es nicht sagen). Es gibt also neben dieser Perl-Variante hier auch noch weitere Lösungsansätze, was auch dafür spricht, lieber die User in die Pflicht zu nehmen, sich erst mal mit Alternativen zu beschäftigen. Die jeweiligen Fälle sind m.E. immer so oder so etwas "speziell".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

seule3008

Hallo,

die beiden Codezeilen von rudolfkoenig funktionieren auch nicht. Ich hab es jetzt so gelöst, dass ich die Befehle "an" und "aus" noch hinzugefügt habe, die dann eine structure ansteuern, die die beiden Device enthält. Das funktioniert einwandfrei. Im HomeKit schaltet es nach einem HomebridgeMapping auch und zeigt den Status fehlerfrei an.

Das neue setList:
aus:noArg {fhem("set structure_LED_Kueche off")}
an:noArg {fhem("set structure_LED_Kueche on")}
off:noArg shellies/shellyrgbw2-F9920A/color/0/command off
  on:noArg shellies/shellyrgbw2-F9920A/color/0/command on
  white:colorpicker,BRI,0,1,255 shellies/shellyrgbw2-F9920A/color/0/set {"white":"$EVTPART1"}
  gain:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-F9920A/color/0/set {"gain":"$EVTPART1"}
  rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"shellies/shellyrgbw2-F9920A/color/0/set {\"mode\":\"color\",\"red\":".hex($1).",\"green\":".hex($2).",\"blue\":".hex($3)."}"}else{"shellies/shellyrgbw2-F9920A/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
  white_on:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-F9920A/color/0/set {"turn":"on","white":"$EVTPART1"}
  gain_on:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-F9920A/color/0/set {"turn":"on","gain":"$EVTPART1"}
  rgb_on:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"shellies/shellyrgbw2-F9920A/color/0/set {\"turn\":\"on\",\"mode\":\"color\",\"gain\":\"100\",\"red\":".hex($1).",\"green\":".hex($2).",\"blue\":".hex($3)."}"}else{"shellies/shellyrgbw2-F9920A/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
  effect:selectnumbers,0,1,6,0,lin  shellies/shellyrgbw2-F9920A/color/0/set {"effect":"$EVTPART1"}
  x_update:noArg shellies/shellyrgbw2-F9920A/command update_fw
  x_mqttcom shellies/shellyrgbw2-F9920A/command $EVTPART1


Das homebridgeMappung:
On=state,valueOn=on,valueOff=off,cmdOn=an,cmdOff=aus

Das setStateList:
on off an aus

Das webCmd
an:aus:white:gain:rgb

Viele Grüße und vielen Dank für eure Hilfe und Denkanstöße.

Christian

rudolfkoenig

Zitatdie beiden Codezeilen von rudolfkoenig funktionieren auch nicht.
Ich muss zu meiner Verteidigung sagen, dass ich meine Zeilen nur mit einem "dummy" MQTT-Client geprueft habe, nicht mit einem RGBW-Shelly, auch die Shelly-Templates habe ich nicht angewendet.
Aber ich habe verifiziert, dass per MQTT hintereinander beide Topics in der richtigen Reihenfolge gepublisht werden.

seule3008

Hallo,

alles gut. War nicht persönlich gemeint. Die Zeilen schalten auch aber nur ein Device. Die Lösung mit der structure funktioniert super. Ich weiß jetzt nur nicht, ob man das evtl irgendwie einfacher zu finden machen kann, wenn jemand auch vor dem RGBW den Trafo abschalten will. Ich habe keine große Ahnung vom Programmieren und habe jetzt sehr viel Zeit darauf verwendet. Vielleicht kann man die Zeit anderen ersparen?

Mit freundlichen Grüßen

Christian

Beta-User

Zitat von: seule3008 am 15 November 2021, 20:51:58
Ich weiß jetzt nur nicht, ob man das evtl irgendwie einfacher zu finden machen kann, wenn jemand auch vor dem RGBW den Trafo abschalten will. Ich habe keine große Ahnung vom Programmieren und habe jetzt sehr viel Zeit darauf verwendet. Vielleicht kann man die Zeit anderen ersparen?
Das ist zwar eine hehre Zielsetzung, aber m.E. ist sowohl das Problem wie die Lösung m.E. "zu speziell". Vermutlich würde es in solchen Fällen reichen, die on und off-Commands (kann man per setStateList auf die "von FHEM aus geschaltet"-Fälle begrenzen) an die "weggeschalteten" Geräte per 'notify' (usw.) abzufangen und dann darüber einfach den "Vorschaltaktor" (mit) zu schalten. Simpel, schnell, generalistisch, im Kern nicht auf MQTT2_DEVICE beschränkt (und Gegenstand der Einsteigerliteratur).
Aber hier weiter [OT].
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files