Implemented beer uuid product in monitor fermenters.

Sat, 19 Jan 2019 17:31:43 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 19 Jan 2019 17:31:43 +0100
changeset 192
7f69b43e6084
parent 191
fd1d7225ca6e
child 193
3cbd81ea9391

Implemented beer uuid product in monitor fermenters.

bmsd/bms.h file | annotate | diff | comparison | revisions
bmsd/fermenters.c file | annotate | diff | comparison | revisions
bmsd/mysql.c file | annotate | diff | comparison | revisions
www/includes/db_product.php file | annotate | diff | comparison | revisions
www/js/mon_fermenter.js file | annotate | diff | comparison | revisions
--- a/bmsd/bms.h	Sat Jan 19 13:58:24 2019 +0100
+++ b/bmsd/bms.h	Sat Jan 19 17:31:43 2019 +0100
@@ -160,6 +160,7 @@
     bool			online;			///< Online status
     char			*beercode;		///< Beer unique code
     char			*beername;		///< Beer name in fermenter
+    char			*beeruuid;		///< Beer uuid in fermenter
     char			*air_address;		///< Air sensor address
     char			*air_state;		///< Air sensor state
     float			air_temperature;	///< Air temperature
--- a/bmsd/fermenters.c	Sat Jan 19 13:58:24 2019 +0100
+++ b/bmsd/fermenters.c	Sat Jan 19 17:31:43 2019 +0100
@@ -126,6 +126,11 @@
 		free(fermenter->beername);
 	    fermenter->beername = xstrcpy((char *)json_object_get_string(val));
 	}
