add relay3 (pin5), relay4 (pin6); invert logic: ON=HIGH, OFF=LOW
This commit is contained in:
44
src/main.cpp
44
src/main.cpp
@@ -41,6 +41,8 @@ static bool g_hall_alert = false;
|
||||
static bool g_motion_alert = false;
|
||||
static bool g_relay1_state = false;
|
||||
static bool g_relay2_state = false;
|
||||
static bool g_relay3_state = false;
|
||||
static bool g_relay4_state = false;
|
||||
static bool g_temp_requested = false;
|
||||
static unsigned long g_temp_last_request = 0;
|
||||
static float g_last_temperature = -127.0f;
|
||||
@@ -66,11 +68,11 @@ static bool g_startup_msg_sent = false;
|
||||
static unsigned long g_auto_status_interval = 0;
|
||||
static unsigned long g_last_auto_status = 0;
|
||||
|
||||
struct SecurityConfig { uint32_t magic; uint8_t armed; uint8_t relay1; uint8_t relay2; };
|
||||
static const uint32_t CFG_MAGIC = 0x53454356;
|
||||
struct SecurityConfig { uint32_t magic; uint8_t armed; uint8_t relay1; uint8_t relay2; uint8_t relay3; uint8_t relay4; };
|
||||
static const uint32_t CFG_MAGIC = 0x53454357;
|
||||
|
||||
bool saveSecurityConfig() {
|
||||
SecurityConfig cfg = { CFG_MAGIC, g_armed ? 1 : 0, g_relay1_state ? 1 : 0, g_relay2_state ? 1 : 0 };
|
||||
SecurityConfig cfg = { CFG_MAGIC, g_armed ? 1 : 0, g_relay1_state ? 1 : 0, g_relay2_state ? 1 : 0, g_relay3_state ? 1 : 0, g_relay4_state ? 1 : 0 };
|
||||
File f = InternalFS.open(CONFIG_FILE, FILE_O_WRITE);
|
||||
if (!f) return false;
|
||||
bool ok = f.write((const uint8_t*)&cfg, sizeof(cfg)) == sizeof(cfg);
|
||||
@@ -84,7 +86,7 @@ bool loadSecurityConfig() {
|
||||
if (f.read(&cfg, sizeof(cfg)) != sizeof(cfg)) { f.close(); return false; }
|
||||
f.close();
|
||||
if (cfg.magic != CFG_MAGIC) return false;
|
||||
g_armed = cfg.armed; g_relay1_state = cfg.relay1; g_relay2_state = cfg.relay2;
|
||||
g_armed = cfg.armed; g_relay1_state = cfg.relay1; g_relay2_state = cfg.relay2; g_relay3_state = cfg.relay3; g_relay4_state = cfg.relay4;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -171,23 +173,33 @@ public:
|
||||
while (*cmd == ' ') cmd++;
|
||||
|
||||
if (strcmp(cmd, "help") == 0) {
|
||||
defer_response("help:ohrana on,ohrana off,relay1 on,relay1 off,relay2 on,relay2 off,relay,status,ver,scan,snr,uptime,kontrol,time,reboot");
|
||||
defer_response("help:ohrana on,ohrana off,relay1 on,relay1 off,relay2 on,relay2 off,relay3 on,relay3 off,relay4 on,relay4 off,relay,status,ver,scan,snr,uptime,kontrol,time,reboot");
|
||||
} else if (strcmp(cmd, "ohrana on") == 0) {
|
||||
g_armed = true; saveSecurityConfig(); defer_response("ohrana on ok");
|
||||
} else if (strcmp(cmd, "ohrana off") == 0) {
|
||||
g_armed = false; saveSecurityConfig(); defer_response("ohrana off ok");
|
||||
} else if (strcmp(cmd, "relay1 on") == 0) {
|
||||
g_relay1_state = true; digitalWrite(PIN_RELAY_1, LOW); saveSecurityConfig(); defer_response("relay1 on ok");
|
||||
g_relay1_state = true; digitalWrite(PIN_RELAY_1, HIGH); saveSecurityConfig(); defer_response("relay1 on ok");
|
||||
} else if (strcmp(cmd, "relay1 off") == 0) {
|
||||
g_relay1_state = false; digitalWrite(PIN_RELAY_1, HIGH); saveSecurityConfig(); defer_response("relay1 off ok");
|
||||
g_relay1_state = false; digitalWrite(PIN_RELAY_1, LOW); saveSecurityConfig(); defer_response("relay1 off ok");
|
||||
} else if (strcmp(cmd, "relay2 on") == 0) {
|
||||
g_relay2_state = true; digitalWrite(PIN_RELAY_2, LOW); saveSecurityConfig(); defer_response("relay2 on ok");
|
||||
g_relay2_state = true; digitalWrite(PIN_RELAY_2, HIGH); saveSecurityConfig(); defer_response("relay2 on ok");
|
||||
} else if (strcmp(cmd, "relay2 off") == 0) {
|
||||
g_relay2_state = false; digitalWrite(PIN_RELAY_2, HIGH); saveSecurityConfig(); defer_response("relay2 off ok");
|
||||
g_relay2_state = false; digitalWrite(PIN_RELAY_2, LOW); saveSecurityConfig(); defer_response("relay2 off ok");
|
||||
} else if (strcmp(cmd, "relay3 on") == 0) {
|
||||
g_relay3_state = true; digitalWrite(PIN_RELAY_3, HIGH); saveSecurityConfig(); defer_response("relay3 on ok");
|
||||
} else if (strcmp(cmd, "relay3 off") == 0) {
|
||||
g_relay3_state = false; digitalWrite(PIN_RELAY_3, LOW); saveSecurityConfig(); defer_response("relay3 off ok");
|
||||
} else if (strcmp(cmd, "relay4 on") == 0) {
|
||||
g_relay4_state = true; digitalWrite(PIN_RELAY_4, HIGH); saveSecurityConfig(); defer_response("relay4 on ok");
|
||||
} else if (strcmp(cmd, "relay4 off") == 0) {
|
||||
g_relay4_state = false; digitalWrite(PIN_RELAY_4, LOW); saveSecurityConfig(); defer_response("relay4 off ok");
|
||||
} else if (strcmp(cmd, "relay") == 0) {
|
||||
char r[32]; snprintf(r, sizeof(r), "relay:1%s 2%s",
|
||||
char r[48]; snprintf(r, sizeof(r), "relay:1%s 2%s 3%s 4%s",
|
||||
g_relay1_state ? "on" : "off",
|
||||
g_relay2_state ? "on" : "off");
|
||||
g_relay2_state ? "on" : "off",
|
||||
g_relay3_state ? "on" : "off",
|
||||
g_relay4_state ? "on" : "off");
|
||||
defer_response(r);
|
||||
} else if (strcmp(cmd, "status") == 0) {
|
||||
char r[128]; char tb[16]; char vb[16]; float t = g_last_temperature;
|
||||
@@ -305,13 +317,15 @@ void setup() {
|
||||
NRF_WDT->TASKS_START = 1;
|
||||
|
||||
pinMode(PIN_REED, INPUT_PULLUP); pinMode(PIN_PIR, INPUT); ds18b20.begin();
|
||||
pinMode(PIN_RELAY_1, OUTPUT); pinMode(PIN_RELAY_2, OUTPUT); pinMode(PIN_LED_STATUS, OUTPUT);
|
||||
digitalWrite(PIN_RELAY_1, HIGH); digitalWrite(PIN_RELAY_2, HIGH); digitalWrite(PIN_LED_STATUS, LOW);
|
||||
pinMode(PIN_RELAY_1, OUTPUT); pinMode(PIN_RELAY_2, OUTPUT); pinMode(PIN_RELAY_3, OUTPUT); pinMode(PIN_RELAY_4, OUTPUT); pinMode(PIN_LED_STATUS, OUTPUT);
|
||||
digitalWrite(PIN_RELAY_1, LOW); digitalWrite(PIN_RELAY_2, LOW); digitalWrite(PIN_RELAY_3, LOW); digitalWrite(PIN_RELAY_4, LOW); digitalWrite(PIN_LED_STATUS, LOW);
|
||||
|
||||
InternalFS.begin();
|
||||
loadSecurityConfig();
|
||||
digitalWrite(PIN_RELAY_1, g_relay1_state ? LOW : HIGH);
|
||||
digitalWrite(PIN_RELAY_2, g_relay2_state ? LOW : HIGH);
|
||||
digitalWrite(PIN_RELAY_1, g_relay1_state ? HIGH : LOW);
|
||||
digitalWrite(PIN_RELAY_2, g_relay2_state ? HIGH : LOW);
|
||||
digitalWrite(PIN_RELAY_3, g_relay3_state ? HIGH : LOW);
|
||||
digitalWrite(PIN_RELAY_4, g_relay4_state ? HIGH : LOW);
|
||||
|
||||
if (!radio_init()) {
|
||||
Serial.println("RADIO FAIL");
|
||||
|
||||
12
src/target.h
12
src/target.h
@@ -98,6 +98,12 @@
|
||||
#ifndef PIN_RELAY_2
|
||||
#define PIN_RELAY_2 4
|
||||
#endif
|
||||
#ifndef PIN_RELAY_3
|
||||
#define PIN_RELAY_3 5
|
||||
#endif
|
||||
#ifndef PIN_RELAY_4
|
||||
#define PIN_RELAY_4 6
|
||||
#endif
|
||||
#ifndef PIN_LED_STATUS
|
||||
#define PIN_LED_STATUS 22
|
||||
#endif
|
||||
@@ -108,6 +114,12 @@
|
||||
#ifndef PIN_RELAY_2
|
||||
#define PIN_RELAY_2 5
|
||||
#endif
|
||||
#ifndef PIN_RELAY_3
|
||||
#define PIN_RELAY_3 6
|
||||
#endif
|
||||
#ifndef PIN_RELAY_4
|
||||
#define PIN_RELAY_4 7
|
||||
#endif
|
||||
#ifndef PIN_LED_STATUS
|
||||
#define PIN_LED_STATUS 13
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user