**ERLEDIGT** Widget Switch: Status wird erst nach einem Betätigen angezeigt

Begonnen von M.Piet, 03 August 2020, 13:15:56

Vorheriges Thema - Nächstes Thema

M.Piet

Hallo Zusammen,

ich nutze das Widget "Switch", um die Pool-Pumpe manuell an- und auszuschalten. Das funktioniert an sich auch super.
Aber sobald ich die Seite in TBUI neu lade, oder aus einem anderem Menü auf die Seite komme, wird mir der Status des Buttons grau angezeigt (siehe Screenshot). Er nach einem einmaligem betätigen des Buttons wird der Status mir richtig angezeigt (rot=aus / grün = an).

Mache ich was falsch oder ist das normal?

data-type="switch"
data-device="MQTT2_shelly1pm_68C63AFAD753"
data-set-states='["relay0 on","relay0 off"]'
data-states='["relay0 off","relay0 on"]'
data-icons='["fa-home", "fa-home"]'
data-background-colors='["red", "green"]'
class="bigger top-space">


Eisix

Hallo,

mach mal


data-get="relay0"


dazu, vielleicht hilft das.

Gruß
Eisix

M.Piet

Hallo,

leider nein. Es gibt keine Veränderung.

data-type="switch"
data-device="MQTT2_shelly1pm_68C63AFAD753"
data-get="relay0"
data-set-states='["relay0 on","relay0 off"]'
data-states='["relay0 off","relay0 on"]'
data-icons='["fa-home", "fa-home"]'
data-background-colors='["red", "green"]'
class="bigger top-space">


TWART016

Zitat von: M.Piet am 03 August 2020, 15:35:55
Hallo,

leider nein. Es gibt keine Veränderung.

data-type="switch"
data-device="MQTT2_shelly1pm_68C63AFAD753"
data-get="relay0"
data-set-states='["relay0 on","relay0 off"]'
data-states='["relay0 off","relay0 on"]'
data-icons='["fa-home", "fa-home"]'
data-background-colors='["red", "green"]'
class="bigger top-space">


Mach bitte mal ein list in fhem
list MQTT2_shelly1pm_68C63AFAD753

M.Piet

Sehr gern. :)

Internals:
   CID        shelly1pm_68C63AFAD753
   DEF        shelly1pm_68C63AFAD753
   DEVICETOPIC MQTT2_shelly1pm_68C63AFAD753
   FUUID      5ecec9f6-f33f-8a41-d4b0-28bcac58dc2c7241
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 49277
   MQTT2_FHEM_Server_TIME 2020-08-04 08:30:41
   MSGCNT     49277
   NAME       MQTT2_shelly1pm_68C63AFAD753
   NR         401
   STATE      on
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-07-01 08:01:54   ext_temperature_0 16.4
     2020-08-04 08:30:41   ext_temperature_1 19.6
     2020-07-01 08:01:54   ext_temperature_f_0 61.6
     2020-08-04 08:30:41   ext_temperature_f_1 67.2
     2020-08-02 10:30:57   fw_ver          20200312-124223/v1.6.1@112262fd
     2020-08-02 10:30:57   id              shelly1pm-68C63AFAD753
     2020-08-04 08:30:41   input0          0
     2020-08-02 10:30:57   ip              192.168.92.51
     2020-08-03 20:30:23   loadState       on
     2020-08-02 10:30:57   mac             68C63AFAD753
     2020-08-02 10:30:57   new_fw          true
     2020-08-02 10:30:57   online          true
     2020-08-04 08:30:41   overtemperature 0
     2020-08-04 08:30:41   relay0          on
     2020-08-04 08:30:41   relay_0_energy  513274
     2020-08-04 08:30:09   relay_0_energy_total 4455228
     2020-08-04 08:30:41   relay_0_kWh     8.55
     2020-08-04 08:30:41   relay_0_power   183.78
     2020-08-04 08:30:41   state           on
     2020-08-04 08:30:41   temperature     41.43
     2020-08-04 08:30:41   temperature_f   106.57
