FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dodger am 22 November 2021, 08:54:27

Titel: userreading korrekt? Wie anzeigen lassen?
Beitrag von: Dodger am 22 November 2021, 08:54:27
Hi,

ich habe echt ziemlich Verständnis-Probleme bei der Erstellung der FHEM Konfiguration....
Ich hab zwar bereits mehrere Räume, lese Daten aus der Wärmepumpe, den FritzDect-Elementen, dem Wechselrichter und habe MQTT am Laufen, aber irgendwie habe ich das Gefühl, es war immer nur Glück....

Aktuell hänge ich an dem Problem, dass ich ein userReading erstellen möchte.
Die FritzDect-Steckdosen geben die Temperatur folgendermaßen aus:
18.0 C (measured)

Ich woll jetzt das "(measured)" loswerden bzw. nur den Temperaturwert haben.
Dazu habe ich folgendes userReading Attribut angelegt:
attr  FBDECT_FritzBox_08761_0095798 userReadings FritzDect_WaMa_Temp:(temperature) {substr(ReadingsVal("FBDECT_FritzBox_08761_0095798","temperature","00.0),0,4) ." °C"}
wenn ich alles richtig verstanden haben, dann bedeutet:

Stimmt das so?

Wie kann man das prüfen? Wo wird der Wert des Attributs angezeigt?
Im Device taucht das zwar als userReading auf, aber ich sehe nirgends ein Ergebnis....

Gruß
Dodger
Titel: Antw:userreading korrekt? Wie anzeigen lassen?
Beitrag von: TomLee am 22 November 2021, 09:05:56
Nimm einfach ReadingsNum:

ZitatReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet und ggf. mit 0 aufgefüllt, wenn <round> größer ist als die Anzahl der Dezimalstellen.

Und der trigger in Klammern ist meiner Meinung nach nicht richtig:

attr  FBDECT_FritzBox_08761_0095798 userReadings FritzDect_WaMa_Temp:temperature {ReadingsNum($name,'temperature','00.0').' °C'}

Gruß

Thomas
Titel: Antw:userreading korrekt? Wie anzeigen lassen?
Beitrag von: Dodger am 22 November 2021, 09:13:15
Super, das hilft mir schonmal weiter.
Das userReading wird nun auch angezeigt.

Aber noch eine Frage:
wann wird es aktualisiert?
Eigentlich doch, wenn das Reading FBDECT_FritzBox_08761_0095798.temperature aktualisiert wird?
Oder nur, wenn sich der Wert dieses Readings ändert?
Wenn ich den Parameter ":temperature" weglasse, wird das userReading dann jedesmal aktualisiert, wenn ein reading von diesem device stattfindet?

Gruß
Dodger
Titel: Antw:userreading korrekt? Wie anzeigen lassen?
Beitrag von: TomLee am 22 November 2021, 09:41:55
ZitatEigentlich doch, wenn das Reading FBDECT_FritzBox_08761_0095798.temperature aktualisiert wird?
Oder nur, wenn sich der Wert dieses Readings ändert?

Es wird aktualisiert wenn es ein Event bei temperature gibt und das ist wiederum abhängig wie oft FBDECT_FritzBox das sendet, mit den event-on-.* Attributen kann man das beeinflussen, falls die Hardware es zu gut meint.

ZitatWenn ich den Parameter ":temperature" weglasse, wird das userReading dann jedesmal aktualisiert, wenn ein reading von diesem device stattfindet?

Korrekt.
Titel: Antw:userreading korrekt? Wie anzeigen lassen?
Beitrag von: Dodger am 22 November 2021, 11:57:24
Hoffentlich letzte Frage dazu:
wenn ich mir das Ganze jetzt als Werte Anzeigenlassen will, dann habe ich dafür folgendes define erzeugt:
defmod FritzTemp readingsGroup FBDECT_FritzBox_.*:<%temp_temperature>,<hier sollen die Namen rein>,FritzDect_WaMa_Temp|FritzDect_Wohnzimmer_Temp|FritzDect_Kind1_Temp|FritzDect_Kind2_Temp

Die Anzeige ist dann eine Liste, die in etwa so aussieht:
TempIcon 25,2°C
TempIcon 28,2°C
TempIcon 22,2°C
TempIcon 24,2°C

Ich hätte gerne, dass die so aussieht:
TempIcon WaMa 25,2°C
TempIcon Wohnzimmer 28,2°C
TempIcon Kind1 22,2°C
TempIcon Kind2 24,2°C

Ich hab jetzt schon ganz viele Sachen mit dem Teil <hier sollen die Namen rein> ausprobiert, aber ich bekomme den Namen immer an allen Zeile angezeigt.

Wie kann ich die Namen pro Zeile definieren?

Gruß
Dodger
Titel: Antw:userreading korrekt? Wie anzeigen lassen?
Beitrag von: ph1959de am 22 November 2021, 12:39:13
Ich glaube, du machst es dir unnötig schwer dadurch, dass Du in den Namen Deines userReading den Devicenamen mit reingenommen hast. Nenn das Ding überall gleich (meineTemp oder sonstwas), dann sollest Du in der readingsGroup mit

defmod FritzTemp readingsGroup <Name>,<Temperatur> FBDECT_FritzBox_.*:name,meineTemp

Dein gewünschtes Ergebnis bekommen.