Formatierung der Temeratur und Feuchtigkeitsanzeige

Begonnen von walter56, 11 Juni 2014, 11:59:46

Vorheriges Thema - Nächstes Thema

walter56

Hallo zusammen :)
Ich stehe gerade wieder mal etwas auf dem Schlauch! :-\
Ich verwende das Temeratur Modul HM-WDS40-TH-I dies liefert mir die Temeratur und die relative Feuchtigkeit in dem Format T: 30.9 H: 44
Die Temeraturanzeige habe ich in einer Zeile im Format 30.9°C hinbekommen :). Nur bei der Feuchtigkeit, die ich auch in einer eigenen Zeile haben möchte, habe ich Probleme! Die Anzeige ändert sich nicht dh es findet kein refrech statt ???.

efine wg_Temp CUL_HM 239xxx
attr wg_Temp .devInfo 030100
attr wg_Temp .stc 70
attr wg_Temp IODev COC
attr wg_Temp actCycle 000:15
attr wg_Temp actStatus unknown
attr wg_Temp alias Temperatur Wintergarten
attr wg_Temp autoReadReg 5
attr wg_Temp device_timeout 10
attr wg_Temp expert 2_full
attr wg_Temp firmware 1.3
attr wg_Temp group Wintergarten
attr wg_Temp icon temp_temperature
attr wg_Temp model HM-WDS40-TH-I
attr wg_Temp peerIDs
attr wg_Temp room Wintergarten
attr wg_Temp serialNr KEQ085xxxx
attr wg_Temp stateFormat temperature °C
attr wg_Temp subType THSensor

define wg_Feucht dummy
attr wg_Feucht alias Luftfeuchtigkeit Wintergarten
attr wg_Feucht fm_type state
attr wg_Feucht group Wintergarten
attr wg_Feucht icon temperature_humidity
attr wg_Feucht room Wintergarten
attr wg_Feucht stateFormat {sprintf("%.1f",ReadingsVal("wg_Temp","humidity",0))." %";;}


Scheinbar hängt es an der letzen Zeile? ::)
attr wg_Feucht stateFormat {sprintf("%.1f",ReadingsVal("wg_Temp","humidity",0))." %";;}

Der Wert wird nicht übernommen bzw ändert sich nicht! :-[

Kann mir jemand sagen was ich falsch mache oder wie ich vorgehen kann? :-[


Vielen Dank & Gruß Walter
Raspberry Pi mit HMLAN & EnOcean: Eltako FUD14, FB dect: DECT 200,HomeMatic: HM-LC-Bl1PBU-FM, HM-SWI-3-FM,HM-CC-RT-DN, HM-Sen-MDIR-O,HM-WDS10-TH-O, HM-WDS40-TH-I
Abfragen: Solarlog, Telefon, Internet Radio, TTS und abfrage verschiedenen Interenseiten HTTPMO

betateilchen

stateformat wird nur ausgeführt, wenn sich state des gleichen (!) device ändert. Das ist bei Deinem Feuchtigkeitsdummy niemals der Fall, deshalb wird stateformat nicht aufgerufen.

Eigentlich hast Du doch in den readings Deines Sensors die beiden Messwerte temperature und humidity auch einzeln, da brauchst Du doch nur jeweils die Einheit dahinterschreiben?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Elektrolurch

oder Du verwendest eine readingsGroup für die Darstellung. Da kannst Du ein- oder mehrzeilig, und über das attr valueFormat Deine Darstellung beliebig gestalten, auch mit Farbe.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

betateilchen

Dafür braucht man readingsGroup *würg* mit Sicherheit nicht, da es einfach zwei readings ein und desselben Devices sind.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

stateFormat wird immer dann ausgewertet wenn sich ein beliebiges reading desjenigen device ändert für das stateFormat definiert ist. nicht nur state. aber eben nicht device übergreifend.

wenn die anforderung ist in der raum ansicht beide readings untereinander jeweils auf einer eigenen zeile darzustellen geht das entweder über dummys und notify (nicht stateFormat!, oder readingsProxy, aber das läuft hier auf das gleiche raus) oder eben readingsGroup. und über keinen anderen weg. auch wenn beide readings zum gleichen device gehören.

dummys und werte hin und her kopieren ist in der regel keine gute lösung. schau dir readingsGroup an. die meisten schaffen das ganz ohne vomex.

gruss
  andre

ps: ein weblink mit rss bildchen beider werte zählt nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Bennemannc

Hallo,

also ich nutze die Readings vom device selber und mache nur ein stateFormat "Temperatur: temperature °C <br> Feuchtigkeit: humidity %".
Das <br> macht einen Zeilenumbruch - dass das bei stateFormat geht hat mich selbst ein wenig überrascht, aber das geht super.
Alternative ist ein cloneDummy und dann da jeweils mit stateFormat das entsprechende Reading formatieren.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

walter56

Hallo zusammen :)

Hallo betateilchen:
Erst mal Danke für die schnelle Antwort :D, auch wenn ich nicht alles verstanden habe! ???
Zitatstateformat wird nur ausgeführt, wenn sich state des gleichen (!) device ändert. Das ist bei Deinem Feuchtigkeitsdummy niemals der Fall, deshalb wird stateformat nicht aufgerufen
Ist OK leuchtet nach etwas nachdenen ein! ;)  Aber die den zweiten Satz bekomme ich nicht ganz auf die Reihe.  :-[ Wo und wie soll ich was dahinterschreiben? :-\

Zu readingsGroup: Ich werde mir das mal ausführlich anschauen, im Wiki ist das erstmal zuviel Info da brauche ich etwas Zeit. (Scheint eine mächtige Funktion zu sein!) ::)