Attributes:
   IODev      MQTT2_FHEM_Server
   comment    To get appropriate loadState values: Change the default limit "100" in readingList to your needs.
   devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false"?"10px-kreis-rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "10px-kreis-gelb" : "10px-kreis-gruen";; my $light = ReadingsVal($name,"state","off");; my $cons = ReadingsVal($name,"relay_0_power","unknown");; my $total = ReadingsVal($name,"relay_0_kWh","unknown");; my $temp = ReadingsVal($name,"temperature","-100");;"<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 / Total: $total/ Temp: $temp °C</div>"}
   event-on-change-reading .*
   model      shelly1_w_energy_meassuring
   readingList shellies/shelly1pm-68C63AFAD753/relay/0:.* state
  shellies/shelly1pm-68C63AFAD753/relay/0:.* relay0
  shellies/shelly1pm-68C63AFAD753/input/0:.* input0
  shellies/shelly1pm-68C63AFAD753/online:.* online
  shellies/announce:.* { $EVENT =~ m,..id...shelly1pm-68C63AFAD753...mac.*, ? json2nameValue($EVENT) : undef }
  shellies/shelly1pm-68C63AFAD753/announce:.* { json2nameValue($EVENT) }
  shellies/shelly1pm-68C63AFAD753/relay/0/power:.* relay_0_power
  shellies/shelly1pm-68C63AFAD753/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : undef }
  shellies/shelly1pm-68C63AFAD753/temperature:.* temperature
  shellies/shelly1pm-68C63AFAD753/overtemperature:.* overtemperature
  shellies/shelly1pm-68C63AFAD753/relay/0/energy:.* relay_0_energy
  shellies/shelly1pm-68C63AFAD753/relay/0/energy:.* {'relay_0_kWh' => sprintf("%.2f",$EVENT/60/1000)}
  shellies/shelly1pm-68C63AFAD753/longpush/0:.* longpush_0
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature/0:.* ext_temperature_0
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature_f/0:.* ext_temperature_f_0
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature/1:.* ext_temperature_1
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature_f/1:.* ext_temperature_f_1
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/temperature_f:.* temperature_f
   room       MQTT2_DEVICE,Pool
   setList    relay0:on,off,toggle shellies/shelly1pm-68C63AFAD753/relay/0/command $EVTPART1
  off:noArg shellies/shelly1pm-68C63AFAD753/relay/0/command off
  on:noArg shellies/shelly1pm-68C63AFAD753/relay/0/command on
  x_update:noArg shellies/shelly1pm-68C63AFAD753/command update_fw
  x_mqttcom shellies/shelly1pm-68C63AFAD753/command $EVTPART1
   userReadings relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum("$name","relay_0_energy",0)}
   webCmd     :

TWART016

Zitat von: M.Piet am 04 August 2020, 08:32:38
Sehr gern. :)

Internals:
   CID        shelly1pm_68C63AFAD753
   DEF        shelly1pm_68C63AFAD753
   DEVICETOPIC MQTT2_shelly1pm_68C63AFAD753
   FUUID      5ecec9f6-f33f-8a41-d4b0-28bcac58dc2c7241
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 49277
   MQTT2_FHEM_Server_TIME 2020-08-04 08:30:41
   MSGCNT     49277
   NAME       MQTT2_shelly1pm_68C63AFAD753
   NR         401
   STATE      on
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-07-01 08:01:54   ext_temperature_0 16.4
     2020-08-04 08:30:41   ext_temperature_1 19.6
     2020-07-01 08:01:54   ext_temperature_f_0 61.6
     2020-08-04 08:30:41   ext_temperature_f_1 67.2
     2020-08-02 10:30:57   fw_ver          20200312-124223/v1.6.1@112262fd
     2020-08-02 10:30:57   id              shelly1pm-68C63AFAD753
     2020-08-04 08:30:41   input0          0
     2020-08-02 10:30:57   ip              192.168.92.51
     2020-08-03 20:30:23   loadState       on
     2020-08-02 10:30:57   mac             68C63AFAD753
     2020-08-02 10:30:57   new_fw          true
     2020-08-02 10:30:57   online          true
     2020-08-04 08:30:41   overtemperature 0
     2020-08-04 08:30:41   relay0          on
     2020-08-04 08:30:41   relay_0_energy  513274
     2020-08-04 08:30:09   relay_0_energy_total 4455228
     2020-08-04 08:30:41   relay_0_kWh     8.55
     2020-08-04 08:30:41   relay_0_power   183.78
     2020-08-04 08:30:41   state           on
     2020-08-04 08:30:41   temperature     41.43
     2020-08-04 08:30:41   temperature_f   106.57
