[gelöst - formatierung] Bug in Panel ?

Begonnen von Jamo, 07 November 2022, 21:33:21

Vorheriges Thema - Nächstes Thema

Jamo

Hallo Jens,
schau mal, ich glaube ich habe einen Bug gefunden im Panel. Für vocFlur <1000 ist alles OK, aber sobald vocFlur >= 1000 ist, wird die Zahl als 1 mit 3 Nachkommastellen interpretiert.
Also im Bild 1615 -> wird zu 1.615, dann wird auch der Farbkreis nicht mehr gefüllt. bei 900 ist alles OK, dann wird auch der kreis mit Orange gefuellt.

Hier das List mit den AppOptions, ich hoffe Du weisst was ich meine.
define AirQualityFlur dummy
attr AirQualityFlur appOptions { "name": "Flur", "panel": { "min":0, "max":1800, "status": ["vocFlur:1200:%n:%n:error","vocFlur:600:%n:%n.0:warning","vocFlur::%n:%n.0:success"] } }
attr AirQualityFlur comment list appOptions!= appOptions
attr AirQualityFlur devStateIcon none
attr AirQualityFlur event-on-change-reading state,vocFlur
attr AirQualityFlur group fhemapp
attr AirQualityFlur room System
attr AirQualityFlur userReadings vocFlur:.* {my $voc=ReadingsNum($name,'state',0);;my $text=$voc>1200?'schlecht - ':$voc>600?'mäßig - ':'gut - ';;return ReadingsNum($name,'state',0) . ' ppm - '.$text . ReadingsNum('RTC_Flur_Climate','measured-temp',0).'°C'}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

jemu75

Hallo,

ich habe mir den Quellcode mal angesehen. Normaler Weise sollte das wie gewünscht funktionieren. Deine Tempalte-Definition mit min und max passt ebenfalls.
Ich habe noch folgende Vermutung. Evtl. wird dein Reading vocFlur bereits formatiert zurückgegeben. Also wenn dein Reading bei Werten ab 1000 in FHEM folgendes anzeigt 1.000 wäre mir klar, weshalb das nicht funktioniert. Kannst du bitte mal prüfen, was genau in dem Reading in FHEM bei Werten größer 1000 angezeigt wird.

Grüße
Jens  :)

Jamo

Hallo Jens,
ganz komisch. Selbst wenn ich nur die Zahl 1234 im userreading zurueckgebe, also "userReadings vocFlur:.* {return 1234 }", bekomme ich den effekt. Siehe Bild und list:
Internals:
   FUUID      6086ebb1-f33f-97bf-8d73-bba587c8484bdeec
   NAME       AirQualityFlur
   NR         2832
   STATE      1600
   TYPE       dummy
   eventCount 285
   READINGS:
     2022-11-09 08:27:23   state           1600
     2022-11-09 08:27:23   vocFlur         1234
   hmccu:
Attributes:
   appOptions { "name": "Flur", "panel": { "min":0, "max":1800, "status": ["vocFlur:1200:%n:%n:error","vocFlur:600:%n:%n.0:warning","vocFlur::%n:%n.0:success"] } }
   comment    list appOptions!= appOptions
   devStateIcon none
   event-on-change-reading state
   group      fhemapp
   room       System
   userReadings vocFlur:.* {return 1234 }
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

Hallo Jens, wenn ich anstatt  %n ein %i  nehme, funktionierts, also in meinem Thread ganz oben dann folgende appOptions:appOptions { "name": "Flur", "panel": { "min":0, "max":1800, "status": ["vocFlur:1200:%s:%i:error","vocFlur:600:%s:%i:warning","vocFlur::%s:%i:success"] } }
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

jemu75

Hi,

man sollte in der Statusdefinition beachten, wie die Werte formatiert werden.
Mit der Ersetzung %n wird der Wert des Reading in einen Zahlenwert je nach eingestellter Language formatiert. Für die Sprache deutsch werden Zahlenwerte mit Tausenderpunkt und Komma ausgegeben.

Beispiel:
Wert des Reading in FHEM: 1234.567
Ersetzung %n (Reading als Zahl ohne Nachkommastellen) -> 1.234
Ersetzung %n.3 (Reading als Zahl mit 3 Nachkommastellen) -> 1.234,567
Ersetzung %s (Reading als Zeichenkette wie in FHEM) -> 1234.567
Ersetzung %i1 (Reading wird um 1 inkrememtiert) -> 1235.567

Wichtig bei der Definition ist, dass der Parameter level nicht formatiert werden darf. Also bei level solltest du mit %s (statt %i) arbeiten. Siehe hierzu auch die Dokumentation (Ersetzungsmöglichkeiten)

Beste Grüße
Jens  :)

Jamo

#5
Hi Jens,
danke, das haben wir (also Du) ja dann geloest! - bei mir steht language auf Englisch.
Schon wieder was gelernt.
Beste Gruesse!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack