1 /** |
1 /** |
2 * @file mysql.c |
2 * @file mysql.c |
3 * @brief MySQL/MariaDB access. |
3 * @brief MySQL/MariaDB access. |
4 * @author Michiel Broek <mbroek at mbse dot eu> |
4 * @author Michiel Broek <mbroek at mbse dot eu> |
5 * |
5 * |
6 * Copyright (C) 2018 |
6 * Copyright (C) 2018-2019 |
7 * |
7 * |
8 * This file is part of the bms (Brewery Management System) |
8 * This file is part of the bms (Brewery Management System) |
9 * |
9 * |
10 * This is free software; you can redistribute it and/or modify it |
10 * This is free software; you can redistribute it and/or modify it |
11 * under the terms of the GNU General Public License as published by the |
11 * under the terms of the GNU General Public License as published by the |
145 fermenter->alias = xstrcpy(row[2]); |
145 fermenter->alias = xstrcpy(row[2]); |
146 fermenter->node = xstrcpy(row[3]); |
146 fermenter->node = xstrcpy(row[3]); |
147 fermenter->online = false; // Will be set later |
147 fermenter->online = false; // Will be set later |
148 fermenter->beercode = xstrcpy(row[5]); |
148 fermenter->beercode = xstrcpy(row[5]); |
149 fermenter->beername = xstrcpy(row[6]); |
149 fermenter->beername = xstrcpy(row[6]); |
|
150 fermenter->beeruuid = xstrcpy(row[44]); |
150 if (strlen(row[7])) { |
151 if (strlen(row[7])) { |
151 fermenter->air_address = xstrcpy(row[7]); |
152 fermenter->air_address = xstrcpy(row[7]); |
152 fermenter->air_state = xstrcpy(row[8]); |
153 fermenter->air_state = xstrcpy(row[8]); |
153 fermenter->air_temperature = atof(row[9]); |
154 fermenter->air_temperature = atof(row[9]); |
154 } |
155 } |
248 free(tmpf->node); |
249 free(tmpf->node); |
249 if (tmpf->beercode) |
250 if (tmpf->beercode) |
250 free(tmpf->beercode); |
251 free(tmpf->beercode); |
251 if (tmpf->beername) |
252 if (tmpf->beername) |
252 free(tmpf->beername); |
253 free(tmpf->beername); |
|
254 if (tmpf->beeruuid) |
|
255 free(tmpf->beeruuid); |
253 if (tmpf->air_address) |
256 if (tmpf->air_address) |
254 free(tmpf->air_address); |
257 free(tmpf->air_address); |
255 if (tmpf->air_state) |
258 if (tmpf->air_state) |
256 free(tmpf->air_state); |
259 free(tmpf->air_state); |
257 if (tmpf->beer_address) |
260 if (tmpf->beer_address) |
401 { |
404 { |
402 char *query = malloc(2560); |
405 char *query = malloc(2560); |
403 |
406 |
404 snprintf(query, 2559, |
407 snprintf(query, 2559, |
405 "INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%s', " \ |
408 "INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%s', " \ |
406 "beercode='%s', beername='%s', " \ |
409 "beercode='%s', beername='%s', beeruuid='%s', " \ |
407 "air_address='%s', air_state='%s', air_temperature='%.3f', " \ |
410 "air_address='%s', air_state='%s', air_temperature='%.3f', " \ |
408 "beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \ |
411 "beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \ |
409 "chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \ |
412 "chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \ |
410 "heater_address='%s', heater_state='%d', heater_usage='%lu', " \ |
413 "heater_address='%s', heater_state='%d', heater_usage='%lu', " \ |
411 "cooler_address='%s', cooler_state='%d', cooler_usage='%lu', " \ |
414 "cooler_address='%s', cooler_state='%d', cooler_usage='%lu', " \ |
416 "mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \ |
419 "mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \ |
417 "profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \ |
420 "profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \ |
418 "profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s'", |
421 "profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s'", |
419 fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N", |
422 fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N", |
420 fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "", |
423 fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "", |
|
424 fermenter->beeruuid ? fermenter->beeruuid : "", |
421 fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature, |
425 fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature, |
422 fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature, |
426 fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature, |
423 fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature, |
427 fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature, |
424 fermenter->heater_address ? fermenter->heater_address : "", fermenter->heater_state, fermenter->heater_usage, |
428 fermenter->heater_address ? fermenter->heater_address : "", fermenter->heater_state, fermenter->heater_usage, |
425 fermenter->cooler_address ? fermenter->cooler_address : "", fermenter->cooler_state, fermenter->cooler_usage, |
429 fermenter->cooler_address ? fermenter->cooler_address : "", fermenter->cooler_state, fermenter->cooler_usage, |
448 void fermenter_mysql_update(sys_fermenter_list *fermenter) |
452 void fermenter_mysql_update(sys_fermenter_list *fermenter) |
449 { |
453 { |
450 char *query = malloc(2560); |
454 char *query = malloc(2560); |
451 |
455 |
452 snprintf(query, 2559, |
456 snprintf(query, 2559, |
453 "UPDATE mon_fermenters SET online='%s', beercode='%s', beername='%s', " \ |
457 "UPDATE mon_fermenters SET online='%s', beercode='%s', beername='%s', beeruuid='%s', " \ |
454 "air_address='%s', air_state='%s', air_temperature='%.3f', " \ |
458 "air_address='%s', air_state='%s', air_temperature='%.3f', " \ |
455 "beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \ |
459 "beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \ |
456 "chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \ |
460 "chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \ |
457 "heater_address='%s', heater_state='%d', heater_usage='%lu', " \ |
461 "heater_address='%s', heater_state='%d', heater_usage='%lu', " \ |
458 "cooler_address='%s', cooler_state='%d', cooler_usage='%lu', " \ |
462 "cooler_address='%s', cooler_state='%d', cooler_usage='%lu', " \ |
462 "psu_address='%s', psu_state='%d', " \ |
466 "psu_address='%s', psu_state='%d', " \ |
463 "mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \ |
467 "mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \ |
464 "profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \ |
468 "profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \ |
465 "profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s' WHERE uuid='%s'", |
469 "profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s' WHERE uuid='%s'", |
466 fermenter->online ? "Y":"N", fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "", |
470 fermenter->online ? "Y":"N", fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "", |
|
471 fermenter->beeruuid ? fermenter->beeruuid : "", |
467 fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature, |
472 fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature, |
468 fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature, |
473 fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature, |
469 fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature, |
474 fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature, |
470 fermenter->heater_address ? fermenter->heater_address : "", fermenter->heater_state, fermenter->heater_usage, |
475 fermenter->heater_address ? fermenter->heater_address : "", fermenter->heater_state, fermenter->heater_usage, |
471 fermenter->cooler_address ? fermenter->cooler_address : "", fermenter->cooler_state, fermenter->cooler_usage, |
476 fermenter->cooler_address ? fermenter->cooler_address : "", fermenter->cooler_state, fermenter->cooler_usage, |