[devStateIcon] Problem mit stateFormat / devStateIcon

Begonnen von Christoph Morrison, 30 Januar 2021, 19:12:31

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Hallo zusammen,

ich habe so eine Withings Smart Body Analyzer (was auch immer an dem Ding Smart ist). Ich habe den SMBA über das Withings-Modul eingebunden.

32_withings.pm 22993 2020-10-20 08:22:30Z moises

Soweit kommen Daten (zeitnah) an, aber ich bekomme den STATE nicht ordentlich formatiert:


Internals:
   .https     https
   CFGFN     
   DEF        3757535
   Device     3757535
   DeviceType Body Scale
   FUUID      60110c92-f33f-a67d-9fe8-a0fe02699a358824
   IODev      general.interfaces.withings
   LAST_DATA  2021-01-30 18:00:12
   LAST_POLL  2021-01-30 18:53:52
   NAME       house.firstfloor.bath.scale.withings
   NR         30923
   NTFY_ORDER 50-house.firstfloor.bath.scale.withings
   STATE      25.6 °C, 573 ppm
   SUBTYPE    DEVICE
   TYPE       withings
   created    1432046884
   fw         1721
   lastsessiondate 1612026816
   lastweighindate 1610362647
   location   51.9293,8.37784
   model      Smart Body Analyzer
   modelID    4
   sn         SN-00:24:e4:32:53:4a
   status     0
   typeID     1
   .attraggr:
   .attrminint:
   Helper:
     DBLOG:
       batteryPercent:
         general.system.log.db:
           TIME       1612029232.90169
           VALUE      67
       batteryState:
         general.system.log.db:
           TIME       1612029232.90169
           VALUE      ok
       co2:
         general.system.log.db:
           TIME       1612027433.35991
           VALUE      573
       lastSessionDate:
         general.system.log.db:
           TIME       1612029232.90169
           VALUE      2021-01-30 18:13:36
       lastWeighinDate:
         general.system.log.db:
           TIME       1612029232.90169
           VALUE      2021-01-21 11:57:27
       state:
         general.system.log.db:
           TIME       1611733962.16528
           VALUE      528
       temperature:
         general.system.log.db:
           TIME       1612027433.34348
           VALUE      25.6
   OLDREADINGS:
   READINGS:
     2021-01-30 18:53:53   .lastData       1612026013
     2021-01-30 18:53:52   .pollData       1612029232
     2021-01-30 18:53:52   .pollProperties 1612029232
     2021-01-30 18:53:52   batteryPercent  67
     2021-01-30 18:53:52   batteryState    ok
     2021-01-30 18:00:12   co2             573
     2021-01-30 18:53:52   lastSessionDate 2021-01-30 18:13:36
     2021-01-30 18:53:52   lastWeighinDate 2021-01-21 11:57:27
     2021-01-30 18:00:12   temperature     25.6
Attributes:
   IODev      general.interfaces.withings
   alias      Withings Body Smart Analyzer
   group      Luftqualität
   icon       withings.scale@black
   room       OG->Bad
   stateFormat temperature °C, co2 ppm


erzeugt als STATE wie erwartet

STATE      25.6 °C, 573 ppm

angezeigt wird mir das Device aber wie im Anhang. Warum?




rudolfkoenig

Bei mir schaut es wie im Anhang aus, wenn ich die gezeigten Attribute / Definition uebernehme.
Da ich kein withings.scale Icon habe, habe ich eine Andere genommen.
=> Ich kann das Problem nicht nachstellen.

Das statt STATE angezeigte Icon kommt mir nicht bekannt vor, jedenfalls finde ich es nicht im FHEM/www/images.
Ich wuerde mit Rechte-Maustaste => Inspect anfangen, um rauszufinden wo es herkommt.

Christoph Morrison

Zitat von: rudolfkoenig am 31 Januar 2021, 11:47:35
Bei mir schaut es wie im Anhang aus, wenn ich die gezeigten Attribute / Definition uebernehme.
Da ich kein withings.scale Icon habe, habe ich eine Andere genommen.
=> Ich kann das Problem nicht nachstellen.

Sobald ich das Icon withings.svg lösche oder auch nur umbenenne, bekomme ich auch den STATE korrekt angezeigt. Ist das Icon vorhanden, benutzt jedes Device vom Type withings automatisch das dSI withings.svg. Das ist jetzt auch erstmal mein würgaround.

Zitat von: rudolfkoenig am 31 Januar 2021, 11:47:35
Das statt STATE angezeigte Icon kommt mir nicht bekannt vor, jedenfalls finde ich es nicht im FHEM/www/images.
Ich wuerde mit Rechte-Maustaste => Inspect anfangen, um rauszufinden wo es herkommt.

Das Icon kommt aus einem withings-Iconpack, der im Icons-Thread mal verlinkt wurde. Ich habe aber mal testweise das Icon fhemSVG/markinse_in.svg (zufallswahl) nach fhemSVGwithings.svg kopiert und schon wird das als dSI angezeigt, obwohl sich der STATE nicht verändert hat.

Das kannst du ja mal ausprobieren.

Um noch einen weiteren Fall auszuprobieren, habe ich mal folgendes Attribut für meinen SMBA gesetzt (wieder Zufallswahl):
attr house.firstfloor.bath.scale.withings devStateIcon .+:rc_VOLDOWN

Das überschreibt nun das Default-dSI.

Kurzum: Irgendwas sorgt dafür, dass withings-Devices automatisch withings.svg als festen dSI zugewiesen bekommen, wenn kein explizites dSI gesetzt ist.

Christoph Morrison

Das Verhalten scheint nicht aus 32_withings, sondern vom devStateIcon-Handling zu kommen:

Testdefinition:
defmod general.test.dummy dummy

Dazu habe ich mal dummy.svg angelegt:
$ ll *dummy.svg*
lrwxrwxrwx 1 fhem dialout 14 Jan 31 15:25 dummy.svg -> logo_apple.svg


Ergebnis siehe Anhang.

rudolfkoenig

Stimmt: STATE wird durch ein Icon ersetzt, falls was passendes gefunden wurde.

Es wird gesucht nach NAME.STATE, NAME, TYPE.STATE, TYPE.
Wobei STATE jeweils erst mit eventMap-Uebersetzung, und dann ohne Uebersetzung geprueft wird.

Christoph Morrison

Zitat von: rudolfkoenig am 01 Februar 2021, 09:43:55
Stimmt: STATE wird durch ein Icon ersetzt, falls was passendes gefunden wurde.

Es wird gesucht nach NAME.STATE, NAME, TYPE.STATE, TYPE.
Wobei STATE jeweils erst mit eventMap-Uebersetzung, und dann ohne Uebersetzung geprueft wird.

Naja, aber das sollte doch nicht das explizit gesetzte devStateIcon überschreiben, oder?

xenos1984

Was passiert denn mit folgendem:

attr general.test.dummy devStateIcon .+:this_icon_does_not_exist

Also wenn explizit ein nicht existierendes Icon gesetzt wird? Das sollte den unveränderten STATE liefern.