[gelöst]MQTT2-Device Sonoff - Darstellung

Begonnen von hartwiestein, 27 August 2020, 14:45:50

Vorheriges Thema - Nächstes Thema

hartwiestein

Hallo zusammen,

ich stehe noch ganz am Anfang mit FHEM und muss noch einiges lernen.

Mit meinem aktuellen Problem komme ich trotz intensiver Recherche nicht zu einer Lösung (vielleicht auch die falschen Suchbegriffe?!).

In dem Status des Sonoff-Schalters ist Folgendes enthalten:
1. ein kleiner grüner oder roter Punkt je nachdem, ob eine Verbindung besteht -> CHECK
2. in grüner Schrift und als Link ausgeführt, der beim drauf klicken an oder aus schaltet: aktuell: 3.0 W Tag: 0.03 kWh Gestern: 0.000 kWh Gesamt: 0.0330 kWh
3. dahinter in schwarzer Schrift: uptime: 0T00:20:17 aktuell: 3.0 W Tag: 0.03 kWh Gestern: 0.000 kWh Gesamt: 0.0330 kWh

Muss der Text aus 2. da wirklich stehen? :o


Vielen Dank für Eure Hilfe, ich gehe davon aus, dass ich einfach etwas total einfaches übersehe.

Ich habe FHEM (und den RPi) von Grunde auf neu installiert, nachdem ich ein paar Probleme mit dem RaspberryPi hatte.
Davor meine ich war da einfach eine Glühlampe, an der ich ein- oder ausschalten konnte.

Folgend ein List des Device:
Internals:
   CFGFN     
   CID        DVES_507199
   DEF        DVES_507199
   DEVICETOPIC MQTT2_DVES_507199
   FUUID      * GESCHWÄRZT *
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_MSGCNT 12
   MQTT2_SERVER_TIME 2020-08-27 14:36:10
   MSGCNT     12
   NAME       MQTT2_DVES_507199
   NR         1788
   STATE      aktuell: 3.0 W Tag: 0.03 kWh Gestern: 0.000 kWh Gesamt: 0.0330 kWh
   TYPE       MQTT2_DEVICE
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   OLDREADINGS:
   READINGS:
     2020-08-27 14:36:10   ENERGY_ApparentPower 11
     2020-08-27 14:36:10   ENERGY_Current  0.046
     2020-08-27 14:36:10   ENERGY_Factor   0.25
     2020-08-27 14:36:10   ENERGY_Period   0
     2020-08-27 14:36:10   ENERGY_Power    3
     2020-08-27 14:36:10   ENERGY_ReactivePower 11
     2020-08-27 14:36:10   ENERGY_Today    0.033
     2020-08-27 14:36:10   ENERGY_Total    0.033
     2020-08-27 14:36:10   ENERGY_TotalStartTime 2020-08-24T08:21:36
     2020-08-27 14:36:10   ENERGY_Voltage  238
     2020-08-27 14:36:10   ENERGY_Yesterday 0.000
     2020-08-27 14:36:10   LoadAvg         19
     2020-08-27 14:23:40   SaveData        on
     2020-08-27 14:23:40   SetOption26     on
     2020-08-27 14:36:10   Sleep           50
     2020-08-27 14:36:10   SleepMode       Dynamic
     2020-08-27 14:23:39   StateText1      off
     2020-08-27 14:23:39   StateText2      on
     2020-08-27 14:23:40   StateText3      toggle
     2020-08-27 14:23:40   StateText4      hold
     2020-08-27 14:36:10   Time            2020-08-27T14:36:09
     2020-08-27 14:36:10   Uptime          0T00:15:17
     2020-08-27 14:36:10   Vcc             3.148
     2020-08-27 14:36:10   Wifi_AP         1
     2020-08-27 14:36:10   Wifi_BSSId      * GESCHWÄRZT *
     2020-08-27 14:36:10   Wifi_Channel    6
     2020-08-27 14:36:10   Wifi_Downtime   0T00:00:05
     2020-08-27 14:36:10   Wifi_LinkCount  1
     2020-08-27 14:36:10   Wifi_RSSI       26
     2020-08-27 14:36:10   Wifi_SSId       * GESCHWÄRZT *
     2020-08-27 14:23:39   attrTemplateVersion 20200801
