mqtt2.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 15 Dezember 2018, 11:44:43

Vorheriges Thema - Nächstes Thema

87insane

Hey und guten Morgen,

an anderer Stelle hatte mich jemand gefragt ob es mögliche seie bei Geräten, die sehr geringe Spannung aufweisen, eine Art Prüfung laufen zu lassen. Bei den Shellys (nicht alles aber z.B. Plug S) ist es so, dass unter 1W nicht immer sauber gemessen wird.
Nun ist es so das der Plug S an der Stelle z.B. immer mal wieder was an FHEM sendet. Ich habe mir das in so fern zu nutze gemacht, als das ich das Template vom washer genommen habe und dort eine kleine Anpassung. Anstelle von Wert unter x, wird hier einfach geprüft ob das Reading älter als y ist. Tatsächlich eine sehr kleine Anpassung aber bringt den gewünschten Erfolg. Vielleicht ist das für jemanden interessant :)


Das hier muss weg (Readingslist):
shellies/SHELLY_NAME/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : undef }



und das hier soll dahin (Readingslist):
shellies/SHELLY_NAME/relay/0/power:.* { my $compare = ReadingsAge($NAME,"relay_0_power",3800) > 3600 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : undef }

Gruß,
Kai

87insane

Guten Morgen nochmal,

im washer Template hat sich ein kleiner Fehler eingeschlichen. devStateIcon geht bei aktuellem Verbrauch auf das reading "power", müsste aber auf relay_0_power.

falsch:
attr DEVICE devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $pic = ReadingsVal($name,"loadState","") eq "on"?'scene_laundry_room_fem@green':'scene_laundry_room_fem';; my $text = ReadingsVal($name,"loadState","") eq "on"?"Waschmaschine läuft - Aktuell: ".ReadingsVal($name,"power","")." W":'Standby';; my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".readingsval($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";; "<div> $show ".FW_makeImage($pic)." $text </div>" }

richtig:
attr DEVICE devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $pic = ReadingsVal($name,"loadState","") eq "on"?'scene_laundry_room_fem@green':'scene_laundry_room_fem';; my $text = ReadingsVal($name,"loadState","") eq "on"?"Waschmaschine läuft - Aktuell: ".ReadingsVal($name,"relay_0_power","")." W":'Standby';; my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".readingsval($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";; "<div> $show ".FW_makeImage($pic)." $text </div>" }


Gruß,
Kai

Beta-User

#152
Thx, hab's eingecheckt!

Neu ist auch ein template für den Mexcio YX-DE02 (bzw- DE04). Die habe ich selbst seit einigen Tagen, sind ganz interessant, da die einen USB-Anschluß haben (ich habe eigentlich nach einem Ladegerät gesucht..., und dazu noch eine farbige LED, die mal als Statusanzeige dienen soll). Da habe ich das auch mit dem jsonMap anders gelöst als bisher, was vor allem deswegen interessant ist, weil man aus den "gesplitteten" Mehrkanaligen damit auch die Readings in den weiteren Devices verbannen kann, die man da gar nicht braucht...

Sonst wundert mich etwas, dass dazu keiner was sagen will/kann?!?
Zitat von: Beta-User am 02 Dezember 2019, 17:50:25
Ich tendiere dazu, das bei allen Tasmotas dann bei Gelegenheit so umzusetzen (evtl. mit zwei Converter-templates zum vereinfachten Umstellen), aber wenn es große Einwände gibt, gilt wie immer: Ihr bekommt, was ihr bestellt...
Ungetestete erste Version der Umstellungstemplates wäre hier zu finden; vielleicht komme ich noch dazu, das in Ruhe auszutesten, wird aber vermutlich bis nächstest Jahr dauern, vielleicht mag jemand das ja optimieren?!?

Gruß, Beta-User
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

87insane

Naja...hab auch USB-Steckdosen. Da lädt einer großer Akku aber auch ewig dran. Bei denen SICHER auch. Für eine Nacht-Ladung, sicher gut aber nicht für mal eben schnell.

