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
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)
Dazu muss man aber den $hash haben.
Das hier funktioniert auch:
{my $t=TimeNow();; fhem("setstate testDevice $t testReading testWert")}
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
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.