MQTT2+Shelly: erste Konfiguration und template-Entwicklung

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

Vorheriges Thema - Nächstes Thema

davidgross

Hi,
ich hoffe ich bin hier richtig. Ich habe das shelly2rgbw_color template mit colorpicker erfolgreich im Einsatz. Jetzt habe ich mir noch eine Funktion mit festen Farben hinzugefügt und fand einen kleinen Bug.
Könnt ihr im userreading anstatt: rgb:red.*  dies eintragen: rgb:(red|green|blue).*

Zusätzlioch wäre eine Funktion mit festen (in einem reading) veränderbaren Farben für mich eine sinnvolle Ergänzung. Das Gespiele auf dem Colorpicker ist zwar nett aber nicht sehr effektiv. Allerdings habe ich meine Umschaltung in ein Doif ausgelagert. Nicht sehr elegant, aber funktioniert.
im shelly:
setList colorpreset:Kerze,Lampe,Sonne,Rot,Grün,Blau $EVTPART1


define WoziRGB_Doif DOIF ([MQTT2_shellyrgbw2_6621A5:colorpreset]) ({\
  my $val1=ReadingsVal("MQTT2_shellyrgbw2_6621A5", "colorpreset" , 0 );;\
  fhem "setreading $SELF diag1 $val1";;\
  if ($val1 eq "set Kerze")    { fhem "set MQTT2_shellyrgbw2_6621A5 rgb ff6d00";;;; fhem "setreading MQTT2_shellyrgbw2_6621A5 colorpreset Kerze";;}\
  elsif ($val1 eq "set Lampe") { fhem "set MQTT2_shellyrgbw2_6621A5 rgb ffa54f";;;; fhem "setreading MQTT2_shellyrgbw2_6621A5 colorpreset Lampe";;}\
  elsif ($val1 eq "set Sonne") { fhem "set MQTT2_shellyrgbw2_6621A5 rgb fff0e9";;;; fhem "setreading MQTT2_shellyrgbw2_6621A5 colorpreset Sonne";;}\
  elsif ($val1 eq "set Rot")   { fhem "set MQTT2_shellyrgbw2_6621A5 rgb FF2626";;;; fhem "setreading MQTT2_shellyrgbw2_6621A5 colorpreset Rot";;}\
  elsif ($val1 eq "set Grün")  { fhem "set MQTT2_shellyrgbw2_6621A5 rgb 26FF26";;;; fhem "setreading MQTT2_shellyrgbw2_6621A5 colorpreset Grün";;}\
  elsif ($val1 eq "set Blau")  { fhem "set MQTT2_shellyrgbw2_6621A5 rgb 2626FF";;;; fhem "setreading MQTT2_shellyrgbw2_6621A5 colorpreset Blau";;}\
})
attr WoziRGB_Doif do always

VG
   

Beta-User

Zitat von: davidgross am 16 Januar 2021, 23:17:36
Hi,
ich hoffe ich bin hier richtig. Ich habe das shelly2rgbw_color template mit colorpicker erfolgreich im Einsatz. Jetzt habe ich mir noch eine Funktion mit festen Farben hinzugefügt und fand einen kleinen Bug.

ad "fand einen kleinen Bug". Kannst du das bitte mit etwas MQTT-Verkehr belegen, warum dein Vorschlag zielführender ist als die (evtl. hier unnötigerweise) einschränkende regexp, die jetzt da steht?

Zu dem Vorschlag: nehme gerne was "internationalisiertes" in die setList auf, dieser Umweg ist in der Tat unnötig:
candle:noArg <topic> <passende rgb-payload>
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

JJ_Pamoux

Neuere Firmware-Versionen verhindern das Anzeigen der schönen fts_shutter_[up|down] Icons.

Alte Firmware:

2021-01-17 16:36:36.789 MQTT2_DEVICE rollo_wz_giebel set_close
2021-01-17 16:36:37.202 MQTT2_DEVICE rollo_wz_giebel closing
2021-01-17 16:36:37.202 MQTT2_DEVICE rollo_wz_giebel current: close

Neue Firmware:

2021-01-17 16:22:05.163 MQTT2_DEVICE rollo_wz_tuer_l set_close
2021-01-17 16:22:05.255 MQTT2_DEVICE rollo_wz_tuer_l current: close
2021-01-17 16:22:05.255 MQTT2_DEVICE rollo_wz_tuer_l closing
2021-01-17 16:22:05.324 MQTT2_DEVICE rollo_wz_tuer_l pct: 100
2021-01-17 16:22:05.324 MQTT2_DEVICE rollo_wz_tuer_l 100


Die neue Firmware teilt halt direkt noch einmal mit, wie der Stand vor (!) dem Kommando wahr. Leider hat das dann natürlich direkte Auswirkungen auf das Icon. Eine schnelle Lösung ist mir da jetzt nicht eingefallen, aber ich wollte das wenigstens kurz mal melden.

Die Chatiness von Shelly im Zusammenhang mit MQTT lässt sich natürlich etwas reduzieren, indem man das entsprechende Setting setzt, siehe: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Shelly
Ich setze dabei aber nicht direkt "0", sondern halt irgendwas deutlich größer als den Standardwert (30). Kann man ja entsprechend selbst einmal experimentieren.

WLAN-Clients bleiben die Dinger natürlich. Demnach sollte man für viele Geräte schon gute WLAN-Hardware anschaffen (Beispiele wurden ja genannt, u.a. Unifi).

davidgross

Zitat von: Beta-User am 17 Januar 2021, 08:43:54
ad "fand einen kleinen Bug". Kannst du das bitte mit etwas MQTT-Verkehr belegen, warum dein Vorschlag zielführender ist als die (evtl. hier unnötigerweise) einschränkende regexp, die jetzt da steht?
Das ist kein Bug beim MQTT auslesen. Das Problem ist nur das die Aktualisierung der Anzeige des RGB-Wertes auf Änderungen vom :red wartet. Wenn sich der red-Wert aber nicht verändert (da z.b. immer 255) gibt es auch keine Änderung des angezeigten RGB-Wertes. rgb:(red|green|blue).*  reagiert auf jegliche Änderung der Farben. Wie gesagt nur im userReadings.


Zitat von: Beta-User am 17 Januar 2021, 08:43:54
Zu dem Vorschlag: nehme gerne was "internationalisiertes" in die setList auf, dieser Umweg ist in der Tat unnötig:
candle:noArg <topic> <passende rgb-payload>
Natürlich.  :)


Beta-User

Zitat von: davidgross am 17 Januar 2021, 19:21:55
Das ist kein Bug beim MQTT auslesen. Das Problem ist nur das die Aktualisierung der Anzeige des RGB-Wertes auf Änderungen vom :red wartet.
Hmmm, ja, vielleicht, vielleicht auch nicht....

Mein "Problem": _für eine Leuchte_ halte ich ein Sendeintervall von "0" für "korrekt" und das "Setzen von eocr .*" für "falsch".... (das ist ein eigenes "add-on", das dieses "Problem" verursacht, unterstelle ich mal). Muß mal drüber nachdenken, aber da das ein bulk-update ist, ist es an der Stelle vermutlich egal...

