Philio PST02-A Bewegungserkennung

Begonnen von dt2510, 28 März 2019, 09:13:28

Vorheriges Thema - Nächstes Thema

dt2510

Ich habe bei meinem PST02-A das Problem, dass kein Bewegungsende (Event cleared) signalisiert wird und wie es aussieht, kann er das auch nicht.
In diesem https://forum.fhem.de/index.php/topic,35178.msg281477.html Beitrag habe ich gelesen, dass man ihn mit sequence generieren könnte, allerdings hab' ich nicht ganz verstanden wie sequence genau funktioniert. Hat vielleicht jemand ein Beispiel (idealerweise für den PST02) dafür ?

Wie genau verwendet ihr eure Bewegungsmelder ? Bei einem Aeotec Multisensor (der beide events sendet) hab' ich zudem das Problem, dass nicht immer eine Fortsetzung der Bewegung erkannt wird, was zur Folge hat, dass ich eine Weile im dunkeln stehe:

Motion Detection -> Licht an -> Event cleared -> Licht aus -> rumfuchteln vor dem Bewegungsmelder, aber keine erneute Motion Detection !?

Internals:
   AeonGen5_MSGCNT 10
   AeonGen5_RAWMSG 000400100531051b0100
   AeonGen5_TIME 2019-03-28 08:26:17
   DEF        xxxxxxxx 16
   IODev      AeonGen5
   LASTInputDev AeonGen5
   MSGCNT     10
   NAME       Aeotec_Multisensor_6_ID16
   NR         105
   STATE      neighborUpdate
   TYPE       ZWave
   ZWaveSubDevice no
   homeId     xxxxxxxx
   isWakeUp   
   nodeIdHex  10
   Helper:
   READINGS:
     2018-09-19 00:40:16   UNKNOWN         multilevel type  00 fl: 22 arg: 00fa
     2019-03-04 09:12:35   UNPARSED        LOCK 0176
     2019-03-28 08:03:00   alarm           HomeSecurity: Event cleared: Previous Events cleared
     2019-03-28 08:03:00   basicSet        0
     2019-03-28 08:26:16   battery         100 %
     2019-03-28 08:26:16   batteryPercent  100
     2019-03-28 08:26:16   batteryState    ok
     2016-12-01 19:14:25   configBatteryReportingThreshold 10
     2016-12-01 19:14:26   configCommandOptions BasicSetDefault
     2016-12-01 19:14:26   configEnableDisableLockConfiguration Disable
     2016-12-01 19:14:26   configEnableMotionSensor EnabledLevel3
     2016-12-01 19:14:27   configGroup1Interval 3600
     2016-12-01 19:14:27   configGroup1Reports 241
     2016-12-01 19:14:27   configGroup2Interval 3600
     2016-12-01 19:14:28   configGroup2Reports 0
     2016-12-01 19:14:28   configGroup3Interval 3600
     2016-12-01 19:14:29   configGroup3Reports 0
     2016-12-01 19:14:29   configHumidityCalibration 0
     2016-12-01 19:14:29   configHumidityReportingThreshold 10
     2016-12-01 19:14:30   configLowBattery 20
     2016-12-01 19:14:30   configLowTempAlarm Disabled
     2016-12-01 19:14:30   configLuminanceCalibration 0
     2016-12-01 19:14:31   configLuminanceReportingThreshold 100
     2016-12-01 19:14:31   configOnTime    10
     2016-12-01 19:14:31   configReportingThreshold Disabled
     2016-12-01 19:14:32   configTemperatureCalibration 0
     2016-12-01 19:14:32   configTemperatureReportingThreshold 20
     2016-12-01 19:14:32   configUVReportingThreshold 2
     2016-12-01 19:14:33   configUltravioletCalibration 0
     2016-12-01 19:14:33   configWakeUp10MinutesOnPowerOn No
     2018-11-27 14:07:09   config_9        0
     2018-09-30 21:46:48   direction       0
     2018-09-27 13:31:15   energy          0.9 kWh
     2019-03-28 08:26:15   humidity        51 %
     2019-03-28 08:26:16   luminance       593 Lux
     2016-07-02 11:09:46   model           Aeotec MultiSensor 6
     2016-07-02 11:09:46   modelConfig     aeotec/multisensor6.xml
     2016-07-02 11:09:46   modelId         0086-0002-0064
     2018-09-20 05:10:00   power           0.0 W
     2018-03-13 19:25:50   powerlvl        current 0 remain 0
     2016-07-02 11:34:32   powerlvlTest    node 0 status 0 frameAck 0
     2016-07-02 11:50:34   reportedState   open
     2017-12-18 17:29:01   state           neighborUpdate
     2019-03-28 08:26:15   temperature     9.4 C
     2018-09-26 19:44:31   time            19.1 seconds
     2018-03-13 19:25:50   timeToAck       0.134
     2018-03-13 19:25:50   transmit        OK
     2019-03-28 08:26:17   ultraviolet     0 UV
     2018-03-13 19:25:38   version         Lib 3 Prot 4.05 App 1.6 HW 100 FWCounter 0
