Hallo,
ich habe userreadings in einem Device erstellt, aber diese werden nicht automatisch in ein Filelog übernommen, wenn die Readings erstellt werden. event-on-change-reading ist eingestellt. Das triggernde reading erscheint im filelog, das userreading aus dem gleichen Devise nicht?
Wie könnte ich diese userreadings in ein Filelog bekommen?
matze
Wie immer: ein Copy for Forum wäre aufschlussreich...
Zitat von: Beta-User am 21 Januar 2026, 18:36:29Vielleicht der Versuch einer noch etwas anderen Beschreibung:
Wenn gesetzt, unterdrückt "event-on-change-reading" (aka eocr) alle Events (genauer: den trigger für die Erneuerung des Reading-Werts), es sei denn, der Reading-Name würde auf ein Element einer - durch komma-separierte regex-Ausdrücke beschriebenen - Liste matchen.
Das zuerst passende Element der "in order of apperance" durchlaufenden Liste beschreibt abschließend, auf welche Unterschiedlichkeit der Reading-Wert zu prüfen ist (insbesondere, falls ein threshold gesetzt ist).
Daher triggert nichts anderes mehr, wenn man genau einen Reading-Namen gesetzt hatte (völlig unabhängig davon, ob es den überhaupt gibt).
Hier Auszüge aus dem Device:
define DVES_201194 MQTT2_DEVICE DVES_201194
...
attr DVES_201194 event-on-change-reading MISCALEV126f889_Weight, MGewicht, JGewicht
...
attr DVES_201194 userReadings MGewicht { my $r = ReadingsVal("DVES_201194","MISCALEV126f889_Weight",undef);; return undef if !defined($r) || $r < 80;; return $r;; },\
JGewicht { my $r = ReadingsVal("DVES_201194","MISCALEV126f889_Weight",undef);; return undef if !defined($r) || $r >= 60;; return $r;; }\
attr DVES_201194 verbose 2
# CID DVES_201194
# DEF DVES_201194
# FUUID 689224a6-f33f-214e-778f-7a6b427cade68ea8
# IODev myBroker
# LASTInputDev myBroker
# MSGCNT 4
# NAME DVES_201194
# NR 992
# STATE 93.90 kg
# TYPE MQTT2_DEVICE
# myBroker_CONN myBroker_192.168.1.85_57885
# myBroker_MSGCNT 4
# myBroker_TIME 2026-01-25 11:42:39
# READINGS:
# 2026-01-25 00:58:13 JGewicht 29.55
...
# 2026-01-25 11:42:39 MGewicht 93.90
..-
# 2026-01-25 01:02:36 MISCALEV126f889_Weight 93.90
setstate DVES_201194 93.90 kg
setstate DVES_201194 2026-01-25 00:58:13 JGewicht 29.55
..
setstate DVES_201194 2026-01-25 11:42:39 MGewicht 93.90
...
setstate DVES_201194 2026-01-25 01:02:36 MISCALEV126f889_Weight 93.90
hier das Fillog dazu
defmod Waage.File FileLog ./log/Waage-%Y.log DVES_201194:MISCALEV126f889_Weight:.*|DVES_201194:MGewicht:.*|DVES_201194:JGewicht:.*
Hallo,
Die Bedienungsanleitung sagt:
Zitat von: commandrefevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von Readings. Statt Reading kann auch ein regulärer Ausdruck verwendet werden. Wenn gesetzt, erzeugen nur Veränderungen der gelisteten Readings ein Ereignis. Wenn die aktualiserten Werte der gelisteten Readings identisch sind, wird kein Ereignis generiert.
Wenn hinter dem Namen eines Readings eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.
Und nicht:
ZitatDieses Attribut enthält eine durch Kommata und Leerzeichen getrennte Liste von Readings.
Da Du nur ein (echtes) Event (MISCALEV126f889_Weight) zulässt und die userReadings keine Trigger-Angabe haben, werden die Werte nur einmal ins FileLog geschrieben.
Sobald Du in eocr aber ein weiteres (echtes) Reading ergänzt und Du keine Trigger-Reading in den userReadings ergänzt, wird auch für dieses Reading dann ein Event erzeugt und die userReadings zweimal ins FileLog geschrieben. usw.
Gruß Thomas
das Leerzeichen wars!, ich muss noch viel lernen, oder mich besser konzentrieren, vielen Dank!
so gehts richtig:
attr DVES_201194 event-on-change-reading MISCALEV126f889_Weight,MGewicht,JGewicht
matze