Attributes:
   IODev      MQTT2_SERVER
   autocreate 0
   comment    NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/home/cmnd/KG/sonoff02/test/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   devStateIcon {my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1")); my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot"; "<div><a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($state)."</a>$text<b></b>"}
   icon       hue_filled_outlet
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
   model      tasmota_POW
   readingList home/tele/KG/sonoff02/test/LWT:.* LWT
  home/tele/KG/sonoff02/test/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/tele/KG/sonoff02/test/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/tele/KG/sonoff02/test/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/tele/KG/sonoff02/test/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/stat/KG/sonoff02/test/POWER1:.* state
  home/stat/KG/sonoff02/test/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       MQTT2_DEVICE
   setList    off:noArg    home/cmnd/KG/sonoff02/test/POWER1 0
  on:noArg     home/cmnd/KG/sonoff02/test/POWER1 1
  toggle:noArg home/cmnd/KG/sonoff02/test/POWER1 2
   setStateList on off toggle
   stateFormat {sprintf("aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1"))}
   webCmd     :

t1me2die

Dein stateFormat von dem Device ist für die Darstellung dieser Informationen zuständig.

Beta-User

Hmm,

vorab mal herzlich willkommen im Forum!

Das ist nicht so beabsichtigt... Eigentlich sollte das wieder das Symbol werden, sobald "state" bekannt ist, also nach der ersten Schaltung. Das scheint aber nicht der Fall zu sein - hier ist aber das Reading state gar nicht vorhanden, warum auch immer.
Bin etwas am Rätseln, woran das liegen könnte; eigentlich sollte die Info über den POWER1-Topic kommen. Hast du da ggf. was auf dem ESP umkonfiguriert oder ist das eine ältere Tasmota-Version? (meine Testgeräte waren 8.irgendwas; die Umstellung auf $state ist allerdings das letzte, was ich an dem attrTemplate verändert hatte, kann auch sein, dass das auf was anderes zugreift als ich bei der Umstellung nach dem Testen angenommen hatte (nämlich STATE)...)

@t1me2die: Diese Doppelung gab es schon immer; die ist eigentlich afaik nicht das Problem.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

t1me2die

@Beta-User: hartwiestein fragte doch:
Muss der Text aus 2. da wirklich stehen? :o

So habe ich die Frage auch verstanden?
Sein stateFormat steht in der Übersicht im Raum und das störte ihn?

Außerdem gefällt mir das "webCmd" nicht so richtig?
Fehlt da was?

Trag dort mal ein:
attr MQTT2_DVES_507199 webCmd ON:OFF

Gruß

hartwiestein

Vielen Dank für die Antworten.
Ich probiere es mal mit dem Tasmota aktualisieren. Hatte fälschlich angenommen, dass tasmota.info irgendwie offiziell sei, aber das ist es wohl nicht. Da ist auf jeden Fall in der Anleitung dann wohl eine alte Firmware drin.

Etwas geändert habe ich nämlich (schon allein mangels Können) nicht.

hartwiestein


Beta-User

@t1me2die: Die Frage habe ich gehört, und dass stateFormat STATE "füllt", ist auch keine Neuigkeit.

Seine (und daran anknüpfend meine) Frage war aber, warum da kein _Symbol_ mehr _zusätzlich_ steht (so war es definitiv früher und so sollte es auch wieder sein).

Und das liegt vermutlich daran, dass das Reading "state" nicht aktualisiert wird (oder daran, dass meine Änderung im attrTemplate Mist war). Um das zu beheben, könnte man auch das jsonMap entsprechend ändern, dann erhält man vermutlich in jedem Fall ein klickbares Symbol. Da gibt es aber einen Haken (darum steht das auf ":0"), und aus diesem Grund würde ich gerne erfahren, warum über den POWER-_topic_ keine Info kommt. (tasmota.info ist "irgendeine" Quelle, und die Links auf das offizielle Repo scheinen teilweise kaputt zu sein).

