FHEM Forum

FHEM => Automatisierung => Thema gestartet von: alanblack am 29 Januar 2022, 21:02:32

Titel: NOTIFYDEV - wie weit optimieren?
Beitrag von: alanblack am 29 Januar 2022, 21:02:32
Hallo zusammen,

ich schaue mir immer mal wieder meine bestehenden Konstrukte an, ob nicht - schon immer oder durch die Weiterentwicklung von FHEM - Optimierungen möglich sind hinsichtlich Vereinfachung und/oder Laufzeit.

Da bin ich neulich über https://forum.fhem.de/index.php?topic=115414.0 (https://forum.fhem.de/index.php?topic=115414.0) gestolpert und las später https://forum.fhem.de/index.php/topic,19019.msg127173.html#msg127173 (https://forum.fhem.de/index.php/topic,19019.msg127173.html#msg127173).

Da habe ich mir meine notifies vorgenommen und festgestellt, dass bei knapp 40% kein NOTIFYDEV gesetzt war. Zum Glück fand ich auch https://forum.fhem.de/index.php/topic,64449.msg556908.html#msg556908 (https://forum.fhem.de/index.php/topic,64449.msg556908.html#msg556908). Damit konnte ich die meisten meiner ca. 450 notifies so umstellen, dass NOTIFYDEV gesetzt wurde. Aktuell sind noch sieben notifies nicht umgestellt, aber die mittlere Systemlast ist um ca. 3-4% gegenüber vorher gesunken. Auch sind die Reaktionszeiten spürbar kürzer.

Jetzt frage ich mich, ob es Sinn macht, die letzten sieben auch noch umzustellen. Denn diese sind so weit gefasst, dass ich entweder mehrere notifies brauche, um ein vorhandenes zu ersetzen oder mir irgendwelche anderen Konstrukte überlegen muss. Das sind notifies wie
.*:[Bb]attery:.* oder
(AA|.G)_.*_(Tuer.|PIR.|Fenster.):(open|closed|motion|on-old-for-timer.*)


Gibt es eine Möglichkeit, so etwas abzuschätzen oder gar zu messen? Gibt es einen "FHEM-Benchmark"?

Grüße
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Damian am 30 Januar 2022, 11:30:09
Auch hier gab es letztens eine Diskussion: https://forum.fhem.de/index.php/topic,125381.0.html dazu, ich habe für mein Modul eine Messung durchgeführt, die Ergebnisse und deren Bedeutung kannst du in weiteren Posts des Threads lesen.
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Jamo am 30 Januar 2022, 11:52:28
Du kannst Dir auch deine watchdogs und sequence anschauen.
count TYPE=notify
count TYPE=notify:FILTER=NOTIFYDEV~.+
list TYPE=notify:FILTER=NOTIFYDEV!~.+ DEF
list TYPE=watchdog:FILTER=NOTIFYDEV!~.+ DEF
list TYPE=sequence:FILTER=NOTIFYDEV!~.+ DEF


.*:[Bb]attery:.* und ähnliches hatte ich auch - Ich habe mir dann überlegt, ob und wann ein event + notify wirklich notwendig ist.
Events + notify habe ich nur noch für die Sachen die ich entweder loggen will, oder wo sofort die Information über die Statusänderung gebraucht wird (Schalter/Bewegungsmelder/Alarm/Fensterstatus/presence etc).

Den Rest habe ich durch ein 'at' ersetzt. Also ein ''at'', was alle 10 minuten triggered, und dann werden nur noch 1 mal alle 10 minuten die Informationen geupdatet die nicht Zeitkritisch sind wie Innenraumtemperatur, Aussentemperatur, Lichtstärke, Co2-Luftqualität, Lampenstatus bei Abwesenheit, Verbrauch bei Abwesenheit, etc. Die entsprechenden Events werden dann durch entsprechendes ändern des event-on-change-reading (eocr) also auch nicht mehr generiert. Mal in den Eventmonitor schauen, und den mal eine Stunde laufen lassen - benötigt man die ganzen Events wirklich?

