notify löst unerwartete Aktionen aus

Begonnen von karo, 08 Januar 2017, 14:50:49

Vorheriges Thema - Nächstes Thema

karo

Hallo Otto,
sorry - das hatte ich sofort ausprobiert, meine Definition sieht so aus:
ku.SchalterLichterKette:(on|off) set ku.LichterKette $EVENT
Die Anzeige im regexp wizard verstehe ich allerdings nicht, ich habe mich mit diesem noch nicht
auseinander gesetzt. Das ändern hat keine Wirkung gezeigt, es wird ja auch immer on oder
off in der Ausgabe angezeigt.
Grüße
  Karsten

Otto123

#16
Hallo Karsten,

der regExp Wizard kann mit diesem regEx nichts so richtig was anfangen. Das ist aber egal.

Du hast doch einen Event:
Zitat2017-01-09 21:18:21 IT ku.SchalterLichterKette on
egal was ringsrum ist, dieser Event muss das notify triggern. Und zwar genau einmal.
Geht dabei die ku.LichterKette an? Also gibt es dabei genau einen Event set ku.LichterKette on?

Was bedeutet das?:
ZitatDas ändern hat keine Wirkung gezeigt, es wird ja auch immer on oder
off in der Ausgabe angezeigt.

Definiere zum Test bitte Dein notify neu:
define ku.EventLichterKette notify ku.SchalterLichterKette:(on|off) { Log 1, "Hier kommt der Event: $EVENT"}

Und schau dann ins Log. Poste bitte das relevante Stück.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Ich habe den Thread jetzt mehrfach gelesen - aber das Problem verstehe ich immer noch nicht.

Wo wird denn da irgendwas mehrfach ausgelöst?


2017.01.09 21:18:06 3 : culNano433 IT: ku.SchalterLichterKette on->off
2017.01.09 21:18:06 2 : culNano433 IT_set: ku.LichterKette off
2017-01-09 21:18:07 IT ku.SchalterLichterKette off
2017.01.09 21:18:07 3 : culNano433 IT: ku.SchalterLichterKette off->off



  • ku.SchalterLichterKette wechselt von on auf off (Taste wurde gedrückt)
  • ku_Lichterkette wird auf off gesetzt (Reaktion des notify, das den set Befehl ausführt)
  • ku.SchalterLichterKette ist off (Das Wechseln von on auf off aus Schritt 1 ist beendet)
  • Der Vorgang ist abgeschlossen

Zeilen 1,2,4 sind völlig normale Meldungen von der Funkhardware.
Zeile 3 ist der eigentlich event, auf den korrekt getriggert wird (Ergebnis ist in Zeile 2 zu sehen)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

karo

Hallo zusammen,
ich habe jetzt Ottos Vorschlag aufgegriffen und wie folgt definiert:

ku.SchalterLichterKette:(on|off) { Log 1, "Hier kommt der Event: $EVENT"}

Das Ergebnis, ist das was ich erwartet hätte (2 mal schalten):

2017.01.11 20:56:16 3 : culNano433 IT: ku.SchalterLichterKette off->on
2017.01.11 20:56:16 1 : Hier kommt der Event: on
2017-01-11 20:56:16 IT ku.SchalterLichterKette on

2017.01.11 20:56:22 3 : culNano433 IT: ku.SchalterLichterKette on->off
2017.01.11 20:56:22 1 : Hier kommt der Event: off
2017-01-11 20:56:22 IT ku.SchalterLichterKette off


Definiere ich wie folgt

ku.SchalterLichterKette:(on|off) { Log 1, "Hier kommt der Event: $EVENT"; fhem("set ku.LichterKette $EVENT");}

erhalte ich bei zwei mal schalten das folgende Ergebnis:

