From: Chris B. <ch...@ba...> - 2007-02-02 09:24:12
|
Hi, There's no need to define Kitchen_Darkness. When you defined Kitchen_Motion as an X10MS device you automatically catered for its light sensor. You can test for darkness with the "dark" method. For example: if ((state_now $Kitchen_sensor eq MOTION) && (dark $Kitchen_sensor)) { print_log "Turning the kitchen light on as it's dark in the kitchen!"; set $Kitchen_light ON; } The above example assumes that you've defined the sensor as: X10MS, D7, Kitchen_sensor, Sensors, MS13 Hope that this helps. Chris > -----Original Message----- > From: mis...@li... [mailto:misterhouse- > use...@li...] On Behalf Of Robin Edwards > Sent: Friday, 2 February 2007 8:52 AM > To: misterhouse > Subject: [mh] Motion Sensor code > > I've just deployed a number of motion sensors (MS13Es) around my house and > I'm > monitoring them with some code I've had for a while now. Here is a > sample of > the printlog, I always seem to get duplicate entries and would especially > like > to get rid of the lines other than those I print > > # 01/02/07 09:33:15 PM XH7HK: Robin_Darkness still > # 01/02/07 09:33:15 PM XH7HK: Robin_Darkness still > # 01/02/07 09:33:15 PM XH7HK: Robin_Motion still > # 01/02/07 09:33:15 PM XH7HK: Robin_Motion still > # 01/02/07 09:33:13 PM XB7BJ: Study_Motion motion > # 01/02/07 09:33:13 PM XB7BJ: Study_Motion motion > # 01/02/07 09:33:09 PM XA7AJ: Lounge_Motion motion > # 01/02/07 09:33:09 PM XA7AJ: Lounge_Motion motion > # 01/02/07 09:33:03 PM XB7BJ: Study_Motion motion > # 01/02/07 09:33:03 PM XB7BJ: Study_Motion motion > # 01/02/07 09:32:50 PM XB7BJ: Study_Motion motion > # 01/02/07 09:32:50 PM XB7BJ: Study_Motion motion > # 01/02/07 09:32:47 PM XA7AJ: Lounge_Motion motion > # 01/02/07 09:32:47 PM XA7AJ: Lounge_Motion motion > # 01/02/07 09:32:38 PM XB7BJ: Study_Motion motion > # 01/02/07 09:32:38 PM XB7BJ: Study_Motion motion > # 01/02/07 09:32:34 PM XA7AJ: Lounge_Motion motion > # 01/02/07 09:32:34 PM XA7AJ: Lounge_Motion motion > # 01/02/07 09:32:33 PM The Kitchen is quiet. > # 01/02/07 09:32:33 PM XD7DK: Kitchen_Motion still > # 01/02/07 09:32:33 PM XD7DK: Kitchen_Motion still > > So, in this sample only the third from the bottom > > Below is the entry for the Kitchen. I'm not sure its working properly, > currently I'm only looking to monitor occupancy. For example I think I > never > see the Lit. message. Does anybody have a better generic set of code I > could > base my monitoring on please. > > #X10MS, D7, Kitchen_Motion, Sensors, MS13 > #X10MS, D8, Kitchen_Darkness, Hidden, MS13 > #logic - look for motion in a room, identified by MS13 > # If there is motion say so and set a 120 second timer > # If there is no motion say so > # > > my $Kitchen_Motion_timer = new Timer; > my $Kitchen_Motion_state; > > if ($state = state_now $Kitchen_Motion) { > set $Kitchen_Motion_timer 120; > if ($Kitchen_Motion_state ne $state) { > if ($state eq 'motion') { > print_log "Movement in Kitchen."; > } else { > print_log "The Kitchen is quiet."; > set $Kitchen_Motion_timer 0; > } > $Kitchen_Motion_state = $state; > } > } > > #Sometimes the 'no more motion' signal is missed. This timer will > #ensure that we get the signal two minutes after the last motion > #has been detected and logs the fact that it had to do this. > # > > if ( expired $Kitchen_Motion_timer ) { > set $Kitchen_Motion 'still'; > print_log "Kitchen Motion Timer Expired."; > } > > my $Kitchen_Darkness_state; > if ($state = state_now $Kitchen_Darkness) { > if ($Kitchen_Darkness_state ne $state) { > if ($state eq 'light') { > print_log "The Kitchen is lit."; > } else { > print_log "The Kitchen is dark."; > } > $Kitchen_Darkness_state = $state; > } > } > |