Batterien frage ich rundum für alle Batteriebetriebenen Devices 1 x Mittags ab, und lasse mich dann 1 x am Tag informieren - das notify fällt damit weg.
(AA|.G)_.*_(Tuer.|PIR.|Fenster.):(open|closed|motion|on-old-for-timer.*) - sowas habe ich dann in der Tat komplett ausgeschrieben . . .

PS: was ist 'on-old-for-timer' ?
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: rudolfkoenig am 30 Januar 2022, 12:11:28
ZitatGibt es eine Möglichkeit, so etwas abzuschätzen oder gar zu messen?
Man kann die "problematischen" notifies temporaer entfernen, und die Systemauslastung messen.

ZitatGibt es einen "FHEM-Benchmark"?
Mir ist sowas nicht bekannt, und wie es in diesem Fall helfen koennte, auch nicht.

NOTIFYDEV zu "optimieren" (d.h. den Regexp solange umzubauen, bis NOTIFYDEV gesetzt wird) lohnt sich dann, wenn FHEM subjektiv zaeh ist oder deswegen Probleme wie Verbindungsabbrueche auftauchen, man eine Menge von notifies/FileLogs/etc hat (d.h. 100+), und performantere Hardware keine Option ist.

Die 4% durchschnittliche Systemlast Ersparnis ist irrefuehrend: in Peaks (d.h. wenn Nachrichten gehaeuft erzeugt werden) kann die Optimierung durchaus einen groesseren Unterschied ausmachen.
Ich selbst wuerde die letzten 7 notifies aber nicht mehr optimieren, NOTIFYDEV ist nur bei der Menge relevant.

Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: alanblack am 30 Januar 2022, 17:27:44
Zitat von: Damian am 30 Januar 2022, 11:30:09
Auch hier gab es letztens eine Diskussion: https://forum.fhem.de/index.php/topic,125381.0.html dazu, ich habe für mein Modul eine Messung durchgeführt, die Ergebnisse und deren Bedeutung kannst du in weiteren Posts des Threads lesen.
Den hatte ich noch nicht gefunden. Danke!

Zitat von: Jamo am 30 Januar 2022, 11:52:28
.*:[Bb]attery:.* und ähnliches hatte ich auch - Ich habe mir dann überlegt, ob und wann ein event + notify wirklich notwendig ist.
[...]
Den Rest habe ich durch ein 'at' ersetzt. Also ein ''at'', was alle 10 minuten triggered, und dann werden nur noch 1 mal alle 10 minuten die Informationen geupdatet [...]
Ich fürchte, dass einige Sachen, die bei mir derzeit noch events generieren, umgebaut auf ein AT *+00:10:00 das System dann alle 10 Minuten zu sehr bremsen würden.
ZitatMal in den Eventmonitor schauen, und den mal eine Stunde laufen lassen - benötigt man die ganzen Events wirklich?
Das ist schon ziemlich optimiert dort. Es ist halt die Masse aus gut 200 physikalische Geräten, ca. 450 notifies...

Zitat
PS: was ist 'on-old-for-timer' ?
Die kommen von ein paar FS20PIRI und -PIRA, die ich noch nicht in Rente geschickt habe.  :o

Zitat von: rudolfkoenig am 30 Januar 2022, 12:11:28
Man kann die "problematischen" notifies temporaer entfernen, und die Systemauslastung messen.
Problematisch sind die alle nicht oder nicht gewesen. Frei nach dem Motto "Wehret den Anfängen!" möchte ich es gar nicht erst zu Problemen kommen lassen.

Zitat
NOTIFYDEV zu "optimieren" (d.h. den Regexp solange umzubauen, bis NOTIFYDEV gesetzt wird) lohnt sich dann, wenn FHEM subjektiv zaeh ist oder deswegen Probleme wie Verbindungsabbrueche auftauchen, man eine Menge von notifies/FileLogs/etc hat (d.h. 100+), und performantere Hardware keine Option ist.
Wie gesagt: da bin ich noch nicht, dass es zäh wird. Allerdings möchte ich für FHEM auch nicht mehr als den Odroid XU4 laufen lassen. Der lief vorher bei knapp 90% idle und jetzt etwas über 93% idle. Da ich aus Gründen der Flexibilität und des Komforts auch weiterhin die Steuerung von z.B. Beleuchtung nicht durch Peering statt wie jetzt durch FHEM machen möchte, versuche ich halt, dass die Gedenksekunden nach dem Betätigen eines Schalters nicht mehr sondern eher weniger werden.

