bmsd/mysql.c

changeset 192
7f69b43e6084
parent 76
804d45bdaa86
child 194
d202777ebae5
equal deleted inserted replaced
191:fd1d7225ca6e 192:7f69b43e6084
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,

mercurial