+	if (json_object_object_get_ex(sensor, "uuid", &val)) {
+	    if (fermenter->beeruuid)
+		free(fermenter->beeruuid);
+	    fermenter->beeruuid = xstrcpy((char *)json_object_get_string(val));
+	}
     }
     if (json_object_object_get_ex(jobj, "air", &sensor)) {
 	if (json_object_object_get_ex(sensor, "address", &val)) {
--- a/bmsd/mysql.c	Sat Jan 19 13:58:24 2019 +0100
+++ b/bmsd/mysql.c	Sat Jan 19 17:31:43 2019 +0100
@@ -3,7 +3,7 @@
  * @brief MySQL/MariaDB access.
  * @author Michiel Broek <mbroek at mbse dot eu>
  *
- * Copyright (C) 2018
+ * Copyright (C) 2018-2019
  *
  * This file is part of the bms (Brewery Management System)
  *
@@ -147,6 +147,7 @@
 		fermenter->online   = false;	// Will be set later
 		fermenter->beercode = xstrcpy(row[5]);
 		fermenter->beername = xstrcpy(row[6]);
+		fermenter->beeruuid = xstrcpy(row[44]);
 		if (strlen(row[7])) {
 		    fermenter->air_address         = xstrcpy(row[7]);
 		    fermenter->air_state           = xstrcpy(row[8]);
@@ -250,6 +251,8 @@
 	    free(tmpf->beercode);
 	if (tmpf->beername)
 	    free(tmpf->beername);
+	if (tmpf->beeruuid)
+	    free(tmpf->beeruuid);
 	if (tmpf->air_address)
 	    free(tmpf->air_address);
 	if (tmpf->air_state)
@@ -403,7 +406,7 @@
 
     snprintf(query, 2559,
 	"INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%s', " \
-	"beercode='%s', beername='%s', " \
+	"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', " \
@@ -418,6 +421,7 @@
 	"profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s'",
 	fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N",
 	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,
      	fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature,
@@ -450,7 +454,7 @@
     char        *query = malloc(2560);
 
     snprintf(query, 2559,
-	"UPDATE mon_fermenters SET online='%s', beercode='%s', beername='%s', " \
+	"UPDATE mon_fermenters SET online='%s', 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', " \
@@ -464,6 +468,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' WHERE uuid='%s'",
 	fermenter->online ? "Y":"N", 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,
 	fermenter->chiller_address ? fermenter->chiller_address : "", fermenter->chiller_state ? fermenter->chiller_state : "", fermenter->chiller_temperature,
--- a/www/includes/db_product.php	Sat Jan 19 13:58:24 2019 +0100
+++ b/www/includes/db_product.php	Sat Jan 19 17:31:43 2019 +0100
@@ -338,13 +338,14 @@
 	 * SELECT, produce a list of products that can be fermented.
 	 */
 	if (isset($_GET['select']) && ($_GET['select'] == "ferment")) {
-		$query  = "SELECT code,name,stage FROM products WHERE ";
+		$query  = "SELECT code,name,uuid,stage FROM products WHERE ";
 		$query .= "stage='Wait' OR stage='Brew' OR stage='Primary' OR stage='Secondary' OR stage='Tertiary' OR stage='Carbonation' ORDER BY code;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
 				'code' => $row['code'],
 				'name' => $row['name'],
+				'uuid' => $row['uuid'],
 				'stage' => $row['stage']
 			);
 		}
--- a/www/js/mon_fermenter.js	Sat Jan 19 13:58:24 2019 +0100
+++ b/www/js/mon_fermenter.js	Sat Jan 19 17:31:43 2019 +0100
@@ -60,6 +60,7 @@
 		datafields: [
 			{ name: 'code', type: 'string' },
 			{ name: 'name', type: 'string' },
+			{ name: 'uuid', type: 'string' },
 			{ name: 'stage', type: 'string' },
 		],
 		id: 'code',
@@ -71,6 +72,7 @@
 			// Create a dummy beer on top to store in idle fermenters.
 			blank['code'] = "Free";	 // Will override this later.
 			blank['name'] = 'Dummy';
+			blank['uuid'] = '66ecccbf-e942-4a35-af49-8b02314561a5';
 			blank['stage'] = "Ready";
 			data.push(blank);
 			for (var i = 0; i < records.length; i++) {
@@ -119,7 +121,7 @@
 		beforeLoadComplete: function (records) {
 			var data = new Array();
 			var empty = {};
-			// Create a dummy beer on top to store in idle fermenters.
+			// Create a dummy profile on top of the list.
 			empty['record'] = -1;
 			empty['uuid'] = '';
 			empty['name'] = 'Wis profiel';
@@ -256,11 +258,11 @@
 		});
 	}
 
-	function sendProduct(code, name) {
+	function sendProduct(code, name, uuid) {
 
-		console.log("sendProduct("+code+", "+name+")");
+		console.log("sendProduct("+code+", "+name+", "+uuid+")");
 		var data  = 'node='+record.node+'&alias='+record.alias+'&payload=';
-		    data += '{"product":{"code":"'+code+'","name":"'+name+'"}}';
+		    data += '{"product":{"code":"'+code+'","name":"'+name+'","uuid":"'+uuid+'"}}';
 		$.ajax({
 			url: "cmd_fermenter.php",
 			data: data,
@@ -351,6 +353,7 @@
 			$("#info_profile").html(record.profile_name);
 			blank['name'] = record.alias;
 			blank['code'] = record.alias.toUpperCase();
+			blank['uuid'] = record.uuid;
 			if (record.profile_name == "")
 				$("#info_mode").jqxDropDownList('disableItem', "PROFILE");
 			else
@@ -503,7 +506,7 @@
 			skip = true;
 		}
 		if (newProduct) {
-			sendProduct(record.code, record.name);
+			sendProduct(record.beercode, record.beername, record.beeruuid);
 			newProduct = false;
 			skip = true;
 		}
@@ -540,8 +543,9 @@
 		if (event.args) {
 			var index = event.args.index;
 			var datarecord = productlist.records[index];
-			record.code = datarecord.code;
-			record.name = datarecord.name;
+			record.beercode = datarecord.code;
+			record.beername = datarecord.name;
+			record.beeruuid = datarecord.uuid;
 			newProduct = true;
 		}
 	});

mercurial