Zitat
Die 4% durchschnittliche Systemlast Ersparnis ist irrefuehrend: in Peaks (d.h. wenn Nachrichten gehaeuft erzeugt werden) kann die Optimierung durchaus einen groesseren Unterschied ausmachen.
Und genau den Effekt merke ich durch das Optimieren der regex, so dass NOTIFYDEV gesetzt werden kann. Einzelne Peaks kann ich im SystemMonitor eher nicht erkennen, deren Summe anhand der mittleren Auslastung schon.

Zitat
Ich selbst wuerde die letzten 7 notifies aber nicht mehr optimieren, NOTIFYDEV ist nur bei der Menge relevant.
Danke für diesen Hinweis!

Grüße
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Damian am 30 Januar 2022, 18:03:40
Wenn du wirklich Performance sparen willst, dann würde ich dir empfehlen mehr Energie in die Vermeidung von unnötigen Events zu investieren.

Man mag es nicht glauben, aber man braucht in seltensten Fällen Events von irgendetwas, was sich nicht ändert.

Ich habe bei mir ganz mutig attr .* event-on-change-reading .* für alle Devices gesetzt (Sicherung der Konfiguration kann davor nicht schaden!) und musste es zunächst nur bei einem Device rückgängig machen. Das hat bereits eine Menge unnötiger Events eliminiert.

Dann habe ich mir den Event-Monitor angeschaut und konnte noch regelmäßige Events sehen, die ich überhaupt nicht brauchte. Und selbst die, habe ich per event-on-update-reading eliminieren können.

Im optimalen Fall sollten nur noch Events zu sehen sein, die man tatsächlich in seinem System irgendwo auswertet. Und das sage ich, obwohl mein Modul inzwischen immer mit einem gesetzten NOTIFYDEV-Filter arbeitet: https://forum.fhem.de/index.php/topic,103401.msg1204449.html#msg1204449
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Benni am 30 Januar 2022, 18:58:30
Das kann man dann auch noch für neue Devices automatisieren:


defmod nyEocrNewDef notify global:DEFINED.* attr $EVTPART1 event-on-change-reading .*


Geht sicher auch mit DOIF ;)

gb#
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Damian am 30 Januar 2022, 19:17:09
Und hier noch mal paar Zahlen:

Ein Event, auf das kein Device im System reagiert verbraucht bereits 25 bis 30 mal mehr Performance, als wenn man das Event unterdrückt.

Das kannst du bei dir ausprobieren:

defmod di_t123 DOIF {\
  my ($seconds, $microseconds) = ::gettimeofday();;\
  for (my $i=0;;$i<1000;;$i++){\
    set_Reading("q123","qwert",1);;\
  }\
  my ($seconds2, $microseconds2) = ::gettimeofday();;\
  set_State($seconds2+$microseconds2/1000000-($seconds+$microseconds/1000000));;\
}
attr di_t123 event-on-update-reading state


paar mal laufen lassen mit:

set di_t123 block_01

die Laufzeiten im Status notieren.

dann das Attribut event-on-update-reading löschen und dann den set Befehl mit Abstand paar mal ausführen.

Die kürzeste  Laufzeit aus dem Status kannst du ins Verhältnis setzen mit der kürzesten Laufzeit mit dem gesetzten Attribut, dann weißt du Bescheid ;)
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: LuckyDay am 30 Januar 2022, 19:19:32
Zitat von: alanblack am 29 Januar 2022, 21:02:32


Du kannst auch mal mit apptime count schauen, wer sich wieviel Fhemsekunden gönnt .
da sieht man z.b. dass readingsGroup_Notify sich jedes Event anschaut
usw.

name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
banane                                   FHEM2FHEM_Ready                         15  3008914  103532.07     0.03     0.00     0.00 22.01. 20:10:03 HASH(banane)
AB                                       readingsGroup_Notify                    23  1712629  200065.65     0.12     0.00     0.00 27.01. 02:44:55 HASH(AB); HASH(Mqtt_create_reading_localhost)
CORONA                                   readingsGroup_Notify                    22  1712629  151204.20     0.09     0.00     0.00 25.01. 02:05:48 HASH(CORONA); HASH(FHEM_HZ)
Tel                                      readingsGroup_Notify                    22  1712629  144231.37     0.08     0.00     0.00 27.01. 15:45:52 HASH(Tel); HASH(FHEM_HZ)
Tel_g                                    readingsGroup_Notify                    20  1712629  143592.01     0.08     0.00     0.00 23.01. 18:11:46 HASH(Tel_g); HASH(FHEM_HZ)
WEB                                      FW_Notify                                4  1712629   21864.56     0.01     0.00     0.00 29.01. 16:51:24 HASH(WEB); HASH(WZ_t)
Wetter                                   readingsGroup_Notify                    16  1712629  146139.36     0.09     0.00     0.00 25.01. 04:35:37 HASH(Wetter); HASH(FHEM_HC)
mqttPublishList                          readingsGroup_Notify                    25  1712629  137890.45     0.08     0.00     0.00 22.01. 08:03:44 HASH(mqttPublishList); HASH(FHEM_HM)
perlsize                                 FileLog_Log                             24  1712629  201951.74     0.12     0.00     0.00 20.01. 19:28:03 HASH(perlsize); HASH(Mqtt_create_reading_localhost)
rg_dead                                  readingsGroup_Notify                    16  1712629  135920.93     0.08     0.00     0.00 26.01. 10:15:17 HASH(rg_dead); HASH(WS1080)
system                                   notify_Exec                             24  1712629  271329.06     0.16     0.00     0.00 21.01. 05:43:07 HASH(system); HASH(HC1live_at)
tmr-perfmon_ProcessTimer                 HASH_unnamed                             2   872881   78320.76     0.09   283.96     1.49 29.01. 16:50:05 HASH(0xd93128)
mqttclient_localhost                     MQTT2_CLIENT_Read                       38   700788 2312766.05     3.30     0.00     0.00 29.01. 02:40:08 HASH(mqttclient_localhost)
tmr-__ANON__                             HASH(0x1aa8840)                         57   544021 3475064.24     6.39     0.00     0.00 29.01. 06:58:31 HASH(mqttclient_localhost)
rain_stat                                statistics_Notify                       50   293521 2524274.13     8.60     0.00     0.00 26.01. 18:11:19 HASH(rain_stat); HASH(WS1080)
tmr-MQTT2_CLIENT_keepalive               HASH(0x1aa8840)                          5    87277   23906.90     0.27   247.46     1.00 28.01. 05:08:55 HASH(mqttclient_localhost)
WS1080                                   MQTT2_DEVICE_Set                        14    56138    3999.29     0.07     0.00     0.00 20.01. 17:01:39 HASH(WS1080); WS1080; ?
Heizung                                  MQTT2_DEVICE_Set                         0    40365    3602.74     0.09     0.00     0.00 23.01. 21:24:38 HASH(Heizung); Heizung; ?
FHEM_HC1_live                            dummy_Set                               23    29129  175558.82     6.03     0.00     0.00 27.01. 07:01:07 HASH(FHEM_HC1_live); FHEM_HC1_live; on
mqttclient_localhost                     MQTT2_CLIENT_Set                         2    29119   16144.33     0.55     0.00     0.00 29.01. 04:19:07 HASH(mqttclient_localhost); mqttclient_localhost; publish; haus/HC1/Fhem_HC1_live/state; on
n_publish_mqtt_localhost                 notify_Exec                             20    29097  107116.06     3.68     0.00     0.00 27.01. 07:01:07 HASH(n_publish_mqtt_localhost); HASH(FHEM_HC1_live)
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: alanblack am 30 Januar 2022, 21:17:41
Zitat von: Damian am 30 Januar 2022, 18:03:40
Wenn du wirklich Performance sparen willst, dann würde ich dir empfehlen mehr Energie in die Vermeidung von unnötigen Events zu investieren.
Das ist schon klar. Nochmal ausdrücklich: Ich habe kein Problem mit der Performance. Ich versuche nur, mehr und mehr zu verstehen, um möglichst viel zu automatisieren und dabei zu optimieren.
Ich kontrolliere ab und an händisch mit
list TYPE=.*:FILTER=event-on-change-reading!~.+
ob mir irgendetwas durch die Lappen gegangen ist.
Bei vielen Devices steht eher etwas selektiveres im eocr wie
actuator,battery,day-temp,measured-temp:0.2,control-mode,mode,night-temp,temperature:0.2,humidity,dewpoint,absFeuchte,desired-temp,controlMode,state,STATE
Zitat
Im optimalen Fall sollten nur noch Events zu sehen sein, die man tatsächlich in seinem System irgendwo auswertet. Und das sage ich, obwohl mein Modul inzwischen immer mit einem gesetzten NOTIFYDEV-Filter arbeitet: https://forum.fhem.de/index.php/topic,103401.msg1204449.html#msg1204449
Daher habe ich eocr auf Dinge reduziert, wozu es ein notify/watchdog... oder FileLog gibt.

