Culvdave Posted December 17, 2016 Posted December 17, 2016 I have several lighting scenes programmed to turn on at specific times relative to sunset. Problem is on cloudy days interior of house get's too dark earlier than programmed times. Is it possible to use some kind of photoelectric cell to control scenes instead of time of day?
G W Posted December 17, 2016 Posted December 17, 2016 I have several lighting scenes programmed to turn on at specific times relative to sunset. Problem is on cloudy days interior of house get's too dark earlier than programmed times. Is it possible to use some kind of photoelectric cell to control scenes instead of time of day?Yes. You could connect a sensor to an I/O Linc and add it to your programs. I'm Gary Funk and I wrote this message.
Teken Posted December 17, 2016 Posted December 17, 2016 If you have a Insteon motion sensor you can base a program on the dusk to dawn node being activated. If you have the real fancy 5-1 sensor you could use the light sensor built into that unit too for the same objective.
Culvdave Posted December 17, 2016 Author Posted December 17, 2016 I'm not familiar with a 5-1 sensor, is that an Insteon product? I do have a spare motion sensor, how would I write the program using that? I would want the scenes to turn off at a specified time.
paulbates Posted December 17, 2016 Posted December 17, 2016 I'm not familiar with a 5-1 sensor, is that an Insteon product? I do have a spare motion sensor, how would I write the program using that? I would want the scenes to turn off at a specified time. There are a couple of alternatives. Here is a program that uses the dusk sensor in an insteon motion sensor, and checks for dusk as a fall back. Its unlikely, but if the sensor is sensing motion at the same time as the dusk call, it misses it. I also have "Fast on" for a local switch to turn on the associated items. The sunset - 45 for 45 minutes insures that dark storm system doesn't set it off early, or the occasional eclipse. Turning them on Lights on Dusk - [ID 0009][Parent 0006] If ( From Sunset - 45 minutes For 45 minutes And Control (Old) 'Yard / Premise Lights / Driveway Motion-Sensor-Dusk.D' is switched On ) Or Time is Sunset + 4 minutes Or 'Kitchen / Back Deck' is switched Fast On Then Set Scene 'Yard / Yard and Lamp Security / Yard light - Lanscape Lights ' On Wait 32 seconds Set Scene 'Yard / Yard and Lamp Security / Yard Lights On' On Else - No Actions - (To add one, press 'Action') Turn on yard lights by driveway dusk sensor The 32 second delay between the landscape lights and everything else is becuase the landscape lights have 30 second delay after powerup The From / For conditions prevent early turn on by a heavy late afternoon storm Another way to achieve this, if you have the climate module, and a nearby weather station that reports Light %, that can be used too. Turning them off To turn them off, simply have a program at that time that turns them off. Paul
builderb Posted December 17, 2016 Posted December 17, 2016 I've got a super cheap photoresistor wired up to a RasPi that changes a variable on my ISY when it crosses a threshold.
steve9f Posted December 17, 2016 Posted December 17, 2016 @builderb - I've been thinking about doing the same thing with Raspi. Can you share more specifics on how you built this and what code you're using on the rpi to update the ISY variable? Thanks, Steve
larryllix Posted December 17, 2016 Posted December 17, 2016 I've got a super cheap photoresistor wired up to a RasPi that changes a variable on my ISY when it crosses a threshold.Nice!Can you list the hardware required to do this?
G W Posted December 17, 2016 Posted December 17, 2016 A photo sensor and a pi. It's very simple. You write the program to set a variable on the ISY when the point changes. Gary Funk Merry Christmas
builderb Posted December 18, 2016 Posted December 18, 2016 (edited) @builderb - I've been thinking about doing the same thing with Raspi. Can you share more specifics on how you built this and what code you're using on the rpi to update the ISY variable? Thanks, Steve Nice! Can you list the hardware required to do this? A photo sensor and a pi. It's very simple. You write the program to set a variable on the ISY when the point changes. Gary Funk Merry Christmas So, basically what Gary said. It's nothing terribly complicated. I wired up an old spare Pi to a photoresistor per this Adafruit guide: https://learn.adafruit.com/basic-resistor-sensor-reading-on-raspberry-pi/basic-photocell-reading Then I modified their Python script that reads the values per the following: #!/usr/bin/env python import RPi.GPIO as GPIO, time, os import httplib2 username='<ISYusername>' password='<ISYpassword>' host="http://<XXX.XXX.XXX.XXX>" rest="/rest/vars/set/" ISY_Integer = 1 ISY_State = 2 cur_value = "" isy_var_num = <ISYvar_number> DEBUG = 1 GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) def RCtime (RCpin): reading = 0 GPIO.setup(RCpin, GPIO.OUT) GPIO.output(RCpin, GPIO.LOW) time.sleep(0.1) GPIO.setup(RCpin, GPIO.IN) # This takes about 1 millisecond per loop cycle while (GPIO.input(RCpin) == GPIO.LOW): reading += 1 return reading def ISY(mhost,murl,muser,mpass): h = httplib2.Http(".cache") h.add_credentials(muser, mpass) resp, content = h.request(mhost + murl, "GET", headers={'content-type':'text/plain'} ) while True: prev_value = cur_value cur_value = RCtime(18) if cur_value < 1000 and prev_value >= 1000: # print("Light") value = 1 r = ISY(host,rest + str(ISY_State) + "/" + str(isy_var_num) + "/" + str(value),username,password) elif cur_value >= 1000 and prev_value < 1000: # print("Dark") value = 0 r = ISY(host,rest + str(ISY_State) + "/" + str(isy_var_num) + "/" + str(value),username,password) All I did was replace their loop that constantly printed the value with a loop that checks to see if the value has crossed a numerical threshold. I have defined my threshold as 1000 here. You'll have to adjust yours as necessary to suit your taste. Uncomment the print lines during testing if you want to run the script from the command line. If all is working, you'll see it print Light and Dark as you cover the sensor with your hand. Make it executable, and follow this guide to start this service at boot: http://raspberrywebserver.com/serveradmin/run-a-script-on-start-up.html If you've got the pi and some wire handy, the sensor and capacitor will set you back a couple bucks. Hope that helps. Edited December 18, 2016 by builderb
G W Posted December 18, 2016 Posted December 18, 2016 You can also do this with a $5 Arduino. I'm Gary Funk and I wrote this message.
builderb Posted December 18, 2016 Posted December 18, 2016 The light sensing part was no problem on the 'duino, but getting it onto the network to talk to the ISY for $5 is where I got stuck.
larryllix Posted December 18, 2016 Posted December 18, 2016 So, basically what Gary said. It's nothing terribly complicated. I wired up an old spare Pi to a photoresistor per this Adafruit guide: https://learn.adafruit.com/basic-resistor-sensor-reading-on-raspberry-pi/basic-photocell-reading <code listing snipped> Nice! Thanks I don't know anything about the RPi header pins. So you basically just. Create an RC charge circuit using the photocell and small cap. Turn the pin into an output Short the cap to ground Turn the pin into an input Time the charging until the digital input flips high. Massage the count (if desired) Report the result to ISY
builderb Posted December 18, 2016 Posted December 18, 2016 Nice! Thanks I don't know anything about the RPi header pins. So you basically just. Create an RC charge circuit using the photocell and small cap. Turn the pin into an output Short the cap to ground Turn the pin into an input Time the charging until the digital input flips high. Massage the count (if desired) Report the result to ISY Yep! Crude, but effective.
stusviews Posted December 18, 2016 Posted December 18, 2016 Photocell relay connected to the sense terminals of an I/O Linc can trigger a program. Nothing sophisticated, just a simple solution.
builderb Posted December 18, 2016 Posted December 18, 2016 There are a lot of ways to skin this particular cat. It really comes down to 'what do I already have on hand'. And I don't know enough about the IO Linc, but can you hook multiple sensors to it?
paulbates Posted December 18, 2016 Posted December 18, 2016 There are a lot of ways to skin this particular cat. It really comes down to 'what do I already have on hand'. And I don't know enough about the IO Linc, but can you hook multiple sensors to it? It has one in and one out.
larryllix Posted December 18, 2016 Posted December 18, 2016 Photocell relay connected to the sense terminals of an I/O Linc can trigger a program. Nothing sophisticated, just a simple solution. I keep running into that statement that you can hook an analogue device into those terminals. I have never followed it up though. I have not seen anything in software that can support the analogue levels. Can you elaborate somewhat on that technique if you have any knowledge/experience with it? Is it just a binary input, does it have a settable trigger point? Or is it full analogue = creating a full analogue output level parameter? Does ISY syupport it?
paulbates Posted December 18, 2016 Posted December 18, 2016 I've had to couple it with a variable resistor to set the right point trigger point, but it is binary on/off for sure. I keep running into that statement that you can hook an analogue device into those terminals. I have never followed it up though.I have not seen anything in software that can support the analogue levels. Can you elaborate somewhat on that technique if you have any knowledge/experience with it?Is it just a binary input, does it have a settable trigger point?Or is it full analogue = creating a full analogue output level parameter?Does ISY syupport it?
Recommended Posts