Hallo Bennemannc: Dies läuchtet mir ein. Passt aber nicht ganz zu meiner restlichen Formatierung! Ich habe es eben mal ausprobiert! Sonst wäre dies die beste Lösung! ;)
Gruß Walter
Raspberry Pi mit HMLAN & EnOcean: Eltako FUD14, FB dect: DECT 200,HomeMatic: HM-LC-Bl1PBU-FM, HM-SWI-3-FM,HM-CC-RT-DN, HM-Sen-MDIR-O,HM-WDS10-TH-O, HM-WDS40-TH-I
Abfragen: Solarlog, Telefon, Internet Radio, TTS und abfrage verschiedenen Interenseiten HTTPMO

Bennemannc

Hallo Walter,

bleibt ja noch die zweite angegebene Möglichkeit mit cloneDummy. Das cloned das Device mit allen Readings. Beim Original dann "stateFormat Temperatur: temperature °C" und beim clone "stateFormat Feuchtigkeit: humidity %". Für den Clone kann ich auch ein eigenes Icon wählen - eben alles machen, was auch am original möglich ist.
Ich arbeite mit clonedummy für andere Gruppierungen im Dashboard.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

justme1968

das kopieren von readings ist unnötiger overhead und sollte vermieden werden wenn immer es geht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chq

Zitat von: betateilchen am 11 Juni 2014, 12:49:29
Dafür braucht man readingsGroup *würg* mit Sicherheit nicht, da es einfach zwei readings ein und desselben Devices sind.

Bedeutet das im Umkehrschluss, dass man einen Zeilensprung innerhalb von stateFormat definieren kann?

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

fiedel

Zitat von: chq am 12 Juli 2018, 07:30:06
Bedeutet das im Umkehrschluss, dass man einen Zeilensprung innerhalb von stateFormat definieren kann?

Gruß Chris

Laut diesem Post sollte das so sein.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

chq

Ok, das funktioniert.

Was ich noch immer leider nicht hinbekommen habe ist, bei der Temperaturanzeige den Punkt durch ein Komma zu ersetzen.

Aktuelles stateFormat:

{sprintf("%.1f"."°",ReadingsVal("Zahnbuerste","AM2301_Temperature",0))}

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Vize


chq

Danke.

Werd's mal hiermit probieren und berichten:

{sprintf("%.1f"."°",ReadingsVal("Zahnbuerste","AM2301_Temperature",0)); $val =~ s/\./,/; return $val;}

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

chq

Das war wohl nix.  :-\

Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 31427) line 1.

Hm.
So einfach wie möglich, so kompliziert wie nötig