Zitat von: Benni am 30 Januar 2022, 18:58:30
Das kann man dann auch noch für neue Devices automatisieren:


defmod nyEocrNewDef notify global:DEFINED.* attr $EVTPART1 event-on-change-reading .*
Die Idee an sich ist gut, aber mich würden die Fehlermeldungen stören, wenn ich bspw. einen watchdog anlege; der hat kein eocr.

Zitat von: Damian am 30 Januar 2022, 19:17:09
Und hier noch mal paar Zahlen:

Ein Event, auf das kein Device im System reagiert verbraucht bereits 25 bis 30 mal mehr Performance, als wenn man das Event unterdrückt.
[...]
Ich glaube Dir das auch, ohne es ausprobiert zu haben.
Aber dieses DOIF kann ich vielleicht mal als Benchmark benutzen. Nettes Konstrukt!

Zitat von: fhem-hm-knecht am 30 Januar 2022, 19:19:32
Du kannst auch mal mit apptime count schauen, wer sich wieviel Fhemsekunden gönnt .
da sieht man z.b. dass readingsGroup_Notify sich jedes Event anschaut
Einer der Gründe, weswegen ich keine ReadingsGroup mehr habe.

Grüße
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Benni am 30 Januar 2022, 22:01:35
Zitat von: alanblack am 30 Januar 2022, 21:17:41
Die Idee an sich ist gut, aber mich würden die Fehlermeldungen stören, wenn ich bspw. einen watchdog anlege; der hat kein eocr.

Das kann man aber auch verhindern, wenn's stört! ;)


defmod nyEocrNewDef notify global:DEFINED.* {\
fhem("attr $EVTPART1 event-on-change-reading .*") if(fhem_devSupportsAttr($EVTPART1,'event-on-change-reading'));;\
}


gb#
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Damian am 31 Januar 2022, 12:33:11
Zitat von: alanblack am 30 Januar 2022, 21:17:41
Das ist schon klar. Nochmal ausdrücklich: Ich habe kein Problem mit der Performance. Ich versuche nur, mehr und mehr zu verstehen, um möglichst viel zu automatisieren und dabei zu optimieren.

Die Optimierungsvorschläge sollte man beherzingen, bevor man Probleme bekommt und nicht erst, wenn es zu spät ist. Und wie optimiert man wohl: Indem man Rechenzeit spart :)
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Beta-User am 31 Januar 2022, 13:07:50
Zitat von: Damian am 31 Januar 2022, 12:33:11
Die Optimierungsvorschläge sollte man beherzingen, bevor man Probleme bekommt und nicht erst, wenn es zu spät ist. Und wie optimiert man wohl: Indem man Rechenzeit spart :)
...mich wundert auch immer wieder, wie wenig das tendenziell wichtige Thema bei einer großen Zahl von Usern präsent zu sein scheint...
(Und wie wenige den Unterschied zwischen Event und Event-Loop kennen wird)

Allerdings hätte ich in meiner eigenen Installation mit der pauschalen (nachträglichen) ".*"-Lösung gleich zwei Probleme verursacht:
- zum einen würde das meine vorhandenen und teils ähnlich langen Einstellungen wie von alanblack gezeigten überschreiben (und damit zu mehr (!) Events führen) und
- zum Teil würden manche Eventhandler damit (manchmal!) nicht funktionieren, z.B. (mehr oder weniger) alles, was mit (mehrfach-) Tastern zu tun hat.

