Fri, 13 Dec 2019 16:49:50 +0100
Initial code for iSpindel support in the daemon
0 | 1 | /** |
2 | * @file mysql.c | |
3 | * @brief MySQL/MariaDB access. | |
4 | * @author Michiel Broek <mbroek at mbse dot eu> | |
5 | * | |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
6 | * Copyright (C) 2018-2019 |
0 | 7 | * |
8 | * This file is part of the bms (Brewery Management System) | |
9 | * | |
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 | |
12 | * Free Software Foundation; either version 2, or (at your option) any | |
13 | * later version. | |
14 | * | |
15 | * bms is distributed in the hope that it will be useful, but | |
16 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
18 | * General Public License for more details. | |
19 | * | |
20 | * You should have received a copy of the GNU General Public License | |
21 | * along with ThermFerm; see the file COPYING. If not, write to the Free | |
22 | * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. | |
23 | */ | |
24 | ||
25 | #include "bms.h" | |
26 | #include "xutil.h" | |
27 | #include "mysql.h" | |
28 | #include "nodes.h" | |
29 | ||
30 | ||
31 | MYSQL *con = NULL; | |
32 | MYSQL_RES *res_set; | |
33 | MYSQL_ROW row; | |
34 | ||
35 | extern sys_config Config; | |
36 | extern sys_node_list *nodes; | |
37 | extern sys_fermenter_list *fermenters; | |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
38 | extern sys_co2meter_list *co2meters; |
567
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
39 | extern sys_ispindel_list *ispindels; |
0 | 40 | extern int debug; |
41 | ||
42 | ||
43 | time_t datetime_to_time_t(char *dt_string) | |
44 | { | |
45 | struct tm tm; | |
46 | ||
47 | memset(&tm, 0, sizeof(struct tm)); | |
48 | tm.tm_year = atoi(strtok(dt_string, "-")) - 1900; | |
49 | tm.tm_mon = atoi(strtok(NULL, "-")) - 1; | |
50 | tm.tm_mday = atoi(strtok(NULL, " ")); | |
51 | tm.tm_hour = atoi(strtok(NULL, ":")); | |
52 | tm.tm_min = atoi(strtok(NULL, ":")); | |
53 | tm.tm_sec = atoi(strtok(NULL, "\0")); | |
54 | tm.tm_isdst = 1; | |
55 | ||
56 | return mktime(&tm); | |
57 | } | |
58 | ||
59 | ||
60 | ||
61 | int bms_mysql_init(void) | |
62 | { | |
63 | sys_node_list *node, *tmpp; | |
64 | sys_fermenter_list *fermenter, *tmpf; | |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
65 | sys_co2meter_list *co2meter, *tmpc; |
567
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
66 | sys_ispindel_list *ispindel, *tmpi; |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
67 | int icnt = 0, ccnt = 0, ncnt = 0, fcnt = 0; |
0 | 68 | |
69 | con = mysql_init(NULL); | |
70 | if (con == NULL) { | |
71 | syslog(LOG_NOTICE, "MySQL: mysql_init() failed"); | |
72 | return 1; | |
73 | } | |
74 | ||
75 | if (mysql_real_connect(con, Config.mysql_host, Config.mysql_user, Config.mysql_pass, Config.mysql_database, Config.mysql_port, NULL, 0) == NULL) { | |
76 | syslog(LOG_NOTICE, "MySQL: mysql_real_connect() %s", mysql_error(con)); | |
77 | return 2; | |
78 | } | |
79 | ||
80 | syslog(LOG_NOTICE, "MySQL: connected to %s:%d database %s", Config.mysql_host, Config.mysql_port, Config.mysql_database); | |
81 | syslog(LOG_NOTICE, "MySQL: %s server info: %s", mysql_get_host_info(con), mysql_get_server_info(con)); | |
82 | if (debug) | |
83 | fprintf(stdout, "MySQL: connected\n"); | |
84 | ||
85 | /* | |
86 | * Restore nodes from the database | |
87 | */ | |
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
88 | if (mysql_query(con, "SELECT * FROM mon_nodes")) { |
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
89 | syslog(LOG_NOTICE, "MySQL: SELECT * FROM mon_nodes error %u (%s))", mysql_errno(con), mysql_error(con)); |
0 | 90 | } else { |
91 | res_set = mysql_store_result(con); | |
92 | if (res_set == NULL) { | |
93 | syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); | |
94 | } else { | |
95 | // Process results | |
96 | while ((row = mysql_fetch_row(res_set)) != NULL) { | |
97 | node = (sys_node_list *)malloc(sizeof(sys_node_list)); | |
98 | memset(node, 0, sizeof(sys_node_list)); | |
99 | node->next = NULL; | |
100 | node->uuid = xstrcpy(row[1]); | |
101 | node->node = xstrcpy(row[2]); | |
102 | node->online = false; // Will be set using MQTT | |
103 | node->group_id = xstrcpy(row[4]); | |
104 | node->hardwaremake = xstrcpy(row[5]); | |
105 | node->hardwaremodel = xstrcpy(row[6]); | |
106 | node->os = xstrcpy(row[7]); | |
107 | node->os_version = xstrcpy(row[8]); | |
108 | node->firmware = xstrcpy(row[9]); | |
109 | node->firstseen = datetime_to_time_t(row[10]); | |
110 | node->lastseen = datetime_to_time_t(row[11]); | |
111 | node->temperature = atof(row[12]); | |
112 | node->humidity = atof(row[13]); | |
113 | node->barometer = atof(row[14]); | |
114 | node->gps_latitude = atof(row[15]); | |
115 | node->gps_longitude = atof(row[16]); | |
116 | node->gps_altitude = atof(row[17]); | |
117 | node->net_address = xstrcpy(row[18]); | |
118 | node->net_ifname = xstrcpy(row[19]); | |
119 | node->net_rssi = atoi(row[20]); | |
567
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
120 | node->interval = atoi(row[21]); |
0 | 121 | |
122 | if (nodes == NULL) { | |
123 | nodes = node; | |
124 | } else { | |
125 | for (tmpp = nodes; tmpp; tmpp = tmpp->next) { | |
126 | if (tmpp->next == NULL) { | |
127 | tmpp->next = node; | |
128 | break; | |
129 | } | |
130 | } | |
131 | } | |
132 | ncnt++; | |
133 | } | |
134 | mysql_free_result(res_set); | |
135 | } | |
136 | } | |
137 | ||
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
138 | if (mysql_query(con, "SELECT * FROM mon_fermenters")) { |
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
139 | syslog(LOG_NOTICE, "MySQL: SELECT * FROM mon_fermenters error %u (%s))", mysql_errno(con), mysql_error(con)); |
0 | 140 | } else { |
141 | res_set = mysql_store_result(con); | |
142 | if (res_set == NULL) { | |
143 | syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); | |
144 | } else { | |
145 | while ((row = mysql_fetch_row(res_set)) != NULL) { | |
146 | fermenter = (sys_fermenter_list *)malloc(sizeof(sys_fermenter_list)); | |
147 | memset(fermenter, 0, sizeof(sys_fermenter_list)); | |
148 | fermenter->next = NULL; | |
149 | fermenter->uuid = xstrcpy(row[1]); | |
150 | fermenter->alias = xstrcpy(row[2]); | |
151 | fermenter->node = xstrcpy(row[3]); | |
152 | fermenter->online = false; // Will be set later | |
153 | fermenter->beercode = xstrcpy(row[5]); | |
154 | fermenter->beername = xstrcpy(row[6]); | |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
155 | fermenter->beeruuid = xstrcpy(row[44]); |
0 | 156 | if (strlen(row[7])) { |
157 | fermenter->air_address = xstrcpy(row[7]); | |
158 | fermenter->air_state = xstrcpy(row[8]); | |
159 | fermenter->air_temperature = atof(row[9]); | |
160 | } | |
161 | if (strlen(row[10])) { | |
162 | fermenter->beer_address = xstrcpy(row[10]); | |
163 | fermenter->beer_state = xstrcpy(row[11]); | |
164 | fermenter->beer_temperature = atof(row[12]); | |
165 | } | |
166 | if (strlen(row[13])) { | |
167 | fermenter->chiller_address = xstrcpy(row[13]); | |
168 | fermenter->chiller_state = xstrcpy(row[14]); | |
169 | fermenter->chiller_temperature = atof(row[15]); | |
170 | } | |
171 | if (strlen(row[16])) { | |
172 | fermenter->heater_address = xstrcpy(row[16]); | |
173 | fermenter->heater_state = atoi(row[17]); | |
174 | fermenter->heater_usage = atoi(row[18]); | |
175 | } | |
176 | if (strlen(row[19])) { | |
177 | fermenter->cooler_address = xstrcpy(row[19]); | |
178 | fermenter->cooler_state = atoi(row[20]); | |
179 | fermenter->cooler_usage = atoi(row[21]); | |
180 | } | |
181 | if (strlen(row[22])) { | |
182 | fermenter->fan_address = xstrcpy(row[22]); | |
183 | fermenter->fan_state = atoi(row[23]); | |
184 | fermenter->fan_usage = atoi(row[24]); | |
185 | } | |
186 | if (strlen(row[25])) { | |
187 | fermenter->light_address = xstrcpy(row[25]); | |
188 | fermenter->light_state = atoi(row[26]); | |
189 | fermenter->light_usage = atoi(row[27]); | |
190 | } | |
191 | if (strlen(row[28])) { | |
192 | fermenter->door_address = xstrcpy(row[28]); | |
193 | fermenter->door_state = atoi(row[29]); | |
194 | } | |
195 | if (strlen(row[30])) { | |
196 | fermenter->psu_address = xstrcpy(row[30]); | |
197 | fermenter->psu_state = atoi(row[31]); | |
198 | } | |
199 | fermenter->mode = xstrcpy(row[32]); | |
200 | fermenter->alarm = atoi(row[33]); | |
201 | fermenter->setpoint_high = atof(row[34]); | |
202 | fermenter->setpoint_low = atof(row[35]); | |
203 | if (strlen(row[36])) { | |
204 | fermenter->profile_uuid = xstrcpy(row[36]); | |
205 | fermenter->profile_name = xstrcpy(row[37]); | |
206 | fermenter->profile_state = xstrcpy(row[38]); | |
207 | fermenter->profile_percent = atoi(row[39]); | |
208 | fermenter->profile_inittemp_high = atof(row[40]); | |
209 | fermenter->profile_inittemp_low = atof(row[41]); | |
210 | fermenter->profile_steps = xstrcpy(row[42]); | |
211 | } | |
212 | fermenter->stage = xstrcpy(row[43]); | |
299
047ead629d4a
Accept yeast temperature limits from thermferm via MQTT. Send yeat temperature ranges to thermferm together with the beer parameters. Store yeast temperature limits in the mon_fermenters database table. The monitor fermenters screen adjusts the temperature color ranges.
Michiel Broek <mbroek@mbse.eu>
parents:
194
diff
changeset
|
213 | fermenter->yeast_lo = atof(row[45]); |
047ead629d4a
Accept yeast temperature limits from thermferm via MQTT. Send yeat temperature ranges to thermferm together with the beer parameters. Store yeast temperature limits in the mon_fermenters database table. The monitor fermenters screen adjusts the temperature color ranges.
Michiel Broek <mbroek@mbse.eu>
parents:
194
diff
changeset
|
214 | fermenter->yeast_hi = atof(row[46]); |
334
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
215 | fermenter->webcam_url = xstrcpy(row[47]); |
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
216 | fermenter->webcam_light = atoi(row[48]); |
0 | 217 | |
218 | if (fermenters == NULL) { | |
219 | fermenters = fermenter; | |
220 | } else { | |
221 | for (tmpf = fermenters; tmpf; tmpf = tmpf->next) { | |
222 | if (tmpf->next == NULL) { | |
223 | tmpf->next = fermenter; | |
224 | break; | |
225 | } | |
226 | } | |
227 | } | |
228 | fcnt++; | |
229 | } | |
230 | mysql_free_result(res_set); | |
231 | } | |
232 | } | |
233 | ||
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
234 | if (mysql_query(con, "SELECT * FROM mon_co2meters")) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
235 | syslog(LOG_NOTICE, "MySQL: SELECT * FROM mon_co2meters error %u (%s))", mysql_errno(con), mysql_error(con)); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
236 | } else { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
237 | res_set = mysql_store_result(con); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
238 | if (res_set == NULL) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
239 | syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
240 | } else { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
241 | while ((row = mysql_fetch_row(res_set)) != NULL) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
242 | co2meter = (sys_co2meter_list *)malloc(sizeof(sys_co2meter_list)); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
243 | memset(co2meter, 0, sizeof(sys_co2meter_list)); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
244 | co2meter->next = NULL; |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
245 | co2meter->uuid = xstrcpy(row[1]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
246 | co2meter->alias = xstrcpy(row[2]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
247 | co2meter->node = xstrcpy(row[3]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
248 | co2meter->online = 0; // Will be set later |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
249 | co2meter->beercode = xstrcpy(row[5]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
250 | co2meter->beername = xstrcpy(row[6]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
251 | co2meter->beeruuid = xstrcpy(row[7]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
252 | co2meter->mode = xstrcpy(row[8]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
253 | co2meter->temperature_state = xstrcpy(row[9]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
254 | co2meter->temperature_address = xstrcpy(row[10]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
255 | co2meter->temperature = atof(row[11]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
256 | co2meter->pressure_state = xstrcpy(row[12]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
257 | co2meter->pressure_channel = atoi(row[13]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
258 | co2meter->pressure_voltage = atof(row[14]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
259 | co2meter->pressure_zero = atof(row[15]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
260 | co2meter->pressure_bar = atof(row[16]); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
261 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
262 | if (co2meters == NULL) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
263 | co2meters = co2meter; |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
264 | } else { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
265 | for (tmpc = co2meters; tmpc; tmpc = tmpc->next) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
266 | if (tmpc->next == NULL) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
267 | tmpc->next = co2meter; |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
268 | break; |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
269 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
270 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
271 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
272 | ccnt++; |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
273 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
274 | mysql_free_result(res_set); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
275 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
276 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
277 | |
567
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
278 | if (mysql_query(con, "SELECT * FROM mon_ispindels")) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
279 | syslog(LOG_NOTICE, "MySQL: SELECT * FROM mon_ispindels error %u (%s))", mysql_errno(con), mysql_error(con)); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
280 | } else { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
281 | res_set = mysql_store_result(con); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
282 | if (res_set == NULL) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
283 | syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
284 | } else { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
285 | while ((row = mysql_fetch_row(res_set)) != NULL) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
286 | ispindel = (sys_ispindel_list *)malloc(sizeof(sys_ispindel_list)); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
287 | memset(ispindel, 0, sizeof(sys_ispindel_list)); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
288 | ispindel->next = NULL; |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
289 | ispindel->node = xstrcpy(row[1]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
290 | ispindel->online = 0; // Will be set later |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
291 | ispindel->alarm = atoi(row[3]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
292 | ispindel->beercode = xstrcpy(row[4]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
293 | ispindel->beername = xstrcpy(row[5]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
294 | ispindel->beeruuid = xstrcpy(row[6]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
295 | ispindel->tilt = atof(row[7]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
296 | ispindel->temperature = atof(row[8]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
297 | ispindel->battery = atof(row[9]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
298 | ispindel->gravity = atof(row[10]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
299 | ispindel->interval = atoi(row[11]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
300 | ispindel->rssi = atoi(row[12]); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
301 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
302 | if (ispindels == NULL) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
303 | ispindels = ispindel; |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
304 | } else { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
305 | for (tmpi = ispindels; tmpi; tmpi = tmpi->next) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
306 | if (tmpi->next == NULL) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
307 | tmpi->next = ispindel; |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
308 | break; |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
309 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
310 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
311 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
312 | icnt++; |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
313 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
314 | mysql_free_result(res_set); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
315 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
316 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
317 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
318 | syslog(LOG_NOTICE, "MySQL: loaded %d nodes, %d fermenters, %d co2meters %d ispindels", ncnt, fcnt, ccnt, icnt); |
0 | 319 | return 0; |
320 | } | |
321 | ||
322 | ||
323 | ||
324 | void bms_mysql_end(void) | |
325 | { | |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
326 | sys_co2meter_list *tmpp, *oldtmpp; |
0 | 327 | sys_fermenter_list *tmpf, *oldtmpf; |
328 | sys_node_list *tmpn, *oldtmpn; | |
329 | ||
330 | mysql_close(con); | |
331 | ||
332 | syslog(LOG_NOTICE, "MySQL: disconnected"); | |
333 | if (debug) | |
334 | fprintf(stdout, "MySQL: disconnected\n"); | |
335 | ||
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
336 | for (tmpp = co2meters; tmpp; tmpp = oldtmpp) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
337 | oldtmpp = tmpp->next; |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
338 | if (tmpp->uuid) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
339 | free(tmpp->uuid); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
340 | if (tmpp->alias) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
341 | free(tmpp->alias); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
342 | if (tmpp->node) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
343 | free(tmpp->node); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
344 | if (tmpp->beercode) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
345 | free(tmpp->beercode); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
346 | if (tmpp->beername) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
347 | free(tmpp->beername); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
348 | if (tmpp->beeruuid) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
349 | free(tmpp->beeruuid); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
350 | if (tmpp->temperature_address) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
351 | free(tmpp->temperature_address); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
352 | if (tmpp->temperature_state) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
353 | free(tmpp->temperature_state); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
354 | if (tmpp->pressure_state) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
355 | free(tmpp->pressure_state); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
356 | free(tmpp); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
357 | } |
0 | 358 | for (tmpf = fermenters; tmpf; tmpf = oldtmpf) { |
359 | oldtmpf = tmpf->next; | |
360 | if (tmpf->uuid) | |
361 | free(tmpf->uuid); | |
362 | if (tmpf->alias) | |
363 | free(tmpf->alias); | |
364 | if (tmpf->node) | |
365 | free(tmpf->node); | |
366 | if (tmpf->beercode) | |
367 | free(tmpf->beercode); | |
368 | if (tmpf->beername) | |
369 | free(tmpf->beername); | |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
370 | if (tmpf->beeruuid) |
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
371 | free(tmpf->beeruuid); |
0 | 372 | if (tmpf->air_address) |
373 | free(tmpf->air_address); | |
374 | if (tmpf->air_state) | |
375 | free(tmpf->air_state); | |
376 | if (tmpf->beer_address) | |
377 | free(tmpf->beer_address); | |
378 | if (tmpf->beer_state) | |
379 | free(tmpf->beer_state); | |
380 | if (tmpf->chiller_address) | |
381 | free(tmpf->chiller_address); | |
382 | if (tmpf->chiller_state) | |
383 | free(tmpf->chiller_state); | |
384 | if (tmpf->heater_address) | |
385 | free(tmpf->heater_address); | |
386 | if (tmpf->cooler_address) | |
387 | free(tmpf->cooler_address); | |
388 | if (tmpf->fan_address) | |
389 | free(tmpf->fan_address); | |
390 | if (tmpf->light_address) | |
391 | free(tmpf->light_address); | |
392 | if (tmpf->door_address) | |
393 | free(tmpf->door_address); | |
394 | if (tmpf->psu_address) | |
395 | free(tmpf->psu_address); | |
396 | if (tmpf->mode) | |
397 | free(tmpf->mode); | |
398 | if (tmpf->stage) | |
399 | free(tmpf->stage); | |
400 | if (tmpf->profile_uuid) | |
401 | free(tmpf->profile_uuid); | |
402 | if (tmpf->profile_name) | |
403 | free(tmpf->profile_name); | |
404 | if (tmpf->profile_state) | |
405 | free(tmpf->profile_state); | |
406 | if (tmpf->profile_steps) | |
407 | free(tmpf->profile_steps); | |
334
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
408 | if (tmpf->webcam_url) |
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
409 | free(tmpf->webcam_url); |
0 | 410 | free(tmpf); |
411 | } | |
412 | for (tmpn = nodes; tmpn; tmpn = oldtmpn) { | |
413 | oldtmpn = tmpn->next; | |
414 | if (tmpn->uuid) | |
415 | free(tmpn->uuid); | |
416 | if (tmpn->node) | |
417 | free(tmpn->node); | |
418 | if (tmpn->group_id) | |
419 | free(tmpn->group_id); | |
420 | if (tmpn->hardwaremake) | |
421 | free(tmpn->hardwaremake); | |
422 | if (tmpn->hardwaremodel) | |
423 | free(tmpn->hardwaremodel); | |
424 | if (tmpn->os) | |
425 | free(tmpn->os); | |
426 | if (tmpn->os_version) | |
427 | free(tmpn->os_version); | |
428 | if (tmpn->firmware) | |
429 | free(tmpn->firmware); | |
430 | if (tmpn->net_address) | |
431 | free(tmpn->net_address); | |
432 | if (tmpn->net_ifname) | |
433 | free(tmpn->net_ifname); | |
434 | free(tmpn); | |
435 | } | |
436 | } | |
437 | ||
438 | ||
439 | ||
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
440 | int bms_mysql_query(const char *query) |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
441 | { |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
442 | int rc = mysql_query(con, query); |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
443 | int err = mysql_errno(con); |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
444 | |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
445 | if (rc) { |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
446 | syslog(LOG_NOTICE, "MySQL: error %u (%s)", err, mysql_error(con)); |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
447 | syslog(LOG_NOTICE, query); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
448 | } else { |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
449 | return 0; |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
450 | } |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
451 | |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
452 | /* Any error execpt server gone away */ |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
453 | if (err != 2006) |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
454 | return rc; |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
455 | |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
456 | syslog(LOG_NOTICE, "Trying to reconnect"); |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
457 | /* Try to reconnect and do the query again */ |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
458 | mysql_close(con); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
459 | if (mysql_real_connect(con, Config.mysql_host, Config.mysql_user, Config.mysql_pass, Config.mysql_database, Config.mysql_port, NULL, 0) == NULL) { |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
460 | syslog(LOG_NOTICE, "MySQL: mysql_real_connect() %s", mysql_error(con)); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
461 | return 2; |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
462 | } |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
463 | syslog(LOG_NOTICE, "MySQL: reconnected."); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
464 | rc = mysql_query(con, query); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
465 | if (rc) { |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
466 | syslog(LOG_NOTICE, "MySQL: error %u (%s)", mysql_errno(con), mysql_error(con)); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
467 | syslog(LOG_NOTICE, query); |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
468 | } |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
469 | return rc; |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
470 | } |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
471 | |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
472 | |
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
473 | |
0 | 474 | void bms_mysql_ping(void) |
475 | { | |
476 | } | |
477 | ||
478 | ||
479 | ||
480 | void node_mysql_insert(sys_node_list *node) | |
481 | { | |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
482 | char *query = malloc(1024), first[73], last[73]; |
0 | 483 | struct tm *mytime; |
484 | ||
485 | mytime = localtime(&node->firstseen); | |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
486 | snprintf(first, 72, "%04d-%02d-%02d %02d:%02d:%02d", |
0 | 487 | mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec); |
488 | mytime = localtime(&node->lastseen); | |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
489 | snprintf(last, 72, "%04d-%02d-%02d %02d:%02d:%02d", |
0 | 490 | mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec); |
491 | ||
76
804d45bdaa86
Increased nenory for the nodes query strings.
Michiel Broek <mbroek@mbse.eu>
parents:
43
diff
changeset
|
492 | snprintf(query, 1023, |
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
493 | "INSERT INTO mon_nodes SET uuid='%s', node='%s', online='%s', group_id='%s', " \ |
0 | 494 | "hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', firstseen='%s', lastseen='%s', " \ |
495 | "temperature='%.3f', humidity='%.3f', barometer='%.3f', gps_latitude='%.8f', gps_longitude='%.8f', gps_altitude='%.8f', " \ | |
496 | "net_address='%s', net_ifname='%s', net_rssi='%d'", | |
497 | node->uuid, node->node, node->online ?"Y":"N", node->group_id, | |
498 | node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, first, last, | |
499 | node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, | |
500 | node->net_address, node->net_ifname, node->net_rssi); | |
501 | ||
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
502 | if (bms_mysql_query(query) == 0) { |
0 | 503 | syslog(LOG_NOTICE, "MySQL: insert new node %s", node->node); |
504 | } | |
505 | ||
506 | free(query); | |
507 | } | |
508 | ||
509 | ||
510 | ||
511 | void node_mysql_update(sys_node_list *node) | |
512 | { | |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
513 | char *query = malloc(1024), last[65]; |
0 | 514 | struct tm *mytime; |
515 | ||
516 | mytime = localtime(&node->lastseen); | |
558
a8e065a9f851
Another attempt to fix the MySQL server has gone away error. Fixed gcc 7.1+ compiler warnings.
Michiel Broek <mbroek@mbse.eu>
parents:
505
diff
changeset
|
517 | snprintf(last, 64, "%04d-%02d-%02d %02d:%02d:%02d", |
0 | 518 | mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec); |
519 | ||
76
804d45bdaa86
Increased nenory for the nodes query strings.
Michiel Broek <mbroek@mbse.eu>
parents:
43
diff
changeset
|
520 | snprintf(query, 1023, |
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
521 | "UPDATE mon_nodes SET online='%s', hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', lastseen='%s', " \ |
0 | 522 | "temperature='%.3f', humidity='%.3f', barometer='%.3f', gps_latitude='%.8f', gps_longitude='%.8f', gps_altitude='%.8f', " \ |
523 | "net_address='%s', net_ifname='%s', net_rssi='%d' WHERE uuid='%s'", | |
524 | node->online ?"Y":"N", node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last, | |
525 | node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, | |
526 | node->net_address, node->net_ifname, node->net_rssi, node->uuid); | |
527 | ||
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
528 | bms_mysql_query(query); |
0 | 529 | free(query); |
530 | } | |
531 | ||
532 | ||
533 | ||
534 | void node_mysql_death(char *node) | |
535 | { | |
536 | char *query = malloc(512); | |
537 | ||
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
538 | snprintf(query, 511, "UPDATE mon_nodes SET online='N' WHERE node='%s'", node); |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
539 | bms_mysql_query(query); |
0 | 540 | free(query); |
541 | } | |
542 | ||
543 | ||
544 | ||
545 | void fermenter_mysql_insert(sys_fermenter_list *fermenter) | |
546 | { | |
547 | char *query = malloc(2560); | |
548 | ||
549 | snprintf(query, 2559, | |
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
550 | "INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%s', " \ |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
551 | "beercode='%s', beername='%s', beeruuid='%s', " \ |
0 | 552 | "air_address='%s', air_state='%s', air_temperature='%.3f', " \ |
553 | "beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \ | |
554 | "chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \ | |
555 | "heater_address='%s', heater_state='%d', heater_usage='%lu', " \ | |
556 | "cooler_address='%s', cooler_state='%d', cooler_usage='%lu', " \ | |
557 | "fan_address='%s', fan_state='%d', fan_usage='%lu', " \ | |
558 | "light_address='%s', light_state='%d', light_usage='%lu', " \ | |
559 | "door_address='%s', door_state='%d', " \ | |
560 | "psu_address='%s', psu_state='%d', " \ | |
561 | "mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \ | |
562 | "profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \ | |
299
047ead629d4a
Accept yeast temperature limits from thermferm via MQTT. Send yeat temperature ranges to thermferm together with the beer parameters. Store yeast temperature limits in the mon_fermenters database table. The monitor fermenters screen adjusts the temperature color ranges.
Michiel Broek <mbroek@mbse.eu>
parents:
194
diff
changeset
|
563 | "profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s', " \ |
334
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
564 | "yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d'", |
0 | 565 | fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N", |
566 | fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "", | |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
567 | fermenter->beeruuid ? fermenter->beeruuid : "", |
0 | 568 | fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature, |
569 | fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature, | |
570 | fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature, | |
571 | fermenter->heater_address ? fermenter->heater_address : "", fermenter->heater_state, fermenter->heater_usage, | |
572 | fermenter->cooler_address ? fermenter->cooler_address : "", fermenter->cooler_state, fermenter->cooler_usage, | |
573 | fermenter->fan_address ? fermenter->fan_address : "", fermenter->fan_state, fermenter->fan_usage, | |
574 | fermenter->light_address ? fermenter->light_address : "", fermenter->light_state, fermenter->light_usage, | |
575 | fermenter->door_address ? fermenter->door_address : "", fermenter->door_state, | |
576 | fermenter->psu_address ? fermenter->psu_address : "", fermenter->psu_state, | |
577 | fermenter->mode, fermenter->alarm, fermenter->setpoint_high, fermenter->setpoint_low, | |
578 | fermenter->profile_uuid ? fermenter->profile_uuid : "", fermenter->profile_name ? fermenter->profile_name : "", | |
579 | fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, | |
580 | fermenter->profile_inittemp_high, fermenter->profile_inittemp_low, | |
334
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
581 | fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, |
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
582 | fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light); |
0 | 583 | |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
584 | if (bms_mysql_query(query) == 0) { |
0 | 585 | syslog(LOG_NOTICE, "MySQL: insert new fermenter %s/%s", fermenter->node, fermenter->alias); |
586 | } | |
587 | free(query); | |
588 | } | |
589 | ||
590 | ||
591 | void fermenter_mysql_update(sys_fermenter_list *fermenter) | |
592 | { | |
593 | char *query = malloc(2560); | |
594 | ||
595 | snprintf(query, 2559, | |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
596 | "UPDATE mon_fermenters SET online='%s', beercode='%s', beername='%s', beeruuid='%s', " \ |
0 | 597 | "air_address='%s', air_state='%s', air_temperature='%.3f', " \ |
598 | "beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \ | |
599 | "chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \ | |
600 | "heater_address='%s', heater_state='%d', heater_usage='%lu', " \ | |
601 | "cooler_address='%s', cooler_state='%d', cooler_usage='%lu', " \ | |
602 | "fan_address='%s', fan_state='%d', fan_usage='%lu', " \ | |
603 | "light_address='%s', light_state='%d', light_usage='%lu', " \ | |
604 | "door_address='%s', door_state='%d', " \ | |
605 | "psu_address='%s', psu_state='%d', " \ | |
606 | "mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \ | |
607 | "profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \ | |
299
047ead629d4a
Accept yeast temperature limits from thermferm via MQTT. Send yeat temperature ranges to thermferm together with the beer parameters. Store yeast temperature limits in the mon_fermenters database table. The monitor fermenters screen adjusts the temperature color ranges.
Michiel Broek <mbroek@mbse.eu>
parents:
194
diff
changeset
|
608 | "profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s', " \ |
334
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
609 | "yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d' WHERE uuid='%s'", |
0 | 610 | fermenter->online ? "Y":"N", fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "", |
192
7f69b43e6084
Implemented beer uuid product in monitor fermenters.
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
611 | fermenter->beeruuid ? fermenter->beeruuid : "", |
0 | 612 | fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature, |
613 | fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature, | |
614 | fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature, | |
615 | fermenter->heater_address ? fermenter->heater_address : "", fermenter->heater_state, fermenter->heater_usage, | |
616 | fermenter->cooler_address ? fermenter->cooler_address : "", fermenter->cooler_state, fermenter->cooler_usage, | |
617 | fermenter->fan_address ? fermenter->fan_address : "", fermenter->fan_state, fermenter->fan_usage, | |
618 | fermenter->light_address ? fermenter->light_address : "", fermenter->light_state, fermenter->light_usage, | |
619 | fermenter->door_address ? fermenter->door_address : "", fermenter->door_state, | |
620 | fermenter->psu_address ? fermenter->psu_address : "", fermenter->psu_state, | |
621 | fermenter->mode, fermenter->alarm, fermenter->setpoint_high, fermenter->setpoint_low, | |
622 | fermenter->profile_uuid ? fermenter->profile_uuid : "", fermenter->profile_name ? fermenter->profile_name : "", | |
623 | fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, | |
624 | fermenter->profile_inittemp_high, fermenter->profile_inittemp_low, | |
334
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
625 | fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, |
26c6f8e5d58e
Added webcam_url and webcam_light fields to the mon_fermenters database table. Currently these fields need to be set using phpMyAdmin or another tool. If the webcam_url field is set, then on the mon_fermenter webpage a button is added to show a webcam page.
Michiel Broek <mbroek@mbse.eu>
parents:
299
diff
changeset
|
626 | fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light, fermenter->uuid); |
0 | 627 | |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
628 | bms_mysql_query(query); |
0 | 629 | free(query); |
630 | } | |
631 | ||
632 | ||
633 | ||
634 | void fermenter_mysql_death(char *node, char *alias) | |
635 | { | |
636 | char *query = malloc(512); | |
637 | ||
638 | if (alias) | |
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
639 | snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s' and alias='%s'", node, alias); |
0 | 640 | else |
43
dcb9ff8846fa
Renamed monitor database tables
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
641 | snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s'", node); |
0 | 642 | |
405
ef3f0274a1ea
Added a private mysql_query function that does try to reconnect a lost MySQL connection.
Michiel Broek <mbroek@mbse.eu>
parents:
383
diff
changeset
|
643 | bms_mysql_query(query); |
0 | 644 | free(query); |
645 | } | |
646 | ||
647 | ||
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
648 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
649 | void co2meter_mysql_insert(sys_co2meter_list *co2meter) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
650 | { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
651 | char *query = malloc(2560); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
652 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
653 | snprintf(query, 2559, |
505
c09b67fd8323
Added CO2 meter units alarm led.
Michiel Broek <mbroek@mbse.eu>
parents:
502
diff
changeset
|
654 | "INSERT INTO mon_co2meters SET uuid='%s', alias='%s', node='%s', online='%d', mode='%s', alarm='%d', " \ |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
655 | "temperature_address='%s', temperature_state='%s', temperature='%.3f', " \ |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
656 | "pressure_state='%s', pressure_channel='%d', pressure_voltage='%.3f', pressure_zero='%.3f', pressure_bar='%.3f'", |
505
c09b67fd8323
Added CO2 meter units alarm led.
Michiel Broek <mbroek@mbse.eu>
parents:
502
diff
changeset
|
657 | co2meter->uuid, co2meter->alias, co2meter->node, co2meter->online ? 1:0, co2meter->mode, co2meter->alarm, |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
658 | co2meter->temperature_address, co2meter->temperature_state, co2meter->temperature, |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
659 | co2meter->pressure_state, co2meter->pressure_channel, co2meter->pressure_voltage, co2meter->pressure_zero, co2meter->pressure_bar); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
660 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
661 | if (bms_mysql_query(query) == 0) { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
662 | syslog(LOG_NOTICE, "MySQL: insert new co2meter %s/%s", co2meter->node, co2meter->alias); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
663 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
664 | free(query); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
665 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
666 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
667 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
668 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
669 | void co2meter_mysql_update(sys_co2meter_list *co2meter) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
670 | { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
671 | char *query = malloc(2560); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
672 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
673 | snprintf(query, 2559, |
505
c09b67fd8323
Added CO2 meter units alarm led.
Michiel Broek <mbroek@mbse.eu>
parents:
502
diff
changeset
|
674 | "UPDATE mon_co2meters SET online='%d', mode='%s', alarm='%d', " \ |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
675 | "temperature_address='%s', temperature_state='%s', temperature='%.3f', " \ |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
676 | "pressure_state='%s', pressure_channel='%d', pressure_voltage='%.3f', pressure_zero='%.3f', pressure_bar='%.3f' " \ |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
677 | "WHERE uuid='%s'", |
505
c09b67fd8323
Added CO2 meter units alarm led.
Michiel Broek <mbroek@mbse.eu>
parents:
502
diff
changeset
|
678 | co2meter->online ? 1:0, co2meter->mode, co2meter->alarm, |
502
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
679 | co2meter->temperature_address, co2meter->temperature_state, co2meter->temperature, |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
680 | co2meter->pressure_state, co2meter->pressure_channel, co2meter->pressure_voltage, co2meter->pressure_zero, co2meter->pressure_bar, |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
681 | co2meter->uuid); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
682 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
683 | bms_mysql_query(query); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
684 | free(query); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
685 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
686 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
687 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
688 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
689 | void co2meter_mysql_death(char *node, char *alias) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
690 | { |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
691 | char *query = malloc(512); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
692 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
693 | if (alias) |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
694 | snprintf(query, 511, "UPDATE mon_co2meters SET online='0' WHERE node='%s' and alias='%s'", node, alias); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
695 | else |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
696 | snprintf(query, 511, "UPDATE mon_co2meters SET online='0' WHERE node='%s'", node); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
697 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
698 | bms_mysql_query(query); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
699 | free(query); |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
700 | } |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
701 | |
a8a6901b5a99
Added CO2 meter units to the daemon.
Michiel Broek <mbroek@mbse.eu>
parents:
405
diff
changeset
|
702 | |
567
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
703 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
704 | void ispindel_mysql_insert(sys_ispindel_list *ispindel) |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
705 | { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
706 | char *query = malloc(2560); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
707 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
708 | snprintf(query, 2559, |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
709 | "INSERT INTO mon_ispindels SET node='%s', online='%d', alarm='%d', " \ |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
710 | "tilt='%.3f', temperature='%.3f', battery='%.3f', gravity='%.3f', interval='%d', rssi='%d'", |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
711 | ispindel->node, ispindel->online ? 1:0, ispindel->alarm, |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
712 | ispindel->tilt, ispindel->temperature, ispindel->battery, ispindel->gravity, ispindel->interval, ispindel->rssi); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
713 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
714 | if (bms_mysql_query(query) == 0) { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
715 | syslog(LOG_NOTICE, "MySQL: insert new ispindel %s", ispindel->node); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
716 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
717 | free(query); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
718 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
719 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
720 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
721 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
722 | void ispindel_mysql_update(sys_ispindel_list *ispindel) |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
723 | { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
724 | char *query = malloc(2560); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
725 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
726 | snprintf(query, 2559, |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
727 | "UPDATE mon_ispindels SET online='%d', alarm='%d', " \ |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
728 | "tilt='%.3f', temperature='%.3f', battery='%.3f', gravity='%.3f', interval='%d', rssi='%d' WHERE node='%s'", |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
729 | ispindel->online ? 1:0, ispindel->alarm, |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
730 | ispindel->tilt, ispindel->temperature, ispindel->battery, ispindel->gravity, ispindel->interval, ispindel->rssi, ispindel->node); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
731 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
732 | bms_mysql_query(query); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
733 | free(query); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
734 | } |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
735 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
736 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
737 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
738 | void ispindel_mysql_death(char *node) |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
739 | { |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
740 | char *query = malloc(512); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
741 | |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
742 | snprintf(query, 511, "UPDATE mon_ispindels SET online='0' WHERE node='%s'", node); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
743 | bms_mysql_query(query); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
744 | free(query); |
6bf0afc33e70
Initial code for iSpindel support in the daemon
Michiel Broek <mbroek@mbse.eu>
parents:
558
diff
changeset
|
745 | } |