Notify wird nicht ausgeführt

Begonnen von flipse, 22 Januar 2019, 10:25:46

Vorheriges Thema - Nächstes Thema

flipse

Hallo zusammen,

ich hänge gerade an einem Problem, dass ein notify nicht getriggert wird.

Hintergrund:
- Ich habe 2 Devices als Schalter für Licht Esszimmer, Licht Wohnzimmer (an und aus) --> funktioniert
- Ich habe einen RGBW Controller für die Farbe des Lichts (LED Band)  [kein echtes Reading für RGB oder Brightness]
- Ich möchte nun zwei Dummy erstellen, die alle Funktionen vereint:
       Wohnzimmer: An, Aus, Farbe, Dim
       Esszimmer: An, Aus, Farbe, Dim

- Wird in einem Dummy die Farbe oder Dim geändert, muss der Wert natürlich in beiden angepasst werden, da nur eine Farbe und Dim für beides gewählt werden kann (Nur 1 Controller).


Idee:
- Beim Ändern des RGBs, oder der Brightness im RGBW soll dies in einem eigenen userReading gespeichert werden
- Diese Information soll auch an den Dummy weitergegeben werden, der letztlich alle Funktionen vereinen soll.


Mein Notify sieht wie folgt aus:

DEF
ZWave_SW_RGBW:state:.* IF ("$EVTPART0" eq "dim")
  (
      setreading ZWave_SW_RGBW _lastDim $EVTPART1,
      setreading RGB_Esszimmer ControllerDim $EVTPART1,
      setreading RGB_Esszimmer ControllerLastAction $EVENT
  )
   ELSE
   (
       IF ("$EVTPART0" eq "rgb")
       (
           setreading ZWave_SW_RGBW _lastRGB $EVTPART1 $EVTPART2 $EVTPART3,
           setreading RGB_Esszimmer ControllerRGB $EVTPART1 $EVTPART2 $EVTPART3
       ),
       setreading RGB_Esszimmer ControllerLastAction $EVENT
   )



Meine Probleme:

Das notify wird nicht getriggert. Ändere ich den regex auf: ZWave_SW_RGBW.*, dann wird er getriggert, aber viel zu häufig.
Außerdem würde ich das notify gerne in ein Switch Case wandeln. Das gelingt mir leider auch nicht.

Ich hoffe ich konnte das gut darstellen.

viegener

Ich denke dein problem ist der zweite Doppelpunkt.
Ändere doch mal in

DEF
ZWave_SW_RGBW:state.* IF ("$EVTPART0" eq "dim")
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Das mit dem switch case verstehe ich nicht. IF ist ein FHEM Befehl und kein perl-statement. in FHEM gibt es aber nur IF für solche Bedingungen.

Für switch case müsstest Du erst nach perl wechseln und dann alle FHEM-Kommandos in fhem(...) einschliessen.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

flipse

Mir würden auch zum Beispiel Nur IF Anweisungen reichen, aber leider fordert das immer ein ELSE.

Zum Beispiel

IF ($EVTPART0 eq "bla") ()
IF ($EVTPART0 eq "bla2") ()
IF ($EVTPART0 eq "bla3") ()

Das funktioniert leider nicht

flipse

Zitat von: viegener am 22 Januar 2019, 10:38:26
Ich denke dein problem ist der zweite Doppelpunkt.
Ändere doch mal in

DEF
ZWave_SW_RGBW:state.* IF ("$EVTPART0" eq "dim")


funktioniert leider auch nicht.

Wernieman

Wird es nicht aufgerufen oder gibt es einen Fehler im Inhalt?

Gehe doch mal in den Eventmonitor und gucke nach, was für ein Event generiert wird ...
- 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

flipse

Wird gar nicht erst getriggert. EventMonitor habe ich auf.
Ich sehe, dass der set BEfehl für das Device ausgeführt wird, aber eben das notify fehlt


