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();
}