323 } |
323 } |
324 } |
324 } |
325 |
325 |
326 |
326 |
327 |
327 |
|
328 int bms_mysql_query(const char *query) |
|
329 { |
|
330 int rc = mysql_query(con, query); |
|
331 |
|
332 if (rc) { |
|
333 syslog(LOG_NOTICE, "MySQL: error %u (%s)", mysql_errno(con), mysql_error(con)); |
|
334 syslog(LOG_NOTICE, query); |
|
335 } else { |
|
336 return 0; |
|
337 } |
|
338 |
|
339 /* Any error execpt server gone away */ |
|
340 if (rc != 2006) |
|
341 return rc; |
|
342 |
|
343 /* Try to reconnect and do the query again */ |
|
344 mysql_close(con); |
|
345 if (mysql_real_connect(con, Config.mysql_host, Config.mysql_user, Config.mysql_pass, Config.mysql_database, Config.mysql_port, NULL, 0) == NULL) { |
|
346 syslog(LOG_NOTICE, "MySQL: mysql_real_connect() %s", mysql_error(con)); |
|
347 return 2; |
|
348 } |
|
349 syslog(LOG_NOTICE, "MySQL: reconnected."); |
|
350 rc = mysql_query(con, query); |
|
351 if (rc) { |
|
352 syslog(LOG_NOTICE, "MySQL: error %u (%s)", mysql_errno(con), mysql_error(con)); |
|
353 syslog(LOG_NOTICE, query); |
|
354 } |
|
355 return rc; |
|
356 } |
|
357 |
|
358 |
|
359 |
328 void bms_mysql_ping(void) |
360 void bms_mysql_ping(void) |
329 { |
361 { |
330 } |
362 } |
331 |
363 |
332 |
364 |
351 node->uuid, node->node, node->online ?"Y":"N", node->group_id, |
383 node->uuid, node->node, node->online ?"Y":"N", node->group_id, |
352 node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, first, last, |
384 node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, first, last, |
353 node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, |
385 node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, |
354 node->net_address, node->net_ifname, node->net_rssi); |
386 node->net_address, node->net_ifname, node->net_rssi); |
355 |
387 |
356 if (mysql_query(con, query)) { |
388 if (bms_mysql_query(query) == 0) { |
357 syslog(LOG_NOTICE, "MySQL: INSERT INTO mon_nodes error %u (%s))", mysql_errno(con), mysql_error(con)); |
|
358 syslog(LOG_NOTICE, query); |
|
359 } else { |
|
360 syslog(LOG_NOTICE, "MySQL: insert new node %s", node->node); |
389 syslog(LOG_NOTICE, "MySQL: insert new node %s", node->node); |
361 } |
390 } |
362 |
391 |
363 free(query); |
392 free(query); |
364 } |
393 } |
380 "net_address='%s', net_ifname='%s', net_rssi='%d' WHERE uuid='%s'", |
409 "net_address='%s', net_ifname='%s', net_rssi='%d' WHERE uuid='%s'", |
381 node->online ?"Y":"N", node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last, |
410 node->online ?"Y":"N", node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last, |
382 node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, |
411 node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, |
383 node->net_address, node->net_ifname, node->net_rssi, node->uuid); |
412 node->net_address, node->net_ifname, node->net_rssi, node->uuid); |
384 |
413 |
385 if (mysql_query(con, query)) { |
414 bms_mysql_query(query); |
386 syslog(LOG_NOTICE, "MySQL: UPDATE mon_nodes error %u (%s))", mysql_errno(con), mysql_error(con)); |
|
387 syslog(LOG_NOTICE, query); |
|
388 } |
|
389 |
|
390 free(query); |
415 free(query); |
391 } |
416 } |
392 |
417 |
393 |
418 |
394 |
419 |
395 void node_mysql_death(char *node) |
420 void node_mysql_death(char *node) |
396 { |
421 { |
397 char *query = malloc(512); |
422 char *query = malloc(512); |
398 |
423 |
399 snprintf(query, 511, "UPDATE mon_nodes SET online='N' WHERE node='%s'", node); |
424 snprintf(query, 511, "UPDATE mon_nodes SET online='N' WHERE node='%s'", node); |
400 |
425 bms_mysql_query(query); |
401 if (mysql_query(con, query)) { |
|
402 syslog(LOG_NOTICE, "MySQL: UPDATE mon_nodes error %u (%s))", mysql_errno(con), mysql_error(con)); |
|
403 syslog(LOG_NOTICE, query); |
|
404 } |
|
405 |
|
406 free(query); |
426 free(query); |
407 } |
427 } |
408 |
428 |
409 |
429 |
410 |
430 |
445 fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, |
465 fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, |
446 fermenter->profile_inittemp_high, fermenter->profile_inittemp_low, |
466 fermenter->profile_inittemp_high, fermenter->profile_inittemp_low, |
447 fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, |
467 fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, |
448 fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light); |
468 fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light); |
449 |
469 |
450 if (mysql_query(con, query)) { |
470 if (bms_mysql_query(query) == 0) { |
451 syslog(LOG_NOTICE, "MySQL: INSERT INTO mon_fermenters error %u (%s))", mysql_errno(con), mysql_error(con)); |
|
452 syslog(LOG_NOTICE, query); |
|
453 } else { |
|
454 syslog(LOG_NOTICE, "MySQL: insert new fermenter %s/%s", fermenter->node, fermenter->alias); |
471 syslog(LOG_NOTICE, "MySQL: insert new fermenter %s/%s", fermenter->node, fermenter->alias); |
455 } |
472 } |
456 |
|
457 free(query); |
473 free(query); |
458 } |
474 } |
459 |
475 |
460 |
476 |
461 void fermenter_mysql_update(sys_fermenter_list *fermenter) |
477 void fermenter_mysql_update(sys_fermenter_list *fermenter) |
493 fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, |
509 fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, |
494 fermenter->profile_inittemp_high, fermenter->profile_inittemp_low, |
510 fermenter->profile_inittemp_high, fermenter->profile_inittemp_low, |
495 fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, |
511 fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, |
496 fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light, fermenter->uuid); |
512 fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light, fermenter->uuid); |
497 |
513 |
498 if (mysql_query(con, query)) { |
514 bms_mysql_query(query); |
499 syslog(LOG_NOTICE, "MySQL: UPDATE mon_fermenters error %u (%s))", mysql_errno(con), mysql_error(con)); |
|
500 syslog(LOG_NOTICE, query); |
|
501 } |
|
502 |
|
503 free(query); |
515 free(query); |
504 } |
516 } |
505 |
517 |
506 |
518 |
507 |
519 |
512 if (alias) |
524 if (alias) |
513 snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s' and alias='%s'", node, alias); |
525 snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s' and alias='%s'", node, alias); |
514 else |
526 else |
515 snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s'", node); |
527 snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s'", node); |
516 |
528 |
517 if (mysql_query(con, query)) { |
529 bms_mysql_query(query); |
518 syslog(LOG_NOTICE, "MySQL: UPDATE mon_fermenters error %u (%s))", mysql_errno(con), mysql_error(con)); |
|
519 syslog(LOG_NOTICE, query); |
|
520 } |
|
521 |
|
522 free(query); |
530 free(query); |
523 } |
531 } |
524 |
532 |
525 |
533 |