Attributes:
   IODev      AeonGen5
   classes    ZWAVEPLUS_INFO VERSION MANUFACTURER_SPECIFIC ASSOCIATION_GRP_INFO ASSOCIATION POWERLEVEL ALARM BATTERY SENSOR_BINARY SENSOR_MULTILEVEL CONFIGURATION FIRMWARE_UPDATE_MD MARK DEVICE_RESET_LOCALLY
   userReadings 1
   vclasses   ALARM:3 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:2 MANUFACTURER_SPECIFIC:2 POWERLEVEL:1 SENSOR_BINARY:1 SENSOR_MULTILEVEL:5 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2

rudolfkoenig

Ich kenne das besagte Geraet nicht. Evtl. ist es mit aehnlicher Logik bestueckt, wie der alte FS20 Bwegungsmelder: falls Bewegung erkannt wird, dann legt er sich nach Melden der Bewegung fuer X Sekunden (konfigurierbar) schlafen, erst danach sucht er wieder. Die Loesung fuer Lampen mit so einem Geraet ist ein "on-for-timer X+Y"  (Y je nach Geschmack) zu senden.

dt2510

#2
Mit on-for-timer käme ich vermutlich klar, hab' ich aber noch nie verwendet.

Was passiert, wenn eine erneute Bewegung festgestellt wird ?

Bewegungserkennung -> on-for-timer 60 -> nach 40 Sekunden erneut Bewegung -> erneut on-for-timer 60

Ist die Restzeit dann
- 20 Sekunden, weil der Timer noch läuft ?
- 60 Sekunden, weil der Timer neu gestartet wird ?
- 80 Sekunden, weil um 60 Sekunden verlängert wird ?

oder lässt sich das Verhalten individuell anpassen ?

edit

mir fällt gerade ein, dass ich bei dem PST02-A gar kein on-for-timer verwenden kann, da dort (Arbeitsflächenbeleuchtung in der Küche - mit HUE Lightstrips) die Helligkeit auf 25% (set pct 25 nicht set on) gesetzt wird (momentan in 99_myUtils.pm gelöst mit einem define at +00:00:30 bei Bewegungsstart und einem delete des at's nach Ablauf der Zeit)

rudolfkoenig

ZitatWas passiert, wenn eine erneute Bewegung festgestellt wird ?
SetExtensions loescht bei allen timer Funktionen den alten Timer, und setzt ihn neu.


Zitatmir fällt gerade ein, dass ich bei dem PST02-A gar kein on-for-timer verwenden kann, da dort (Arbeitsflächenbeleuchtung in der Küche - mit HUE Lightstrips) die Helligkeit auf 25% (set pct 25 nicht set on) gesetzt wird
Das kann man mit cmdalias loesen:
define ca_XXX_pct cmdalias set XXX on AS set XXX pct 25
Das ist nicht getestet, bitte um mitdenken.

dt2510

#4
Ich hab' es jetzt so gelöst:

99_myUtils.pm
sub OnForTimer($$$) {
  my ($myDevice,$myValue,$myDuration) = @_;
  if (Value("Daylight") eq "Day") {return();}
  if (!exists($defs{$myDevice."Timer"})) {
    if (AttrVal($myDevice,"automationDevice","") eq "Dimmer") {
      if (GetCurrentValue($myDevice) > 0) {return();}
    } else {
      if (GetCurrentValue($myDevice) eq "on") {return();}
    }
  } else {
    fhem("delete $myDevice"."Timer");
  }
  if (AttrVal($myDevice,"automationDevice","") eq "Dimmer")
    {fhem("set ".$myDevice." pct ".$myValue);} else     
    {fhem("set ".$myDevice." ".$myValue);}
  fhem("define $myDevice"."Timer at +".$myDuration." {TimedOff('".$myDevice."')}");
}

sub TimedOff($) {
  my ($myDevice) = @_;
  if (AttrVal($myDevice,"automationDevice","") eq "Dimmer")
    {fhem("set ".$myDevice." pct 0");} else     
    {fhem("set ".$myDevice." off");}
}


beim Bewegungsmelder (Aeotec = normale Lampe, Hauppauge = Dimmer)
define Aeotec_Multisensor_6_ID16_MotionStarted notify Aeotec_Multisensor_6_ID16:alarm:.HomeSecurity:.Motion.*  {OnForTimer("FGS212_ID15","on","00:00:30")}
define Hauppauge_4_in_1_ID30_MotionStarted notify Hauppauge_4_in_1_ID30:alarm_HomeSecurity:.Motion.*  {OnForTimer("HUEGroup2","25","00:00:30")}


Der dummy "Daylight" hat bei mir den Wert "Day", "Night" oder "Twilight" und die Lampen (HUE, ZWave usw.) ein Attribut "automationDevice" mit den Werten "Switch", "Dimmer" usw.

Was passiert ?

- am Tag überhaupt nichts
- wenn das at <device>Timer existiert wird es gelöscht (= der Timer ist noch aktiv)
- existiert das at <device>Timer nicht und das Licht ist schon an passiert auch nichts (= kein aktiver Timer, sondern manuell geschaltet)
- ansonsten wird das Licht angeschaltet (on oder ein Prozentwert bei Dimmern) und das at <device>Timer erstellt
- nach der angegebenen Zeit wird das Licht ausgeschaltet (off oder pct 0)

Wenn der Wert für $myDuration größer ist als die Zeit, die der Bewegungsmelder bis zur erneuten Meldung einer Bewegung braucht, gibt es auch keine dunklen Phasen, da der Timer wieder neu gesetzt wird.