jsonMap gefällt mir :) Bin gespannt wie es am Ende genutzt wird.
Noch offen ist z.B. Shelly Dimmer. Da meldet sich leider auch keiner. Die meisten nutzen das umbiegen oder doppelte erfassen. Das Template steht aber noch aus.
Gleiches auch für "Alexa - Wohnzimmer weiß", bei Shelly im RGBW2 Template. Dabei kommt rot rauß. Shelly selber bzw. Teracomunications wissen auch nicht wie sie das hinbekommen sollen. Die Programmiere von denen baten offiziell um Hilfe  :o - Scheint mir ein wenig auf Alexa Seite oder Skill/Mapping Anpassung. Fhem kann das doch sicher! :)

bigtruite

Hallo,

ich mach seit gestern meine ersten Schritte in Richtung MQTT2_Server, MQTT2_Devices etc. Ihr habt echt eine gute Arbeit gemacht... :-) Ich habe seit gestern einen LED-Controller (Arilux LC01 mit Tasmota) und eine Gosund SP111 (mit Tasmota) über MQTT2_Server bzw. MQTT2_Devices laufen. Läuft echt rund.

Folgendes ist mir aufgefallen.

1. Beim Template "tasmota_rgb_led_controller" muss das devStateIcon geändert werden. Sonst reagiert das Icon nicht. Ich habe es abgeändert und "Dimmer" entfernt. Obowohl es laut Wiki so passen würde. Geht aber nicht. Jetzt gehen dimmer, Farbei und Ein- und Aus. Könntet ihr das Prüfen und buxfixen?
Richtig: {Color::devStateIcon($name,"rgb","Color","POWER1")}

2. Ich schlage vor bei den Templates der "Tasmota"-Familie die Setlist um den Namen "Command" um einem Eingabefeld zu erweitern, damit man dort direkt einen Tasmota Befehl (siehe https://github.com/arendst/Tasmota/wiki/commands) ausführen kann, der nicht in der Setlist enthalten ist. Damit erschlagen wir enorm viel. Und damit würde man sich das (umständliche) absetzen über über einen MQTT Publish über den MQTT2_Server sparen. Da muss man nämlich wieder das Topic raussuchen etc.

Könntet ihr bitte 1 fixen? Was haltet ihr von Punkt 2? Gebt mir Bescheid.







Beta-User

Vorab mal Danke für das feedback :)

Ad 1:
Danke für's Nachforschen.
Habe grade versucht, das für meine Maxcio YX-DE02 (template: tasmota_plug_with_rgb_split, Tasmota 7.1.2) anzupassen, da war schon etwas ratlos, warum das da nicht geklappt hatte. Ergebnis war aber auch negativ...
Allerdings ist da jsonMap mit im Spiel (es wird daher "state" statt "POWERx" verwendet) und der Tasmota liefert einen 8-stelligen Farbwert (mit 00 am Ende, das ist wohl die Opacity) zurück. Letzteres scheint scheint das eigentliche Problem zu sein, jedenfalls bei einem dunklen Hintergrund sieht man nichts; evtl. liefert bei dir Dimmer auch nichts verwertbares zurück (?), mit den jswonMap-"pct"-Werten aus dem anderen Template (tasmota_plug_with_rgb_split) klappt das jedenfalls auch wie im Wiki angegeben (wenn man das Reading manuell auf einen 6-stelligen Wert ändert), und auch der Code ist so wie im Wiki dargestellt.
Müßte man wohl mal auf Theo/das Tasmota-Team (weglassen bzw. senden des korrekten Werts in der firmware?) oder Andre zugehen, ob man da in Color.pm was ändern kann/sollte (das Wegkürzen der Info wäre aber vermutlich farbtechnisch falsch, wenn denn die "00" heute richtig ist...).

Ist das bei dir (noch) anders und du bekommst einen 6-Stelligen hex-Wert?

Grundsätzlich würde ich das template (wie alle Tasmotas) gerne auf die jsonMap-Variante umstellen, von daher wäre das dann gleich Teil einer größeren Lösung...

Ad 2:
Bin da gespalten. Einerseits ist es eine Vereinfachung für die, die das brauchen/wollen, andererseits ist es ein "erklärungsbedürftiger Setter" für den Rest der user. Neige daher dazu, das zur Vereinfachung aus den attrTemplates draußen zu halten. Es spricht aber überhaupt nichts dagegen, das im Wiki (mit Beispielen) aufzunehmen (das darf gerne jemand anderes machen).
Aber ich bin da leidenschaftslos, bei den shellys gab's auch genügend Fürsprecher, die das "x_mqttcom" haben wollten. Wie dort sollte es aber möglichst durch die Namenswahl ans Ende gestellt werden (selber Name? (da selbe Funktion?!?)).

