BLYNK
BLYNK.IO       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

Automation is working well only the day after saving

dashboard/318 (it’s me)
I created an automation with 9 actions.


When I save automation, the day after everything is working well.
But the following days, only the last action is done.
If I go into the dashboard and save with no change,
the automation is working well one day,
But the following days, only the last action is done.
The csv device data : https://1drv.ms/u/s!AumeH7O_5gYErdAKOmvVHFPFHzG_nA?e=SYqSqF

Not sure, but I think that the pb came on december 5th.
https://1drv.ms/u/s!AumeH7O_5gYErdALYnTigb8nWdBjgA?e=qeN2pD
here is the .ino



// Fill-in information from your Blynk Template here
#define BLYNK_TEMPLATE_ID "xxxxxxxxxxx"
#define BLYNK_DEVICE_NAME "Shutter ESP32"

#define BLYNK_FIRMWARE_VERSION        "0.1.4"

#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG

#define APP_DEBUG

// Uncomment your board, or configure a custom board in Settings.h
//#define USE_WROVER_BOARD
//#define USE_TTGO_T7

int Time_On = 1;// maximum time relay is on

#define RL1 32
#define RL2 25
#define RL3 27
#define RL4 12
#define RL5 13
#define RL6 14
#define RL7 26
#define RL8 33
#define RL9 19
#define RL10 22
#define RL11 23
#define RL12 02
#define RL13 04
#define RL14 17
#define RL15 18
#define RL16 21


#include "BlynkEdgent.h"

#include <Ticker.h>
Ticker RelayRelease1;
Ticker RelayRelease2;
Ticker RelayRelease3;
Ticker RelayRelease4;
Ticker RelayRelease5;
Ticker RelayRelease6;
Ticker RelayRelease7;
Ticker RelayRelease8;
Ticker RelayRelease9;
Ticker RelayRelease10;
Ticker RelayRelease11;
Ticker RelayRelease12;
Ticker RelayRelease13;
Ticker RelayRelease14;
Ticker RelayRelease15;
Ticker RelayRelease16;

// Release every relay
void SecureRelay1() {
  Blynk.virtualWrite(V11, (0));
  digitalWrite(RL1, 0);
  Serial.println("Relay RL1 OFF");     // turns the relay OFF
  RelayRelease1.detach();
}
void SecureRelay2() {
  Blynk.virtualWrite(V14, (0));
  digitalWrite(RL2, 0);
  Serial.println("Relay RL2 OFF");     // turns the relay OFF
  RelayRelease2.detach();
}
void SecureRelay3() {
  Blynk.virtualWrite(V21, (0));
  digitalWrite(RL3, 0);
  Serial.println("Relay RL3 OFF");     // turns the relay OFF
  RelayRelease3.detach();
}
void SecureRelay4() {
  Blynk.virtualWrite(V24, (0));
  digitalWrite(RL4, 0);
  Serial.println("Relay RL4 OFF");     // turns the relay OFF
  RelayRelease4.detach();
}
void SecureRelay5() {
  Blynk.virtualWrite(V31, (0));
  digitalWrite(RL5, 0);
  Serial.println("Relay RL5 OFF");     // turns the relay OFF
  RelayRelease5.detach();
}
void SecureRelay6() {
  Blynk.virtualWrite(V34, (0));
  digitalWrite(RL6, 0);
  Serial.println("Relay RL6 OFF");     // turns the relay OFF
  RelayRelease6.detach();
}
void SecureRelay7() {
  Blynk.virtualWrite(V41, (0));
  digitalWrite(RL7, 0);
  Serial.println("Relay RL7 OFF");     // turns the relay OFF
  RelayRelease7.detach();
}
void SecureRelay8() {
  Blynk.virtualWrite(V44, (0));
  digitalWrite(RL8, 0);
  Serial.println("Relay RL8 OFF");     // turns the relay OFF
  RelayRelease8.detach();
}
void SecureRelay9() {
  Blynk.virtualWrite(V51, (0));
  digitalWrite(RL9, 0);
  Serial.println("Relay RL9 OFF");     // turns the relay OFF
  RelayRelease9.detach();
}
void SecureRelay10() {
  Blynk.virtualWrite(V54, (0));
  digitalWrite(RL10, 0);
  Serial.println("Relay RL10 OFF");     // turns the relay OFF
  RelayRelease10.detach();
}
void SecureRelay11() {
  Blynk.virtualWrite(V61, (0));
  digitalWrite(RL11, 0);
  Serial.println("Relay RL11 OFF");     // turns the relay OFF
  RelayRelease11.detach();
}
void SecureRelay12() {
  Blynk.virtualWrite(V64, (0));
  digitalWrite(RL12, 0);
  Serial.println("Relay RL12 OFF");     // turns the relay OFF
  RelayRelease12.detach();
}
void SecureRelay13() {
  Blynk.virtualWrite(V71, (0));
  digitalWrite(RL13, 0);
  Serial.println("Relay RL13 OFF");     // turns the relay OFF
  RelayRelease13.detach();
}
void SecureRelay14() {
  Blynk.virtualWrite(V74, (0));
  digitalWrite(RL14, 0);
  Serial.println("Relay RL14 OFF");     // turns the relay OFF
  RelayRelease14.detach();
}
void SecureRelay15() {
  Blynk.virtualWrite(V81, (0));
  digitalWrite(RL15, 0);
  Serial.println("Relay RL15 OFF");     // turns the relay OFF
  RelayRelease15.detach();
}
void SecureRelay16() {
  Blynk.virtualWrite(V84, (0));
  digitalWrite(RL16, 0);
  Serial.println("Relay RL16 OFF");     // turns the relay OFF
  RelayRelease16.detach();
}
WidgetLED led10(V100);
//BlynkTimer timer;
// V100 LED Widget is blinking
void blinkLedWidget()
{
  if (led10.getValue()) {
    led10.off();
    //Serial.println("LED on V1: off");
  } else {
    led10.on();
    //Blynk.virtualWrite(V20, 255);
  }
}

////////////////////////BLYNK_WRITE(Vxx)/////////////////////////////////////////////////////////////
///////////////////////First board///////////////////////////////////////////////////////////////////
BLYNK_WRITE(V11) // Executes when the value of virtual pin V11 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL1, 1);
    RelayRelease1.attach(Time_On, SecureRelay1);
    Blynk.virtualWrite(V11, (1));//mandatory to see it in datas report
    Serial.println("Relay RL1 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL1, 0);
    Serial.println("Relay RL1 OFF");
  }
}

BLYNK_WRITE(V14) // Executes when the value of virtual pin V14 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL2, 1);
    RelayRelease2.attach(Time_On, SecureRelay2);
    Blynk.virtualWrite(V14, (1));//mandatory to see it in datas report
    Serial.println("Relay RL2 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL2, 0);
    Serial.println("Relay RL2 OFF");
  }
}

BLYNK_WRITE(V21) // Executes when the value of virtual pin V21 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL3, 1);
    RelayRelease3.attach(Time_On, SecureRelay3);
    Blynk.virtualWrite(V21, (1));//mandatory to see it in datas report
    Serial.println("Relay RL3 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL3, 0);
    Serial.println("Relay RL3 OFF");
  }
}

BLYNK_WRITE(V24) // Executes when the value of virtual pin V24 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL4, 1);
    RelayRelease4.attach(Time_On, SecureRelay4);
    Blynk.virtualWrite(V24, (1));//mandatory to see it in datas report
    Serial.println("Relay RL4 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL4, 0);
    Serial.println("Relay RL4 OFF");
  }
}

BLYNK_WRITE(V31) // Executes when the value of virtual pin V31 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL5, 1);
    RelayRelease5.attach(Time_On, SecureRelay5);
    Blynk.virtualWrite(V31, (1));//mandatory to see it in datas report
    Serial.println("Relay RL5 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL5, 0);
    Serial.println("Relay RL5 OFF");
  }
}

BLYNK_WRITE(V34) // Executes when the value of virtual pin V34 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL6, 1);
    RelayRelease6.attach(Time_On, SecureRelay6);
    Blynk.virtualWrite(V34, (1));//mandatory to see it in datas report
    Serial.println("Relay RL6 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL6, 0);
    Serial.println("Relay RL6 OFF");
  }
}

BLYNK_WRITE(V41) // Executes when the value of virtual pin V41 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL7, 1);
    RelayRelease7.attach(Time_On, SecureRelay7);
    Blynk.virtualWrite(V41, (1));//mandatory to see it in datas report
    Serial.println("Relay RL7 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL7, 0);
    Serial.println("Relay RL7 OFF");
  }
}

BLYNK_WRITE(V44) // Executes when the value of virtual pin V44 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL8, 1);
    RelayRelease8.attach(Time_On, SecureRelay8);
    Blynk.virtualWrite(V44, (1));//mandatory to see it in datas report
    Serial.println("Relay RL8 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL8, 0);
    Serial.println("Relay RL8 OFF");
  }
}

////////////////////////BLYNK_WRITE(Vxx)/////////////////////////////////////////////////////////////
///////////////////////Second board///////////////////////////////////////////////////////////////////
BLYNK_WRITE(V51) // Executes when the value of virtual pin V51 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL9, 1);
    RelayRelease9.attach(Time_On, SecureRelay9);
    Blynk.virtualWrite(V51, (1));//mandatory to see it in datas report
    Serial.println("Relay RL9 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL9, 0);
    Serial.println("Relay RL9 OFF");
  }
}

BLYNK_WRITE(V54) // Executes when the value of virtual pin V54 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL10, 1);
    RelayRelease10.attach(Time_On, SecureRelay10);
    Blynk.virtualWrite(V54, (1));//mandatory to see it in datas report
    Serial.println("Relay RL10 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL10, 0);
    Serial.println("Relay RL10 OFF");
  }
}

BLYNK_WRITE(V61) // Executes when the value of virtual pin V61 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL11, 1);
    RelayRelease11.attach(Time_On, SecureRelay11);
    Blynk.virtualWrite(V61, (1));//mandatory to see it in datas report
    Serial.println("Relay RL11 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL11, 0);
    Serial.println("Relay RL11 OFF");
  }
}

BLYNK_WRITE(V64) // Executes when the value of virtual pin V64 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL12, 1);
    RelayRelease12.attach(Time_On, SecureRelay12);
    Blynk.virtualWrite(V64, (1));//mandatory to see it in datas report
    Serial.println("Relay RL12 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL12, 0);
    Serial.println("Relay RL12 OFF");
  }
}

BLYNK_WRITE(V71) // Executes when the value of virtual pin V71 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL13, 1);
    RelayRelease13.attach(Time_On, SecureRelay13);
    Blynk.virtualWrite(V71, (1));//mandatory to see it in datas report
    Serial.println("Relay RL13 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL13, 0);
    Serial.println("Relay RL13 OFF");
  }
}

BLYNK_WRITE(V74) // Executes when the value of virtual pin V74 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL14, 1);
    RelayRelease14.attach(Time_On, SecureRelay14);
    Blynk.virtualWrite(V74, (1));//mandatory to see it in datas report
    Serial.println("Relay R1L4 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL14, 0);
    Serial.println("Relay RL14 OFF");
  }
}


BLYNK_WRITE(V81) // Executes when the value of virtual pin V81 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL15, 1);
    RelayRelease15.attach(Time_On, SecureRelay15);
    Blynk.virtualWrite(V81, (1));//mandatory to see it in datas report
    Serial.println("Relay RL15 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL15, 0);
    Serial.println("Relay RL15 OFF");
  }
}


BLYNK_WRITE(V84) // Executes when the value of virtual pin V84 changes
{
  int pin_value = param.asInt();
  if (pin_value == 1)
  {
    // execute this code if the switch widget is now ON
    digitalWrite(RL16, 1);
    RelayRelease16.attach(Time_On, SecureRelay16);
    Blynk.virtualWrite(V84, (1));//mandatory to see it in datas report
    Serial.println("Relay RL16 ON");
  }
  else
  {
    // execute this code if the switch widget is now OFF
    digitalWrite(RL16, 0);
    Serial.println("Relay RL16 OFF");
  }
}
////////////////////////////////////////////////////setup/////////////////////////////////////////////
void setup()
{
  Serial.begin(115200);
  delay(100);
  Serial.println("\n\nFile : Roller-Shutter_ESP32-003-secure.ino\n");

  BlynkEdgent.begin();
  timer.setInterval(1000L, blinkLedWidget);
  pinMode(RL1, OUTPUT);
  pinMode(RL2, OUTPUT);
  pinMode(RL3, OUTPUT);
  pinMode(RL4, OUTPUT);
  pinMode(RL5, OUTPUT);
  pinMode(RL6, OUTPUT);
  pinMode(RL7, OUTPUT);
  pinMode(RL8, OUTPUT);
  pinMode(RL9, OUTPUT);
  pinMode(RL10, OUTPUT);
  pinMode(RL11, OUTPUT);
  pinMode(RL12, OUTPUT);
  pinMode(RL13, OUTPUT);
  pinMode(RL14, OUTPUT);
  pinMode(RL15, OUTPUT);
  pinMode(RL16, OUTPUT);
}

void loop() {
  BlynkEdgent.run();
}

Hello, this issue is already fixed. Will be deployed this week.

1 Like

Hello,
How can I see when new release will be deployed?
Is there some release note? Where?
Thank you very much.

Hello. The fix is avaialable already.

We don’t provide this info yet.

We do a release notes once a month via email.

I can see It’s working now,
thank you.