FHEM Forum

FHEM => Automatisierung => Thema gestartet von: PNinBB am 24 Mai 2023, 20:12:50

Titel: [gelöst] setreading ohne Event
Beitrag von: PNinBB am 24 Mai 2023, 20:12:50
Ich habe viele Perl-Routinen in diversen 'at' bzw. 'notify' und in diesen Routinen verschiedene 'setreading....', um entsprechende Werte in den Geräte- bzw. Dummy-Readings zu speichern.
'setreading' generiert bei der Ausführung ein Event, das ich entsprechend weiterverwenden kann. In manchen Fällen ist es unerwünscht.
Frage: kann ich - beispielsweise - in einem
fhem ("setreading du_Ausflug par1 0");das Erzeugen eines Events unterbinden ?
Gesucht habe ich natürlich schon in vielen Dokumenten, aber nichts passendes gefunden.
Danke im Voraus und schönen Abend.
Peter
Titel: Aw: setreading ohne Event
Beitrag von: Icinger am 24 Mai 2023, 20:24:42
Das geht am leichtesten mit

$rv = readingsSingleUpdate($hash, $reading, $value, $do_trigger);
Siehe auch https://wiki.fhem.de/wiki/DevelopmentModuleAPI#readingsSingleUpdate (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#readingsSingleUpdate)
Titel: Aw: setreading ohne Event
Beitrag von: betateilchen am 24 Mai 2023, 20:29:09
Dazu muss man aber den $hash haben.

Das hier funktioniert auch:

{my $t=TimeNow();; fhem("setstate testDevice $t testReading testWert")}
Titel: Aw: setreading ohne Event
Beitrag von: PNinBB am 25 Mai 2023, 06:53:43
Danke und Guten Morgen !
@ Icinger: 'readingsSingleUpdate' habe ich auch gefunden, bin aber nicht an '$hash' gekommen.
@ betateilchen: funktioniert bestens, ich habe es auch einmal mit 'setstate' versucht, aber ich habe nicht gründlich genug gelesen. Habe es nun auch im "Kleingedruckten" in der Commandref gelesen.
Peter
Titel: Aw: setreading ohne Event
Beitrag von: betateilchen am 25 Mai 2023, 09:04:19
Zitat von: PNinBB am 25 Mai 2023, 06:53:43'readingsSingleUpdate' habe ich auch gefunden, bin aber nicht an '$hash' gekommen.

Naja, wirklich komplizierter ist das auch nicht:

{my $hash=$defs{'testDevice'};; readingsSingleUpdate($hash,'testReading','testWert',0)}
Es setzt halt ein paar tiefere Kenntnisse darüber voraus, wie FHEM intern funktioniert. Im Gegensatz dazu hat man 'setstate' zumindest schonmal gesehen, wenn man sich die "raw definition" eines devices mal angeschaut hat. Da kann man schön abschauen.