Ich würde daher eher empfehlen, sich jeden "Typ" mal intensiver anzusehen, dafür "gute" Einstellungen zu erarbeiten (das kann auch heißen, überhaupt nur einen Teil der Readings triggern zu lassen), und diese dann zu übertragen (attrTemplate oder v.a. auch archetype (https://fhem.de/commandref_modular_DE.html#archetype), wenn ich das richtig verstanden habe).
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Benni am 31 Januar 2022, 13:30:50
Zitat von: Beta-User am 31 Januar 2022, 13:07:50
...mich wundert auch immer wieder, wie wenig das tendenziell wichtige Thema bei einer großen Zahl von Usern präsent zu sein scheint...

Na ja, es ist halt manchmal einfacher, mit dem Hammer zu schrauben ;)
Will meinen, wenn das System träge wird, einfach mal mit einem leistungsfähigeren drauf hauen, sprich durch ein solches ersetzen. (Pi3 -> Pi4 -> NUC -> ...)

Zitat
Allerdings hätte ich in meiner eigenen Installation mit der pauschalen (nachträglichen) ".*"-Lösung gleich zwei Probleme verursacht:
- zum einen würde das meine vorhandenen und teils ähnlich langen Einstellungen wie von alanblack gezeigten überschreiben (und damit zu mehr (!) Events führen) und

Das könnte man aber mit dem devspec, das alanblack für das Aufspüren der ungesetzten Devices verwendet hat, relativ einfach umgehen:


attr .*:FILTER=event-on-change-reading!~.+ event-on-change-reading .*


Wobei man das .* am Anfang ggf. weiter eingrenzen kann.
(Ggf. auftretende Log-Meldungen, wg. nicht unterstütztem eocr sind dabei allerdings zu ignorieren ;) )

Ansonsten sehe ich das auch so: Am besten nur die Events zuzulassen, die man auch wirklich braucht! Und das muss auch immer mal wieder reviewed werden :)

Gruß Benni
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Beta-User am 31 Januar 2022, 13:44:11
Zitat von: Benni am 31 Januar 2022, 13:30:50
Na ja, es ist halt manchmal einfacher, mit dem Hammer zu schrauben ;)
...schönes Bild...

Das Problem ist nur: Wenn hier "ständig alle" mit der großen Keule schwingen, glaubt recht schnell ein nicht unerheblicher Teil der community, das sei sowas wie ein "Universalwerkzeug". Ich empfinde das daher eher als grenzwertig.

Zitat
Will meinen, wenn das System träge wird, einfach mal mit einem leistungsfähigeren drauf hauen, sprich durch ein solches ersetzen. (Pi3 -> Pi4 -> NUC -> ...)
:) Meine Empfehlung für Anfänger wäre eigentlich immer, eher eine Nummer kleiner zu nehmen, dann merkt man es auch gleich, wenn man einen Bock geschossen hat. Ein Pi 2 war eigentlich unter diesem Gesichtspunkt "ideal" ;D .

Zitat
Das könnte man aber mit dem devspec, das alanblack für das Aufspüren der ungesetzten Devices verwendet hat, relativ einfach umgehen:
Mir ist das klar, aber das würde trotzdem bedeuten, dass praktisch alle Event-Handler nicht mehr (richtig) funktionieren, die Taster-Devices auswerten.

Und letztlich ist eine gewisse "Grundlast" an Events auch kein wirkliches Problem. Man muss halt die Gesamtsituation im Auge behalten...

Werde mir jetzt aber trotzdem mal "archetype" näher ansehen. Bisher habe ich eher über den "devspec-Weg" (also eher zu Fuß denn vollautomatisiert) passende Gesamteinstellungen an "gleichartige" Geräte verteilt, aber das ist nur solange "gut", wie man weiß, warum und für welche Geräte man das gemacht hat...
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Damian am 31 Januar 2022, 14:29:49
Das Hauptproblem liegt hauptsächlich darin, dass der Modulentwickler oft alle seine Readings mit Event setzt. Er kann ja argumentieren, wenn der User sie nicht haben willst, dann kann er sie mit event-on-update-readings eliminieren. Wenn er aber Readings ohne Event schreibt, dann kann der User das Event nicht nachträglich aktivieren.

