FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: M.Piet am 03 August 2020, 13:15:56

Titel: **ERLEDIGT** Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: M.Piet am 03 August 2020, 13:15:56
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">

Titel: Antw:Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: Eisix am 03 August 2020, 14:48:41
Hallo,

mach mal


data-get="relay0"


dazu, vielleicht hilft das.

Gruß
Eisix
Titel: Antw:Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag 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">

Titel: Antw:Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: TWART016 am 04 August 2020, 00:31:16
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
Titel: Antw:Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag 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     :
Titel: Antw:Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: TWART016 am 04 August 2020, 14:10:27
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"
Titel: Antw:**ERLEDIGT** Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: M.Piet am 20 August 2020, 07:46:24
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.
Titel: Antw:**ERLEDIGT** Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: amenomade am 21 August 2020, 00:21:03
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"
Titel: Antw:**ERLEDIGT** Widget Switch: Status wird erst nach einem Betätigen angezeigt
Beitrag von: M.Piet am 21 August 2020, 07:23:31
Super, danke für die Ausführliche Antwort! :) Jetzt habe ich es prima verstanden.