bmsd/mysql.c

changeset 572
7a03181d29a3
parent 567
6bf0afc33e70
child 578
e75ce5bbda73
--- a/bmsd/mysql.c	Sat Dec 14 21:04:47 2019 +0100
+++ b/bmsd/mysql.c	Sun Dec 15 15:08:09 2019 +0100
@@ -99,7 +99,7 @@
 		node->next          = NULL;
 		node->uuid          = xstrcpy(row[1]);
 		node->node          = xstrcpy(row[2]);
-		node->online        = false;	// Will be set using MQTT
+		node->online        = atoi(row[3]);
 		node->group_id      = xstrcpy(row[4]);
 		node->hardwaremake  = xstrcpy(row[5]);
 		node->hardwaremodel = xstrcpy(row[6]);
@@ -149,7 +149,7 @@
 		fermenter->uuid     = xstrcpy(row[1]);
 		fermenter->alias    = xstrcpy(row[2]);
 		fermenter->node     = xstrcpy(row[3]);
-		fermenter->online   = false;	// Will be set later
+		fermenter->online   = atoi(row[4]);
 		fermenter->beercode = xstrcpy(row[5]);
 		fermenter->beername = xstrcpy(row[6]);
 		fermenter->beeruuid = xstrcpy(row[44]);
@@ -245,7 +245,7 @@
                 co2meter->uuid                = xstrcpy(row[1]);
                 co2meter->alias               = xstrcpy(row[2]);
                 co2meter->node                = xstrcpy(row[3]);
-                co2meter->online              = 0;    // Will be set later
+                co2meter->online              = atoi(row[4]);
                 co2meter->beercode            = xstrcpy(row[5]);
                 co2meter->beername            = xstrcpy(row[6]);
                 co2meter->beeruuid            = xstrcpy(row[7]);
@@ -287,7 +287,7 @@
                 memset(ispindel, 0, sizeof(sys_ispindel_list));
                 ispindel->next                = NULL;
 		ispindel->node                = xstrcpy(row[1]);
-		ispindel->online              = 0;  // Will be set later
+		ispindel->online              = atoi(row[2]);
 		ispindel->alarm               = atoi(row[3]);
 		ispindel->beercode            = xstrcpy(row[4]);
                 ispindel->beername            = xstrcpy(row[5]);