Der "Normal"-User wiederum achtet zunächst bei einer Definition eines neuen Devices nicht darauf, welche Events dazu kommen und vor allem in welcher Häufigkeit.

Selbst mir geht es so, dass ich alle paar Monate erschreckend feststelle, was da an Events dazugekommen ist und fange wieder an auszumisten - das dürften aber die wenigsten tun.

Besser für die Gesamtperformance wäre, wenn die Events eines neuen Devices zunächst ausbleiben würden (default z.B.: event-on-update-readings state) und der User sie nach Bedarf bewusst erst einschalten müsste, wenn er sie bräuchte - das wäre aber für den User weniger komfortabel. Und solange man immer leistungsfähigere Hardware kaufen kann ...
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: frank am 31 Januar 2022, 14:54:12
Zitat von: Damian am 31 Januar 2022, 14:29:49
Das Hauptproblem liegt hauptsächlich darin, dass der Modulentwickler oft alle seine Readings mit Event setzt. Er kann ja argumentieren, wenn der User sie nicht haben willst, dann kann er sie mit event-on-update-readings eliminieren. Wenn er aber Readings ohne Event schreibt, dann kann der User das Event nicht nachträglich aktivieren.
doch, das kann man dank rudi mittlerweile "aushebeln".
sehr tricky und gut "versteckt", funktioniert aber hervorragend.  8)
https://forum.fhem.de/index.php/topic,112825.msg1184583.html#msg1184583 (https://forum.fhem.de/index.php/topic,112825.msg1184583.html#msg1184583)
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Beta-User am 31 Januar 2022, 15:07:44
@frank: Ich glaube nicht, dass es für die überwiegende Zahl der User hilfreich ist, wenn man das "bewirbt" (oder gar unter Verweis auf diese Option die Maintainer motivieren will, weniger Events zu zeigen)...

Es ist und bleibt m.E. so, dass es sinnvoll ist, den Usern den sinnvollen Einsatz _aller_ eocr-Optionen zu erläutern und ggf. die (vorhandenen) Hilfsmittel so darzustellen, dass man sie relativ einfach anwenden kann.
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: alanblack am 31 Januar 2022, 22:21:40
Zitat von: Damian am 31 Januar 2022, 12:33:11
Die Optimierungsvorschläge sollte man beherzingen, bevor man Probleme bekommt und nicht erst, wenn es zu spät ist. Und wie optimiert man wohl: Indem man Rechenzeit spart :)
Das möchte ich so nicht stehen lassen. Wenn ich meinem FHEM-Computer soviel Rechenzeit abverlange, dass der Kühlkörper anfängt zu glühen und Leuchten erst nach sechs statt nach 0,5 Sekunden angehen, dann nehme ich dieses Mehr gerne in Kauf, wenn ich dafür nur noch die Hälfte an Strom- und Heizkosten hätte. Ist für mich eine Optimierung des Systems hin zur Kostenreduktion. Eine Optimierung verlangt mMn immer (mindestens) ein Optimierungsziel.

Zitat von: Beta-User am 31 Januar 2022, 13:07:50
Allerdings hätte ich in meiner eigenen Installation mit der pauschalen (nachträglichen) ".*"-Lösung gleich zwei Probleme verursacht:
[...]- zum Teil würden manche Eventhandler damit (manchmal!) nicht funktionieren, z.B. (mehr oder weniger) alles, was mit (mehrfach-) Tastern zu tun hat.
So nicht ganz vollständig: setze ich bei diesen Devices noch ein eour (event-on-update-reading)z.B. ein state, funktionieren diese 1a.

Zitat von: Beta-User am 31 Januar 2022, 13:44:11
Mir ist das klar, aber das würde trotzdem bedeuten, dass praktisch alle Event-Handler nicht mehr (richtig) funktionieren, die Taster-Devices auswerten.
Wie gerade geschrieben: es gibt auch event-on-update-reading.

