add: status for mqtt
fix: refactor connection handlers
This commit is contained in:
parent
2bc11ee829
commit
6c6e5023da
19 changed files with 534 additions and 183 deletions
src/models
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue