diff -r 2395bdfac387 -r 442d23455ae4 bmsd/nodes.c --- a/bmsd/nodes.c Thu May 30 21:19:43 2019 +0200 +++ b/bmsd/nodes.c Thu May 30 23:00:20 2019 +0200 @@ -29,10 +29,10 @@ #include "mysql.h" -sys_node_list *nodes = NULL; +sys_node_list *nodes = NULL; -extern int debug; - +extern int debug; +extern sys_fermenter_list *fermenters; void node_birth_data(char *topic, char *payload) @@ -239,3 +239,30 @@ } + +void nodes_check_online() +{ + sys_node_list *tmpn; + sys_fermenter_list *tmpf; + time_t now = time(NULL); + + for (tmpn = nodes; tmpn; tmpn = tmpn->next) { + if (tmpn->online && ((now - tmpn->lastseen) > 600)) { + syslog(LOG_NOTICE, "Timeout node `%s/%s'", tmpn->group_id, tmpn->node); + tmpn->online = false; + node_mysql_death(tmpn->node); + + for (tmpf = fermenters; tmpf; tmpf = tmpf->next) { + if (strcmp(tmpf->node, tmpn->node) == 0) { + if (tmpf->online) { + syslog(LOG_NOTICE, "Timeout fermenter %s/%s", tmpf->node, tmpf->alias); + tmpf->online = false; + fermenter_mysql_death(tmpf->node, tmpf->alias); + } + } + } + } + } +} + +