[gelöst] Umstellung EIB->KNX: notify löst jetzt fünf mal aus ???

Begonnen von grappa24, 13 April 2016, 11:36:50

Vorheriges Thema - Nächstes Thema

grappa24

Ich hab ein notify auf meinem EIB/KNX Schalter, der die Alarmanlage scharf schaltet.

Nach der Umstellung von EIB auf KNX löst dieses notify jetzt statt 1x gleich 5x aus. WTF ist das denn jetzt wieder ....  ;)  ;)

Hier mein TUL: define KNX TUL eibd:localhost 1.1.249
attr KNX useEIB 0


Die EIB Instanzen hab ich durch Ändern von EIB auf KNX und Aufnahme des model in die Definition umgezogen, und mangels Info alle mit dpt1 versehen. Vlt. liegts ja am Datentyp????

FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

BITTE mehr input...eventlog, fhem.cfg, ...
Meine glaskugel ist grad beim polieren  8)

grappa24

#2
was brauchst Du denn konkret, bevor ich Dir jetzt zu viel gebe ...  ;)

Hier mal der Schalter und sein notify:

define ug_alarmtaster KNX 2601:dpt1
attr ug_alarmtaster IODev KNX

define notifier_ug_alarmtaster notify ug_alarmtaster {\
   if ($EVENT eq "on") {\
      fhem ("set webcam_alle_fg on");;\
   } else {\
         fhem ("set webcam_alle_fg off");;\
     };;\
   fhem ("set ug_sound_ok on");;\
}


Einmal aus- und einschalten erzeugt

2016.04.13 11:07:17 3: FS20 set webcam_alle_fg off
2016.04.13 11:07:17 3: FS20 set ug_sound_ok on
2016.04.13 11:07:17 3: FS20 set webcam_alle_fg off
2016.04.13 11:07:17 3: FS20 set ug_sound_ok on
2016.04.13 11:07:17 3: FS20 set webcam_alle_fg off
2016.04.13 11:07:17 3: FS20 set ug_sound_ok on
2016.04.13 11:07:17 3: FS20 set webcam_alle_fg off
2016.04.13 11:07:18 3: FS20 set ug_sound_ok on
2016.04.13 11:07:18 3: FS20 set webcam_alle_fg off
2016.04.13 11:07:18 3: FS20 set ug_sound_ok on
2016.04.13 11:08:07 3: FS20 set webcam_alle_fg off
2016.04.13 11:08:07 3: FS20 set ug_sound_ok on
2016.04.13 11:08:07 3: FS20 set webcam_alle_fg on
2016.04.13 11:08:07 3: FS20 set ug_sound_ok on
2016.04.13 11:08:07 3: FS20 set webcam_alle_fg off
2016.04.13 11:08:07 3: FS20 set ug_sound_ok on
2016.04.13 11:08:07 3: FS20 set webcam_alle_fg off
2016.04.13 11:08:07 3: FS20 set ug_sound_ok on
2016.04.13 11:08:08 3: FS20 set webcam_alle_fg on
2016.04.13 11:08:08 3: FS20 set ug_sound_ok on
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

Servus!

Na, das bringt doch schon was :-)

Ist ausgeschlossen, dass über die Notifies eine Art Rekursion entsteht? Also wird nochmal abgefragt, oder ein Wert im ug_alarmtaster nochmal geändert wird?

Drei Auslösungen erscheinen mir plausibel, fünf nicht. Warum drei und nicht eines? Weil Du auf alle drei Readings reagierts - state, getG1 und sender.

Probier mal:

define notifier_ug_alarmtaster notify ug_alarmtaster:.* {\
   if ($EVENT eq "on") {\
      fhem ("set webcam_alle_fg on");;\
   } else {\
         fhem ("set webcam_alle_fg off");;\
     };;\
   fhem ("set ug_sound_ok on");;\
}



oder:

define notifier_ug_alarmtaster notify ug_alarmtaster:(on)|(off).* {\
   if ($EVENT eq "on") {\
      fhem ("set webcam_alle_fg on");;\
   } else {\
         fhem ("set webcam_alle_fg off");;\
     };;\
   fhem ("set ug_sound_ok on");;\
}


Grüße, Andi

grappa24

Danke. Das notify soll nur auf ein reading reagieren und nur bei on oder off.

Hat sich da etwas von KNX zu EIB geändert. Die von Dir vorgeschlagene Syntax habe ich bisher nie verwendet *staun*

Da muss ich wohl noch mehr umcodieren.
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

Ja, da hab ich gut was geändert :-)

mach mal

define test KNX 1/2/3:dpt1 4/5/6:dpt1:findemich

Und dann sende / empfange ein paar Telegramme. Dann weißt, was ich meine :-)


Andi291

P.S.: Das löst nicht das Problem, aber schau Dir mal das Attribut stateCmd an. Da kriegst Deine Rechnerei ohne Event unter.

grappa24

#7
ich hab jetzt offensichtlich EIB und KNX parallel laufen (von jedem Gerät gibt es eine EIB- und eine KNX-Instanz), was dazu führt, dass alle Befehle an EIB/KNX-Geräte von FHEM aus jetzt doppelt auf den Bus gegeben werden.

Was kann ich tun, dass wie "früher" nur EIB benutzt wird und KNX nicht?

Wenn ich 10_KNX_pm entferne, kommen wieder die Fehlermeldungen "cannot autoload KNX"
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

Morgen! Nichts - das ist nicht vorgesehen. Den eib kanns abschalten, den knx nicht. Möcht ich auch nicht, weil ist ja neue lösung.
Du kannst alle knx devices löschen und vorher autocreate deaktivieren.

grappa24