2017.01.11 21:06:02 3 : culNano433 IT: ku.SchalterLichterKette off->on
2017.01.11 21:06:02 1 : Hier kommt der Event: on
2017.01.11 21:06:02 2 : culNano433 IT_set: ku.LichterKette on
2017-01-11 21:06:02 IT ku.LichterKette on
2017-01-11 21:06:02 IT ku.SchalterLichterKette on
2017.01.11 21:06:02 3 : culNano433 IT: ku.SchalterLichterKette on->on
2017.01.11 21:06:02 1 : Hier kommt der Event: on
2017.01.11 21:06:02 2 : culNano433 IT_set: ku.LichterKette on
2017-01-11 21:06:02 IT ku.LichterKette on
2017-01-11 21:06:03 IT ku.SchalterLichterKette on
2017.01.11 21:06:03 3 : culNano433 IT: ku.SchalterLichterKette on->on
2017.01.11 21:06:03 1 : Hier kommt der Event: on
2017.01.11 21:06:03 2 : culNano433 IT_set: ku.LichterKette on
2017-01-11 21:06:03 IT ku.LichterKette on
2017-01-11 21:06:03 IT ku.SchalterLichterKette on
2017.01.11 21:06:03 3 : culNano433 IT: ku.SchalterLichterKette on->on
2017.01.11 21:06:03 1 : Hier kommt der Event: on
2017.01.11 21:06:03 2 : culNano433 IT_set: ku.LichterKette on
2017-01-11 21:06:03 IT ku.LichterKette on
2017-01-11 21:06:04 IT ku.SchalterLichterKette on

2017.01.11 21:06:07 3 : culNano433 IT: ku.SchalterLichterKette on->off
2017.01.11 21:06:07 1 : Hier kommt der Event: off
2017.01.11 21:06:07 2 : culNano433 IT_set: ku.LichterKette off
2017-01-11 21:06:07 IT ku.LichterKette off
2017-01-11 21:06:07 IT ku.SchalterLichterKette off
2017.01.11 21:06:07 3 : culNano433 IT: ku.SchalterLichterKette off->off
2017.01.11 21:06:07 1 : Hier kommt der Event: off
2017.01.11 21:06:07 2 : culNano433 IT_set: ku.LichterKette off
2017-01-11 21:06:07 IT ku.LichterKette off
2017-01-11 21:06:07 IT ku.SchalterLichterKette off
2017.01.11 21:06:08 3 : culNano433 IT: ku.SchalterLichterKette off->off
2017.01.11 21:06:08 1 : Hier kommt der Event: off
2017.01.11 21:06:08 2 : culNano433 IT_set: ku.LichterKette off
2017-01-11 21:06:08 IT ku.LichterKette off
2017-01-11 21:06:08 IT ku.SchalterLichterKette off
2017.01.11 21:06:08 3 : culNano433 IT: ku.SchalterLichterKette off->off
2017.01.11 21:06:08 1 : Hier kommt der Event: off
2017.01.11 21:06:08 2 : culNano433 IT_set: ku.LichterKette off
2017-01-11 21:06:08 IT ku.LichterKette off
2017-01-11 21:06:09 IT ku.SchalterLichterKette off

Das gesetzte:  attr ku.SchalterLichterKette event-onchange-reading .*
habe ich vorher wieder gelöscht gehabt, da die Steckdose sonst nicht reagiert, hat.
So wie es jetzt ist, scheint sie ganz am Ende des Prozesses zu reagieren, das kann aber eine Täuschung meinerseits zu sein.

Im zweiten längeren Code-Block verstehe ich die ersten 5 Zeilen:

2017.01.11 21:06:07 3 : culNano433 IT: ku.SchalterLichterKette on->off
2017.01.11 21:06:07 1 : Hier kommt der Event: off
2017.01.11 21:06:07 2 : culNano433 IT_set: ku.LichterKette off
2017-01-11 21:06:07 IT ku.LichterKette off
2017-01-11 21:06:07 IT ku.SchalterLichterKette off

Danach kommen 3 bis auf die Logzeiten identische Blöcke a 5 Zeilen, die ich nicht verstehe.

Die Ausgaben ähneln den Angaben in meinem ersten Post   der Unterschied resultiert daraus,
dass ich das log im Eventmonitor zugeschaltet und den Tipp von Otto eingebaut habe.

Grüße
Karsten

Otto123

Hallo Karsten,