Es wäre nett, wenn die Shelly-User sich da auch zur Frage, für welche Devices welche Einstellungen der firmware sinnvoll sind irgendwie zusammentun, damit wir da was konsolidiertes hinbekommen (siehe die Initiative von @gestein hier: https://forum.fhem.de/index.php/topic,117446.msg1118413.html#msg1118413




Zu dem Rollo-Thema fällt mir im Moment auch nichts ein...
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

kabanett

Zitat von: JJ_Pamoux am 17 Januar 2021, 16:42:55
Neuere Firmware-Versionen verhindern das Anzeigen der schönen fts_shutter_[up|down] Icons. ............
Eine schnelle Lösung ist mir da jetzt nicht eingefallen, aber ich wollte das wenigstens kurz mal melden.
Zitat von: Beta-User am 17 Januar 2021, 19:44:46
Zu dem Rollo-Thema fällt mir im Moment auch nichts ein...

Hallo,
da einige DOIF's nicht mehr funktionierten, ist mir das Problem auch aufgefallen. Ich habe es bei mir so gelöst.
attr devStateIcon.*/open:fts_shutter_up@red .*/close:fts_shutter_down@red true:10px-kreis-gruen false:10px-kreis-rot 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\d/stop:fts_shutter_10 8\d/stop:fts_shutter_20 7\d/stop:fts_shutter_30 6\d/stop:fts_shutter_40 5\d/stop:fts_shutter_50 4\d/stop:fts_shutter_60 3\d/stop:fts_shutter_70 2\d/stop:fts_shutter_80 1\d/stop:fts_shutter_90 0\d/stop:fts_shutter_100 set_.*:fts_shutter_updown
attr stateFormat<a href="http://ip" target="_blank">
online
</a>
state/current


Funktioniert soweit!

Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Dersch

Das MQTT2 Template für den Shelly RGBW2 funktioniert bei mir leider so gar nicht. Ich betreibe schon mehrere Shellys mit MQTT aber hier stehe ich vor einem Rätsel.

FW ist die 20201124-092159/v1.9.0@57ac4ad8

Internals:
   CFGFN     
   CID        shellyrgbw2_80E6E7
   DEF        shellyrgbw2_80E6E7
   DEVICETOPIC MQTT2_shellyrgbw2_80E6E7
   FUUID      6026b84f-f33f-c2c3-a065-cadffde571732ecf
   IODev      MQTT2
   LASTInputDev MQTT2
   MQTT2_MSGCNT 70
   MQTT2_TIME 2021-02-12 19:01:20
   MSGCNT     70
   NAME       MQTT2_shellyrgbw2_80E6E7
   NR         3718
   STATE      set_on
   TYPE       MQTT2_DEVICE
   READINGS:
     2021-02-12 18:59:55   attrTemplateVersion 20201215
     2021-02-12 19:01:20   online          false
     2021-02-12 18:48:54   state           set_on
     2021-02-12 18:59:55   x_mqttcom       set announce
Attributes:
   DbLogExclude .*
   IODev      MQTT2
   devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off"); my $cons = ReadingsVal($name,"power","unknown"); "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons</div>"}
   genericDeviceType light
   homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
   icon       light_control
   model      shelly2rgbw_color
   readingList shellies/shellyrgbw2-80E6E7/color/0/status:.* {json2nameValue($EVENT)}
  shellies/shellyrgbw2-80E6E7/color/0:.* state
  shellies/shellyrgbw2-80E6E7/online:.* online
  shellies/announce:.* { $EVENT =~ m,..id...shellyrgbw2-80E6E7...mac.*, ? json2nameValue($EVENT) : return }
   room       MQTT2_DEVICE
   setList    off:noArg shellies/shellyrgbw2-80E6E7/color/0/command off
  on:noArg shellies/shellyrgbw2-80E6E7/color/0/command on
  brightness:colorpicker,BRI,0,1,255 shellies/shellyrgbw2-80E6E7/white/0/set {"mode":"white","brightness":"$EVTPART1"}
  white:colorpicker,BRI,0,1,255 shellies/shellyrgbw2-80E6E7/color/0/set {"white":"$EVTPART1"}
  gain:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-80E6E7/color/0/set {"gain":"$EVTPART1"}
  rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"shellies/shellyrgbw2-80E6E7/color/0/set {\"mode\":\"color\",\"red\":".hex($1).",\"green\":".hex($2).",\"blue\":".hex($3)."}"}else{"shellies/shellyrgbw2-80E6E7/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
  white_on:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-80E6E7/color/0/set {"turn":"on","white":"$EVTPART1"}
  gain_on:colorpicker,BRI,0,1,100 shellies/shellyrgbw2-80E6E7/color/0/set {"turn":"on","gain":"$EVTPART1"}
  rgb_on:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;if($1 ne $2 || $2 ne $3) {"shellies/shellyrgbw2-80E6E7/color/0/set {\"turn\":\"on\",\"mode\":\"color\",\"gain\":\"100\",\"red\":".hex($1).",\"green\":".hex($2).",\"blue\":".hex($3)."}"}else{"shellies/shellyrgbw2-80E6E7/color/0/set {\"turn\":\"on\",\"mode\":\"white\",\"brightness\":".int(hex($1)/2.55)."}"}}
  effect:selectnumbers,0,1,6,0,lin  shellies/shellyrgbw2-80E6E7/color/0/set {"effect":"$EVTPART1"}
  x_update:noArg shellies/shellyrgbw2-80E6E7/command update_fw
  x_mqttcom shellies/shellyrgbw2-80E6E7/command $EVTPART1
   setStateList on off
   userReadings rgb:red.* {if(ReadingsVal($name,"mode","") eq "color"){sprintf("%02X%02X%02X", ReadingsVal($name,"red",99), ReadingsVal($name,"green",99), ReadingsVal($name,"blue",99))}else{my $a=sprintf("%02X",ReadingsVal($name,"brightness",0)*2.555);"$a$a$a"}}
   webCmd     on:off:white:gain:rgb:effect