@@ -323,6 +323,7 @@
 
 void bms_mysql_end(void)
 {
+    sys_ispindel_list	*tmpi, *oldtmpi;
     sys_co2meter_list	*tmpp, *oldtmpp;
     sys_fermenter_list	*tmpf, *oldtmpf;
     sys_node_list	*tmpn, *oldtmpn;
@@ -333,6 +334,19 @@
     if (debug)
 	fprintf(stdout, "MySQL: disconnected\n");
 
+    for (tmpi = ispindels; tmpi; tmpi = oldtmpi) {
+        oldtmpi = tmpi->next;
+	if (tmpi->node)
+            free(tmpi->node);
+        if (tmpi->beercode)
+            free(tmpi->beercode);
+        if (tmpi->beername)
+            free(tmpi->beername);
+        if (tmpi->beeruuid)
+            free(tmpi->beeruuid);
+        free(tmpi);
+    }
+
     for (tmpp = co2meters; tmpp; tmpp = oldtmpp) {
         oldtmpp = tmpp->next;
         if (tmpp->uuid)
@@ -490,11 +504,11 @@
 		mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     snprintf(query, 1023,
-	"INSERT INTO  mon_nodes SET uuid='%s', node='%s', online='%s', group_id='%s', " \
+	"INSERT INTO  mon_nodes SET uuid='%s', node='%s', online='%d', group_id='%s', " \
         "hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', firstseen='%s', lastseen='%s', " \
 	"temperature='%.3f', humidity='%.3f', barometer='%.3f', gps_latitude='%.8f', gps_longitude='%.8f', gps_altitude='%.8f', " \
 	"net_address='%s', net_ifname='%s', net_rssi='%d'",
-	node->uuid, node->node, node->online ?"Y":"N", node->group_id, 
+	node->uuid, node->node, node->online ?1:0, node->group_id, 
 	node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, first, last,
 	node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude,
 	node->net_address, node->net_ifname, node->net_rssi);
@@ -518,10 +532,10 @@
     	mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     snprintf(query, 1023,
-	"UPDATE mon_nodes SET online='%s', hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', lastseen='%s', " \
+	"UPDATE mon_nodes SET online='%d', hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', lastseen='%s', " \
 	"temperature='%.3f', humidity='%.3f', barometer='%.3f', gps_latitude='%.8f', gps_longitude='%.8f', gps_altitude='%.8f', " \
 	"net_address='%s', net_ifname='%s', net_rssi='%d' WHERE uuid='%s'",
-	node->online ?"Y":"N", node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last,
+	node->online ? 1:0, node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last,
 	node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, 
 	node->net_address, node->net_ifname, node->net_rssi, node->uuid);
 
@@ -535,7 +549,7 @@
 {
     char        *query = malloc(512);
 
-    snprintf(query, 511, "UPDATE mon_nodes SET online='N' WHERE node='%s'", node);
+    snprintf(query, 511, "UPDATE mon_nodes SET online='0' WHERE node='%s'", node);
     bms_mysql_query(query);
     free(query);
 }
@@ -547,7 +561,7 @@
     char        *query = malloc(2560);
 
     snprintf(query, 2559,
-	"INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%s', " \
+	"INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%d', " \
 	"beercode='%s', beername='%s', beeruuid='%s', " \
 	"air_address='%s', air_state='%s', air_temperature='%.3f', " \
 	"beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \
@@ -562,7 +576,7 @@
 	"profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \
 	"profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s', " \
 	"yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d'",
-	fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N",
+	fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? 1:0,
 	fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
 	fermenter->beeruuid ? fermenter->beeruuid : "",
 	fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature,
@@ -593,7 +607,7 @@
     char        *query = malloc(2560);
 
     snprintf(query, 2559,
-	"UPDATE mon_fermenters SET online='%s', beercode='%s', beername='%s', beeruuid='%s', " \
+	"UPDATE mon_fermenters SET online='%d', beercode='%s', beername='%s', beeruuid='%s', " \
 	"air_address='%s', air_state='%s', air_temperature='%.3f', " \
 	"beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \
 	"chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \
@@ -607,7 +621,7 @@
 	"profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \
 	"profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s', " \
         "yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d' WHERE uuid='%s'",
-	fermenter->online ? "Y":"N", fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
+	fermenter->online ? 1:0, fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
 	fermenter->beeruuid ? fermenter->beeruuid : "",
 	fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature,
 	fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature,
@@ -636,9 +650,9 @@
     char        *query = malloc(512);
 
     if (alias)
-    	snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s' and alias='%s'", node, alias);
+    	snprintf(query, 511, "UPDATE mon_fermenters SET online='0' WHERE node='%s' and alias='%s'", node, alias);
     else
-	snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s'", node);
+	snprintf(query, 511, "UPDATE mon_fermenters SET online='0' WHERE node='%s'", node);
 
     bms_mysql_query(query);
     free(query);
@@ -707,7 +721,7 @@
 
     snprintf(query, 2559,
         "INSERT INTO mon_ispindels SET node='%s', online='%d', alarm='%d', " \
-        "tilt='%.3f', temperature='%.3f', battery='%.3f', gravity='%.3f', interval='%d', rssi='%d'",
+        "tilt='%.6f', temperature='%.4f', battery='%.4f', gravity='%.6f', interval='%d', rssi='%d'",
         ispindel->node, ispindel->online ? 1:0, ispindel->alarm,
         ispindel->tilt, ispindel->temperature, ispindel->battery, ispindel->gravity, ispindel->interval, ispindel->rssi);
 

mercurial