Event regelmäßig erzeugen

Begonnen von fettgu, 15 Juli 2023, 08:29:00

Vorheriges Thema - Nächstes Thema

fettgu

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

Beta-User

Mit
event-min-intervalbist 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....).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jhohmann

Kann man in dem at nicht ein trigger absetzen?
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

fettgu

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

Nobbynews

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 luminanceDann 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.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fettgu

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