Attributes:
   IODev      MQTT2_FHEM_Server
   comment    To get appropriate loadState values: Change the default limit "100" in readingList to your needs.
   devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false"?"10px-kreis-rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "10px-kreis-gelb" : "10px-kreis-gruen";; my $light = ReadingsVal($name,"state","off");; my $cons = ReadingsVal($name,"relay_0_power","unknown");; my $total = ReadingsVal($name,"relay_0_kWh","unknown");; my $temp = ReadingsVal($name,"temperature","-100");;"<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 / Total: $total/ Temp: $temp °C</div>"}
   event-on-change-reading .*
   model      shelly1_w_energy_meassuring
   readingList shellies/shelly1pm-68C63AFAD753/relay/0:.* state
  shellies/shelly1pm-68C63AFAD753/relay/0:.* relay0
  shellies/shelly1pm-68C63AFAD753/input/0:.* input0
  shellies/shelly1pm-68C63AFAD753/online:.* online
  shellies/announce:.* { $EVENT =~ m,..id...shelly1pm-68C63AFAD753...mac.*, ? json2nameValue($EVENT) : undef }
  shellies/shelly1pm-68C63AFAD753/announce:.* { json2nameValue($EVENT) }
  shellies/shelly1pm-68C63AFAD753/relay/0/power:.* relay_0_power
  shellies/shelly1pm-68C63AFAD753/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : undef }
  shellies/shelly1pm-68C63AFAD753/temperature:.* temperature
  shellies/shelly1pm-68C63AFAD753/overtemperature:.* overtemperature
  shellies/shelly1pm-68C63AFAD753/relay/0/energy:.* relay_0_energy
  shellies/shelly1pm-68C63AFAD753/relay/0/energy:.* {'relay_0_kWh' => sprintf("%.2f",$EVENT/60/1000)}
  shellies/shelly1pm-68C63AFAD753/longpush/0:.* longpush_0
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature/0:.* ext_temperature_0
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature_f/0:.* ext_temperature_f_0
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature/1:.* ext_temperature_1
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/ext_temperature_f/1:.* ext_temperature_f_1
shelly1pm_68C63AFAD753:shellies/shelly1pm-68C63AFAD753/temperature_f:.* temperature_f
   room       MQTT2_DEVICE,Pool
   setList    relay0:on,off,toggle shellies/shelly1pm-68C63AFAD753/relay/0/command $EVTPART1
  off:noArg shellies/shelly1pm-68C63AFAD753/relay/0/command off
  on:noArg shellies/shelly1pm-68C63AFAD753/relay/0/command on
  x_update:noArg shellies/shelly1pm-68C63AFAD753/command update_fw
  x_mqttcom shellies/shelly1pm-68C63AFAD753/command $EVTPART1
   userReadings relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum("$name","relay_0_energy",0)}
   webCmd     :


Probier es mal so:
data-type="switch"
data-device="MQTT2_shelly1pm_68C63AFAD753"
data-cmd="setreading"
data-set-states='["relay0 on","relay0 off"]'
data-get="relay0"
data-states='["off","on"]'
data-icons='["fa-home", "fa-home"]'
data-background-colors='["red", "green"]'
class="bigger top-space"

M.Piet

Zitat von: TWART016 am 04 August 2020, 14:10:27
Probier es mal so:
...
Hey, sorry für die späte Rückmeldung.
Habe es grad eben so umgesetzt und es geht. :) Danke dir.

Aber...ich habe mir die Unterschiede angeschaut. Ich verstehe nicht warum es so geht und mit meiner Variante nicht.

amenomade

Mit data-get="relay0"
data-states='["relay0 off","relay0 on"]'
guckst Du ob das Reading relay0 den Wert "relay0 on" oder "relay0 off" hat. Im Reading relay0 steht aber "on" oder "off" ohne das zusätzlich Wort "relay0"

Mit data-set-states='["relay0 on","relay0 off"]'
steuerst Du dein Gerät mit "set xxx relay0 on" und "set xxx relay0 off", abhängig von was oben gelesen wurde.

Mit data-get="relay0"
data-states='["off","on"]'
liest TWART im Reading relay0 die Werte "on" oder "off"
und mitdata-cmd="setreading"
data-set-states='["relay0 on","relay0 off"]'
steuert er mit "setreading xxx relay0 on"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

M.Piet

Super, danke für die Ausführliche Antwort! :) Jetzt habe ich es prima verstanden.