diff -r 468377312726 -r 7a03181d29a3 bmsd/nodes.c --- a/bmsd/nodes.c Sat Dec 14 21:04:47 2019 +0100 +++ b/bmsd/nodes.c Sun Dec 15 15:08:09 2019 +0100 @@ -34,7 +34,7 @@ extern int debug; extern sys_fermenter_list *fermenters; extern sys_co2meter_list *co2meters; - +extern sys_ispindel_list *ispindels; void node_birth_data(char *topic, char *payload) @@ -247,11 +247,14 @@ sys_node_list *tmpn; sys_fermenter_list *tmpf; sys_co2meter_list *tmpc; + sys_ispindel_list *tmpi; 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); + if (debug) + printf("%-20s online %s %ld %d\n", tmpn->node, tmpn->online ? "yes":"no ", tmpn->lastseen, tmpn->interval); + if (tmpn->online && ((now - tmpn->lastseen) > (tmpn->interval * 2 + 5))) { // 2 times interval + 5 seconds + syslog(LOG_NOTICE, "Timeout node `%s/%s' after %ld seconds", tmpn->group_id, tmpn->node, (now - tmpn->lastseen)); tmpn->online = false; node_mysql_death(tmpn->node); @@ -274,6 +277,16 @@ } } } + + for (tmpi = ispindels; tmpi; tmpi = tmpi->next) { + if (strcmp(tmpi->node, tmpn->node) == 0) { + if (tmpi->online) { + syslog(LOG_NOTICE, "Timeout ispindel %s", tmpi->node); + tmpi->online = false; + ispindel_mysql_death(tmpi->node); + } + } + } } } }