bmsd/mysql.c

changeset 405
ef3f0274a1ea
parent 383
2395bdfac387
child 502
a8a6901b5a99
equal deleted inserted replaced
404:39a688b8d069 405:ef3f0274a1ea
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

mercurial