Blynk app button gets disabled


Is there a way to disable an if statement if virtual button is pressed? Temp dropped here today and it turned the heater on but i couldn’t turn it off with the app button because it was below 45 degrees. If I don’t have plants in the green house and want to turn off the heater would be nice to override the if statement

 //*************Heating Code****************
  if  ((GreenhouseTemp > 55)  && (GreenhouseTemp< 57))  
  { digitalWrite (Relay_3, RELAY_OFF);    //Greenhouse Temp Control Heater Fan OFF Above 55 Degrees F
    Blynk.virtualWrite(V4, RELAY_OFF);
  if (GreenhouseTemp  <= 45) 
  { digitalWrite (Relay_3, RELAY_ON);  //Greenhouse Temp Control Heater Fan ON Below 45 Degrees F
    Blynk.virtualWrite(V4, RELAY_ON);


Yes, there are many ways to do this. The best way will depend on a number of different things and on your personal coding preferences.

Trying to take existing if statements and add or modify them as you think of extra scenarios probably isn’t the best approach, especially if you want to stay sane and keep your hair!

For something like this I’d probably start by writing-out the various rules on paper, maybe with a chart that shows different temperature bands and what should happen in each case, plus the override options.
Once you have the rules then start coding.

The if/else statement is very powerful andyou’ll Probably end-up with nested if/else statements (one within another).

To answer your specific question it could be something like this (not real code, obviously):

If Blynk override flag is true
Do this stuff (ignore the usual rules)
Follow the normal rules

Another powerful tool is the Case function. I’ll let you google the examples, and it only works with numbers but it may be nearer than lots of If statements…

Case temp is between a & b , do this;
Turn the heater on
Case temp is between c & d, do this:
Turn the heater off
Case temp is between e & f, do this:
Turn the fan on
Case temp is between g & h, do this:
Open the vents
Case else (non of the conditions are met)
Turn everything off and go home

The compiler won’t let you have overlapping Case statements, so that can help to prevent silly errors that can creep in with lots of If statements.

You can combine if/else statements with Case statements, so it might be:

If Blynk override flag is true
Do this stuff (ignore the usual rules)
Follow the Case statement above

As you can see, having your rules written out before you start can help you avoid getting lost in the coding phase.

Hopefully this helps to point you in the right direction of the best coding tools to build your logic and program flow rules.