kabanett

Vieleicht eine blöde Frage, aber was funktioniert denn so gar nicht?
Bis auf dein Hombridge und Dblog, schauts bei mir genau so aus.
Scheinbar war er auch noch nicht online     2021-02-12 19:01:20   online          false, da die ganzen Readings fehlen.....?!
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Dersch

Genau das ist ja das Problem. Er ist online aber es entstehen keine Readings.

Beta-User

Na ja, das Reading "online" ist auf false, was man so deuten kann, dass er für den Server (MQTT2_SERVER?) offline ist.
Die Frage ist eher, warum, denn das ist ja recht frisch...
subscriptions sind auch keine zu sehen, was anders sein sollte, wenn SERVER verwendet wird.
WLAN-Probleme kannst du ausschließen? (Log-Einträge?)
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

Dersch

War ein typischer DAU Fall. Ich habe das Passwort vom MQTT2 Server falsch im Shelly gesetzt. Da er aber dennoch via autocreate in FHEM das Device angelegt hat bin ich nicht davon ausgegangen das hier ein Fehler wäre. Jetzt geht natürlich alles.

MrTom

Hallo zusammen

ich habe heute meine Shelly Motions bekommen und mal ein wenig damit rumgespielt. Die gefallen mir gar nicht schlecht.

Anbei mal ein erster Vorschlag für ein Template
name:shellymotion
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*shellies.*
desc:shellymotion using original firmware.
order:A_19
par:DEVNAME;name of this shelly;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]+)/, ? $1 : undef }
par:ICON;ICON as set, defaults to motion_detector;{ AttrVal("DEVICE","icon","motion_detector") }
attr DEVICE icon ICON
attr DEVICE devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot"; \
my $moti = ReadingsVal($name,"motion","false") eq "true"?"message_presence\@red":"message_presence\@white"; \
"<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($moti)."</a>"}
attr DEVICE readingList shellies/DEVNAME/online:.* online\
  shellies/DEVNAME/sensor/status:.* { json2nameValue($EVENT) }\
  shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }\
  shellies/announce:.* { $EVENT =~ m,..id...DEVNAME...mac.*, ? json2nameValue($EVENT) : return }
attr DEVICE setList x_update:noArg shellies/DEVNAME/command update_fw\
  x_mqttcom shellies/DEVNAME/command $EVTPART1
attr DEVICE model shellymotion
setreading DEVICE attrTemplateVersion 20210225


Man möge mir etwaige Fehler verzeihen. Ich bin Informatiker jedoch kein Programmier, dafür umsomehr FHEM-Enthusiast. Ich freue micht auch über Korrekturen und Verbesserungen.

Schönen Gruss aus der Schweiz
Thomas
RPi2: FHEM 5.8 mit Jeelink (ATTiny) und AliRF (PIR's)
KNX/EIB: alix3d3 als IP-GW, div. Sensoren und Aktoren (Licht, Jalousien und Markisen)
Mysensors: Temp/Hum/Lux-Sensoren, PIR's, Türkontakte,
verschiedene RGB-Aktoren, Vantage 2, Fritzbox, Vu+ Duo

Beta-User

Danke, ist (mit Symbolwechsel statt Farbe) eingecheckt!

(Das Farbthema sollte ich wohl nochmal irgendwie klarstellen: Das ist keine Kritik, es geht da nur darum, dass es mit allen Farbschemata "hübsch" aussieht, und z.B. in f18-dark ist erzwungenes weiß nicht so prickelnd...). Daher versuche ich das via attrTemplate möglichst so anzubieten, dass es neutral/ohne Farbe ist.)
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

Zitates geht da nur darum, dass es mit allen Farbschemata "hübsch" aussieht,
Das geht "richtig" nur mit CSS-Klassen.
Leider doof, wenn man etwas haben will, was in der CSS noch nicht exisiert.
Ich bin aber bereit "meine" Styles zu erweitern.

stratege-0815

Hallo zusammen,
nachdem ich jetzt aus privaten Gründen viele viele Monate vollkommen raus bin aus FHEM, Shelly und Homekit (alles lief stabil die ganze Zeit!)
mal ne ganz blöde Anfängerfrage. Wie update ich die Templates und aktualisieren die sich dann auch auf für bestehende devices?
Einfach indem ich alle FHEM Module update?
Gruß
Jan