also ich verstehe, dass mein Vorschlag mit dem notify der Richtige ist. Das funktioniert.
Was nicht funktioniert ist Dein set ku.LichterKette !
Dieser set Befehl löst offenbar auch einen set Befehl für ku.SchalterLichterKette aus. Warum musst Du rausfinden.

Was ist das Gerät IT_set ?

Aber eventuell versteh ich von dem IT Zeug zu wenig, aber anders, als das Du mit ku.LichterKette noch was Zusätzliches auslöst, kann ich es mir nicht erklären.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

karo

Hallo Otto,
ich habe kein Gerät IT_Set, ein grep auf die Quellcodes zeigt an, dass die SetFn im Modul
10_IT  auf die Funktion gesetzt ist.
Da der Notify ohne dass ich die Steckdose schalte ganz normale Log-Einträge / Events
ergibt, vermute ich auch, dass es am IT_Modul liegt. Vielleicht ist die Entfernung zu groß
und deshalb wird mehrfach gesendet bis die Steckdose schaltet, wobei dann die Steckdose
ein Signal zurück liefern müsste, dass kann ich mir bei der Baumarkt-Dose nicht vorstellen.

Grüße
  Karsten

KölnSolar

#21
Zitatdass kann ich mir bei der Baumarkt-Dose nicht vorstellen.
korrekte Vorstellung  :D
ZitatWas ist das Gerät IT_set ?
ist nur die Protokollierung, dass ein set des devices aus fhem heraus erfolgt ist(im Gegensatz zum schalten durch einen Sensor/FB)

diese Gerätebezeichnungen machen mich ganz wuschig im Kopf. Benenn doch einfach mal als Taster und Dose.
ZitatDieser set Befehl löst offenbar auch einen set Befehl für ku.SchalterLichterKette aus. Warum musst Du rausfinden.
andere Idee hab ich auch nicht  :(
oder doch. bau mal ein eigentlich unsinniges "sleep 1" vor den Schaltbefehl....
Grüße Markus
Edit: und wenn das nicht hilft: Dein notify ist richtig und es brennt durch das mehrfache Schalten ja nichts an. Besser noch: Die Sicherheit des Schaltens wird durch die Redundanz erhöht  ;D
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Otto123

der sendet nicht mehrfach, der schaltbefehl auf ku.LichterKette löst weitere Befehle aus.

Mach doch mal ein manuelles set ku.LichterKette on.
Und gib mal ein list ku.LichterKette.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

karo

Hallo Markus,
der sleep ist eine interessante Idee. Eine Sekunde hat eine der m.E. seltsamen Einträge im Event-Monitor /log verschwinden lassen. Setze ich auf 2 Sekunden, erhalte ich die folgende Rückmeldung (wieder zwei mal schalten):

2017.01.11 22:54:56 3 : culNano433 IT: ku.SchalterLichterKette off->on
2017.01.11 22:54:56 1 : Hier kommt der Event: on
2017.01.11 22:54:58 2 : culNano433 IT_set: ku.LichterKette on
2017-01-11 22:54:58 IT ku.LichterKette on
2017-01-11 22:54:59 IT ku.SchalterLichterKette on

2017.01.11 22:55:03 3 : culNano433 IT: ku.SchalterLichterKette on->off
2017.01.11 22:55:03 1 : Hier kommt der Event: off
2017.01.11 22:55:05 2 : culNano433 IT_set: ku.LichterKette off
2017-01-11 22:55:05 IT ku.LichterKette off
2017-01-11 22:55:05 IT ku.SchalterLichterKette off

Genau das, was ich erwartet hätte. Die Dose schaltet natürlich nicht schneller, das lässt sich anscheinend hardware-bedingt nicht lösen.

Welche Überlegung steckte hinter Deinem als "unsinnig" angekündigten sleep.

Ps.: ich muss mein eigenes sleep jetzt auch einschalten, finde den Schalter gerade nicht :-)

Grüße
Karsten

karo

Hallo Otto,
ein set ku.LichterKette on liefert im Log-File folgendes:
2017.01.11 22:55:05 2: culNano433 IT_set: ku.LichterKette on

