add: only allow pulse when on schedule
This commit is contained in:
		
							parent
							
								
									db7eb6305c
								
							
						
					
					
						commit
						14f93e44ce
					
				
					 4 changed files with 16 additions and 16 deletions
				
			
		| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
cmake_minimum_required (VERSION 3.7)
 | 
					cmake_minimum_required (VERSION 3.7)
 | 
				
			||||||
project(controller
 | 
					project(controller
 | 
				
			||||||
        VERSION 0.3.4
 | 
					        VERSION 0.3.5
 | 
				
			||||||
        LANGUAGES C)
 | 
					        LANGUAGES C)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_executable(controller src/main.c)
 | 
					add_executable(controller src/main.c)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,6 @@ typedef struct
 | 
				
			||||||
    int id;
 | 
					    int id;
 | 
				
			||||||
    uint8_t number;
 | 
					    uint8_t number;
 | 
				
			||||||
    int is_on;
 | 
					    int is_on;
 | 
				
			||||||
    int is_on_schedule;
 | 
					 | 
				
			||||||
    int pulse_timer;
 | 
					    int pulse_timer;
 | 
				
			||||||
    int sent_to_broker;
 | 
					    int sent_to_broker;
 | 
				
			||||||
    char name[MAX_NAME_LENGTH + 1];
 | 
					    char name[MAX_NAME_LENGTH + 1];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,21 +34,25 @@ handler_loop(struct mg_connection *c_mqtt)
 | 
				
			||||||
        int is_on = 0;
 | 
					        int is_on = 0;
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        int is_on_schedule = relay_is_on_schedule(relay, &time_now);
 | 
					        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;
 | 
				
			||||||
 | 
					                --relay->pulse_timer;
 | 
				
			||||||
 | 
					                LOGGER_DEBUG("relay %d is pulsing for %d more seconds\n", i, relay->pulse_timer);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                is_on = 1;
 | 
				
			||||||
 | 
					                LOGGER_DEBUG("relay %d is active\n", i);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if(is_on_schedule && !global_config.relay_configs[i].pulse_duration)
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            is_on = 1;
 | 
					            relay->pulse_timer = 0;
 | 
				
			||||||
            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);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(relay->is_on != is_on)
 | 
					        if(relay->is_on != is_on)
 | 
				
			||||||
| 
						 | 
					@ -68,7 +72,6 @@ handler_loop(struct mg_connection *c_mqtt)
 | 
				
			||||||
            --relay->sent_to_broker;
 | 
					            --relay->sent_to_broker;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        relay->is_on = is_on;
 | 
					        relay->is_on = is_on;
 | 
				
			||||||
        relay->is_on_schedule = is_on_schedule;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(global_config.relay_configs[i].inverted)
 | 
					        if(global_config.relay_configs[i].inverted)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,7 +60,6 @@ relay_db_select_mapper(sqlite3_stmt *stmt)
 | 
				
			||||||
    relay_reload_schedules(new_relay);
 | 
					    relay_reload_schedules(new_relay);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    new_relay->is_on = -1;
 | 
					    new_relay->is_on = -1;
 | 
				
			||||||
    new_relay->is_on_schedule = -1;
 | 
					 | 
				
			||||||
    new_relay->pulse_timer = 0;
 | 
					    new_relay->pulse_timer = 0;
 | 
				
			||||||
    new_relay->sent_to_broker = 0;
 | 
					    new_relay->sent_to_broker = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -177,7 +176,6 @@ relay_create(uint8_t number)
 | 
				
			||||||
    new_relay->name[0] = '\0';
 | 
					    new_relay->name[0] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    new_relay->is_on = -1;
 | 
					    new_relay->is_on = -1;
 | 
				
			||||||
    new_relay->is_on_schedule = -1;
 | 
					 | 
				
			||||||
    new_relay->pulse_timer = 0;
 | 
					    new_relay->pulse_timer = 0;
 | 
				
			||||||
    new_relay->sent_to_broker = 0;
 | 
					    new_relay->sent_to_broker = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue