After some advice on the best / most efficient / easiest way to write this rule…
I have multiple motion sensors, all are individual switch items in OH so give an on/off result.
All are grouped into a gMotion group from which I run my presence detection, ie if motion is detected is someone home etc…all good here.
What I want to do is capture which motion sensor it was that detected motion so I can have it message me ‘motion detected in xxxxx room’ and then I can run location rules off the back of it.
Thanks, I’ve done a crude if statement for the moment but was hoping that I could interrogate a group option so I don’t have to keep updating the rule for each new motion sensor etc…
I’ll also take a read through your link, looks really interesting.
rule "What motion sensor updated"
when
Item gMotion changed
then
if(GF_HW_MotionSensor_Motion.state == ON) vLastMotionSensor.postUpdate("Ground Floor Hallway") // GF HW Sensor
if(GF_LR_MotionSensor_Motion.state == ON) vLastMotionSensor.postUpdate("Ground Floor Living Room") // GR LR Sensor
if(FF_HW_MotionSensor_Motion.state == ON) vLastMotionSensor.postUpdate("First Floor Hallway") // FF HW Sensor
end
This just updates a string dummy variable with the text to determine which was the last sensor to receive an ON command, I might modify it to a number and then I can case statement case 1, case 2, case 3 etc and then I can run rules from there…
If you are going to stick with the DSL, use this for the trigger…
Member of gMotion changed to ON
And then use triggeringItem to get the Item that triggered the rule. From there, run triggeringItem.name through a mapping of Item name to friendly name. Or setup some metadata. Or parse out the name into a friendly name, like this…
rule "What motion sensor updated"
when
Member of gMotion changed to ON
then
val last_item_name = triggeringItem.name.replace("GF", "Ground Floor").replace("FF", "First Floor").replace("HW", " Hallway").replace("LR", " Living Room")
vLastMotionSensor.postUpdate(last_item_name)
end
Just reading through your lighting posts…some very impressive stuff in there, it’s making me re-think some of my lighting thoughts…
As you seem to be a bit of a grouping guru, is there a site / post that shows the various options like triggeringItem etc for grouping as I’ve gone through the docs on here and searched the forum and while there are different posts within rules I’d like to do some learning as to the hows and whys…
EDIT
Note to self, (and anyone else)…lot’s of useful info here:
Implicit variables like triggeringItem are documented here. triggeringItem in particular is useful when using Member of rule triggers. Putting it all together you can do stuff like Design Pattern: Associated Items.
You might link to think about what happens when a whole sequence of detectors are triggered, a Group state may not reflect that. Depending what your trying to do, you might not care. But if you want to deal with every event, the Member of trigger works rather differently.
Thanks, my gMotion is a number in this case, I use it for presence detection / security, and I just want to run something when gMotion > 0, ie any motion is detected.
However, now I’m delving into the various group options I’m starting to see that there is a whole lot more to groups that I first thought. There is a lot of good stuff in there that will really help my rule making going forward…and unfortunately a lot that will mean some old rule rewriting!
It’s all for the better though and the next step on my OH learning journey.