ein list ku.LichterKette liefert:
Internals:
   DEF        000FFF00FF FF F0
   IODev      culNano433
   NAME       ku.LichterKette
   NR         116
   STATE      on
   TYPE       IT
   XMIT       000fff00ff
   XMITdimdown 00
   XMITdimup  00
   XMIToff    f0
   XMITon     ff
   Code:
     1          000fff00ff
   Readings:
     2017-01-08 08:59:22   protocol        V1
     2017-01-11 23:03:47   state           on
Attributes:
   IODev      culNano433
   alias      Lichterkette Küche
   group      Licht
   model      itswitch
   room       Wohnzimmer

Grüße
Karsten

Otto123

tut mir Leid, ich kann mir da keinen Reim drauf machen.
Der Befehl alleine löst diese Kette also icht aus.

Der sofortige hinterher geschickte Befehl löst irgendwie dies Kette aus. Mit der Verzögerung des Folge Befehls passiert das nicht.

Wahrscheinlich ne Eigenheit von IT

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

KölnSolar

ZitatWahrscheinlich ne Eigenheit von IT
eher nicht !
Zitatset ku.LichterKette on
funktioniert ja problemlos
da würd ich eher noch am nanoCUL zweifeln.
ZitatWelche Überlegung steckte hinter Deinem als "unsinnig" angekündigten sleep.
War nur so ein hilfloser Gedanke. Die IT-Sender senden einen Befehl(Datentelegramm) mehrfach. Nur der Empfang 2er Telegramme wird im CUL als Befehl erkannt. Hätte sein können, dass der Taster noch sendet, während fhem/CUL schon den Tasterdruck erkannt hat und das notify ausgelöst hat. Wenn das dann aber als erneuter Tastendruck erkannt worden wäre, hätte es auch weitere notifys geben müssen  :'(

Du hast nur einen Transceiver(nanoCUL) am fhem-System und auch nur ein System ?

Ich würd die Geräte mal einfacher benennen und die DIPs an der Dose auch mal verändern....

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Otto123

Hi,
Mir fällt dann noch sowas ein, ob das, das sleep ersetzen kann, weiß ich nicht.

define ku.EventLichterKette notify ku.SchalterLichterKette:(on|off) set ku.LichterKette:FILTER=STATE!=$EVENT $EVENT

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

karo

Hallo Otto,
ich habe Deinen Vorschlag ausprobiert, das funktioniert in soweit, dass die Mehrfach-Ausgaben weg sind.
Allerdings schaltet die Steckdose dann nicht.

Ich habe zum Testen mal alles umbenannt und in einen Raum gelegt.
Es sind jetzt auf der Weboberfläche wie folgt aus.
kschalter  Birnchen  on  off
kdose       Birnchen  on  off

Schalte ich mit einem Click auf kschalter, so wird kdose sofort analog geschaltet.
Im Eventmonitor / Log ist nur ein einmaliger Eintrag (ein Block) vorhanden.

Schalte ich mit dem Hardwareschalter, so wird in der Weboberfläche kschalter und kdose mit ganz leichter Verzögerung geschaltet.
Die Steckdose wird jedoch gar nicht oder mit deutlicher Verzögerung geschaltet.
Im Eventmonitor / Log sind vier Einträge (Blöcke) vorhanden.


Mein culNano433 oder die Steckdose kommen also nicht damit klar, das mehr oder weniger gleichzeitig "herumgefunkt" wird.
Ich werde daher mal den Vorschlag von Markus aufnehmen und den Dip-Schalter umsetzen und / oder mal versuchen mit einem zweiten cul an die Dose zu senden. Der ist auf 868 MHz eingestellt, aber wenn ich es richtig verstanden habe, müsste er auf 433 herunter gehen wenn nötig.

Ich berichte.
Grüße
   Karsten
 

karo

Hallo zusammen,
ich habe nun beide Varianten ausprobiert, das Verhalten ändert sich nicht.
Bleibt als Workaround also nur der sleep mit 2 Sekunden.
Grüße und Dank an alle die mit gedacht haben.
Grüße
Karsten