diff --git a/CMakeLists.txt b/CMakeLists.txt index d27cf5e..3223e1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required (VERSION 3.7) project(controller - VERSION 0.3.4 + VERSION 0.3.7 LANGUAGES C) add_executable(controller src/main.c) diff --git a/include/models/controller.h b/include/models/controller.h index 1cf4fad..10d5827 100644 --- a/include/models/controller.h +++ b/include/models/controller.h @@ -3,7 +3,6 @@ #include <uuid/uuid.h> #include <stdint.h> -#include <lmdb.h> #include <config.h> #include <models/relay.h> diff --git a/include/models/relay.h b/include/models/relay.h index 6ffb258..498ea30 100644 --- a/include/models/relay.h +++ b/include/models/relay.h @@ -3,7 +3,6 @@ #include <stdint.h> #include <time.h> -#include <lmdb.h> #include <constants.h> #include <models/schedule.h> @@ -13,7 +12,6 @@ typedef struct int id; uint8_t number; int is_on; - int is_on_schedule; int pulse_timer; int sent_to_broker; char name[MAX_NAME_LENGTH + 1]; diff --git a/include/models/schedule.h b/include/models/schedule.h index 212cd81..ae91e14 100644 --- a/include/models/schedule.h +++ b/include/models/schedule.h @@ -3,7 +3,6 @@ #include <stdint.h> #include <uuid/uuid.h> -#include <lmdb.h> #include <models/period.h> diff --git a/src/handlers/loop.c b/src/handlers/loop.c index f2c6671..2076952 100644 --- a/src/handlers/loop.c +++ b/src/handlers/loop.c @@ -34,21 +34,25 @@ handler_loop(struct mg_connection *c_mqtt) int is_on = 0; int is_on_schedule = relay_is_on_schedule(relay, &time_now); + int pulse_relay = global_config.relay_configs[i].pulse_duration; - if(relay->is_on_schedule != is_on_schedule && relay->is_on_schedule != -1) + if(is_on_schedule) { - relay->pulse_timer = global_config.relay_configs[i].pulse_duration; + if(!pulse_relay) + { + is_on = 1; + LOGGER_DEBUG("relay %d is active\n", i); + } + if(pulse_relay && relay->pulse_timer) + { + is_on = 1; + --relay->pulse_timer; + LOGGER_DEBUG("relay %d is pulsing for %d more seconds\n", i, relay->pulse_timer); + } } - if(is_on_schedule && !global_config.relay_configs[i].pulse_duration) + else { - is_on = 1; - LOGGER_DEBUG("relay %d is active\n", i); - } - if(relay->pulse_timer > 0) - { - is_on = 1; - --relay->pulse_timer; - LOGGER_DEBUG("relay %d is pulsing for %d more seconds\n", i, relay->pulse_timer); + relay->pulse_timer = 0; } if(relay->is_on != is_on) @@ -68,7 +72,6 @@ handler_loop(struct mg_connection *c_mqtt) --relay->sent_to_broker; } relay->is_on = is_on; - relay->is_on_schedule = is_on_schedule; if(global_config.relay_configs[i].inverted) { diff --git a/src/main.c b/src/main.c index 17149e2..a13c75e 100644 --- a/src/main.c +++ b/src/main.c @@ -2,7 +2,6 @@ #include <string.h> #include <stdio.h> #include <time.h> -#include <lmdb.h> #include <signal.h> #include <syslog.h> diff --git a/src/models/relay.c b/src/models/relay.c index 903e1bf..38c3aa0 100644 --- a/src/models/relay.c +++ b/src/models/relay.c @@ -60,7 +60,6 @@ relay_db_select_mapper(sqlite3_stmt *stmt) relay_reload_schedules(new_relay); new_relay->is_on = -1; - new_relay->is_on_schedule = -1; new_relay->pulse_timer = 0; new_relay->sent_to_broker = 0; @@ -177,7 +176,6 @@ relay_create(uint8_t number) new_relay->name[0] = '\0'; new_relay->is_on = -1; - new_relay->is_on_schedule = -1; new_relay->pulse_timer = 0; new_relay->sent_to_broker = 0;