bmsd/nodes.c

changeset 572
7a03181d29a3
parent 502
a8a6901b5a99
child 578
e75ce5bbda73
equal deleted inserted replaced
571:468377312726 572:7a03181d29a3
32 sys_node_list *nodes = NULL; 32 sys_node_list *nodes = NULL;
33 33
34 extern int debug; 34 extern int debug;
35 extern sys_fermenter_list *fermenters; 35 extern sys_fermenter_list *fermenters;
36 extern sys_co2meter_list *co2meters; 36 extern sys_co2meter_list *co2meters;
37 37 extern sys_ispindel_list *ispindels;
38 38
39 39
40 void node_birth_data(char *topic, char *payload) 40 void node_birth_data(char *topic, char *payload)
41 { 41 {
42 struct json_object *jobj, *val, *metric, *metric2; 42 struct json_object *jobj, *val, *metric, *metric2;
245 void nodes_check_online() 245 void nodes_check_online()
246 { 246 {
247 sys_node_list *tmpn; 247 sys_node_list *tmpn;
248 sys_fermenter_list *tmpf; 248 sys_fermenter_list *tmpf;
249 sys_co2meter_list *tmpc; 249 sys_co2meter_list *tmpc;
250 sys_ispindel_list *tmpi;
250 time_t now = time(NULL); 251 time_t now = time(NULL);
251 252
252 for (tmpn = nodes; tmpn; tmpn = tmpn->next) { 253 for (tmpn = nodes; tmpn; tmpn = tmpn->next) {
253 if (tmpn->online && ((now - tmpn->lastseen) > 600)) { 254 if (debug)
254 syslog(LOG_NOTICE, "Timeout node `%s/%s'", tmpn->group_id, tmpn->node); 255 printf("%-20s online %s %ld %d\n", tmpn->node, tmpn->online ? "yes":"no ", tmpn->lastseen, tmpn->interval);
256 if (tmpn->online && ((now - tmpn->lastseen) > (tmpn->interval * 2 + 5))) { // 2 times interval + 5 seconds
257 syslog(LOG_NOTICE, "Timeout node `%s/%s' after %ld seconds", tmpn->group_id, tmpn->node, (now - tmpn->lastseen));
255 tmpn->online = false; 258 tmpn->online = false;
256 node_mysql_death(tmpn->node); 259 node_mysql_death(tmpn->node);
257 260
258 for (tmpf = fermenters; tmpf; tmpf = tmpf->next) { 261 for (tmpf = fermenters; tmpf; tmpf = tmpf->next) {
259 if (strcmp(tmpf->node, tmpn->node) == 0) { 262 if (strcmp(tmpf->node, tmpn->node) == 0) {
272 tmpc->online = false; 275 tmpc->online = false;
273 co2meter_mysql_death(tmpc->node, tmpc->alias); 276 co2meter_mysql_death(tmpc->node, tmpc->alias);
274 } 277 }
275 } 278 }
276 } 279 }
277 } 280
278 } 281 for (tmpi = ispindels; tmpi; tmpi = tmpi->next) {
279 } 282 if (strcmp(tmpi->node, tmpn->node) == 0) {
280 283 if (tmpi->online) {
281 284 syslog(LOG_NOTICE, "Timeout ispindel %s", tmpi->node);
285 tmpi->online = false;
286 ispindel_mysql_death(tmpi->node);
287 }
288 }
289 }
290 }
291 }
292 }
293
294

mercurial