Gruß, Beta-User
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

bigtruite

#156
Sehr gerne fürs Feedback,

zu 1.
bei meinem Arilux LC-01 mit Tasmota 6.7.1 wird ein 6 stelliger Farbwert übermittelt. Folgender Publish aus der Tasmota Console...
13:10:17 MQT: stat/LED_Leiste/RESULT = {"POWER1":"on","Dimmer":100,"Color":"FF0000","HSBColor":"0,100,100","Channel":[100,0,0]}

bei meinem Arilux LC-06mit Tasmota 6.5.0.7 folgender Farbwert.... (wobei der RGB Farbe, WW und CW hat)
13:22:44 MQT: lc06/lc06/stat/RESULT = {"POWER":"ON","Dimmer":100,"Color":"00FF0000","HSBColor":"120,100,100","Channel":[0,100,0,0]}

das angeführte Problem hatte ich mit dem Arilux LC-01 mit Tasmota 6.7.1

zu 2.
ich sehe es anders, wenn es um spezielle Features geht... der eine will eine Updatefunktion drin haben. Der andere dies und jenes... aber hier geht es nur um ein Eingabefeld für gleichermaßen alle CMD Befehle.... damit erschlagen wir alles.... über die Namenswahl könnte man reden. Ich habe kein Shelly... Am Ende wäre gut... wie wäre es mit "x_command" oder von mir aus auch gerne "x_mqttcom", dann wäre es mit den Shellies gleich ?

grüße bigtruite


Zitat von: Beta-User am 13 Dezember 2019, 13:03:48
Vorab mal Danke für das feedback :)

Ad 1:
Danke für's Nachforschen.
Habe grade versucht, das für meine Maxcio YX-DE02 (template: tasmota_plug_with_rgb_split, Tasmota 7.1.2) anzupassen, da war schon etwas ratlos, warum das da nicht geklappt hatte. Ergebnis war aber auch negativ...
Allerdings ist da jsonMap mit im Spiel (es wird daher "state" statt "POWERx" verwendet) und der Tasmota liefert einen 8-stelligen Farbwert (mit 00 am Ende, das ist wohl die Opacity) zurück. Letzteres scheint scheint das eigentliche Problem zu sein, jedenfalls bei einem dunklen Hintergrund sieht man nichts; evtl. liefert bei dir Dimmer auch nichts verwertbares zurück (?), mit den jswonMap-"pct"-Werten aus dem anderen Template (tasmota_plug_with_rgb_split) klappt das jedenfalls auch wie im Wiki angegeben (wenn man das Reading manuell auf einen 6-stelligen Wert ändert), und auch der Code ist so wie im Wiki dargestellt.
Müßte man wohl mal auf Theo/das Tasmota-Team (weglassen bzw. senden des korrekten Werts in der firmware?) oder Andre zugehen, ob man da in Color.pm was ändern kann/sollte (das Wegkürzen der Info wäre aber vermutlich farbtechnisch falsch, wenn denn die "00" heute richtig ist...).

Ist das bei dir (noch) anders und du bekommst einen 6-Stelligen hex-Wert?

Grundsätzlich würde ich das template (wie alle Tasmotas) gerne auf die jsonMap-Variante umstellen, von daher wäre das dann gleich Teil einer größeren Lösung...

Ad 2:
Bin da gespalten. Einerseits ist es eine Vereinfachung für die, die das brauchen/wollen, andererseits ist es ein "erklärungsbedürftiger Setter" für den Rest der user. Neige daher dazu, das zur Vereinfachung aus den attrTemplates draußen zu halten. Es spricht aber überhaupt nichts dagegen, das im Wiki (mit Beispielen) aufzunehmen (das darf gerne jemand anderes machen).
Aber ich bin da leidenschaftslos, bei den shellys gab's auch genügend Fürsprecher, die das "x_mqttcom" haben wollten. Wie dort sollte es aber möglichst durch die Namenswahl ans Ende gestellt werden (selber Name? (da selbe Funktion?!?)).

Gruß, Beta-User

Beta-User

Hmm, zu der Tasmota-Stellenanzahl siehe https://github.com/arendst/Tasmota/wiki/Lights. Geht also vorrangig wohl darum, ob auch Weiß vorhanden ist. Muß mal hirnen, ob man dafür einen separaten Setter braucht/haben will und was der ggf. bewirkt. Irgendwie unschön (was den link zu Color.pm angeht).

Der Code in Color.pm geht auch davon aus, dass Dimmer auf 0 geht, wenn das Ding aus ist; daher funktioniert das mit dem Schalten (vermeintlich?) nicht? Muß mal checken, ob da in Zeile 501 eigentlich was ähnliches reingehört wie in Zeilen 443ff.

Was command angeht, hatte ich schon verstanden, dass das generisch gemeint war, habe aber zu wenig Erfahrung, um
a) sagen zu können, dass das Sinn macht (ich bezweifle das nach wie vor auch bei den shellys) und
b) ob es dasselbe ist (wenn ja, sollte man wenn, dann denselben Namen nehmen, wenn nein, grade anders rum....).

(Und du brauchst mich nicht vollst. zu zitieren bei Antworten; in der Regel editiere ich nichts nachträglich rum oder lösche Beiträge... (Voll-) Zitate machen m.E. ansonsten erst dann Sinn, wenn es sonst schwierig ist, den Kontekt zu erfassen, z.B. weil zu viel anderes dazwischengerutscht 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

bigtruite

Gut ich dachte die E-Mailbenachrichtungsfunktion geht nur wenn man zitiert. --> zur Kenntnis genommen. Wie müsste ich die Setlist manuell verändern, damit ich das Eingabefeld habe. 
   
off:noArg cmnd/LED_Leiste/POWER1 0
  on:noArg cmnd/LED_Leiste/POWER1 1
  toggle:noArg cmnd/LED_Leiste/POWER1 2
  Color:colorpicker,RGB cmnd/LED_Leiste/COLOR
  Dimmer:colorpicker,BRI,0,5,100 cmnd/LED_Leiste/DIMMER
  x_mqttcom:textField cmnd/LED_Leiste

Das neue rote klappt nicht. Was ist falsch?

sledge

Zitat von: 87insane am 12 Dezember 2019, 19:03:51
Naja...hab auch USB-Steckdosen. Da lädt einer großer Akku aber auch ewig dran. Bei denen SICHER auch. Für eine Nacht-Ladung, sicher gut aber nicht für mal eben schnell.

jsonMap gefällt mir :) Bin gespannt wie es am Ende genutzt wird.
Noch offen ist z.B. Shelly Dimmer. Da meldet sich leider auch keiner. Die meisten nutzen das umbiegen oder doppelte erfassen. Das Template steht aber noch aus.
Gleiches auch für "Alexa - Wohnzimmer weiß", bei Shelly im RGBW2 Template. Dabei kommt rot rauß. Shelly selber bzw. Teracomunications wissen auch nicht wie sie das hinbekommen sollen. Die Programmiere von denen baten offiziell um Hilfe  :o - Scheint mir ein wenig auf Alexa Seite oder Skill/Mapping Anpassung. Fhem kann das doch sicher! :)
Ich nutze zwar die Shelly RGBW2, aber eben nur mit weißen Stripes. Werde mir wohl mal einen RGB-Streifen besorgen müssen, dann kann ich mir das ja mal anschauen. Und auch ggf das Template korrigieren.
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

87insane

Zitat von: sledge am 13 Dezember 2019, 14:41:42
Ich nutze zwar die Shelly RGBW2, aber eben nur mit weißen Stripes. Werde mir wohl mal einen RGB-Streifen besorgen müssen, dann kann ich mir das ja mal anschauen. Und auch ggf das Template korrigieren.
Mega gut! Danke!

Gesendet von meinem LM-G810 mit Tapatalk


sledge

Zitat von: bigtruite am 13 Dezember 2019, 14:32:28
Gut ich dachte die E-Mailbenachrichtungsfunktion geht nur wenn man zitiert. --> zur Kenntnis genommen. Wie müsste ich die Setlist manuell verändern, damit ich das Eingabefeld habe. 
   

  x_mqttcom:textField cmnd/LED_Leiste

Das neue rote klappt nicht. Was ist falsch?
Schonmal die Setlist der Shelly angeschaut? Ist ja im template-File zu sehen.

Here we go:
x_mqttcom shellies/DEVICE/command $EVTPART1

Wobei ich das Feature nicht benötige, es mir aber auch egal ist.
FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

bigtruite