ja, das geht. Bleiben halt die Fehlermeldungen "KNX Unknown Device ..." im Log, muss ich halt damit leben ....

Andi, ich hab eine einfache EIB/KNX Installation - leider ohne jedlich Projektdoku, verändere auch an dem System seit 14 Jahren nix, kann also mit der alten Welt ganz gut leben. Hätte es zwar gern "fein" gemacht und nach KNX umgezogen, aber nachdem ich mich jetzt zwei mal im Kreis gedreht hab ...

Trotzdem Danke ...
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

Ich helf dir beim umzug - das wird schon. Bitte nicht aufgeben . . .

grappa24

gut, dann baue ich erst mal meine notify um, offensichtlich kann man denen (jetzt) sagen, auf welche Events sie ausschließlich reagieren sollen. Ein "else" ist dann natürlich tödlich ...
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

grappa24

Zitat von: Andi291 am 13 April 2016, 17:58:18
Drei Auslösungen erscheinen mir plausibel, fünf nicht. Warum drei und nicht eines? Weil Du auf alle drei Readings reagierts - state, getG1 und sender.
Wie kann ich denn dafür sorgen, dass mein notify nur auf ein (bestimmtes) Reading reagiert?

Eine Rekursion würde ich mal ausschließen
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

Siehe post #3. Das sollte nur auf state reagieren.

grappa24

#14
wie in der Anlage (jpg) gezeigt wird die Variante 2 aus Post#3 umgesetzt, das ist doch so nicht richtig, oder?

Mit notify ug_alarmtaster:.* {\ wird das geloggt: 2016.04.14 10:45:17 3: FS20 set webcam_alle_fg off
2016.04.14 10:45:17 3: FS20 set ug_sound_ok on
2016.04.14 10:45:17 3: FS20 set webcam_alle_fg on
2016.04.14 10:45:17 3: FS20 set ug_sound_ok on
2016.04.14 10:45:18 3: FS20 set webcam_alle_fg off
2016.04.14 10:45:18 3: FS20 set ug_sound_ok on
2016.04.14 10:45:18 3: FS20 set webcam_alle_fg off
2016.04.14 10:45:18 3: FS20 set ug_sound_ok on
2016.04.14 10:45:18 3: FS20 set webcam_alle_fg on
2016.04.14 10:45:18 3: FS20 set ug_sound_ok on
Es werden also die Zweige else-if-else-else-if durchlaufen, das notify insgesamt 5 x

jetzt hab ich sagar "Dauerschleife". Das notify soll ja nur greifen, wenn sich der Zustand ändert, ich hab grad den Verdacht, dass der Zustand regelmäßig gesendet wird und dann jedesmal das notify ausgelöst wird. Meine FHEM-Welt ist grad etwas durcheinander ...

FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

grappa24

#15
jetzt kommen wir der Sache nächer, ich hab jetzt mal mein notify im Event-Monitor geloggt.

Beim Ausschalten: 2016-04-14 11:45:21 KNX ug_alarmtaster setG1: off
2016-04-14 11:45:21 KNX ug_alarmtaster off
2016-04-14 11:45:22 KNX ug_alarmtaster getG1: off
2016-04-14 11:45:22 KNX ug_alarmtaster last-sender: 0/0/1
2016-04-14 11:45:22 KNX ug_alarmtaster off


und beim Einschalten: 2016-04-14 11:46:14 KNX ug_alarmtaster setG1: on
2016-04-14 11:46:14 KNX ug_alarmtaster on
2016-04-14 11:46:15 KNX ug_alarmtaster getG1: on
2016-04-14 11:46:15 KNX ug_alarmtaster last-sender: 0/0/1
2016-04-14 11:46:15 KNX ug_alarmtaster on


Da hätten wir jeweils die fünf Durchläufe !!!

ich muss also mein notify abfragen auf "setG1:on" oder "setG1:off", da könntest Du mir jetzt mit der Syntax helfen und "der Käs ist gegessen" .... :). Bin gerade etwas verwirrt in Sachen $EVENT bzw. $EVTPARTn ....
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

grappa24

#16
Das wars wohl.

Mit define notifier_ug_alarmtaster notify ug_alarmtaster:setG1.* { ... wird das notify nur 1x getriggert, die Abfrage geht dann mit if ($EVENT eq "setG1: on") 

Wieder was gelernt ... und ein graues Haar mehr ...  8)

Aha, wenn der Hardware-Taster gedrückt wurde, muss man auf "getG1" abfragen  ...
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

:-P Mir fallen Sie aus...

Möchtest Du auf Events von setG1 oder getG1 hören:
define notifier_ug_alarmtaster notify ug_alarmtaster:[sg]etG1.*

Meine Empfehlung - möchtest Du auf on/off in state hören:
define notifier_ug_alarmtaster notify ug_alarmtaster:.(on|off)

Grüße, Andi

grappa24

Andi, was wäre denn der Vorteil, auf state abzufragen? 

Wenn ich mir mein Log so anschaue, bin ich ja für getG1: Wird nur einmal ausgelöst (on/off dagegen zweimal).  Und getG1 wird sowohl beim Betätigen des Hardware-Tasters als auch von FHEM ausgelöst.

VG Dieter
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Andi291

Hm - da passt was noch nicht. getG1 kommt nur, wenn ein Signal vom KNX reinkommt. setG1 kommt nur, wenn das Signal von FHEM kommt. state kommt immer.
Wenn Du auf get und set mehr oder minder gleichzeitig ein Signal bekommst, dann senden womöglich irgendwelche Rückmledeobjekte auf der gleichen GA.
Ist dann nicht unbedingt die sauberste Installation...

ABER: wenn Du mit getG1 klarkommst - nimm das :-)