add: status for mqtt

fix: refactor connection handlers
This commit is contained in:
Tobias Reisinger 2020-06-26 01:01:46 +02:00
parent 2bc11ee829
commit 6c6e5023da
19 changed files with 534 additions and 183 deletions
src/models

View file

@ -5,6 +5,7 @@
#include <cJSON.h>
#include <logger.h>
#include <database.h>
#include <status.h>
#include <models/relay.h>
#include <models/controller.h>
#include <models/schedule.h>
@ -32,6 +33,8 @@ static relay_t*
relay_db_select_mapper(sqlite3_stmt *stmt)
{
relay_t *new_relay = malloc(sizeof(relay_t));
new_relay->is_on = 0;
for(int i = 0; i < sqlite3_column_count(stmt); i++)
{
const char *name = sqlite3_column_name(stmt, i);
@ -158,28 +161,10 @@ relay_save(relay_t *relay)
junction_relay_schedule_insert(i, relay->id, relay->schedules[i]->id);
}
status_reload_entry(relay->id);
return result;
}
int
relay_remove(relay_t *relay)
{
sqlite3_stmt *stmt;
if(!relay->id)
{
return 0;
}
sqlite3_prepare_v2(global_database, "DELETE FROM relays WHERE id=?1;", -1, &stmt, NULL);
sqlite3_bind_int(stmt, 1, relay->id);
int rc = sqlite3_step(stmt);
sqlite3_finalize(stmt);
return rc != SQLITE_DONE;
}
void
relay_reload_active_schedule(relay_t *relay)
{
@ -254,6 +239,21 @@ relay_to_json(relay_t *relay)
controller_free(controller);
cJSON *json_is_on;
switch(relay->is_on)
{
case 0:
json_is_on = cJSON_CreateFalse();
break;
case 1:
json_is_on = cJSON_CreateTrue();
break;
default:
json_is_on = cJSON_CreateNull();
break;
}
cJSON_AddItemToObject(json, "is_on", json_is_on);
cJSON_AddItemToObject(json, "active_schedule", schedule_to_json(relay->active_schedule));
cJSON *json_schedules = cJSON_CreateArray();
@ -292,6 +292,19 @@ relay_to_json(relay_t *relay)
return json;
}
cJSON*
relay_list_to_json(relay_t **relays)
{
cJSON *json = cJSON_CreateArray();
for(int i = 0; relays[i] != NULL; ++i)
{
cJSON *json_relay = relay_to_json(relays[i]);
cJSON_AddItemToArray(json, json_relay);
}
return json;
}
relay_t*
relay_get_by_id(int id)
{