Ich finde die Readings aus stat/LED_Leiste/RESULT schon wichtig. Möchte sie definitiv nicht missen... Mir gehts nicht nur um POWER1...... bitte drinnen lassen.

Zitat von: Beta-User am 02 Dezember 2019, 17:50:25
Hallo zusammen,

Frage/Anregung allgemein zu Tasmota, nachdem ich so langsam aber sicher auch verstanden habe, wie das mit dem JSONMAPing funktioniert und das Thema hier hochkam:

Die Tasmota-Geräte verwenden in der Regel POWER1 für die Rückmeldung zum ersten Kanal. Häufig gibt der das Hauptreading wieder, sollte also optimalerweise nach "state" (entsprechend bei den mehrkanaligen "split"-Versionen dann für POWER2 usw.). Das wäre recht einfach mit JSONMAP zu machen, allerdings wäre das ein breaking change.
In der readingList wäre der Eintrag für RESULT zu ändern in
stat/sonoff3/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
und statt der stateFormat-Sache würde man
attr DEVICE jsonMap POWER1:statesetzen.
Wer es weiter wie bisher haben will, müßte dann stateFormat beibehalten und das jsonMap-Attribut löschen.

Ich tendiere dazu, das bei allen Tasmotas dann bei Gelegenheit so umzusetzen (evtl. mit zwei Converter-templates zum vereinfachten Umstellen), aber wenn es große Einwände gibt, gilt wie immer: Ihr bekommt, was ihr bestellt...

Grüße, Beta-User

Beta-User

Bei dem Shelly (shelly2rgbw_color) kapiere ich nicht recht, wo auf template-Seite das Problem sein könnte. Es gibt doch einen on-setter bzw. weiß-setter... Wenn es darüber geht, das Ding zu schalten, ist die Frage hier m.E. OT und irgendwo bei Sprachsteuerung zu führen. Wenn es Probleme gibt, darüber zu schalten, können wir überlegen, da was zu ändern, um bugs in der firmware zu kompensieren, aber das scheint ja nicht das Problem zu sein, oder?

(OT: der YX-irgendwas liefert jedenfalls nominal min. 4x so viel wie das Ladegerät, das grade fest verbaut ist... Sollte also eine Verbesserung sein, unabhängig davon, ob es eine gute Lösung ist. Außerdem wollte ich mal OTA-Tasmota-flashing testen :P , und da sah' das nach einem "interessanten" Gerät aus ::) .) 

Was das devStateIcon angeht: Zeile 499 in Color erweitern um/auf
... || $onoff && ::ReadingsVal($name,$onoff,undef) =~ m,off,i);
scheint das Problem mit on/off zu beheben, ohne dass man auf die Dimmer-Anzeige verzichten muß.

Zum jsonMap: Es bleiben alle nicht genannten Readings erhalten mit dem alten Namen. Nur POWER1 würde zu "state", was z.B. das mapping für Sprachsteuerung deutlich vereinfachen sollte (es gab früher Leute, die extra dafür ein userReadings angelegt haben...).
Erst bei dem 2. Kanal von mehrkanaligen wäre zu überlegen, ob man das Doppeln von Readings verhindert (mit "not-wanted-reading:0"). Prototyp dazu: der YX-DE...  ;) .

Zitat von: bigtruite am 13 Dezember 2019, 14:32:28
Das neue rote klappt nicht. Was ist falsch?
Wie von sledge bereits angemerkt: Es muß was übergeben werden (z.B. $EVTPART1). Vermutlich ist das aber nicht das, was du willst (ich vermute mehrere Leerzeichen-separierte Worte, wovon ein Teil zum Topictree gehört? Dann wäre eine umfangreiche Perl-Nachbearbeitung erforderlich => m.E. ein nogo, da für Nichtexperten komplett unverständlich, auch in der Anwendung...)

ZitatGut ich dachte die E-Mailbenachrichtungsfunktion geht nur wenn man zitiert. --> zur Kenntnis genommen.
Kann durchaus sein, aber jedenfalls ich nutze das Forum anders, und ein Vollzitat dürfte nicht erforderlich sein.
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

87insane

Was Alexa usw angeht hast du vermutlich recht wegen OT. Hier sind aber die, die es betrifft. An dem Modul für alexa muss nix geändert werden. Maximal am mapping und das wäre in meinen Augen wieder Template.

Gesendet von meinem LM-G810 mit Tapatalk