thermferm/server.c

changeset 564
3fc61dd28656
parent 562
119129969d37
child 566
776a605befa5
--- a/thermferm/server.c	Fri Aug 03 21:58:30 2018 +0200
+++ b/thermferm/server.c	Sat Aug 04 16:29:12 2018 +0200
@@ -36,6 +36,7 @@
 extern int		run_hold;
 extern sys_config       Config;
 extern const char	UNITMODE[5][8];
+extern const char	UNITSTAGE[3][10];
 extern const char	TEMPSTATE[3][8];
 extern const char	DEVTYPE[8][6];
 extern const char	DEVPRESENT[4][6];
@@ -1985,7 +1986,7 @@
 	unit->air_temperature = unit->beer_temperature = unit->chiller_temperature = 20000;
 	unit->beer_set = unit->fridge_set = 20.0;
 	unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->mode = \
-			     unit->light_state = unit->psu_state = unit->prof_state = 0;
+			     unit->light_state = unit->psu_state = unit->prof_state = unit->stage = 0;
 	unit->heater_delay = unit->cooler_delay = unit->fan_delay = 20;	/* 5 minutes delay	*/
 	unit->light_delay = 1;						/* 15 seconds delay	*/
 	unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
@@ -2061,6 +2062,7 @@
 		srv_send((char *)"PRODUCT_NAME,%s", unit->product_name);
 		srv_send((char *)"PRODUCT_CODE,%s", unit->product_code);
 		srv_send((char *)"MODE,%s", UNITMODE[unit->mode]);
+		srv_send((char *)"STAGE,%s", UNITSTAGE[unit->stage]);
 		srv_send((char *)"VOLUME,%2f", unit->volume);
 		srv_send((char *)"AIR_ADDRESS,%s", unit->air_address);
 		srv_send((char *)"AIR_STATE,%s", TEMPSTATE[unit->air_state]);
@@ -2452,6 +2454,18 @@
 				    unit->psu_idx = ival;
 				}
 
+			    } else if (val && (strcmp(kwd, (char *)"STAGE") == 0)) {
+				for (i = 0; i < 3; i++) {
+				    if (strcmp(val, UNITSTAGE[i]) == 0) {
+					if (i != unit->stage) {
+					    syslog(LOG_NOTICE, "Fermenter unit %s stage %s to %s", unit->uuid, UNITSTAGE[unit->stage], UNITSTAGE[i]);
+					    unit->mqtt_flag |= MQTT_FLAG_DATA;
+					}
+					unit->stage = i;
+					break;
+				    }
+				}
+
 			    } else if (val && (strcmp(kwd, (char *)"MODE") == 0)) {
 				for (i = 0; i < 5; i++) {
 				    if (strcmp(val, UNITMODE[i]) == 0) {

mercurial