Zitat von: Beta-User am 31 Januar 2022, 15:07:44
@frank: Ich glaube nicht, dass es für die überwiegende Zahl der User hilfreich ist, wenn man das "bewirbt" (oder gar unter Verweis auf diese Option die Maintainer motivieren will, weniger Events zu zeigen)...
Jepp!

ZitatEs ist und bleibt m.E. so, dass es sinnvoll ist, den Usern den sinnvollen Einsatz _aller_ eocr-Optionen zu erläutern und ggf. die (vorhandenen) Hilfsmittel so darzustellen, dass man sie relativ einfach anwenden kann.
Ja, aller eocr (event-on-change-reading) aber auch aller eour (event-on-update-reading) Optionen.

Grüße

Nachtrag (leicht offtopic):
Zitat von: Benni am 31 Januar 2022, 13:30:50

attr .*:FILTER=event-on-change-reading!~.+ event-on-change-reading .*

[...]
(Ggf. auftretende Log-Meldungen, wg. nicht unterstütztem eocr sind dabei allerdings zu ignorieren ;) )
Beim Aufruf über die Commandozeile gibt es keine Einträge im Log.  8)
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Benni am 01 Februar 2022, 05:54:07
Zitat von: alanblack am 31 Januar 2022, 22:21:40
Das möchte ich so nicht stehen lassen. Wenn ich meinem FHEM-Computer soviel Rechenzeit abverlange, dass der Kühlkörper anfängt zu glühen und Leuchten erst nach sechs statt nach 0,5 Sekunden angehen, dann nehme ich dieses Mehr gerne in Kauf, wenn ich dafür nur noch die Hälfte an Strom- und Heizkosten hätte. Ist für mich eine Optimierung des Systems hin zur Kostenreduktion. Eine Optimierung verlangt mMn immer (mindestens) ein Optimierungsziel.

Jetzt wird's aber OT!  ;)
Optimierungsziel dieses Threads war bisher doch die Eventlast, bzw. die Verarbeitungslast der auftretenden Events zu reduzieren.
Das hat per se erst mal nix mit Strom und Heizkosten zu tun.

gb#
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: Beta-User am 01 Februar 2022, 08:02:41
Zitat von: alanblack am 31 Januar 2022, 22:21:40
Wie gerade geschrieben: es gibt auch event-on-update-reading.
[...]
Ja, aller eocr (event-on-change-reading) aber auch aller eour (event-on-update-reading) Optionen.
Unvollständig.

Mit "_aller_ eocr-Optionen" in
Zitat von: Beta-User am 31 Januar 2022, 15:07:44
Es ist und bleibt m.E. so, dass es sinnvoll ist, den Usern den sinnvollen Einsatz _aller_ eocr-Optionen zu erläutern und ggf. die (vorhandenen) Hilfsmittel so darzustellen, dass man sie relativ einfach anwenden kann.
waren noch weitere Attribute gemeint, die in den Gesamtkontext auch noch reingehören:
event-min-interval, timestamp-on-change-reading und event-aggregator.

U.A. auch deswegen ist der pauschale Hinweis auf das Setzen nur eines Attributs aus der Familie zwar wichtig, aber eben nicht vollständig.
Titel: Antw:NOTIFYDEV - wie weit optimieren?
Beitrag von: alanblack am 01 Februar 2022, 13:13:29
Zitat von: Benni am 01 Februar 2022, 05:54:07
Jetzt wird's aber OT!  ;)
Optimierungsziel dieses Threads war bisher doch die Eventlast, bzw. die Verarbeitungslast der auftretenden Events zu reduzieren.
Das hat per se erst mal nix mit Strom und Heizkosten zu tun.
Hey, das ist doch ein normaler Verlauf in einem Forum:
Optimierung von NOTIFYDEV (notifies/watchdogs/...) => Vermeidung von Events (eocr/eour/emi/...) => Optimierung allgemein => ... => wann wird der nicht optimale Einsatz von FHEM besteuert? [IronieOff]

[ ] Meine Beiträge sind immer on-topic, vollständig und fehlerfrei :o

Ich weiß nicht, aber wenn hier nicht noch Hinweise zu NOTIFYDEV (!) kommen, sollte ich den Thread schließen, oder?

Grüße