Autor Thema: Lieber ein großes oder viele kleine Notify  (Gelesen 650 mal)

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8124
Lieber ein großes oder viele kleine Notify
« am: 05 März 2021, 20:39:48 »
Hallo Freunde,

jetzt nicht gerade eine Anfängerfrage, aber hier passt es eigentlich am besten rein.

Hintergrund:
Habe hier ein lirc, welches nicht mit dem FHEM-Lirc Modul arbeitet, sondern pr irexec werden die Befehle zu FHEM reingepustet, in ein LIRC-Dummy. Der Dummy kann also viele Stati annehmen, z.B. 1. wenn die 1 gedrückt wurde (oder 2,3,play,stop ...)
In FHEM möchte ich jetzt die Werte verarbeiten, wozu man natürlich notify nimmt. Aktuell wird es in einem Script verarbeitet, was aber eigentlich redudant ist, warum extern + FHEM wenn es FHEM gibt  ;D

Jetzt die Frage:
Es gibt 2 Lösungen für dieses Problem:

a) Merere notify, wie z.B.
define LIRC_notify_1 notify LIRC:1 set....
define LIRC_notify_2 notify LIRC:2 set ....
......
define LIRC_notify_X notify LIRC:X set ....

b) Ein notify und Verarbeitung im notify
define LIRC_notify notify LIRC:.* {
  if $EVTPART1 eq 1 {}
  elsif $EVTPART1 eq 2 {}
  ....
  elsif $EVTPART1 eq X {}
}

a) hat den Scharm, einfach kleine notify zu haben. Dafür braucht man viele und ich weiß nicht, ob FHEM mit einfach so vielen notifys bearbeitet werden sollte. Eine Infrarotfernbedienung kann leicht >28 Tasten haben und ich verarbeite 3.
(Weshalb die Events auch eigentlich Fernbedienung_X_X heißen)
b) hat den Vorteil, das bei einer allgemeinen Eventverarbeitung eben nur ein notify geprüft werden muß. Die Detailpüfung dann eben auch nur in dem Falle. Dafür wird es einfach Riesig ... und ist das noch beherrschbar?

Wenn jetzt jemand kommt mit Übersichtlichkeit, es gibt Räume in FHEM. Also durch die Definition des Raums IRC bekomme man es schon Übersichtlicher hin. Das ist so also nicht der Vorteil von b) zu vielen a)

Was denkt Ihr so? Bin mir selber aktuell Unschlüssig .... und brauche einen Fingerzeig und mich zu entscheiden...

Hinweis und Disclaimer:
Die Befehle oben sind aus dem Kopf geschrieben und nicht getestet. Schreib-, Definitions-- und Syntax-Fehler sind also durchaus möglich. Mir geht es hier eher ums Prinzip ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17956
  • Stoppt den Unicode-Irrsinn!
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #1 am: 05 März 2021, 20:47:57 »
Ich habe sowas ähnliches bei mir umgesetzt: EIN notify für alle Homematic-Fernbedienungen.

defmod n_remote_HomeMatic notify .*_Btn_...(Short|Long).* {myRemote($NAME,$EVTPART0)}
Die Auswertung habe ich komplett in eine eigene Datei 99_remoteUtils.pm ausgelagert.

sub myRemote($$) {
   my ($dev,$evt,$button) = @_;
   ($dev,$button) = split (/_Btn_/,$dev);
   $button //= -1;
#Debug "d:$dev b:$button e:$evt";

   given ($dev) {

      when ('HM_4987D5') {
    # 20 Kanal Wohnzimmer
        CommandSet(undef,'wz_Licht_Regal toggle')  if ($button == 1 && $evt eq "Short");

        CommandSet(undef,'wz_Licht_Bild on')  if ($button == 3 && $evt eq "Short");
        CommandSet(undef,'wz_Licht_Bild off') if ($button == 3 && $evt eq "Long");

        break;
      }
 
      when ('ku_PIR1') {
        CommandSet(undef,'ku_TV on')  if ($button eq '01' && $evt eq "Short");
        CommandSet(undef,'ku_TV off') if ($button eq '01' && $evt eq "Long");
break;
  }
...

Es läßt sich einfach viel einfacher warten, wenn der Ausführungscode in einer ausgelagerten Datei steht.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8124
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #2 am: 05 März 2021, 20:54:45 »
Aber es giebt kein Systemgrund, es in viele kleine zu Teilen?

Aber Du hast insofern recht, das mit vielen kleinen notifys man sich viele notify-Namen ausdenken muß ... selbst wenn man nach Schema vorgeht, wie ich es im Beispiel tat ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4110
  • ... wer sät, der erntet ...
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #3 am: 05 März 2021, 21:00:39 »
Ich bin ganz leicht stolz auf meine Lösung.

Dazu hab ich ein notify:

defmod not_MQTT2_Sensorkrake notify MQTT2_Sensorkrake:NEC_32:.* {Nec32RemoteCodesHandler("MQTT2_WLED_TV","ls_wz_dl","Jalousie_Siro1","TV_Wohnzimmer","str_MQTT2_zigbee_gu10","MQTT2_Mi_Wec
klicht","Sonos_Wohnzimmer","du_remote",$EVTPART1)}


Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8124
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #4 am: 05 März 2021, 21:05:15 »
Wobei ich diese Lösung irgendwie nicht verstehe ... Sorry
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17956
  • Stoppt den Unicode-Irrsinn!
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #5 am: 05 März 2021, 21:18:10 »
Aber es giebt kein Systemgrund, es in viele kleine zu Teilen?

Doch, für mich schon.

Die Menge der devices (vom Type notify) wird unnötig aufgebläht und bei jedem auftretenden Event muss FHEM ermitteln, welche notify über den event informiert werden müssen.
Außerdem muss bei jedem FHEM Start jedes notify erstmal per define angelegt werden, das dauert halt auch alles seine Zeit. Liegt zwar pro device im Millisekundenbereich, aber das kann sich durchaus summieren.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8124
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #6 am: 05 März 2021, 21:31:06 »
Zitat
Die Menge der devices (vom Type notify) wird unnötig aufgebläht und bei jedem auftretenden Event muss FHEM ermitteln, welche notify über den event informiert werden müssen.
Genau das dachte ich mir auch. Vor allem weil FHEM jedes mal eine RegEx für jedes notify verarbeiten muß. Aber FHEM sollte doch eigentlich für so viele notify ausgelegt sein .. oder?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4110
  • ... wer sät, der erntet ...
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #7 am: 05 März 2021, 21:33:57 »
Wobei ich diese Lösung irgendwie nicht verstehe ... Sorry

Und wenn du dir die 1 1/2 Seiten mal durchliest ? Hatte anfangs (beim ersten Post im Thread) auch keinen blassen Schimmer davon.
Mir fällt das schwer zusammenfassend zu erklären und würde ewig dazu brauchen, wenn du aber Fragen dazu hast helf ich gerne.

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8124
Antw:Lieber ein großes oder viele kleine Notify
« Antwort #8 am: 05 März 2021, 21:45:25 »
Habe es mir durchgelesen bevor ich schrieb "hab es nicht verstanden", wahrscheinlich bin ich heute nur zu "müde" ....
« Letzte Änderung: 05 März 2021, 22:02:29 von Wernieman »
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html