Probleme mit HmIP-SMI55 Bewegungsmelder und Hue

Begonnen von dt2510, 05 Februar 2021, 08:16:07

Vorheriges Thema - Nächstes Thema

dt2510

Morgen :)

Bisher hatte ich einen ZWave Bewegungsmelder um eine HUEGroup zu steuern. Hierzu habe ich ein notify, welches auf die Bewegung reagiert und eine Prozedur, die die HUEGroup ansteuert in meiner 99_myUtils.pm:

notify
define EG_KU_SMI55_MotionStarted notify EG_KU_SMI55:hmstate:.motion.* {OnForTimer("HUEGroup3",25,"00:00:30")}

OnForTimer
# ##########################################################################
# Bewegungserkennung - Licht für Dauer x anschalten
# ##########################################################################
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."')}");
}


Daylight ist ein Dummy mit dem Inhalt "Day", "Night" oder "Twilight"
automationDevice ist ein Attribut mit Inhalt "Dimmer" für die HUEGroup
GetCurrentValue ist eine Hilfsfunktion, die für "Dimmer" das pct Reading zurückliefert
TimedOff ist eine Hilfsprozedur, die "Dimmer" nach Ablauf der Zeit auf "pct 0" setzt

Bei erneuter Bewegung lösche ich den Timer und am Ende wird er neu definiert, um die Leuchtdauer der Lampe zu verlängern.

Prinzipiell funktioniert das auch mit dem HmIP-SMI55: die HUEGroup wird abends und bei Dämmerung für 30 Sekunden auf 25% gesetzt

Aber: Schalte ich die HUEGroup währenddessen ein (über die Taster des SMI), wird sofort wieder eine Bewegung erkannt und dadurch wieder auf 25% runtergeregelt - bei den ZWave Devices konnte man einstellen, wann erneut Bewegung gemeldet werden sollte.

Wie könnte ich das jetzt umsetzen ?

dt2510

Ich denke mal, dass ich mir das Leben mit den korrekten Einstellungen hier etwas leichter machen könnte ... welche Zeiten müsste ich hier anpassen und welche Helligkeit wäre hier sinnvoll ?


dt2510

Ich denke ich werde die komplette Steuerung der Bewegungsmelder überarbeiten ...

Den Bewegungsmelder würde ich einstellen wie im Anhang - ich verstehe die Werte folgendermaßen:

- jeder Sensor Impuls wird registriert aber nur alle 15s Bewegung gesendet (3.MOTION: motion)
- nach 30s ohne Bewegung wird die Bewegung zurückgesetzt (3.MOTION: noMotion)
- der letzte Helligkeitswert der letzten 6 Minuten wird übermittelt (z.B. 3.ILLUMINATION: 29.0)

Bitte korrigiert mich, wenn ich hier falsch liege.

Ich würde dann für alle Lampen ein notify anlegen (oder ein notify für alle Lampen - mal sehen ob das geht), welches bei Zustandsänderung ein "setreading xxx switch manual" ausführt

Der Bewegungmelder würde dann folgendermaßen impementiert:

Bei Bewegung (motion) würde ich prüfen ob es noch zu hell (ILLUMINATION > xxx) oder die Lampe bereits an (<> pct 0) ist und falls nicht die Lampe auf 25% dimmen und danach ein "setreading xxx switch auto" ausführen
Bei Bewegungsende (noMotion) würde ich, wenn das Reading switch noch auf auto steht, die Lampe ausschalten (switch wird dann automatisch auf manual gesetzt)

Dadurch sollte es möglich sein die Lampe am SMI anzuschalten, selbst wenn er Bewegung registriert. Schalte ich sie aus reagiert sofort wieder der Bewegungsmelder und dimmt für 30 Sekunden auf 25%

So die Theorie ... ich versuche es gleich mal zu testen

Gibt es eigentlich eine Tabelle oder Richtwerte für die ILLUMINATION Werte ?

kjmEjfu

Zitat von: dt2510 am 05 Februar 2021, 10:30:24
Dadurch sollte es möglich sein die Lampe am SMI anzuschalten, selbst wenn er Bewegung registriert. Schalte ich sie aus reagiert sofort wieder der Bewegungsmelder und dimmt für 30 Sekunden auf 25%

An der Stelle könnte sich noch ein

set DEVICE datapoint 1.RESET_MOTION 1

bewähren. Damit setzt du eine eventuell erkannte Bewegung zurück, so dass der Timer wieder neu läuft.
Ansonsten kann es halt bis zu 15 Sekunden dauern.
Migriere derzeit zu Home Assistant

dt2510


dt2510

funktioniert alles soweit, allerdings gibt es keinen datapoint 1.RESET_MOTION

dt2510

hab's gefunden ... RESET_MOTION liegt auf Kanal 3

kjmEjfu

Zitat von: dt2510 am 09 Februar 2021, 10:02:09
funktioniert alles soweit, allerdings gibt es keinen datapoint 1.RESET_MOTION

mach mal ein get deviceinfo. Im Channel 1 müsste es irgendwas ähnliches geben.
Migriere derzeit zu Home Assistant

dt2510

hier das device info

Device channels and datapoints
CHN 0014DBE9913CF5:0 EG_KU_SMI55:0
  DPT {b} HmIP-RF.0014DBE9913CF5:0.CONFIG_PENDING = false [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.DUTY_CYCLE = false [RE]
  DPT {n} HmIP-RF.0014DBE9913CF5:0.ERROR_CODE = 0 [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.INSTALL_TEST = true [RW]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.LOW_BAT = false [RE]
  DPT {f} HmIP-RF.0014DBE9913CF5:0.OPERATING_VOLTAGE = 3.000000 [RE]
  DPT {i} HmIP-RF.0014DBE9913CF5:0.OPERATING_VOLTAGE_STATUS = 0 [RE]
  DPT {n} HmIP-RF.0014DBE9913CF5:0.RSSI_DEVICE = 180 [RE]
  DPT {n} HmIP-RF.0014DBE9913CF5:0.RSSI_PEER = 184 [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.UNREACH = false [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.UPDATE_PENDING = false [RE]
CHN 0014DBE9913CF5:1 EG_KU_SMI55:1
  DPT {b} HmIP-RF.0014DBE9913CF5:1.PRESS_LONG = false [E]
  DPT {b} HmIP-RF.0014DBE9913CF5:1.PRESS_SHORT = false [E]
CHN 0014DBE9913CF5:2 EG_KU_SMI55:2
  DPT {b} HmIP-RF.0014DBE9913CF5:2.PRESS_LONG = false [E]
  DPT {b} HmIP-RF.0014DBE9913CF5:2.PRESS_SHORT = false [E]
CHN 0014DBE9913CF5:3 EG_KU_SMI55:3
  DPT {f} HmIP-RF.0014DBE9913CF5:3.CURRENT_ILLUMINATION = 0.000000 [RE]
  DPT {i} HmIP-RF.0014DBE9913CF5:3.CURRENT_ILLUMINATION_STATUS = 0 [RE]
  DPT {f} HmIP-RF.0014DBE9913CF5:3.ILLUMINATION = 56.100000 [RE]
  DPT {i} HmIP-RF.0014DBE9913CF5:3.ILLUMINATION_STATUS = 0 [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:3.MOTION = false [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:3.MOTION_DETECTION_ACTIVE = true [RWE]
  DPT {b} HmIP-RF.0014DBE9913CF5:3.RESET_MOTION =  [W]
Device description
Can't get device description
Defaults

substitute = PRESS_LONG,PRESS_SHORT!(1|true):pressed,(0|false):released;MOTION,MOTION_DETECTION_ACTIVE!(0|false):no,(1|true):yes;ILLUMINATION_STATUS!0:normal,1:unknown,2:overflow
eventMap = /datapoint 3.MOTION_DETECTION_ACTIVE 1:detection-on/datapoint 3.MOTION_DETECTION_ACTIVE 0:detection-off/datapoint 3.RESET_MOTION 1:reset/
ccureadingfilter = (ILLUMINATION|MOTION|PRESS)
event-on-update-reading = .*
statedatapoint = 3.MOTION


liegt auf Kanal 3 ... ich hab allerdings häufig Probleme, dass der Befehl nicht durchgeht (steht dann als Servicemeldung in der CCU). Ich befürchte das liegt an einer etwas dickeren Wand im Weg. Was mir allerdings nicht klar ist, ist warum die Bewegung immer sauber erkannt wird ...

dt2510

Ich hab' schon wieder ein neues Problem mit der Bewegung. Ich habe die Steuerung wie oben umgesetzt und bis gestern lief alles. Heute morgen hatte ich schon wieder Probleme.

Hier mal mein notify zur Bewegungserkennung:
EG_KU_SMI55:3.MOTION:(.1|.motion) {if ((ReadingsVal('HUEGroup3','pct',0) eq 0) && (ReadingsVal('EG_KU_SMI55','3.ILLUMINATION',0) lt 100)) {fhem "set HUEGroup3 pct 25";fhem "sleep 1;setreading HUEGroup3 switch auto"}}

Bewegung wird erkennt (state des notify hat aktuelle Uhrzeit), allerdings wird die Lampe nicht eingeschaltet, obwohl die HUEGroup auf pct 0 steht und 3.ILLUMINATION auf 23.8

Nehme ich die Helligkeitsabfrage raus, wird die Lampe geschaltet
EG_KU_SMI55:3.MOTION:(.1|.motion) {if (ReadingsVal('HUEGroup3','pct',0) eq 0) {fhem "set HUEGroup3 pct 25";fhem "sleep 1;setreading HUEGroup3 switch auto"}}

Mein Fehler muss also irgendwo in dieser Abfrage liegen, ich weiß aber nicht wo ...
(ReadingsVal('EG_KU_SMI55','3.ILLUMINATION',0) lt 100)

Die Unterschiedlichen Werte in 3.MOTION hab' ich zum Glück schon in den Griff bekommen.

Ich hab' es auch schon mit ReadingsNum statt ReadingsVal versucht - Ergebnis ist das gleiche ...

Hier noch ein DeviceInfo (Helligkeit ist jetzt etwas höher)
Device channels and datapoints
CHN 0014DBE9913CF5:0 EG_KU_SMI55:0
  DPT {b} HmIP-RF.0014DBE9913CF5:0.CONFIG_PENDING = false [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.DUTY_CYCLE = false [RE]
  DPT {n} HmIP-RF.0014DBE9913CF5:0.ERROR_CODE = 0 [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.INSTALL_TEST = true [RW]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.LOW_BAT = false [RE]
  DPT {f} HmIP-RF.0014DBE9913CF5:0.OPERATING_VOLTAGE = 3.000000 [RE]
  DPT {i} HmIP-RF.0014DBE9913CF5:0.OPERATING_VOLTAGE_STATUS = 0 [RE]
  DPT {n} HmIP-RF.0014DBE9913CF5:0.RSSI_DEVICE = 184 [RE]
  DPT {n} HmIP-RF.0014DBE9913CF5:0.RSSI_PEER = 184 [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.UNREACH = false [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:0.UPDATE_PENDING = false [RE]
CHN 0014DBE9913CF5:1 EG_KU_SMI55:1
  DPT {b} HmIP-RF.0014DBE9913CF5:1.PRESS_LONG = false [E]
  DPT {b} HmIP-RF.0014DBE9913CF5:1.PRESS_SHORT = false [E]
CHN 0014DBE9913CF5:2 EG_KU_SMI55:2
  DPT {b} HmIP-RF.0014DBE9913CF5:2.PRESS_LONG = false [E]
  DPT {b} HmIP-RF.0014DBE9913CF5:2.PRESS_SHORT = false [E]
CHN 0014DBE9913CF5:3 EG_KU_SMI55:3
  DPT {f} HmIP-RF.0014DBE9913CF5:3.CURRENT_ILLUMINATION = 0.000000 [RE]
  DPT {i} HmIP-RF.0014DBE9913CF5:3.CURRENT_ILLUMINATION_STATUS = 0 [RE]
  DPT {f} HmIP-RF.0014DBE9913CF5:3.ILLUMINATION = 47.100000 [RE]
  DPT {i} HmIP-RF.0014DBE9913CF5:3.ILLUMINATION_STATUS = 0 [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:3.MOTION = false [RE]
  DPT {b} HmIP-RF.0014DBE9913CF5:3.MOTION_DETECTION_ACTIVE = true [RWE]
  DPT {b} HmIP-RF.0014DBE9913CF5:3.RESET_MOTION =  [W]

Device detection:
StateDatapoint = 3.MOTION MOTIONDETECTOR_TRANSCEIVER
ControlDatapoint = 3.MOTION_DETECTION_ACTIVE MOTIONDETECTOR_TRANSCEIVER

Recommended module for device definition: HMCCUCHN

Current state datapoint = 3.MOTION

Current control datapoint = 1.PRESS_SHORT
Device description
Device 0014DBE9913CF5 EG_KU_SMI55 [HmIP-SMI55]
  AES_ACTIVE: 1
  AVAILABLE_FIRMWARE: 0.0.0
  CHILDREN: 0014DBE9913CF5:0,0014DBE9913CF5:1,0014DBE9913CF5:2,0014DBE9913CF5:3,0014DBE9913CF5:4
  DIRECTION: NONE
  FIRMWARE: 1.0.12
  FIRMWARE_UPDATE_STATE: UP_TO_DATE
  FLAGS: Visible
  PARAMSETS: MASTER,SERVICE
  RF_ADDRESS: 2827467
  ROAMING: 0
  RX_MODE: CONFIG
  SUBTYPE: SMI55
  UPDATABLE: 1
Channel 0014DBE9913CF5:0 EG_KU_SMI55:0 [MAINTENANCE]
  AES_ACTIVE: 1
  DIRECTION: NONE
  FLAGS: Visible
  PARAMSETS: MASTER,VALUES,SERVICE
  PARENT: 0014DBE9913CF5
  PARENT_TYPE: HmIP-SMI55
  RF_ADDRESS: 0
  ROAMING: 0
  RX_MODE:
  UPDATABLE: 1
Channel 0014DBE9913CF5:1 EG_KU_SMI55:1 [KEY_TRANSCEIVER] known
  AES_ACTIVE: 1
  DIRECTION: SENDER
  FLAGS: Visible
  LINK_SOURCE_ROLES: REMOTE_CONTROL
  PARAMSETS: MASTER,VALUES,LINK,SERVICE
  PARENT: 0014DBE9913CF5
  PARENT_TYPE: HmIP-SMI55
  RF_ADDRESS: 0
  ROAMING: 0
  RX_MODE:
  UPDATABLE: 1
Channel 0014DBE9913CF5:2 EG_KU_SMI55:2 [KEY_TRANSCEIVER] known
  AES_ACTIVE: 1
  DIRECTION: SENDER
  FLAGS: Visible
  LINK_SOURCE_ROLES: REMOTE_CONTROL
  PARAMSETS: MASTER,VALUES,LINK,SERVICE
  PARENT: 0014DBE9913CF5
  PARENT_TYPE: HmIP-SMI55
  RF_ADDRESS: 0
  ROAMING: 0
  RX_MODE:
  UPDATABLE: 1
Channel 0014DBE9913CF5:3 EG_KU_SMI55:3 [MOTIONDETECTOR_TRANSCEIVER] known
  AES_ACTIVE: 1
  DIRECTION: SENDER
  FLAGS: Visible
  LINK_SOURCE_ROLES: CONDITIONAL_SWITCH
  PARAMSETS: MASTER,VALUES,LINK,SERVICE
  PARENT: 0014DBE9913CF5
  PARENT_TYPE: HmIP-SMI55
  RF_ADDRESS: 0
  ROAMING: 0
  RX_MODE:
  UPDATABLE: 1
Channel 0014DBE9913CF5:4 EG_KU_SMI55:4 [STATE_RESET_RECEIVER]
  AES_ACTIVE: 1
  DIRECTION: RECEIVER
  FLAGS: Visible
  LINK_TARGET_ROLES: SWITCH,CONDITIONAL_SWITCH,REMOTE_CONTROL
  PARAMSETS: MASTER,VALUES,LINK,SERVICE
  PARENT: 0014DBE9913CF5
  PARENT_TYPE: HmIP-SMI55
  RF_ADDRESS: 0
  ROAMING: 0
  RX_MODE:
  UPDATABLE: 1

Defaults

Support for role KEY_TRANSCEIVER of device type HmIP-SMI55 is built in.