userReading aktualisiert sich nicht

Begonnen von dennis_n, 05 März 2016, 16:15:08

Vorheriges Thema - Nächstes Thema

dennis_n

Hallo,

ich habe einen Fibaro Relais Switch und dazu ein userReading defineiert.
Sie sieht so aus:

zustand {ReadingsVal("ZWave_SENSOR_BINARY_18","basicSet","ff")}
Ich ziehe mir damit den Status eines Sensors.

Mein Problem ist aber, dass sich das userReading bei den Readings vom Schalter nciht aktualisiert.
Nur wenn ich explizit "configAll" abrufe wird das Reading aktualisiert.
Wie kann ich das denn machen, damit dies automatisch funktioniert?

Danke

Gruss
Dennis

Internals:
   DEF        c1aa9dda 16
   IODev      ZWAVE1
   LASTInputDev ZWAVE1
   MSGCNT     194
   NAME       ZWave_SWITCH_BINARY_16
   NR         120
   STATE      off
   TYPE       ZWave
   ZWAVE1_MSGCNT 194
   ZWAVE1_RAWMSG 00040010057006060100
   ZWAVE1_TIME 2016-03-05 15:11:15
   homeId     c1aa9dda
   isWakeUp
   lastMsgSent 1457187075.8029
   nodeIdHex  10
   Readings:
     2016-03-05 15:11:13   configActiveFlashingAlarmTime 600
     2016-03-05 15:11:13   configAutoOff   2
     2016-03-05 15:11:14   configAutoOffRelayAfterSpecifiedTime ManualOverrideDisabled
     2016-03-05 15:11:14   configDimmerRollerShutterControl DisableDimmerRollerShutter0
     2016-03-05 15:11:14   configEnableDisableALLONOFF ALLONActiveALLOFFActive
     2016-03-05 15:11:14   configInputsBehaviour Toggle
     2016-03-05 15:11:14   configInputsButtonSwitchConfiguration BiStableInputSwitch
     2016-03-05 15:11:15   configRelayResponseToGeneralAlarm ALARMFLASHINGRelayWillTurnONAndO3
     2016-03-05 15:11:15   configRelayResponseToSmokeCOCO2Alarm ALARMFLASHINGRelayWillTurnONAndO3
     2016-03-05 15:11:15   configRelayResponseToTemperatureAlarm ALARMRELAYONRelayWillTurnONUpon1
     2016-03-05 15:11:15   configRelayResponseToWaterFloodAlarm ALARMRELAYOFFRelayWillTurnOFF2
     2016-03-05 15:11:15   configSavingStateBeforePowerFaillure StateSavedAtPowerFailureAll1
     2016-03-05 15:11:15   configSeparationOfAssociationSending6 MapStatusToAllDevicesInGroup10
     2016-02-27 20:08:12   model           FIBARO System FGS212 Switch 3kW
     2016-02-27 20:08:12   modelConfig     fibaro/fgs212.xml
     2016-02-27 20:08:12   modelId         010f-0402-1002
     2016-02-27 20:07:28   powerlvl        current 0 remain 0
     2016-03-05 15:10:58   reportedState   off
     2016-03-05 15:10:58   state           off
     2016-03-05 15:11:15   transmit        OK
     2016-02-27 20:09:10   version         Lib 3 Prot 3.52 App 2.2
     2016-03-05 15:11:15   zustand         00
Attributes:
   IODev      ZWAVE1
   alias      Garagentor
   classes    MANUFACTURER_SPECIFIC VERSION CONFIGURATION ASSOCIATION MULTI_CHANNEL_ASSOCIATION MULTI_CHANNEL SWITCH_BINARY SWITCH_ALL FIRMWARE_UPDATE_MD POWERLEVEL MARK SWITCH_BINARY MULTI_CHANNEL
   room       Aussen
   userReadings zustand {ReadingsVal("ZWave_SENSOR_BINARY_18","basicSet","ff")}

rudolfkoenig

ZitatMein Problem ist aber, dass sich das userReading bei den Readings vom Schalter nciht aktualisiert.

Ich verstehe nicht genau was du damit meinst. Deine Zeile kopiert bei jede Nachricht vom ZWave_SENSOR_BINARY_18 den Wert des Readings basicSet nach zustand. Wenn der Sensor kein basicSet sendet, sondern was anderes, dann aendert sich "zustand" nicht. Wenn ich falsch geraten habe: ein Log mit "attr ZWAVE1 verbose 5" wuerde helfen. Dass userReadings mit ZWave in der aktuellen Version noch funktioniert, habe ich gerade getetet.

dennis_n

#2
Hi,

also wenn ich den Sensor öffne und schließe befindet sich folgendes im Log:

2016.03.05 17:59:12 4: ZWDongle_Read ZWAVE1: sending ACK, processing 00040012032001ff
2016.03.05 17:59:12 5: SW: 06
2016.03.05 17:59:12 5: ZWAVE1 dispatch 00040012032001ff
2016.03.05 17:59:12 4: CMD:APPLICATION_COMMAND_HANDLER ID:12 ARG:032001ff
2016.03.05 17:59:13 4: ZWDongle_Read ZWAVE1: sending ACK, processing 000400120a710507ff00ff07020000
2016.03.05 17:59:13 5: SW: 06
2016.03.05 17:59:13 5: ZWAVE1 dispatch 000400120a710507ff00ff07020000
2016.03.05 17:59:13 4: CMD:APPLICATION_COMMAND_HANDLER ID:12 ARG:0a710507ff00ff07020000
2016.03.05 17:59:32 4: ZWDongle_Read ZWAVE1: sending ACK, processing 0004001203200100
2016.03.05 17:59:32 5: SW: 06
2016.03.05 17:59:32 5: ZWAVE1 dispatch 0004001203200100
2016.03.05 17:59:32 4: CMD:APPLICATION_COMMAND_HANDLER ID:12 ARG:03200100
2016.03.05 17:59:32 4: ZWDongle_Read ZWAVE1: sending ACK, processing 000400120a7105070000ff07020000
2016.03.05 17:59:32 5: SW: 06
2016.03.05 17:59:32 5: ZWAVE1 dispatch 000400120a7105070000ff07020000
2016.03.05 17:59:32 4: CMD:APPLICATION_COMMAND_HANDLER ID:12 ARG:0a7105070000ff07020000


Der Sensor ändert nur das Reading "basicSet". Dieses ändert sich von 00 = geschlossen auf ff=offen.

Allerdings macht mich das Log etwas stutzig, was genau der Sensor sendet.

Im Eventmonitor steht:
2016-03-05 18:05:03 ZWave ZWave_SENSOR_BINARY_18 basicSet: ff
2016-03-05 18:05:03 ZWave ZWave_SENSOR_BINARY_18 alarm: HomeSecurity: Intrusion, Unknown Location, arg 0000
2016-03-05 18:05:11 ZWave ZWave_SENSOR_BINARY_18 basicSet: 00
2016-03-05 18:05:12 ZWave ZWave_SENSOR_BINARY_18 alarm: HomeSecurity: Event cleared: Intrusion, Unknown Location


Gruss

Dennis

rudolfkoenig

Wenn ich dein Geraet mit deinem userReadings bei mir definiere, und die Nachricht aus dem Log simuliere, dann funktioniert alles:

fhem> define ZWave_SENSOR_BINARY_18 ZWave deadbeef 18
fhem> attr ZWave_SENSOR_BINARY_18 userReadings zustand {ReadingsVal("ZWave_SENSOR_BINARY_18","basicSet","ff")}
fhem> info timer
fhem> {Dispatch($defs{zwc}, "0004001203200100", undef) }
2016-03-05 18:08:58.234 ZWave ZWave_SENSOR_BINARY_18 basicSet: 00
2016-03-05 18:08:58.234 ZWave ZWave_SENSOR_BINARY_18 zustand: 00

und ich verstehe dein Problem nicht.

dennis_n

Mein Problem ist, dass sich zustand nach einer Änderung in den Readings nicht aktualisiert.

Wenn ich den Sensor in die Hand nehme und öffne (also ff) dann bleibt das Reading zustand im Fibaro Schalter auf 00 stehen.

Lade ich mir dann beispielsweise die config mit get configAll, aktualisiert sich das Reading. Aber eben nicht automatisch.

Gruss
Dennis

rudolfkoenig

Wenn dein EventMonitor Auszug vollstaendig ist, dann ist die userReadings Definition falsch. Oder FHEM alt. Oder lokal modifiziert.
Wie geschrieben, kann es leider anhand der mir vorliegenden Daten nicht bestaetigen, in meinem Log wird zustand geaendert.

dennis_n

Ich hänge hier mal noch einen Screenshot an. Vielleicht kann man damit mehr anfangen.

Gruss
Dennis


9zehn75

Zitat von: dennis_n am 05 März 2016, 16:15:08
Hallo,

ich habe einen Fibaro Relais Switch und dazu ein userReading defineiert.
Sie sieht so aus:

zustand {ReadingsVal("ZWave_SENSOR_BINARY_18","basicSet","ff")}

Hast Du dafür folgenden Befehl abgesetzt und danach auf "Save config" gedrückt oder "save" als Kommando abgesetzt?

attr ZWave_SENSOR_BINARY_18 userReadings zustand {ReadingsVal("ZWave_SENSOR_BINARY_18","basicSet","ff")}
VG, 9zehn75

FHEM seit 02.02.2016: Raspberry Pi 2, ZME_UZB1, Fibaro WallPlugs, Fibaro Fenstersensoren, Aeon Indoor Sirene, Greenwave WallPlugs, Qubino Dimmer

rudolfkoenig

ZitatIch hänge hier mal noch einen Screenshot an. Vielleicht kann man damit mehr anfangen.
Das ist Geraet 16, und kopiert basicSet vom Geraet 18. Aber nur dann, wenn von Geraet 16 einen Nachricht eintrifft (userReading reagiert auf Events des eigenen Geraetes, nicht auf welche von anderen). Da 16 aber ein Schalter ist, kommt wohl selten eine Nachricht, es sei denn, man holt configs ab.

Sorry, ich habe deinen ersten Post nicht aufmerksam genug gelesen: das macht man nicht so.
Variante 1: Sensor und Aktor sind direkt (d.h. ohne FHEM) verbunden. Dann sollte bei richtiger Konfiguration der Aktor den neuen Zustand an FHEM direkt melden (siehe Association). Wenn man das nicht hinkriegt, dann verwendet man ein notify, was auf den Sensor reagiert, und per setstate oder setreading beim Aktor was setzt.
Variante 2: Sensor und Aktor sind ueber FHEM verbunden. Dann notify definieren, was auf Sensor reagiert, und den Aktor per set setzt.

dennis_n

Eine letzte Frage: Sollte das unbedingt über ein notify sein oder kann ich auch DOIF benutzen?

Das folgende DOIF funktioniert auf jeden Fall. Hätte ein notify irgendwelche Vorteile?

([ZWave_SENSOR_BINARY_18] eq "00" )(setreading ZWave_SWITCH_BINARY_16 zustand 00) DOELSEIF ([ZWave_SENSOR_BINARY_18] eq "ff" )(setreading ZWave_SWITCH_BINARY_16 zustand ff)

Gruss
Dennis

rudolfkoenig

notify mit DOIF zu vergleichen ist eine Glaubensfrage.
Und Glaubenskriege fangen wir hier nicht an.