Switch relais on automatically on incoming updates
This commit is contained in:
parent
7fcdc73137
commit
598255eaab
|
@ -111,7 +111,9 @@ void loop()
|
|||
fader_loop++;
|
||||
}
|
||||
|
||||
ws2801_udp_loop();
|
||||
if(ws2801_udp_loop()) {
|
||||
relais_heartbeat();
|
||||
}
|
||||
|
||||
relais_loop();
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "relais.h"
|
||||
|
||||
WiFiUDP relaisUDP;
|
||||
uint32_t relais_off_timestamp;
|
||||
|
||||
#define RELAIS_PIN 5
|
||||
|
||||
|
@ -23,14 +24,30 @@ void relais_setup(void)
|
|||
Serial.println("Relais: UDP server start FAILED!");
|
||||
}
|
||||
|
||||
relais_off_timestamp = 0;
|
||||
|
||||
Serial.println("Relais setup done");
|
||||
}
|
||||
|
||||
void relais_heartbeat(void)
|
||||
{
|
||||
relais_off_timestamp = millis() + 600000; // keep on for 10 more minutes
|
||||
}
|
||||
|
||||
void relais_loop(void)
|
||||
{
|
||||
unsigned char databyte;
|
||||
unsigned char answer;
|
||||
|
||||
// update the relais pin state
|
||||
uint32_t now = millis();
|
||||
|
||||
if(now < relais_off_timestamp) {
|
||||
digitalWrite(RELAIS_PIN, HIGH);
|
||||
} else {
|
||||
digitalWrite(RELAIS_PIN, LOW);
|
||||
}
|
||||
|
||||
int packetSize = relaisUDP.parsePacket();
|
||||
if(packetSize)
|
||||
{
|
||||
|
@ -47,14 +64,14 @@ void relais_loop(void)
|
|||
|
||||
switch(databyte) {
|
||||
case 0: // switch relais off
|
||||
Serial.println("Relais: switch off.");
|
||||
digitalWrite(RELAIS_PIN, LOW);
|
||||
Serial.println("Relais: force switch off.");
|
||||
relais_off_timestamp = 0;
|
||||
answer = 0;
|
||||
break;
|
||||
|
||||
case 1: // switch relais on
|
||||
Serial.println("Relais: switch on.");
|
||||
digitalWrite(RELAIS_PIN, HIGH);
|
||||
Serial.println("Relais: force switch on (1 hour).");
|
||||
relais_off_timestamp = now + 3600000;
|
||||
answer = 1;
|
||||
break;
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define RELAIS_H
|
||||
|
||||
void relais_setup(void);
|
||||
void relais_heartbeat(void);
|
||||
void relais_loop(void);
|
||||
|
||||
#endif // RELAIS_H
|
||||
|
|
|
@ -32,7 +32,7 @@ void ws2801_udp_setup(void)
|
|||
Serial.println("WS2801UDP setup done");
|
||||
}
|
||||
|
||||
void ws2801_udp_loop(void)
|
||||
bool ws2801_udp_loop(void)
|
||||
{
|
||||
byte cmd[WS2801_CMD_LEN];
|
||||
byte action, module, r, g, b;
|
||||
|
@ -86,5 +86,9 @@ void ws2801_udp_loop(void)
|
|||
ws2801UDP.write("OK\n");
|
||||
*/
|
||||
ws2801UDP.endPacket();
|
||||
|
||||
return true; // processed a packet
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
#define WS2801_UDP_H
|
||||
|
||||
void ws2801_udp_setup(void);
|
||||
void ws2801_udp_loop(void);
|
||||
bool ws2801_udp_loop(void);
|
||||
|
||||
#endif // WS2801_UDP_H
|
||||
|
|
Loading…
Reference in a new issue