(Und wer mag, kann schon on:off (!) in webCmd eintragen, ich sehe nur keinen Mehrwert, zwei Symbole in der Raumansicht zu haben, wenn eines für diese Funktionalität ausreichend ist - unterstellt, devStateIcon tut was es soll ;) ).

Zitat von: hartwiestein am 27 August 2020, 15:19:09
Vielen Dank  :)
Gerne, vor allem, wenn man eine (bis auf die Tasmota-Versionsinfo) vollständige und nachvollziehbare Fehlerbeschreibung bekommt ;) . Vorbildlich!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hartwiestein

#7
Also zunächst noch einmal vielen Dank für Eure Hilfe.
Tasmota habe ich aktualisiert (wenn es einmal drauf ist, ist das ja ein Kinderspiel  8)  endlich kann ich auch mal was ohne größere Recherche  :D )
Die Version ist jetzt:
Tasmota Version 8.4.0(tasmota)
Build-Datum & -Uhrzeit 2020.07.29 12:19:21
Core-/SDK-Version 2_7_2_1/2.2.2-dev(38a443e)


Ich habe das Device gelöscht und über autocreate von dem MQQTT2-Server neu anlegen lassen.
Dann das template für sonoff_POW "drübergebügelt" und leider ist es immer noch so wie vorher.
Anstatt Symbol (und der Anzeige uptime: 0T00:20:17 aktuell: 3.0 W Tag: 0.03 kWh Gestern: 0.000 kWh Gesamt: 0.0330 kWh)
habe ich die Anzeige ab "aktuell" doppelt. Ich habe mal ein Bild angefügt (Ich selbst kann besser gucken, als denken  :P )

Internals:
   CFGFN     
   CID        DVES_507199
   DEF        DVES_507199
   DEVICETOPIC MQTT2_DVES_507199
   FUUID      * geschwärzt *
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_MSGCNT 38
   MQTT2_SERVER_TIME 2020-08-27 21:22:17
   MSGCNT     38
   NAME       MQTT2_DVES_507199
   NR         588
   STATE      aktuell: 3.0 W Tag: 0.05 kWh Gestern: 0.000 kWh Gesamt: 0.0520 kWh
   TYPE       MQTT2_DEVICE
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   OLDREADINGS:
   READINGS:
     2020-08-27 21:22:17   ENERGY_ApparentPower 9
     2020-08-27 21:22:17   ENERGY_Current  0.036
     2020-08-27 21:22:17   ENERGY_Factor   0.31
     2020-08-27 21:22:17   ENERGY_Period   0
     2020-08-27 21:22:17   ENERGY_Power    3
     2020-08-27 21:22:17   ENERGY_ReactivePower 8
     2020-08-27 21:22:17   ENERGY_Today    0.052
     2020-08-27 21:22:17   ENERGY_Total    0.052
     2020-08-27 21:22:17   ENERGY_TotalStartTime 2020-08-24T08:21:36
     2020-08-27 21:22:17   ENERGY_Voltage  238
     2020-08-27 21:22:17   ENERGY_Yesterday 0.000
     2020-08-27 21:17:12   FallbackTopic   cmnd/DVES_507199_fb/
     2020-08-27 21:17:12   GroupTopic      home/cmnd/sonoffs/test/
     2020-08-27 21:22:17   Heap            26
     2020-08-27 21:17:12   Hostname        KG/sonoff02-4505
     2020-08-27 21:17:12   IPAddress       * geschwärzt *
     2020-08-27 21:17:12   LWT             Online
     2020-08-27 21:22:17   LoadAvg         19
     2020-08-27 21:17:12   Module          Sonoff Pow R2
     2020-08-27 21:22:17   MqttCount       1
     2020-08-27 21:17:12   RestartReason   Software/System restart
     2020-08-27 21:15:06   SaveData        on
     2020-08-27 21:15:06   SetOption26     on
     2020-08-27 21:22:17   Sleep           50
     2020-08-27 21:22:17   SleepMode       Dynamic
     2020-08-27 21:15:05   StateText1      off
     2020-08-27 21:15:05   StateText2      on
     2020-08-27 21:15:05   StateText3      toggle
     2020-08-27 21:15:05   StateText4      hold
     2020-08-27 21:22:17   Time            2020-08-27T21:22:17
     2020-08-27 21:22:17   Uptime          0T00:05:09
     2020-08-27 21:22:17   UptimeSec       309
     2020-08-27 21:17:12   Version         8.4.0(tasmota)
     2020-08-27 21:17:12   WebServerMode   Admin
     2020-08-27 21:22:17   Wifi_AP         1
     2020-08-27 21:22:17   Wifi_BSSId      * geschwärzt *
     2020-08-27 21:22:17   Wifi_Channel    1
     2020-08-27 21:22:17   Wifi_Downtime   0T00:00:03
     2020-08-27 21:22:17   Wifi_LinkCount  1
     2020-08-27 21:22:17   Wifi_RSSI       96
     2020-08-27 21:22:17   Wifi_SSId       * geschwärzt *
     2020-08-27 21:22:17   Wifi_Signal     -52
     2020-08-27 21:15:05   attrTemplateVersion 20200801
     2020-08-27 21:17:30   state           on
