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 ?
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 ?
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 ?
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.
prima, werd' ich testen :)
funktioniert alles soweit, allerdings gibt es keinen datapoint 1.RESET_MOTION
hab's gefunden ... RESET_MOTION liegt auf Kanal 3
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.
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 ...
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.