Guten Morgen,
ich möchte meine ASC ein wenig beschleunigen und bin der Meinung der Brighnesssensor sendet nicht oft genug, weil er halt so eingestellt ist.
Da ich den batterieverbrauch nicht unnötig steigern will, wollte ich ihn Fhem zu gewissen Zeiten, einen Event zu einen Readingswert regelmässig selbst erzeugen.
Ich habe da an event-min-interval in Zusammenarbeit mit event-on-change reading gedacht, das funktioniert aber nicht. Eine alternative war ein at (ich habe es aber nicht hinbekommen, den Readingswert aus zulesen und wieder einzufügen (stattdessen war der Wert, dann Readingsval...). Dieses at ist sowieso Plan B.
Hier mal ein nachgestelltes Dummy, dass eigentlich alle 10 Sekunden ein event erzeugen müsste.
Internals:
FUUID 64adcb28-f33f-c8fc-8423-62cb6283c35d941f
NAME du.test
NR 6874
STATE ???
TYPE dummy
eventCount 1
READINGS:
2023-07-11 23:35:57 readingname 2
Attributes:
event-min-interval .*:10
event-on-change-reading .*
Hat da jemand einen Tipp. Es gibt ältere Beiträge im Forum zu diesem Thema, da sehe ich dann aber keine Lösung und lt. Wiki zu event-min-interval, müsste obiges funktioneren.
Vielen Dank
Guido Fett
Mit
event-min-interval
bist du auf dem Holzweg, diese Attributfamilie setzt voraus, dass es überhaupt ein event gibt, erzeugt wird aber keines.
Also entweder ein at definieren, oder ggf mal einen Blick auf readingsWatcher werfen (weiß aber nicht, ob sich das mehrfach ohne externes event einsetzen lässt....).
Kann man in dem at nicht ein trigger absetzen?
Vielen Dank soweit,
readingswatcher kann ich nicht - aber der scheint mir nicht in der Lage zu ein, ein event mit dem existierenden readingswert zu erzeugen... - zumindest nach der Doku nicht.
Ich habe dass auch mit at und setreading und trigger versucht. Trigger funktioniert, aber der Readingswert wird nicht neu gepostet (und das ist anscheinend ein Problem für ASC).
Bei setreading klappt es, allerdings schreibe ich mir "{ReadingsVal("Sens.multi.eg.wz","luminance","0")}" in den Readingswert - und nicht den ausgelesenen Wert.
Wahrscheinlich am einfachsten über setreading zu fixen - ich habe schon ein paar Alternativen durch - sie schreiben allerdings alle nicht den derzeitigen Readingswert wieder ins Reading.
define at.sens.luminance.trigger at +*00:05:00 setreading Sens.multi.eg.wz luminance {ReadingsVal("Sens.multi.eg.wz","luminance","0")};; trigger Sens.multi.og.flur luminance
# COMMAND setreading Sens.multi.eg.wz luminance {ReadingsVal("Sens.multi.eg.wz","luminance","0")}; trigger Sens.multi.og.flur luminance
# DEF +*00:05:00 setreading Sens.multi.eg.wz luminance {ReadingsVal("Sens.multi.eg.wz","luminance","0")}; trigger Sens.multi.og.flur luminance
# FUUID 64adbc4a-f33f-c8fc-72be-e326eeeba5fd9728
# NAME at.sens.luminance.trigger
# NR 6674
# NTM 09:36:20
# PERIODIC yes
# RELATIVE yes
# REP -1
# STATE Next: 09:36:20
# TIMESPEC 00:05:00
# TRIGGERTIME 1689406580.1756
# TRIGGERTIME_FMT 2023-07-15 09:36:20
# TYPE at
# eventCount 834
# READINGS:
# 2023-07-15 09:32:11 state Next: 09:36:20
#
setstate at.sens.luminance.trigger Next: 09:36:20
setstate at.sens.luminance.trigger 2023-07-15 09:32:11 state Next: 09:36:20
Viele Grüße
Guido Fett
Probiere es mal so:
define at.sens.luminance.trigger at +*00:05:00 {fhem ("setreading Sens.multi.eg.wz luminance ReadingsNum("Sens.multi.eg.wz","luminance",0); trigger Sens.multi.og.flur luminance")}
Sofern Du im Zieldevice ein
attr Sens.multi.eg.wz event-on-change-reading .*
definiert hast, musst Du noch ergänzen:
attr Sens.multi.eg.wz event-on-update-reading luminance
Dann wir auch wieder ein event erzeugt.
Das mit dem trigger könnte dann entbehrlich sein. Hängt aber von der restlichen Konfiguration der jeweiligen devices ab.
Zitat von: fettgu am 15 Juli 2023, 09:39:21Wahrscheinlich am einfachsten über setreading zu fixen - ich habe schon ein paar Alternativen durch - sie schreiben allerdings alle nicht den derzeitigen Readingswert wieder ins Reading.
Wenn Du es richtig machst, funktioniert es auch.
Wo ist denn das Problem?
defmod test_at at +*00:00:15 setreading <device> <reading> [<device>:<reading>]
<device> und <reading> musst Du an beiden Stellen auf Deine Bedürfnisse anpassen.
Also den Namen des device und den Namen des reading.
Und lass diese dämlichen event-on-irgendwas Attribute einfach weg, solange Du nicht verstanden hast, dass das FILTER sind und keine ERZEUGER.
Danke. Die setreading Variante hat funktioniert. Ich hatte dies schon einmal probiert, aber offensichtlich einen Fehler drin.
Mich hatte dieser Wiki Eintrag irritiert
Zitathttps://wiki.fhem.de/wiki/Event-min-interval
Die erste Zeile in der Tabelle hat bei mir wohl nicht funktioniert
Guido Fett