Attributes:
   IODev      MQTT2_SERVER
   autocreate 0
   comment    NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/home/cmnd/KG/sonoff02/test/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   devStateIcon {my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1")); my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot"; "<div><a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($state)."</a>$text<b></b>"}
   icon       hue_filled_outlet
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
   model      tasmota_POW
   readingList home/tele/KG/sonoff02/test/LWT:.* LWT
  home/tele/KG/sonoff02/test/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/tele/KG/sonoff02/test/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/tele/KG/sonoff02/test/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/tele/KG/sonoff02/test/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  home/stat/KG/sonoff02/test/POWER1:.* state
  home/stat/KG/sonoff02/test/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       MQTT2_DEVICE
   setList    off:noArg    home/cmnd/KG/sonoff02/test/POWER1 0
  on:noArg     home/cmnd/KG/sonoff02/test/POWER1 1
  toggle:noArg home/cmnd/KG/sonoff02/test/POWER1 2
   setStateList on off toggle
   stateFormat {sprintf("aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1"))}
   webCmd     :


Edith sagt: "list" angehängt

TomLee

Du musst einfach nur stateFormat löschen und einmal das Device schalten, dann wird das Lampen-Icon dargestellt.

Gruß

Thomas

Beta-User

...das wäre eine Lösung...

Die andere (update der template-file folgt bei Gelegenheit) - wieder den früheren Stand des devStateIcon-Codes verwenden:
attr DEVICE devStateIcon {my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1")); my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off");"<div><a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light)."</a>$text<b></b>"}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hartwiestein

Zitat von: TomLee am 28 August 2020, 00:28:50
Du musst einfach nur stateFormat löschen und einmal das Device schalten, dann wird das Lampen-Icon dargestellt.

Gruß

Thomas

Vielen Dank! Ich habe es ausprobiert und es funktioniert.

Zitat von: Beta-User am 28 August 2020, 09:02:48
...das wäre eine Lösung...

Die andere (update der template-file folgt bei Gelegenheit) - wieder den früheren Stand des devStateIcon-Codes verwenden:


Die Lösung habe ich auch ausprobiert und bleibe dabei. Wirkt für MICH irgendwie "runder".

Danke an alle Helfenden! Nicht selbstverständlich!

Beta-User

Danke für die Rückmeldung - auch hier: vorbildlich!

Zu 100% fehlt noch: [gelöst] (1. Beitrag editieren). Bitte den Thread aber nicht schließen (das haben in der letzten Zeit wieder ein paar Neulinge gemacht; sehr ärgerlich, weil da - im Gegensatz zu hier - durchaus noch Anlaß zu Anmerkungen gewesen wäre. Wobei: Hier kann mich ggf. jemand _irgendwann_ daran erinnern, dass das angekündigte update noch aussteht, sollte mir das entfallen ;) ).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors