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.

Wed, 27 Mar 2019 12:50:57 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 27 Mar 2019 12:50:57 +0100
changeset 334
26c6f8e5d58e
parent 333
2987e5bb830d
child 335
4a8704b63376

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.

bmsd/bms.h file | annotate | diff | comparison | revisions
bmsd/mysql.c file | annotate | diff | comparison | revisions
doc/bms-ch3.sgml file | annotate | diff | comparison | revisions
www/js/mon_fermenter.js file | annotate | diff | comparison | revisions
www/mon_fermenter.php file | annotate | diff | comparison | revisions
--- a/bmsd/bms.h	Mon Mar 25 20:47:25 2019 +0100
+++ b/bmsd/bms.h	Wed Mar 27 12:50:57 2019 +0100
@@ -201,6 +201,8 @@
     char			*profile_steps;		///< Profile steps in JSON
     float			yeast_lo;		///< Yeast minimum temperature
     float			yeast_hi;		///< Yeast maximum temperature
+    char			*webcam_url;		///< Webcam url to the stream
+    int				webcam_light;		///< Webcam control lights
 } sys_fermenter_list;
 
 
--- a/bmsd/mysql.c	Mon Mar 25 20:47:25 2019 +0100
+++ b/bmsd/mysql.c	Wed Mar 27 12:50:57 2019 +0100
@@ -207,6 +207,8 @@
 		fermenter->stage         = xstrcpy(row[43]);
 		fermenter->yeast_lo      = atof(row[45]);
 		fermenter->yeast_hi      = atof(row[46]);
+		fermenter->webcam_url    = xstrcpy(row[47]);
+		fermenter->webcam_light  = atoi(row[48]);
 
 		if (fermenters == NULL) {
 		    fermenters = fermenter;
@@ -291,6 +293,8 @@
 	    free(tmpf->profile_state);
 	if (tmpf->profile_steps)
 	    free(tmpf->profile_steps);
+	if (tmpf->webcam_url)
+	    free(tmpf->webcam_url);
 	free(tmpf);
     }
     for (tmpn = nodes; tmpn; tmpn = oldtmpn) {
@@ -421,7 +425,7 @@
 	"mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \
 	"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'",
+	"yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d'",
 	fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N",
 	fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
 	fermenter->beeruuid ? fermenter->beeruuid : "",
@@ -438,7 +442,8 @@
 	fermenter->profile_uuid ? fermenter->profile_uuid : "", fermenter->profile_name ? fermenter->profile_name : "",
         fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent, 
 	fermenter->profile_inittemp_high, fermenter->profile_inittemp_low,
-	fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi);
+	fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi,
+	fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light);
 
 //    printf("%s\n", query);
 
@@ -470,7 +475,7 @@
 	"mode='%s', alarm='%d', setpoint_high='%.3f', setpoint_low='%.3f', " \
 	"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' WHERE uuid='%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->beeruuid ? fermenter->beeruuid : "",
 	fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature,
@@ -486,7 +491,8 @@
 	fermenter->profile_uuid ? fermenter->profile_uuid : "", fermenter->profile_name ? fermenter->profile_name : "",
 	fermenter->profile_state ? fermenter->profile_state : "", fermenter->profile_percent,
 	fermenter->profile_inittemp_high, fermenter->profile_inittemp_low,
-	fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi, fermenter->uuid);
+	fermenter->profile_steps ? fermenter->profile_steps : "", fermenter->stage, fermenter->yeast_lo, fermenter->yeast_hi,
+	fermenter->webcam_url ? fermenter->webcam_url : "", fermenter->webcam_light, fermenter->uuid);
 
 //    printf("%s\n", query);
 
--- a/doc/bms-ch3.sgml	Mon Mar 25 20:47:25 2019 +0100
+++ b/doc/bms-ch3.sgml	Wed Mar 27 12:50:57 2019 +0100
@@ -156,10 +156,6 @@
   "uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a",
   "alias": "unit1",
   "product": {
-    "code": "CB0063",
-    "name": "Schot voor de boeg"
-  },
-  "product": {
     "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9",
     "code": "CB0001",
     "name": "Hoppy Housebeer"
@@ -213,6 +209,10 @@
     "low": 21.0,
     "high": 21.0
   },
+  "webcam": {
+    "url":"https://the.webcamserver.com:8090/?action=stream",
+    "light": 1
+  },
   "alarm": 0,
   "profile": {
     "uuid": "c93ad1bb-0446-4788-9c43-83990c5f8b82",
--- a/www/js/mon_fermenter.js	Mon Mar 25 20:47:25 2019 +0100
+++ b/www/js/mon_fermenter.js	Wed Mar 27 12:50:57 2019 +0100
@@ -334,7 +334,9 @@
 			{ name: 'stage', type: 'string' },
 			{ name: 'beeruuid', type: 'string' },
 			{ name: 'yeast_lo', type: 'float' },
-			{ name: 'yeast_hi', type: 'float' }
+			{ name: 'yeast_hi', type: 'float' },
+			{ name: 'webcam_url', type: 'string' },
+			{ name: 'webcam_light', type: 'int' }
 		],
 		id: 'record',
 		url: url
@@ -467,6 +469,11 @@
 				$("#Profile2").hide();
 				$("#status_profile").html('');
 			}
+			if (record.online && (record.webcam_url != "")) {
+				$("#Camera").show();
+			} else {
+				$("#Camera").hide();
+			}
 
 			yl = record.yeast_lo;
 			yh = record.yeast_hi;
@@ -675,5 +682,10 @@
 		var url="log_fermentation.php?code=" + record.beercode + "&name=" + record.beername;
 		window.open(url);
 	});
+	$("#Camera").jqxButton({ template: "primary", width: '150px', theme: theme });
+	$("#Camera").click(function () {
+		var url=record.webcam_url;
+		window.open(url);
+	});
 	createAbortElements();
 });
--- a/www/mon_fermenter.php	Mon Mar 25 20:47:25 2019 +0100
+++ b/www/mon_fermenter.php	Wed Mar 27 12:50:57 2019 +0100
@@ -81,6 +81,7 @@
 
      <div id="fermenter_panel_buttons">
       <input style="margin-top: 20px; margin-left: 70px;" type="button" id="FLog" value="Vergisting log" />
+      <input style="margin-top: 20px; margin-left: 70px;" type="button" id="Camera" value="Camera" />
      </div> <!-- fermenter_panel_buttons -->
     </div> <!-- End right side -->
    </div>

mercurial