I am working on a project to integrate an online soil moisture sensor with OpenSprinkler through IFTTT. The online sensor I am using is set to upload soil moisture data daily (it’s battery powered). I am setting up alarms that send an SMS once the soil moisture falls below a certain level, which then triggers an irrigation event through IFTTT. The only problem is that the online sensor provider has to apply a random backoff to the uploads so that they don’t overload their server. The consequence of this is that we could get manual valve openings that overlap causing reduced pressure.
So my question is, is there a command line syntax that will trigger a manual irrigation event to start at a particular time?
This could be approached 2 different ways. The first would be to set up a program with everything you want to run and start times then disable it. When the trigger level is reached have the program enabled or disabled again accordingly.
The second approach is simply scheduling a manual run with the api. This method would run the program once and then it disappears. If another program is already running it will add itself to the queue and run when your setup allows. This seems closest to what you want, but comes with the drawback of needing to externally create the program. It’s not really a big deal just putting together a string to send to OS. You could control the start time by delaying sending the command to OS until your desired time.
Just to add to what Shawn said: assuming you have firmware 2.1.7, there is a ‘manual start program’ API (see page 6, bullet 12), which allows you to start a program using its index (including disabled programs) right away. This way, whenever you need to run the program, just send that command (so you don’t have to enable the program and disable it again).