What is the best way to code a port to run 3 times a week?

Do you have a question on how to do something.
Ask in here.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: What is the best way to code a port to run 3 times a wee

Post by lnevo »

Easy enough. I'd have to test the syntax, but a switch/case statement should be able to handle that easy enough.

Honestly I think flushing the membrane though once a week should be sufficient.

Anyway, what days is it running now. You could always add a day to the now() to fast forward it a day or whatever is needed And then make it another day while skipping saturday/sunday :)
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: What is the best way to code a port to run 3 times a wee

Post by rimai »

The Time library offers day of the week.
I think this should do it:

Code: Select all

ReefAngel.Relay.Set(Main_RODI, ((weekday()==dowMonday || weekday()==dowWednesday || weekday()==dowFriday) && (now()+10800)<300 ));
Roberto.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

Lee;

I was talking with Russ at Buckeye Hydro on Reef Central (http://www.reefcentral.com/forums/showt ... ?t=2369559) and he said "You should make water at least once per week. Flushing once a week or more often is a good idea too."

Right now it is running every 3 days so if I first started it on Monday then it would run Monday, Thursday. Sunday, Wednesday, Saturday and so on.
Falling back 1 day every week.

What I ultimately want to do is have it turn on port 7 to flush the membrane like Monday and Wednesday and on Friday I will have it turn on port 6 & 7 to make just RO water. It will bypass the DI resin and just flow the water out to the garden bed outside the garage.

Again this is the ultimate end goal. I would also like to have some safety statements in there that would not run either of these if my RO/DI system was triggered by my water level sensors, to make RO/DI water to refill my 20 Gallon Brute ATO Reservoir or my 20 Gallon Brut Salt Water Reservoir for Automatic water changes with in the past 48 hours.

I was going to try to attempt that on my own later, but that is what I'm going for to automate, the water change and ATO stations in terms of refilling them.

Thanks Roberto. I'll try the time library code and see how that does.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

rimai wrote:The Time library offers day of the week.
I think this should do it:

Code: Select all

ReefAngel.Relay.Set(Main_RODI, ((weekday()==dowMonday || weekday()==dowWednesday || weekday()==dowFriday) && (now()+10800)<300 ));
This didn't work.
I originally changed Friday to Thursday to test it that night and nothing, so I set it back to the way Roberto wrote it and although I wasn't home last night at 9pm there was no evidence there it happened.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

I'm not sure why it is not working. I though t it was the double &, but that means "and".
So to me it reads as turn on the port for Main_RODI on Monday, Wednesday and Friday and 3 hours before midnight for 300 seconds (5 min).
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

Does anyone have a suggestion on how to do this?
I can't seem to get it to work.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: What is the best way to code a port to run 3 times a wee

Post by rimai »

Try doing several if conditions and see if it works better for you.

Code: Select all

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowMonday && hour()==9 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);
Do something similar for the other times.
Roberto.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

Thanks. I'll try it.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: What is the best way to code a port to run 3 times a wee

Post by lnevo »

hou()==9 is going to be 9am though...
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

So it should be the following?

Code: Select all

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowMonday && hour()==21 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

I tried the code and it worked fine.
I'll set up the other days later.

Thanks everyone.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

So if I wanted 9:05pm would it be...

Code: Select all

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowMonday && hour()==2105 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: What is the best way to code a port to run 3 times a wee

Post by lnevo »

no hour() only returns the hour not the time. You'd have to check minute >= 5 && < 10
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

So i tried this...

Code: Select all

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowSunday && hour()==9 >= 5 && < 10 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);
and I'm getting an "expected primary-expression before '<' token" error with the line I'm working on highlighted and the 1st "(" circled.

Image

I'm obviously missing a comma or something, but don't know where.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: What is the best way to code a port to run 3 times a wee

Post by rimai »

No. You need to check for day of the week, hour and minutes.
If you want minutes >= 5 and minutes < 10, it would be minute()>=5 && minute() <10
Roberto.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

Ok. That makes sense.
Thanks.

So I've got this now and an still getting an error of expected ')' before 'minute'.

Code: Select all

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowSunday && hour()==11 minute()>=25 && minute()<30 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);
I hate trying to figure out error messages. Ugh. :x

I tried putting a parenthesis () around (minute()>=25 && minute()<30 and got 11 can not be used as a function.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

I figured out the error message. I was missing && in between the 11 and the minute, but it doesn't seem to be working.

The way I understand it with this code the Test+Light port, which is port 5 on the main relay, will run Tuesdays from 9:20pm to 9:25pm.

Code: Select all

ReefAngel.Relay.Off(Test_Light);
if (weekday()==dowTuesday && hour()==21 && minute()>=20 && minute()<25 && minute()<5)
  ReefAngel.Relay.On(Test_Light);
  
Nothing happened at 9:20pm.

Help???
billw
Posts: 38
Joined: Sat Aug 04, 2012 1:20 pm
Location: Lexington, KY

Re: What is the best way to code a port to run 3 times a wee

Post by billw »

You have an impossible condition: minute >= 20 AND minute < 5. Those 2 conditions are mutually exclusive hence nothing happens. If you remove the " &&minute()<5" clause you should get something between 21:20 and 21:24:59.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

Thanks.
I'll try it later.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

That did it. Thanks again.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

I put this code in to turn on the solenoid for my RO/DI unit Monday, Wednesday and Friday on last Friday the 24th.

I just noticed that it only turned on on that Friday. It didn't turn on on Monday or Yesterday (Wednesday).

Is there another way to do multiple if conditions like Roberto suggested?

Code: Select all

//Flush RO/DI Membrane 3 times a week @ 9pm.

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowMonday && hour()==21 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowWednesday && hour()==21 && minute()<5)
  ReefAngel.Relay.On(Main_RODI);

ReefAngel.Relay.Off(Main_RODI);
if (weekday()==dowFriday && hour()==21 && minute()<10)
  ReefAngel.Relay.On(Main_RODI);  
  
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: What is the best way to code a port to run 3 times a wee

Post by rimai »

You should have just one Off at the beginning of the if statements or they will override the previous ones
Roberto.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

Ok. I guess that is what's been happening. Thanks.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: What is the best way to code a port to run 3 times a wee

Post by Sacohen »

It worked perfectly.
I had a test time yesterday at 9pm, which went off fine and then it went off again tonight, as well as the other port turned on at 9:05.

Thanks for all the help.
I learned a bunch with this.
Post Reply