HomeGenie Forum
Automation Program Plugins and Wizard Scripting => Help => Topic started by: Johnny H on November 14, 2014, 08:21:56 PM
-
Hi,
sorry for all the questions, now that HG's up and running i'm like a school kid again lol.
like everyone I want to turn on the porch and garage scones on at sunset at turn them off at 10 pm
i created the applet based on the sample in the docs and was able to get it to work, except that i had to activate it manually via the module at the scheduled time, lol . So i'm not even sure if this is where the applet should be placed. (in the group)
So I changed the code up a little:
Program Code:
var porchLights = Modules.InGroup(PROGRAM_OPTIONS_STRING).OfDeviceType("Dimmer,Light");
porchLights.On();
Net.SendMessage("[email protected]", "Porch Lights Turned On", "Porch Lights were turned on at sunset." );
Trigger Code:
Program.Setup(()=>
{
Program.AddControlWidget("homegenie/generic/program");
});
var sunset = Scheduler.WithName("test");
if (sunset.IsScheduling())
return true;
else
return false;
Is this the best method to perform this?, i'm assuming the trigger code would be "if its sunset.. turn the light on".
I'm then trying to figure where/how to turn them off... Do I need to create another applet and assign it to the group, or is there a way to perform both tasks with the 1 applet, or should this be done else where?
I've attached a pic, of the group and the objects in it.
Thanks,
johnny
-
Hi Johnny H,
You don't need to add a widget for this, your code is almost correct, I've made a few small changes: (I'm using
SolarAltitude for the Sunset time here.)
Trigger code
var sunset = Scheduler.WithName("SolarAltitude.Evening.Sunset.Start");
if (sunset.IsScheduling())
return true;
else
return false;
or just the following line:
return Scheduler.WithName("SolarAltitude.Evening.Sunset.Start").IsScheduling();
Don't forget to set the Trigger to 'when condition evaluation switches to true'
And then the Program code (change GROUP_NAME to the name of the group the porchLights are in.)
Program code
var porchLights = Modules.InGroup("GROUP_NAME").OfDeviceType("Dimmer,Light");
porchLights.On();
Net.SendMessage("[email protected]", "Porch Lights Turned On", "Porch Lights were turned on at sunset." );
For scheduling the lights to switch off you can do the following:
return (Scheduler.IsScheduling("00 22 * * 1-7")
Program code
var porchLights = Modules.InGroup([GROUP_NAME]).OfDeviceType("Dimmer,Light");
porchLights.Off();
Net.SendMessage("[email protected]", "Porch Lights Turned Off", "Porch Lights were turned off at 22:00." );
You can also just use the Scheduled On/Off which is a standard function of a Light object, but I prefer to use scripting as I want a little more control over the event. (for example introducing some randomness in the time when the Alarm is Armed.)
Hope this helps
-
Hi mvdarend,
thanks for the info i'll give that a spin today and see what happens.
Thanks,
Johnny
-
mvdarend,
for to ask, for the shutoff code, i'm assuming that would that be in separate app?
thanks,
Johnny
-
mvdarend,
for to ask, for the shutoff code, i'm assuming that would that be in separate app?
thanks,
Johnny
Yes, you'll need to make two apps
-
if it's not too much bother configuring each light, you could also use the Scheduled On/Off feature (see attacched screenshot).
g.
-
Hi G,
thanks for the info, i'll put that on my cheat sheet. I haven't gone through all the docs as of yet, is that @ a macro for that particular field/call to another applet?.... just curious to the workings.
Thanks,
ohnny
-
Why don't you guys use the "Help" button!!! =)
http://www.homegenie.it/docs/scheduler.php (http://www.homegenie.it/docs/scheduler.php)
Cheers,
g.
-
An extensive read through the posts reveals two snippets of information that might be worth adding to that page; assuming they are correct, I won't know until tomorrow.
1) Make sure the scheduler events are enabled
2) if the event has periods in the name, you have to replace them with underscores
-
cron events will only work if the scheduling script is enabled. I believe it is enabled by default. Also, if you create a new named scheduled event, make sure that named event is enabled. I haven't tried, but if you add commas to a named event, I suspect it would cause issues too. Same with asterisks (*), slash (/ or \), ampersand (&), at (@), etc.
-
Finally I got regular cron expressions working. Turns out the Scheduled ON/OFF program was in an error state. I had to recompile it to get it to green.
Hopefully @SolarAtitude.Evening.Sunset.Start will work tomorrow.
very confused what the name should be.
In the Solar Altitude program the name appears to be @jkUtils.SolarAltitude.Evening.Sunset.Start,
On the Event Scheduling page it shows as @Evening.Sunset.Start
The examples in tis thread suggest it should be @SolarAtitude.Evening.Sunset.Start
Any background on why the differences would help. Thanks