Hier ein Listing vom Device
Internals:
   DEF        cfdf8029 29
   FUUID      5c458ed3-f33f-4184-af4f-52d18bc9b0d1bd79
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     16
   NAME       ZWave_SW_RGBW
   NR         159
   STATE      dim 2
   TYPE       ZWave
   ZWDongle_0_MSGCNT 16
   ZWDongle_0_RAWMSG 00131301
   ZWDongle_0_TIME 2019-01-22 10:30:32
   ZWaveSubDevice no
   cmdsPending 0
   endpointChildren ZWave_SW_RGBW.brightness,ZWave_SW_RGBW.red,ZWave_SW_RGBW.green,ZWave_SW_RGBW.blue,ZWave_SW_RGBW.white
   homeId     cfdf8029
   isWakeUp   
   lastMsgSent 1548153023.82252
   nodeIdHex  1d
   READINGS:
     2019-01-20 13:22:02   SEND_DATA       failed:00
     2019-01-22 09:11:48   _lastDim        11
     2019-01-21 21:25:48   _lastRGB        31 11 0
     2019-01-22 10:30:32   _lastRGBhex     1F0B00
     2019-01-18 20:53:05   assocGroup_1    Max 5 Nodes
     2019-01-18 20:53:05   assocGroup_2    Max 5 Nodes
     2019-01-18 20:53:05   assocGroup_3    Max 5 Nodes
     2019-01-18 20:53:05   assocGroup_4    Max 5 Nodes
     2019-01-18 20:53:05   assocGroup_5    Max 1 Nodes
     2019-01-18 20:53:05   assocGroups     5
     2019-01-20 08:28:24   ccCapability    WarmWhite Red Green Blue
     2019-01-20 09:29:11   configActivePROGRAMAlarmTime 600
     2019-01-20 09:29:11   configAlarm     INACTIVENoResponseToAlarmFrames
     2019-01-20 09:29:11   configAlarmSequenceProgram 10
     2019-01-20 09:29:11   configAssociationsCommandClassChoice NormalRGBWCOLORCONTROLSETSTARTST1
     2019-01-20 09:29:11   configCommandClassReportingOutputs42 ReportingAsAResultOfInputsAnd0
     2019-01-20 09:29:11   configDimmingStepValueForMODE1 1
     2019-01-20 09:29:11   configEnableDisableALLONOFF ALLONActiveALLOFFActive
     2019-01-20 09:29:11   configInputsOutputsConfiguration 4369
     2019-01-20 09:29:12   configMaximumDimmerLevel 255
     2019-01-20 09:29:12   configMinimumDimmerLevel 2
     2019-01-20 09:29:12   configOptionDoubleClick DoubleClickEnabled
     2019-01-20 09:29:12   configOutputsStateChangeMode MODE1ConstantSpeedSpeedIsDefined0
     2019-01-20 09:29:12   configPowerLoadReportingFrequency 30
     2019-01-20 09:29:12   configReporting010vAnalogInputsChange43 5
     2019-01-20 09:29:12   configReportingChangesInEnergyConsumed45 10
     2019-01-20 09:29:12   configResponseToBRIGHTNESSSetTo0 LastSetColourIsMemorized
     2019-01-20 09:29:12   configSavingStateBeforePowerFailure StateSavedAtPowerFailureAll1
     2019-01-20 09:29:12   configStartingPredefinedProgram 1
     2019-01-20 09:29:12   configTimeBetweenDimmingStepsForMODE1 10
     2019-01-20 09:29:12   configTimeToCompleteTheEntire11 67
     2019-01-20 09:29:12   configTripleClickAction NODEINFOControlFrameIsSent
     2019-01-18 16:40:05   mcCapability_01 SWITCH_MULTILEVEL
     2019-01-18 16:40:05   mcCapability_02 SWITCH_MULTILEVEL
     2019-01-18 16:40:05   mcCapability_03 SWITCH_MULTILEVEL
     2019-01-18 16:40:05   mcCapability_04 SWITCH_MULTILEVEL
     2019-01-18 16:40:05   mcCapability_05 SWITCH_MULTILEVEL
     2019-01-18 20:52:18   mcEndpoints     total 5, identical
     2019-01-18 20:52:25   meterSupported  type: energy scales: 0:kWh, 2:W resetable: yes
     2019-01-18 16:40:04   model           FIBARO System FGRGBWM441 RGBW Controller
     2019-01-18 16:40:04   modelConfig     fibaro/fgrgbwm441.xml
     2019-01-18 16:40:04   modelId         010f-0900-1000
     2019-01-20 08:28:36   power           2.0 W
     2019-01-22 10:23:57   reportedState   dim xx
     2019-01-22 10:30:23   state           dim 2
     2019-01-20 08:28:40   swa             on off
     2019-01-22 08:57:25   timeToAck       0.049
     2019-01-22 10:30:32   transmit        NO_ACK
Attributes:
   IODev      ZWDongle_0
   classes    SWITCH_ALL MANUFACTURER_SPECIFIC VERSION SWITCH_MULTILEVEL MULTI_CHANNEL CONFIGURATION METER SENSOR_MULTILEVEL ASSOCIATION COLOR_CONTROL
   homebridgeMapping Hue=rgb::_lastRGBhex Saturation=rgb::_lastRGBhex Brightness=_lastDim, delay=true, nocache=1
On=state,valueOn=/on|^dim|^rgb/,valueOff=off,cmdOn=on,cmdOff=off,nocache=1
   room       Homekit,Vouten,ZWave
   siriName   LED_Vouten
   userReadings _lastRGBhex
{
     sprintf("%02X%02X%02X", (split(' ', ReadingsVal("$name","_lastRGB",""), 3))[0], (split(' ', ReadingsVal("$name","_lastRGB",""), 3))[1], (split(' ', ReadingsVal("$name","_lastRGB",""), 3))[2]);
}
   userattr   _lastRGB, _lastDim, _lastRGBhex
   vclasses   ASSOCIATION:2 COLOR_CONTROL:1 CONFIGURATION:1 MANUFACTURER_SPECIFIC:1 METER:2 MULTI_CHANNEL:3 SENSOR_MULTILEVEL:2 SWITCH_ALL:1 SWITCH_MULTILEVEL:1 VERSION:1
   verbose    5

rabehd

event-on-change-reading bei  ZWave_SW_RGBW?
Auch funktionierende Lösungen kann man hinterfragen.

flipse

hatte ich drin

event-on-change-reading für state

hatte aber nix gebracht

Otto123

#9
Hi,

Einfach das notify mit dem richtigen Event anlegen lassen? Abschnitt 3
https://wiki.fhem.de/wiki/Notify
Und dann Abschnitt 4 im Link beachten und ruhig abarbeiten.

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

rabehd

ZitatWird gar nicht erst getriggert. EventMonitor habe ich auf.
Solange es kein Event gibt ist alles andere nicht von Bedeutung.


Zitat von: flipse am 22 Januar 2019, 11:43:56
hatte ich drin

event-on-change-reading für state

hatte aber nix gebracht
Ich würde erstmal alles besondere löschen, wenns funktioniert kann man einschränken.
Auch funktionierende Lösungen kann man hinterfragen.

flipse

#11
Zitat von: Otto123 am 22 Januar 2019, 11:47:49
Hi,

Einfach das notify mit dem richtigen Event anlegen lassen? Abschnitt 3
https://wiki.fhem.de/wiki/Notify
Und dann Abschnitt 4 im Link beachten und ruhig abarbeiten.

Gruß Otto

Die Doku habe ich mir natürlich schon angeschau und weil es nicht funktioniert hat, wende ich mich an euch. Oder ich habe dich nicht richtig verstanden

Für set ZWave_SW_RGBW dim 19
erhalte ich: 2019.01.22 11:21:46 3 : ZWave set ZWave_SW_RGBW dim 19


Hans Franz

Ist denn im notify addStateEvent gesetzt?

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

flipse

Zitat von: Hans Franz am 22 Januar 2019, 12:21:36
Ist denn im notify addStateEvent gesetzt?

Gruß
Hans

defmod ZWave_SW_RGBW_n notify ZWave_SW_RGBW:state:.* \
IF ("$EVTPART0" eq "dim") \
  (\
      setreading ZWave_SW_RGBW _lastDim $EVTPART1,\
      setreading RGB_Esszimmer ControllerDim $EVTPART1,\
      setreading RGB_Esszimmer ControllerLastAction $EVENT\
  )\
   ELSE \
   (\
       IF ("$EVTPART0" eq "rgb") \
       (\
           setreading ZWave_SW_RGBW _lastRGB $EVTPART1 $EVTPART2 $EVTPART3,\
           setreading RGB_Esszimmer ControllerRGB $EVTPART1 $EVTPART2 $EVTPART3\
       ),\
       setreading RGB_Esszimmer ControllerLastAction $EVENT\
   )
attr ZWave_SW_RGBW_n addStateEvent 1
attr ZWave_SW_RGBW_n verbose 5

flipse

defmod ZWave_SW_RGBW_n notify ZWave_SW_RGBW:state.*\
IF ("$EVTPART1" eq "dim") \
  (\
      setreading ZWave_SW_RGBW _lastDim $EVTPART2,\
      setreading RGB_Esszimmer ControllerDim $EVTPART2,\
      setreading RGB_Esszimmer ControllerLastAction $EVENT\
  )\
   ELSE \
   (\
       IF ("$EVTPART1" eq "rgb") \
       (\
           setreading ZWave_SW_RGBW _lastRGB $EVTPART2 $EVTPART3 $EVTPART4,\
           setreading RGB_Esszimmer ControllerRGB $EVTPART2 $EVTPART3 $EVTPART4\
       ),\
       setreading RGB_Esszimmer ControllerLastAction $EVENT\
   )
attr ZWave_SW_RGBW_n addStateEvent 1
attr ZWave_SW_RGBW_n verbose 5


Jetzt scheint es zu funktionieren.
Wenn ich jetzt jedoch sage, dass er nur auf state: rgb oder state:dim reagieren soll, wird es wieder nicht ausgeführt.