Paid imp help

I am looking for an imp guru to pay to help me with a project. Is this the proper place to ask?

If you can specify the type of help required you have a better chance of getting a positive response.

Is it hardware design / prototyping / building related or more of a software dev need?

You are likely to get a lot of free help if you are willing to lay out the project here… If not, I’ve started doing some commercial Imp work as well, so PM me and if I can help, I will.

If you want to learn how to use the imp to get your project done, then the forum here is a good way to go about it as @jwehr suggests. If you are just looking for someone to do the development for you, then you are free to PM me as well - I am happy to help with your specific design needs be they concept demonstration, hardware, software and enclosure design.

Thanks for the responses everybody. I have come to the conclusion that Squirrel programming is not in my future so having somebody do this for me is the only solution. jwehr check your PMs.

Thanks for responding to my PM so quickly. Mr. jwehr suggests I lay out the project in the forum and see what happens. Here is what I am trying to do.

The project is a camera interval timer. Pin 7 on the April board turns on the power to the camera, pin 8 activates the camera metering and pin 9 activates the shutter.

I need pin 7 to go high for 90 seconds and stay high, then pin 8 to go high for 1 second and stay high then pin 9 to go high for 1 second. Then 8 and 9 go low and pin 7 stay high for 5 more minutes then go low and all stay low for the interval. The interval needs to be adjustable by me from 10 minutes to 60 minutes.

The daily start time needs to be 1 hour before sunrise and end time 1 hour after sunset.

Pin 5 needs to be an enable pin. When I provide a high to that pin the interval timer is enabled. When it is low the interval timer is disabled.

The camera system runs on batteries and a solar panel so between camera activations the imp needs to go to sleep and draw as little current as possible.

Pin 2 will monitor a current sensing circuit. When the camera takes a picture it draws a little over one amp of current for about one second. The current monitor will send a high to pin 2 for one second. Pin 2 then needs to send an email to a gmail account confirming a picture has been taken.

I think that’s about it. Questions?

Has anyone determined a better way to get sunrise/sunset than from the wunderground API? I haven’t pushed an email from the agent yet… what are folks using? I know zapier can, but that seems more complex than necessary.

Here’s a forum example using for sending email using
Mailgun

Sunrise/Sunset - the algorithms to calculate it yourself are available.
NOAA ESRL

I’ve used this PHP class for years it also has day_light_time which I’ve used in home automation projects to controll lights and blinds http://www.phpkode.com/source/s/sunset-sunrise/sunset-sunrise/sun_class.php

Could simply wrap it in a web service or perhaps a good PHPer could port to squirrel.

I’m wondering if there is a simple way where we could club together to pay folks to do things like this port on behalf of the community?

Sounds easy enough with 3 timers and a long sleep, what am I missing ?

That’s about it. The only catch is the sunrise/sunset requirement.

Yes you need to either calculate it or have a list of the next xdays and download it from somewhere.

Upon waking, you can download new list, and run the camera code.

Some starter code, does not check the incoming pins or send email or download sunset times.
Actually getting the sunset times may be better handled in the agent, and then let the imp just request them from the agent when it wakes up.

Is this for a one off project ?

`
interval <- 600; //Seconds, can be updated from agent with a .on handler

p2 <- hardware.pin2;
p5 <- hardware.pin5;
p7 <- hardware.pin7;
p8 <- hardware.pin8;
p9 <- hardware.pin9;

p2.configure(DIGITAL_IN);
p5.configure(DIGITAL_IN);

p7.configure(DIGITAL_OUT);
p8.configure(DIGITAL_OUT);
p9.configure(DIGITAL_OUT);

function shutterLoop()
{
p7.write(1);
imp.wakeup(90, stage2);
imp.wakeup(390, stage3);
//I the pins stay high in deep sleep, we could do that here with state saved in nv table, but the camera probaly uses more current than the imp in regular sleep anyway
getSunsetTime();
}

function stage2()
{
p8.write(1);
imp.sleep(1);
p9.write(1);
imp.sleep(1);
p8.write(0);
p9.write(0);
}

function stage3()
{
p7.write(0);
//if time > sunrise +1 hour
//server.sleepuntil(6, 20);
//else
server.sleepfor(interval);
//We will return to start of script when we wake up
}

function getSunsetTime()
{
//Get sunset data and save it in nv table if we dont have enough time data
}

//When we wake up we start the loop, at the end of each loop we check if we need to continue
shutterLoop();
`

Great start. Thank you for putting in the time. I will give it a try.

A little background on the project. I provide the camera technology for this project: http://www.plattebasintimelapse.com Sixteen of the cameras are connected to the internet by cellular and can upload images when they are taken. Currently the camera controller interval is set at the camera location. This is fine most of the time but when there is an event on the river and the interval needs to be changed somebody has to drive to the camera and manually change the interval. An event can be a heavy rain, ice jam, bird migration, etc.

The imp will enable me to change the interval remotely as needed.

The project is a non-profit activity primarily funded by the University of Nebraska.

I really appreciate the input so far. =D>

Cool :slight_smile:
If you arent making money off it, you can use weather underground for free.
You will need to register at their site and make a API key.

`
//Set these to reasonable fallback values untill first web fetch success
sunriseH ← 7;
sunriseM ← 0;
sunsetH ← 20;
sunsetM ← 0;

myKey ← “InsertYourApiKeyHere”;

function getSunData()
{
try
{
url ← “http://api.wunderground.com/api/“+myKey+”/astronomy/q/Denmark/Vejle.json”;
local request = http.get(url);
local resp = request.sendsync();
local data = http.jsondecode(resp.body);

sunriseH = data.sun_phase.sunrise.hour;
sunriseM = data.sun_phase.sunrise.minute;
sunsetH = data.sun_phase.sunset.hour;
sunsetM = data.sun_phase.sunset.minute;

//Update success, update again after midnight
currentTime ← date();
hoursTillMidnight ← 25 - currentTime.hour; //Adjust as needed for UTC correction
imp.wakeup(hoursTillMidnight * 3600, getSunData);
server.log(“Update success, next update in “+hoursTillMidnight+” hours”);
server.log(“Sunrise at “+sunriseH+”:”+sunriseM);
server.log(“Sunset at “+sunsetH+”:”+sunsetM);
} catch ( errormessage ) {
server.log("Update error : "+errormessage);
//Update failed, try again in 1hour
imp.wakeup(3600, getSunData);
}
}

server.log(“Running”);
getSunData();
`

2014-02-27 09:49:13 UTC+1: [Agent] Update success, next update in 17 hours 2014-02-27 09:49:13 UTC+1: [Agent] Sunrise at 7:18 2014-02-27 09:49:13 UTC+1: [Agent] Sunset at 17:51

2014-02-28 02:49:13 UTC+1: [Agent] Update success, next update in 24 hours
2014-02-28 02:49:13 UTC+1: [Agent] Sunrise at 7:15
2014-02-28 02:49:13 UTC+1: [Agent] Sunset at 17:54