thermferm/thermferm.c

Mon, 09 May 2016 21:35:55 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 09 May 2016 21:35:55 +0200
changeset 500
5aa914eb644e
parent 499
602d9968960f
child 502
0e2c58f8eb78
permissions
-rw-r--r--

Units now have an unique alias name so that the MQTT messages are more friendly.

26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
2 * Copyright (C) 2014-2016
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 * Michiel Broek <mbroek at mbse dot eu>
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * This file is part of the mbsePi-apps
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 * This is free software; you can redistribute it and/or modify it
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * under the terms of the GNU General Public License as published by the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * Free Software Foundation; either version 2, or (at your option) any
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * later version.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 * mbsePi-apps is distributed in the hope that it will be useful, but
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 * General Public License for more details.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
19 * along with ThermFerm; see the file COPYING. If not, write to the Free
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 *****************************************************************************/
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
23 #include "lock.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
24 #include "logger.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
25 #include "rdconfig.h"
160
87bfa951ffc2 Fixed wrong includes
Michiel Broek <mbroek@mbse.eu>
parents: 158
diff changeset
26 #include "devices.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
27 #include "server.h"
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
28 #include "thermferm.h"
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
29 #include "simulator.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
30 #include "lcd-pcf8574.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
31 #include "lcd-buffer.h"
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
32 #include "slcd.h"
198
20716bcff2b0 Added dependencies for panel
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
33 #include "panel.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
34 #include "futil.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
35 #include "xutil.h"
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
36 #include "pid.h"
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
37 #include "mqtt.h"
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
40 int my_shutdown = FALSE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 static pid_t pgrp, mypid;
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
42 int run_pause = FALSE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
43 int run_hold = FALSE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
45 extern int debug;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 extern sys_config Config;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 extern int lcdHandle;
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
48 extern int slcdHandle;
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
49 int setupmenu = MENU_NONE;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
50 units_list *current_unit = NULL; /* In panel editor this points to the current unit. */
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
51 profiles_list *current_profile = NULL;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
52 float temp_temp = 20.0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
53
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
54 #ifndef HAVE_WIRINGPI_H
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
55 pthread_t threads[5];
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
56 #endif
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
57 extern const char UNITMODE[5][8];
195
b34a1b2421fb Reset output when a different profile is selected. Better startup logging about the unit state. Added Beer, Fridge and partial Profile settings from the liveview weeb screen.
Michiel Broek <mbroek@mbse.eu>
parents: 194
diff changeset
58 extern const char PROFSTATE[4][6];
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
59
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
60 extern int sock;
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
61
40
dafbbd5e9922 Prepared unix socket communication
Michiel Broek <mbroek@mbse.eu>
parents: 34
diff changeset
62
484
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
63 unsigned char degC[8] = { 0b01000, 0b10100, 0b01000, 0b00111, 0b01000, 0b01000, 0b01000, 0b00111 }; // [1] degree c sybmol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
64 unsigned char SP_Symbol[8] = { 0b11100, 0b10000, 0b11100, 0b00111, 0b11101, 0b00111, 0b00100, 0b00100 }; // [2] SP Symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
65 unsigned char CoolONOFF[8] = { 0b00000, 0b01110, 0b01000, 0b01000, 0b01000, 0b01000, 0b01110, 0b00000 }; // [3] Cool Symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
66 unsigned char RevCoolONOFF[8] = { 0b11111, 0b10001, 0b10111, 0b10111, 0b10111, 0b10111, 0b10001, 0b11111 }; // [4] Reverse Cool Symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
67 unsigned char HeatONOFF[8] = { 0b00000, 0b01010, 0b01010, 0b01110, 0b01110, 0b01010, 0b01010, 0b00000 }; // [5] HEAT symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
68 unsigned char RevHeatONOFF[8] = { 0b11111, 0b10101, 0b10101, 0b10001, 0b10001, 0b10101, 0b10101, 0b11111 }; // [6] reverse HEAT symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
69
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
70
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
71 int server(void);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 void help(void);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 void die(int);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
74 void stopLCD(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
75 #ifdef HAVE_WIRINGPI_H
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
76 void sendRCswitch(char *, int);
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
77 void stopRCswitch(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
78 #endif
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
79
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
81 #ifdef HAVE_MOSQUITTO_H
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
82
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
83 extern int mqtt_qos;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
84 extern int mqtt_last_mid;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
85 extern int mqtt_last_mid_sent;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
86 extern int mqtt_mid_sent;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
87 extern int mqtt_disconnect_sent;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
88 extern int mqtt_connected;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
89 extern int mqtt_status;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
90 extern int mqtt_use;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
91 extern struct mosquitto *mosq;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
92 extern char *state;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
93
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
94 #endif
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
95
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97 void help(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 {
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
99 fprintf(stdout, "mbsePi-apps thermferm v%s starting\n\n", VERSION);
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
100 fprintf(stdout, "Usage: thermferm [-d] [-h]\n");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101 fprintf(stdout, " -d --debug Debug and run in foreground\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 fprintf(stdout, " -h --help Display this help\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107 void die(int onsig)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 switch (onsig) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 case SIGHUP: syslog(LOG_NOTICE, "Got SIGHUP, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 case SIGINT: syslog(LOG_NOTICE, "Keyboard interrupt, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 case SIGTERM: syslog(LOG_NOTICE, "Got SIGTERM, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 break;
326
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
116 case SIGSEGV: syslog(LOG_NOTICE, "Got SIGSEGV, shutting down");
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
117 my_shutdown = TRUE;
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
118 exit(SIGSEGV);
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
119 break;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 default: syslog(LOG_NOTICE, "die() on signal %d", onsig);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
123 my_shutdown = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
127
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
128 void show_mode(void)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
129 {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
130 char buf[21];
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
131
328
1713dc0cd20f Fixed error
Michiel Broek <mbroek@mbse.eu>
parents: 326
diff changeset
132 snprintf(buf, 20, "Old mode %s", UNITMODE[current_unit->mode]);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
133 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
134 lcdPuts(lcdHandle, buf);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
135 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
136 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
137 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
138 slcdPosition(slcdHandle, 0, 1);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
139 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
140
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
141
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
142
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
143 void go_menu(int menu)
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
144 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
145 char buf[21];
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
146
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
147 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
148 piLock(LOCK_LCD);
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
149 piLock(LOCK_MENU);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
150 lcdClear(lcdHandle);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
151 lcdPosition(lcdHandle, 0, 0);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
152 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
153 slcdClear(slcdHandle);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
154 slcdPosition(slcdHandle, 0, 0);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
155
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
156 syslog(LOG_NOTICE, "from menu %d to menu %d", setupmenu, menu);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
157 setupmenu = menu;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
158
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
159 switch (menu) {
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
160 case MENU_NONE:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
161 lcd_buf_show();
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
162 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
163
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
164 case MENU_TOP_DEFAULT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
165 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
166 lcdPuts(lcdHandle, "Setup mode.");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
167 lcdPosition(lcdHandle, 0, 1);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
168 lcdPuts(lcdHandle, "Up&Down = Escape");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
169 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
170 slcdPuts(slcdHandle, "Setup mode.");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
171 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
172 slcdPuts(slcdHandle, "Up&Down = Escape");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
173 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
174
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
175 case MENU_TOP_UNITS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
176 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
177 lcdPuts(lcdHandle, "Select units");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
178 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
179 slcdPuts(slcdHandle, "Select units");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
180 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
181
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
182 case MENU_UNITS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
183 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
184 lcdPuts(lcdHandle, "Choose unit:");
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
185 lcdPosition(lcdHandle, 0, 1);
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
186 lcdPuts(lcdHandle, current_unit->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
187 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
188 slcdPuts(slcdHandle, "Choose unit:");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
189 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
190 slcdPuts(slcdHandle, current_unit->name);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
191 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
192
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
193 case MENU_MODE_OFF: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
194 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
195 lcdPuts(lcdHandle, "New mode OFF");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
196 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
197 slcdPuts(slcdHandle, "New mode OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
198 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
199
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
200 case MENU_MODE_NONE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
201 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
202 lcdPuts(lcdHandle, "New mode NONE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
203 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
204 slcdPuts(slcdHandle, "New mode NONE");
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
205 break;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
206
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
207 case MENU_NONE_HEAT: snprintf(buf, Config.lcd_cols, "Set heater %s", current_unit->heater_state ? "OFF":"ON");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
208 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
209 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
210 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
211 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
212 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
213
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
214 case MENU_NONE_COOL: snprintf(buf, Config.lcd_cols, "Set cooler %s", current_unit->cooler_state ? "OFF":"ON");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
215 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
216 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
217 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
218 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
219 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
220
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
221 case MENU_NONE_FAN: snprintf(buf, Config.lcd_cols, "Set fan %s", current_unit->fan_state ? "OFF":"ON");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
222 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
223 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
224 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
225 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
226 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
227
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
228 case MENU_MODE_BEER: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
229 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
230 lcdPuts(lcdHandle, "New mode BEER");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
231 #endif
488
bee1f70fb42b Small brewpanel display error fix, did not affect real hardware.
Michiel Broek <mbroek@mbse.eu>
parents: 486
diff changeset
232 slcdPuts(slcdHandle, "New mode BEER");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
233 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
234
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
235 case MENU_BEER_TEMP:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
236 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
237 lcdPuts(lcdHandle, "Set beer temp");
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
238 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
239 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
240 slcdPuts(slcdHandle, "Set beer temp");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
241 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
242
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
243 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
244 #ifdef HAVE_WIRINGPI_H
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
245 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
246 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
247 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
248 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
249
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
250 case MENU_MODE_FRIDGE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
251 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
252 lcdPuts(lcdHandle, "New mode FRIDGE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
253 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
254 slcdPuts(slcdHandle, "New mode FRIDGE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
255 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
256
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
257 case MENU_FRIDGE_TEMP:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
258 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
259 lcdPuts(lcdHandle, "Set fridge temp");
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
260 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
261 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
262 slcdPuts(slcdHandle, "Set fridge temp");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
263 slcdPosition(slcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
264 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
265 #ifdef HAVE_WIRINGPI_H
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
266 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
267 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
268 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
269 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
270
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
271 case MENU_MODE_PROFILE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
272 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
273 lcdPuts(lcdHandle, "New mode PROFILE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
274 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
275 slcdPuts(slcdHandle, "New mode PROFILE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
276 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
277
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
278 case MENU_PROFILE_SELECT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
279 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
280 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
281 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
282 lcdPuts(lcdHandle, "Select profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
283 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
284 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
285 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
286 slcdPuts(slcdHandle, "Select profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
287 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
288
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
289 case MENU_PROFILE_START: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
290 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
291 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
292 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
293 lcdPuts(lcdHandle, "Start profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
294 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
295 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
296 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
297 slcdPuts(slcdHandle, "Start profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
298 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
299
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
300 case MENU_PROFILE_PAUSE: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
301 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
302 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
303 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
304 lcdPuts(lcdHandle, "Pause profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
305 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
306 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
307 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
308 slcdPuts(slcdHandle, "Pause profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
309 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
310
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
311 case MENU_PROFILE_ABORT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
312 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
313 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
314 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
315 lcdPuts(lcdHandle, "Abort profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
316 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
317 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
318 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
319 slcdPuts(slcdHandle, "Abort profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
320 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
321
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
322 case MENU_PROFILE_RESUME: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
323 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
324 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
325 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
326 lcdPuts(lcdHandle, "Resume profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
327 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
328 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
329 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
330 slcdPuts(slcdHandle, "Resume profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
331 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
332
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
333 case MENU_PROFILE_GOOFF: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
334 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
335 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
336 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
337 lcdPuts(lcdHandle, "Set profile OFF");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
338 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
339 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
340 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
341 slcdPuts(slcdHandle, "Set profile OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
342 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
343
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
344 case MENU_TOP_SYS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
345 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
346 lcdPuts(lcdHandle, "System menu");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
347 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
348 slcdPuts(slcdHandle, "System menu");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
349 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
350
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
351 case MENU_SYS_HALT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
352 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
353 lcdPuts(lcdHandle, "Halt system");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
354 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
355 slcdPuts(slcdHandle, "Halt system");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
356 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
357
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
358 case MENU_SYS_REBOOT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
359 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
360 lcdPuts(lcdHandle, "Reboot system");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
361 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
362 slcdPuts(slcdHandle, "Reboot system");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
363 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
364 }
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
365
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
366 #ifdef HAVE_WIRINGPI_H
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
367 piUnlock(LOCK_MENU);
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
368 piUnlock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
369 #endif
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
370 }
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
371
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
372
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
373
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
374 void stopLCD(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
375 {
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
376 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
377 piLock(LOCK_LCD);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
378 lcdClear(lcdHandle);
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
379 #endif
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
380 slcdClear(slcdHandle);
426
e54611453d29 Moved global bit defines to config.h
Michiel Broek <mbroek@mbse.eu>
parents: 423
diff changeset
381 setBacklight(0);
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
382 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
383 piUnlock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
384 #endif
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
385 }
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
386
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
387
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
388
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
389 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
390 * Change mode of current_unit
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
391 */
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
392 void change_mode(int mode)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
393 {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
394 if ((current_unit->mode == UNITMODE_OFF) && (mode != UNITMODE_OFF))
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
395 initlog(current_unit->name);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
396 syslog(LOG_NOTICE, "Mode from %s to %s via panel interface", UNITMODE[current_unit->mode], UNITMODE[mode]);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
397 current_unit->mode = mode;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
398 current_unit->mqtt_flag |= (MQTT_FLAG_SP | MQTT_FLAG_MODE);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
399 /* Allways turn everything off after a mode change */
367
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
400 current_unit->PID_cool->OutP = current_unit->PID_heat->OutP = 0.0;
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
401 current_unit->PID_cool->Mode = current_unit->PID_heat->Mode = PID_MODE_NONE;
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
402 current_unit->heater_state = current_unit->cooler_state = current_unit->fan_state = current_unit->light_state = 0;
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
403 current_unit->heater_wait = current_unit->cooler_wait = current_unit->fan_wait = current_unit->light_wait = 0;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
404 device_out(current_unit->heater_address, current_unit->heater_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
405 device_out(current_unit->cooler_address, current_unit->cooler_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
406 device_out(current_unit->fan_address, current_unit->fan_state);
367
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
407 device_out(current_unit->light_address, current_unit->light_state);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
408 if (current_unit->mode == UNITMODE_PROFILE) {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
409 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
410 * Set a sane default until it will be overruled by the
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
411 * main processing loop.
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
412 */
406
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
413 current_unit->prof_target_lo = 19.8;
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
414 current_unit->prof_target_hi = 20.2;
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
415 current_unit->prof_fridge_mode = 0;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
416 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
417 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
418
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
419
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
420
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
421 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
422 * Handle panel key events
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
423 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
424 void panel_key_events(int key)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
425 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
426 units_list *unit;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
427 profiles_list *profile;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
428 int rc;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
429
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
430 switch (setupmenu) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
431 case MENU_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
432 if ((key == KEY_DOWN) || (key == KEY_UP))
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
433 lcd_buf_step(key);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
434 if ((key == KEY_CONFIRM) && (setupmenu == MENU_NONE))
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
435 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
436 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
437
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
438 case MENU_TOP_DEFAULT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
439 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
440 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
441 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
442 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
443 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
444 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
445 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
446
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
447 case MENU_TOP_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
448 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
449 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
450 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
451 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
452 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
453 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
454 if ((key == KEY_ENTER) && Config.units) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
455 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
456 * Start with the first unit
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
457 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
458 current_unit = Config.units;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
459 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
460 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
461 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
462
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
463 case MENU_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
464 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
465 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
466 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
467 if (current_unit->next) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
468 current_unit = current_unit->next;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
469 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
470 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
471 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
472 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
473 for (unit = Config.units; unit; unit = unit->next) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
474 if (unit->next && (unit->next == current_unit)) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
475 current_unit = unit;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
476 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
477 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
478 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
479 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
480 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
481 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
482 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
483 * Drop into the current mode
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
484 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
485 switch (current_unit->mode) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
486 case UNITMODE_OFF: go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
487 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
488 case UNITMODE_NONE: go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
489 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
490 case UNITMODE_FRIDGE: go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
491 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
492 case UNITMODE_BEER: go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
493 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
494 case UNITMODE_PROFILE: go_menu(MENU_MODE_PROFILE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
495 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
496 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
497 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
498 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
499
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
500 case MENU_MODE_OFF:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
501 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
502 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
503 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
504 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
505 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
506 go_menu(MENU_MODE_PROFILE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
507 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
508 change_mode(UNITMODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
509 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
510 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
511 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
512
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
513 case MENU_MODE_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
514 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
515 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
516 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
517 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
518 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
519 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
520 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
521 if (current_unit->mode == UNITMODE_NONE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
522 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
523 else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
524 change_mode(UNITMODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
525 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
526 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
527 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
528 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
529
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
530 case MENU_NONE_HEAT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
531 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
532 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
533 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
534 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
535 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
536 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
537 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
538 if (current_unit->heater_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
539 current_unit->heater_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
540 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
541 current_unit->heater_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
542 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
543 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
544 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
545
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
546 case MENU_NONE_COOL:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
547 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
548 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
549 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
550 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
551 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
552 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
553 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
554 if (current_unit->cooler_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
555 current_unit->cooler_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
556 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
557 current_unit->cooler_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
558 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
559 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
560 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
561
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
562 case MENU_NONE_FAN:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
563 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
564 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
565 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
566 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
567 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
568 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
569 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
570 if (current_unit->fan_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
571 current_unit->fan_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
572 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
573 current_unit->fan_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
574 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
575 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
576 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
577
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
578 case MENU_MODE_FRIDGE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
579 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
580 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
581 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
582 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
583 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
584 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
585 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
586 if (current_unit->mode == UNITMODE_FRIDGE) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
587 temp_temp = current_unit->fridge_set;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
588 go_menu(MENU_FRIDGE_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
589 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
590 change_mode(UNITMODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
591 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
592 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
593 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
594 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
595
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
596 case MENU_FRIDGE_TEMP:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
597 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
598 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
599 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
600 if (temp_temp > current_unit->temp_set_min)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
601 temp_temp -= 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
602 go_menu(MENU_FRIDGE_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
603 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
604 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
605 if (temp_temp < current_unit->temp_set_max)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
606 temp_temp += 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
607 go_menu(MENU_FRIDGE_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
608 }
302
3d2bd47f35b4 Use confirm instead of enter key when stepping to a new beer or fridge temperature
Michiel Broek <mbroek@mbse.eu>
parents: 297
diff changeset
609 if (key == KEY_CONFIRM) {
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
610 if (temp_temp != current_unit->fridge_set) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
611 syslog(LOG_NOTICE, "Fridge temperature changed from %.1f to %.1f degrees from the panel", current_unit->fridge_set, temp_temp);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
612 current_unit->fridge_set = temp_temp;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
613 current_unit->mqtt_flag |= MQTT_FLAG_SP;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
614 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
615 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
616 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
617 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
618
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
619 case MENU_MODE_BEER:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
620 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
621 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
622 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
623 go_menu(MENU_MODE_PROFILE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
624 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
625 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
626 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
627 if (current_unit->mode == UNITMODE_BEER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
628 temp_temp = current_unit->beer_set;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
629 go_menu(MENU_BEER_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
630 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
631 change_mode(UNITMODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
632 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
633 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
634 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
635 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
636
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
637 case MENU_BEER_TEMP:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
638 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
639 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
640 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
641 if (temp_temp > current_unit->temp_set_min)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
642 temp_temp -= 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
643 go_menu(MENU_BEER_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
644 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
645 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
646 if (temp_temp < current_unit->temp_set_max)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
647 temp_temp += 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
648 go_menu(MENU_BEER_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
649 }
302
3d2bd47f35b4 Use confirm instead of enter key when stepping to a new beer or fridge temperature
Michiel Broek <mbroek@mbse.eu>
parents: 297
diff changeset
650 if (key == KEY_CONFIRM) {
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
651 if (temp_temp != current_unit->beer_set) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
652 syslog(LOG_NOTICE, "Beer temperature changed from %.1f to %.1f degrees from the panel", current_unit->beer_set, temp_temp);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
653 current_unit->beer_set = temp_temp;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
654 current_unit->mqtt_flag |= MQTT_FLAG_SP;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
655 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
656 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
657 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
658 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
659
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
660 case MENU_MODE_PROFILE:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
661 if (current_unit->profile) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
662 for (current_profile = Config.profiles; current_profile; current_profile = current_profile->next) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
663 if (strcmp(current_profile->uuid, current_unit->profile) == 0)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
664 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
665 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
666 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
667 current_profile = NULL;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
668 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
669 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
670 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
671 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
672 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
673 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
674 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
675 if (key == KEY_ENTER) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
676 if (current_unit->mode == UNITMODE_PROFILE) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
677 switch (current_unit->prof_state) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
678 case PROFILE_OFF: if (current_unit->profile)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
679 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
680 else
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
681 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
682 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
683 case PROFILE_PAUSE: go_menu(MENU_PROFILE_RESUME);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
684 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
685 case PROFILE_RUN: go_menu(MENU_PROFILE_PAUSE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
686 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
687 case PROFILE_DONE: go_menu(MENU_PROFILE_GOOFF);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
688 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
689 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
690 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
691 change_mode(UNITMODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
692 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
693 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
694 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
695 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
696
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
697 case MENU_PROFILE_SELECT:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
698 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
699 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
700 if (key == KEY_DOWN) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
701 if (current_profile->next) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
702 current_profile = current_profile->next;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
703 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
704 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
705 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
706 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
707 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
708 if (key == KEY_UP) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
709 for (profile = Config.profiles; profile; profile = profile->next) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
710 if (profile->next && profile->next == current_profile) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
711 current_profile = profile;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
712 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
713 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
714 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
715 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
716 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
717 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
718 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
719 current_unit->profile = current_profile->uuid;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
720 syslog(LOG_NOTICE, "Profile %s selected from panel", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
721 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
722 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
723 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
724
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
725 case MENU_PROFILE_START:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
726 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
727 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
728 if ((key == KEY_DOWN) || (key == KEY_UP))
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
729 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
730 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
731 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
732 current_unit->prof_started = time(NULL);
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
733 current_unit->prof_paused = current_unit->prof_primary_done = 0;
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
734 current_unit->prof_peak_abs = current_unit->prof_peak_rel = 0.0;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
735 syslog(LOG_NOTICE, "Profile started from the panel");
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
736 current_unit->mqtt_flag |= (MQTT_FLAG_SP | MQTT_FLAG_PROFILE | MQTT_FLAG_PERCENT);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
737 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
738 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
739 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
740
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
741 case MENU_PROFILE_PAUSE:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
742 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
743 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
744 if ((key == KEY_DOWN) || (key == KEY_UP))
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
745 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
746 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
747 current_unit->prof_state = PROFILE_PAUSE;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
748 current_unit->mqtt_flag |= (MQTT_FLAG_SP | MQTT_FLAG_PROFILE | MQTT_FLAG_PERCENT);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
749 syslog(LOG_NOTICE, "Profile pause from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
750 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
751 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
752 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
753
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
754 case MENU_PROFILE_ABORT:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
755 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
756 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
757 if ((key == KEY_DOWN) || (key == KEY_UP)) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
758 if (current_unit->prof_state == PROFILE_PAUSE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
759 go_menu(MENU_PROFILE_RESUME);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
760 else if (current_unit->prof_state == PROFILE_RUN)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
761 go_menu(MENU_PROFILE_PAUSE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
762 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
763 if ((key == KEY_ENTER) && ((current_unit->prof_state == PROFILE_RUN) || (current_unit->prof_state == PROFILE_PAUSE))) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
764 current_unit->prof_state = PROFILE_OFF;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
765 current_unit->prof_started = 0;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
766 syslog(LOG_NOTICE, "Profile aborted from the panel");
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
767 current_unit->mqtt_flag |= (MQTT_FLAG_SP | MQTT_FLAG_PROFILE | MQTT_FLAG_PERCENT);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
768 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
769 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
770 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
771
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
772 case MENU_PROFILE_RESUME:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
773 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
774 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
775 if ((key == KEY_DOWN) || (key == KEY_UP))
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
776 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
777 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
778 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
779 syslog(LOG_NOTICE, "Profile resume from the panel");
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
780 current_unit->mqtt_flag |= (MQTT_FLAG_SP | MQTT_FLAG_PROFILE | MQTT_FLAG_PERCENT);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
781 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
782 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
783 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
784
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
785 case MENU_PROFILE_GOOFF:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
786 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
787 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
788 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
789 if (current_unit->prof_state == PROFILE_DONE) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
790 current_unit->prof_state = PROFILE_OFF;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
791 current_unit->mqtt_flag |= (MQTT_FLAG_SP | MQTT_FLAG_PROFILE | MQTT_FLAG_PERCENT);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
792 syslog(LOG_NOTICE, "Profile from done to off from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
793 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
794 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
795 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
796
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
797 case MENU_TOP_SYS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
798 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
799 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
800 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
801 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
802 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
803 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
804 if (key == KEY_ENTER)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
805 go_menu(MENU_SYS_HALT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
806 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
807
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
808 case MENU_SYS_HALT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
809 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
810 go_menu(MENU_TOP_SYS);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
811 if ((key == KEY_DOWN) || (key == KEY_UP))
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
812 go_menu(MENU_SYS_REBOOT);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
813 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
814 rc = system("/sbin/halt");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
815 syslog(LOG_NOTICE, "System halt from panel: /sbin/halt rc=%d", rc);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
816 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
817 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
818 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
819
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
820 case MENU_SYS_REBOOT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
821 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
822 go_menu(MENU_TOP_SYS);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
823 if ((key == KEY_DOWN) || (key == KEY_UP))
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
824 go_menu(MENU_SYS_HALT);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
825 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
826 rc = system("/sbin/reboot");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
827 syslog(LOG_NOTICE, "System reboot from panel: /sbin/reboot rc=%d", rc);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
828 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
829 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
830 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
831 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
832 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
833
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
834
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
835
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
836 int main(int argc, char *argv[])
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
837 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
838 int rc, c, i;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
839 pid_t frk;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
840
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
841 while (1) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
842 int option_index = 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
843 static struct option long_options[] = {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
844 {"debug", 0, 0, 'c'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
845 {"help", 0, 0, 'h'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
846 {0, 0, 0, 0}
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
847 };
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
848
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
849 c = getopt_long(argc, argv, "dh", long_options, &option_index);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
850 if (c == -1)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
851 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
852
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
853 switch (c) {
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
854 case 'd': debug = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
855 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
856 case 'h': help();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
857 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
858 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
859 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
860
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
861 openlog("thermferm", LOG_PID|LOG_CONS|LOG_NOWAIT, LOG_USER);
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
862 syslog(LOG_NOTICE, "mbsePi-apps thermferm v%s starting", VERSION);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
863 if (debug)
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
864 fprintf(stdout, "mbsePi-apps thermferm v%s starting\n", VERSION);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
865
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
866 if (rdconfig()) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
867 fprintf(stderr, "Error reading configuration\n");
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
868 syslog(LOG_NOTICE, "Error reading configuration: halted");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
869 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
870 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
871
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
872 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
873 * Catch all the signals we can, and ignore the rest. Note that SIGKILL can't be ignored
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
874 * but that's live. This daemon should only be stopped by SIGTERM.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
875 * Don't catch SIGCHLD.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
876 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
877 for (i = 0; i < NSIG; i++) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
878 if ((i != SIGCHLD) && (i != SIGKILL) && (i != SIGSTOP))
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
879 signal(i, (void (*))die);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
880 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
881
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
882 #ifdef HAVE_WIRINGPI_H
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
883 if (wiringPiSetup () )
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
884 return 1;
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
885 #endif
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
886
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
887 if ((rc = initLCD (Config.lcd_cols, Config.lcd_rows))) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
888 fprintf(stderr, "Cannot initialize LCD display, rc=%d\n", rc);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
889 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
890 }
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
891
484
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
892 #ifdef HAVE_WIRINGPI_H
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
893 lcdCharDef(lcdHandle, 1, degC);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
894 lcdCharDef(lcdHandle, 2, SP_Symbol);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
895 lcdCharDef(lcdHandle, 3, CoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
896 lcdCharDef(lcdHandle, 4, RevCoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
897 lcdCharDef(lcdHandle, 5, HeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
898 lcdCharDef(lcdHandle, 6, RevHeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
899 #endif
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
900 slcdCharDef(slcdHandle, 1, degC);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
901 slcdCharDef(slcdHandle, 2, SP_Symbol);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
902 slcdCharDef(slcdHandle, 3, CoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
903 slcdCharDef(slcdHandle, 4, RevCoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
904 slcdCharDef(slcdHandle, 5, HeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
905 slcdCharDef(slcdHandle, 6, RevHeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
906
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
907 if (debug) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
908 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
909 * For debugging run in foreground.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
910 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
911 rc = server();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
912 } else {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
913 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
914 * Server initialization is complete. Now we can fork the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
915 * daemon and return to the user. We need to do a setpgrp
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
916 * so that the daemon will no longer be assosiated with the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
917 * users control terminal. This is done before the fork, so
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
918 * that the child will not be a process group leader. Otherwise,
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
919 * if the child were to open a terminal, it would become
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
920 * associated with that terminal as its control terminal.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
921 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
922 if ((pgrp = setpgid(0, 0)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
923 syslog(LOG_NOTICE, "setpgpid failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
924 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
925
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
926 frk = fork();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
927 switch (frk) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
928 case -1:
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
929 syslog(LOG_NOTICE, "Daemon fork failed: %s", strerror(errno));
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
930 stopLCD();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
931 exit(1);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
932 case 0: /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
933 * Run the daemon
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
934 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
935 fclose(stdin);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
936 if (open("/dev/null", O_RDONLY) != 0) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
937 syslog(LOG_NOTICE, "Reopen of stdin to /dev/null failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
938 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
939 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
940 fclose(stdout);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
941 if (open("/dev/null", O_WRONLY | O_APPEND | O_CREAT,0600) != 1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
942 syslog(LOG_NOTICE, "Reopen of stdout to /dev/null failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
943 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
944 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
945 fclose(stderr);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
946 if (open("/dev/null", O_WRONLY | O_APPEND | O_CREAT,0600) != 2) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
947 syslog(LOG_NOTICE, "Reopen of stderr to /dev/null failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
948 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
949 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
950 mypid = getpid();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
951 rc = server();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
952 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
953 /* Not reached */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
954 default:
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
955 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
956 * Here we detach this process and let the child
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
957 * run the deamon process.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
958 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
959 syslog(LOG_NOTICE, "Starting daemon with pid %d", frk);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
960 exit(0);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
961 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
962 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
963
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
964 syslog(LOG_NOTICE, "Finished, rc=%d", rc);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
965 return rc;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
966 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
967
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
968
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
969
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
970 int server(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
971 {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
972 char buf[1024], *filename, target_lo[40], target_hi[40], heater[40], cooler[40], fan[40], door[40];
355
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
973 char use_heater[40], use_cooler[40], use_fan[40], room_temp[40];
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
974 time_t now, last = (time_t)0;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
975 units_list *unit;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
976 profiles_list *profile;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
977 prof_step *step;
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
978 int row, rc, run = 1, seconds = 0, minutes = 0, temp, deviation;
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
979 int run_seconds, run_minutes, run_hours, tot_minutes, key;
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
980 struct tm *tm;
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
981 #ifndef HAVE_WIRINGPI_H
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
982 long t = 0;
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
983 #endif
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
984 int current_step, valid_step, time_until_now, previous_fridge_mode;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
985 float previous_target_lo, previous_target_hi;
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
986 float LCDair, LCDbeer, LCDspL, LCDspH;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
987 unsigned char LCDstatC, LCDstatH;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
988 int LCDunit;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
989
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
990 if (lockprog((char *)"thermferm")) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
991 syslog(LOG_NOTICE, "Can't lock");
34
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
992 return 1;
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
993 }
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
994
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
995 mqtt_connect();
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
996
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
997 if ((rc = devices_detect())) {
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
998 syslog(LOG_NOTICE, "Detected %d new devices", rc);
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
999 wrconfig();
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1000 }
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1001
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
1002 #ifdef HAVE_WIRINGPI_H
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1003 rc = piThreadCreate(my_devices_loop);
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1004 #else
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1005 rc = pthread_create(&threads[t], NULL, my_devices_loop, (void *)t );
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1006 #endif
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1007 if (rc) {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1008 fprintf(stderr, "my_devices_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1009 syslog(LOG_NOTICE, "my_devices_loop thread didn't start rc=%d", rc);
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1010 #ifndef HAVE_WIRINGPI_H
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1011 } else {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1012 t++;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1013 #endif
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1014 }
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1015
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1016 #ifdef HAVE_WIRINGPI_H
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1017 rc = piThreadCreate(my_server_loop);
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
1018 #else
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1019 rc = pthread_create(&threads[t], NULL, my_server_loop, (void *)t );
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
1020 #endif
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1021 if (rc) {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1022 fprintf(stderr, "my_server_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1023 syslog(LOG_NOTICE, "my_server_loop thread didn't start rc=%d", rc);
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1024 #ifndef HAVE_WIRINGPI_H
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1025 } else {
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1026 t++;
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1027 #endif
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1028 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1029
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
1030 #ifdef HAVE_WIRINGPI_H
423
02653162b03b Fixed compiling for systems with wiringPi. Improved handling of udp sockets if there is no brewpanel running.
Michiel Broek <mbroek@mbse.eu>
parents: 422
diff changeset
1031 rc = piThreadCreate(my_panel_loop);
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1032 #else
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1033 rc = pthread_create(&threads[t], NULL, my_panel_loop, (void *)t );
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1034 #endif
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1035 if (rc) {
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
1036 fprintf(stderr, "my_panel_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1037 syslog(LOG_NOTICE, "my_panel_loop thread didn't start rc=%d", rc);
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1038 #ifndef HAVE_WIRINGPI_H
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1039 } else {
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1040 t++;
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
1041 #endif
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1042 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1043
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1044 #ifdef USE_SIMULATOR
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1045 #ifdef HAVE_WIRINGPI_H
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1046 rc = piThreadCreate(my_simulator_loop);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1047 #else
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1048 rc = pthread_create(&threads[t], NULL, my_simulator_loop, (void *)t );
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1049 #endif
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1050 if (rc) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1051 fprintf(stderr, "my_simulator_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1052 syslog(LOG_NOTICE, "my_simulator_loop thread didn't start rc=%d", rc);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1053 #ifndef HAVE_WIRINGPI_H
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1054 } else {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1055 t++;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1056 #endif
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1057 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1058 #endif
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 248
diff changeset
1059
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1060
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1061 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1062 * Initialize units for processing
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1063 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1064 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1065 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1066 * Safety, turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1067 */
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1068 unit->mqtt_flag = MQTT_FLAG_MODE;
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1069 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->light_state = 0;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1070 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1071 mqtt_publish_int(unit->alias, (char *)"state", (unit->mode != UNITMODE_OFF) ? 1 : 0);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1072 if (unit->name)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1073 mqtt_publish_str(unit->alias, (char *)"name", unit->name);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1074 if (unit->heater_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1075 mqtt_publish_int(unit->alias, (char *)"heater", 0);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1076 if (unit->cooler_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1077 mqtt_publish_int(unit->alias, (char *)"cooler", 0);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1078 if (unit->fan_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1079 mqtt_publish_int(unit->alias, (char *)"fan", 0);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1080 if (unit->air_address)
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1081 unit->mqtt_flag |= MQTT_FLAG_AIR;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1082 if (unit->beer_address)
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1083 unit->mqtt_flag |= MQTT_FLAG_BEER;
195
b34a1b2421fb Reset output when a different profile is selected. Better startup logging about the unit state. Added Beer, Fridge and partial Profile settings from the liveview weeb screen.
Michiel Broek <mbroek@mbse.eu>
parents: 194
diff changeset
1084 if (unit->mode == UNITMODE_PROFILE) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1085 if (!unit->profile)
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1086 syslog(LOG_NOTICE, "Starting unit `%s' in profile mode, no profile defined.", unit->name);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1087 else {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1088 syslog(LOG_NOTICE, "Starting unit `%s' in profile state %s.", unit->name, PROFSTATE[unit->prof_state]);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1089 unit->mqtt_flag |= MQTT_FLAG_SP;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1090 unit->mqtt_flag |= MQTT_FLAG_PROFILE;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1091 }
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1092 } else if (unit->mode == UNITMODE_BEER) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1093 syslog(LOG_NOTICE, "Starting unit `%s' beer cooler at %.1f degrees", unit->name, unit->beer_set);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1094 unit->mqtt_flag |= MQTT_FLAG_SP;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1095 } else if (unit->mode == UNITMODE_FRIDGE) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1096 syslog(LOG_NOTICE, "Starting unit `%s' as refridgerator at %.1f degrees", unit->name, unit->fridge_set);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1097 unit->mqtt_flag |= MQTT_FLAG_SP;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1098 } else if (unit->mode == UNITMODE_NONE) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1099 syslog(LOG_NOTICE, "Starting unit `%s' in inactive state", unit->name);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1100 } else {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1101 syslog(LOG_NOTICE, "Starting unit `%s' in off state", unit->name);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1102 }
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1103
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1104 /*
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1105 * Initialize logfile
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1106 */
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1107 if (unit->mode != UNITMODE_OFF) {
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1108 initlog(unit->name);
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1109 }
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1110 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1111
111
bdf3c5278a24 Added missing conditional
Michiel Broek <mbroek@mbse.eu>
parents: 108
diff changeset
1112 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1113 piLock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1114 #endif
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
1115 lcd_buf_write(1, (char *)" ThermFerm ");
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1116 lcd_buf_write(2, (char *)" Version %s ", VERSION);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1117 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1118 piUnlock(LOCK_LCD);
111
bdf3c5278a24 Added missing conditional
Michiel Broek <mbroek@mbse.eu>
parents: 108
diff changeset
1119 #endif
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1120
33
2357e8636a60 Added user log with temperatures and cooler state
Michiel Broek <mbroek@mbse.eu>
parents: 29
diff changeset
1121
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1122 do {
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
1123 if (my_shutdown)
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
1124 run = 0;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1125
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1126 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1127 * Use to stop processing units. Should be used when a unit is
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1128 * added or removed.
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1129 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1130 if (run_pause) {
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1131 run_hold = TRUE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1132 syslog(LOG_NOTICE, "run_pause: entering hold state");
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1133 for (;;) {
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1134 usleep(100000);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1135 if (! run_pause)
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1136 break;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1137 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1138 syslog(LOG_NOTICE, "run_pause: leaving hold state");
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1139 run_hold = FALSE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1140 #ifdef HAVE_WIRINGPI_H
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1141 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1142 * In case the LCD buffers were cleared, setup the first page.
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1143 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1144 piLock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1145 #endif
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1146 lcd_buf_write(1, (char *)" ThermFerm ");
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1147 lcd_buf_write(2, (char *)" Version %s ", VERSION);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1148 #ifdef HAVE_WIRINGPI_H
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1149 piUnlock(LOCK_LCD);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1150 #endif
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1151 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1152
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1153 now = time(NULL);
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1154 if (now != last) {
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1155 /*
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1156 * Each second
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1157 */
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1158 last = now;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1159 seconds++;
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1160
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1161 row = 3;
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1162 tm = localtime(&now);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1163 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1164 piLock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1165 #endif
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1166 lcd_buf_write(row++, " %02d-%02d-%04d ", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900);
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1167 lcd_buf_write(row++, " %02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1168 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1169 piUnlock(LOCK_LCD);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1170 #endif
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1171
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1172 #ifdef HAVE_WIRINGPI_H
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1173 piLock(LOCK_LCD);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1174 #endif
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1175 lcd_buf_write(row, "Room temp N/A ");
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1176 #ifdef HAVE_WIRINGPI_H
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1177 piUnlock(LOCK_LCD);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1178 #endif
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1179 if (Config.temp_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1180 rc = device_in(Config.temp_address, &temp);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1181 if (rc == DEVPRESENT_YES) {
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1182 if (Config.temp_value != temp)
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1183 mqtt_publish_float((char *)"room", (char *)"temperature", temp / 1000.0, 1);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1184 Config.temp_value = temp;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1185 Config.temp_state = 0;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1186 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1187 piLock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1188 #endif
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1189 lcd_buf_write(row, "Room temp %.1f%c ", Config.temp_value / 1000.0, 0x01);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1190 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1191 piUnlock(LOCK_LCD);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1192 #endif
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1193 } else if (rc == DEVPRESENT_ERROR) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1194 Config.temp_state = 1;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1195 } else {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1196 Config.temp_state = 2;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1197 }
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1198 }
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1199 row++;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1200
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1201 #ifdef HAVE_WIRINGPI_H
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1202 piLock(LOCK_LCD);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1203 #endif
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1204 lcd_buf_write(row, " Humidity N/A ");
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1205 #ifdef HAVE_WIRINGPI_H
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1206 piUnlock(LOCK_LCD);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1207 #endif
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1208
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1209 if (Config.hum_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1210 rc = device_in(Config.hum_address, &temp);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1211 if (rc == DEVPRESENT_YES) {
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1212 if (Config.hum_value != temp)
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1213 mqtt_publish_float((char *)"room", (char *)"humidity", temp / 1000.0, 1);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1214 Config.hum_value = temp;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1215 Config.hum_state = 0;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1216 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1217 piLock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1218 #endif
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1219 lcd_buf_write(row, " Humidity %.1f%% ", Config.hum_value / 1000.0);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1220 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1221 piUnlock(LOCK_LCD);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1222 #endif
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1223 } else if (rc == DEVPRESENT_ERROR) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1224 Config.hum_state = 1;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1225 } else {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1226 Config.hum_state = 2;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1227 }
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1228 }
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1229 row++;
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1230
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1231 LCDunit = 0;
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1232 for (unit = Config.units; unit; unit = unit->next) {
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1233 LCDunit++;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1234 if (unit->air_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1235 rc = device_in(unit->air_address, &temp);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1236 if (rc == DEVPRESENT_YES) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1237 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1238 * It is possible to have read errors or extreme values.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1239 * This can happen with bad connections so we compare the
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1240 * value with the previous one. If the difference is too
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1241 * much, we don't send that value. That also means that if
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1242 * the next value is ok again, it will be marked invalid too.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1243 * Maximum error is 40 degrees for now.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1244 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1245 deviation = 40000;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1246 if ((unit->air_temperature == 0) ||
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1247 (unit->air_temperature && (temp > (int)unit->air_temperature - deviation) && (temp < ((int)unit->air_temperature + deviation)))) {
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1248 if (unit->air_temperature != temp)
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1249 unit->mqtt_flag |= MQTT_FLAG_AIR;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1250 unit->air_temperature = temp;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1251 unit->air_state = 0;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1252 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1253 syslog(LOG_NOTICE, "deviation error deviation=%d, old=%d new=%d", deviation, unit->air_temperature, temp);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1254 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1255 } else if (rc == DEVPRESENT_ERROR) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1256 unit->air_state = 1;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1257 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1258 unit->air_state = 2;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1259 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1260 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1261
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1262 if (unit->beer_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1263 rc = device_in(unit->beer_address, &temp);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1264 if (rc == DEVPRESENT_YES) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1265 deviation = 40000;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1266 if ((unit->beer_temperature == 0) ||
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1267 (unit->beer_temperature && (temp > (int)unit->beer_temperature - deviation) && (temp < ((int)unit->beer_temperature + deviation)))) {
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1268 if (unit->beer_temperature != temp)
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1269 unit->mqtt_flag |= MQTT_FLAG_BEER;
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1270 unit->beer_temperature = temp;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1271 unit->beer_state = 0;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1272 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1273 syslog(LOG_NOTICE, "deviation error deviation=%d, old=%d new=%d", deviation, unit->beer_temperature, temp);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1274 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1275 } else if (rc == DEVPRESENT_ERROR) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1276 unit->beer_state = 1;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1277 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1278 unit->beer_state = 2;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1279 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1280 }
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1281
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1282 /*
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1283 * Unit door state, default is closed.
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1284 */
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1285 unit->door_state = 1;
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1286 if (unit->door_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1287 rc = device_in(unit->door_address, &temp);
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1288 if (rc == DEVPRESENT_YES) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1289 if (temp) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1290 if (unit->door_state == 0) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1291 syslog(LOG_NOTICE, "Unit `%s' door closed", unit->name);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1292 unit->door_state = 1;
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1293 mqtt_publish_str(unit->alias, (char *)"door", (char *)"closed");
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1294 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1295 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1296 if (unit->door_state) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1297 syslog(LOG_NOTICE, "Unit `%s' door opened", unit->name);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1298 unit->door_state = 0;
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1299 mqtt_publish_str(unit->alias, (char *)"door", (char *)"open");
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1300 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1301 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1302 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1303 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1304
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1305 /*
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1306 * Unit PSU state, default power is ok
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1307 */
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1308 unit->psu_state = 1;
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1309 if (unit->psu_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1310 rc = device_in(unit->psu_address, &temp);
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1311 if (rc == DEVPRESENT_YES) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1312 if (temp) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1313 if (unit->psu_state == 0) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1314 syslog(LOG_NOTICE, "Unit `%s' PSU (12 volt) is on", unit->name);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1315 unit->psu_state = 1;
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1316 mqtt_publish_str(unit->alias, (char *)"12volt", (char *)"on");
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1317 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1318 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1319 if (unit->psu_state) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1320 syslog(LOG_NOTICE, "Unit `%s' PSU (12 volt) is off", unit->name);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1321 unit->psu_state = 0;
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1322 mqtt_publish_str(unit->alias, (char *)"12volt", (char *)"off");
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1323 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1324 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1325 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1326 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1327
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1328 /*
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1329 * Handle profile
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1330 */
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1331 if ((unit->mode == UNITMODE_PROFILE) && (unit->profile)) {
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1332 /*
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1333 * unit->profile - uuid of the selected profile.
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1334 * unit->prof_started - start time or 0 if not yet running.
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1335 * unit->prof_state - PROFILE_OFF|PROFILE_PAUSE|PROFILE_RUN|PROFILE_DONE
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1336 * unit->prof_target - Calculated target temperature.
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1337 * unit->prof_paused - Internal pause counter.
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1338 * unit->prof_peak_abs - Peak temperature of the beer.
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1339 * unit->prof_peak_rel - Peak temperature between beer and fridge.
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1340 * unit->prof_primary_done - time when primary fermentation was over the peak.
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1341 */
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1342 for (profile = Config.profiles; profile; profile = profile->next) {
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1343 if (strcmp(unit->profile, profile->uuid) == 0) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1344
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1345 /*
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1346 * Safe defaults
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1347 */
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1348 unit->prof_target_lo = profile->inittemp_lo;
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1349 unit->prof_target_hi = profile->inittemp_hi;
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1350 unit->prof_fridge_mode = 0;
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1351
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1352 switch (unit->prof_state) {
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1353 case PROFILE_OFF:
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1354 unit->prof_percent = 0;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1355 break;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1356 case PROFILE_PAUSE:
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1357 /*
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1358 * Keep current temperature, measure pause time. For
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1359 * temperature fall thru.
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1360 */
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1361 unit->prof_paused++;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1362 case PROFILE_RUN:
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1363 /*
288
8b99ab77262b Corrected comment
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
1364 * Calculate current profile step and desired temperature.
8b99ab77262b Corrected comment
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
1365 * When all steps are done, set state to PROFILE_DONE.
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1366 */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1367 previous_target_lo = profile->inittemp_lo;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1368 previous_target_hi = profile->inittemp_hi;
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1369 previous_fridge_mode = profile->fridge_mode;
277
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1370 time_until_now = current_step = 0;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1371 run_seconds = (int)(now - unit->prof_started - unit->prof_paused);
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1372 run_minutes = run_seconds / 60;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1373 run_hours = run_minutes / 60;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1374 if (debug)
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1375 fprintf(stdout, "run_HMS=%d,%d,%d ", run_hours, run_minutes, run_seconds);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1376
277
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1377 /*
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1378 * Primary fermentation tests
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1379 */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1380 if ((unit->beer_temperature / 1000.0) > unit->prof_peak_abs)
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1381 unit->prof_peak_abs = unit->beer_temperature / 1000.0;
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1382 if (((unit->beer_temperature - unit->air_temperature) / 1000.0) > unit->prof_peak_rel)
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1383 unit->prof_peak_rel = (unit->beer_temperature - unit->air_temperature) / 1000.0;
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1384 if (unit->prof_primary_done == 0) {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1385 if (unit->cooler_address) {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1386 /*
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1387 * There is a cooler. If the difference between the beer and air temperature
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1388 * drops we assume the primary fermentation is done.
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1389 */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1390 if (((unit->beer_temperature - unit->air_temperature) / 1000.0) < (unit->prof_peak_rel - 0.5)) {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1391 unit->prof_primary_done = time(NULL);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1392 syslog(LOG_NOTICE, "Profile `%s' primary fermentation is ready (cooler mode)", profile->name);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1393 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1394 } else {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1395 /*
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1396 * This method works if the unit has no cooling or if the profile allowd the
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1397 * beer temperature to rise freely.
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1398 */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1399 if ((unit->beer_temperature / 1000.0) < (unit->prof_peak_abs - 0.5)) {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1400 unit->prof_primary_done = time(NULL);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1401 syslog(LOG_NOTICE, "Profile `%s' primary fermentation is ready (free rise mode)", profile->name);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1402 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1403 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1404 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1405
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1406 /*
277
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1407 * See how long this profile will take
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1408 */
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1409 tot_minutes = 0;
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1410 for (step = profile->steps; step; step = step->next) {
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1411 tot_minutes += ((step->steptime + step->resttime) * 60);
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1412 }
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1413
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1414 valid_step = FALSE;
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1415 for (step = profile->steps; step; step = step->next) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1416 /*
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1417 * step->steptime
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1418 * step->resttime
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1419 * step->target
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1420 */
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1421 current_step++;
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1422 if ((run_hours >= time_until_now) && (run_hours < (time_until_now + step->steptime + step->resttime))) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1423 /*
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1424 * This is our current step
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1425 */
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1426 valid_step = TRUE;
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1427 if (debug)
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1428 fprintf(stdout, "step=%d step_pos=%d step=%d/%d target=%.1f..%.1f ",
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1429 current_step, run_hours - time_until_now,
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1430 step->steptime, step->resttime, step->target_lo, step->target_hi);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1431 if ((run_hours - time_until_now) < step->steptime) {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1432 unit->prof_target_lo = previous_target_lo + (((run_minutes - (time_until_now * 60.0)) / (step->steptime * 60.0)) * (step->target_lo - previous_target_lo));
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1433 unit->prof_target_hi = previous_target_hi + (((run_minutes - (time_until_now * 60.0)) / (step->steptime * 60.0)) * (step->target_hi - previous_target_hi));
401
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1434 if (step->fridge_mode > previous_fridge_mode) {
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1435 unit->prof_fridge_mode = (((run_minutes - (time_until_now * 60)) * 100) / (step->steptime * 60));
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1436 } else if (step->fridge_mode < previous_fridge_mode) {
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1437 unit->prof_fridge_mode = 100 - (((run_minutes - (time_until_now * 60)) * 100) / (step->steptime * 60));
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1438 } else {
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1439 unit->prof_fridge_mode = step->fridge_mode;
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1440 }
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1441 if (debug)
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1442 fprintf(stdout, "tempshift=%.1f..%.1f minutes=%d duration=%d temp_move=%.3f..%.3f ",
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1443 step->target_lo - previous_target_lo,
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1444 step->target_hi - previous_target_hi,
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1445 run_minutes - (time_until_now * 60),
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1446 step->steptime * 60, unit->prof_target_lo, unit->prof_target_hi);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1447 } else {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1448 unit->prof_target_lo = step->target_lo;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1449 unit->prof_target_hi = step->target_hi;
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1450 unit->prof_fridge_mode = step->fridge_mode;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1451 if (debug)
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1452 fprintf(stdout, "resting target=%.1f..%.1f ", step->target_lo, step->target_hi);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1453 }
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1454 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1455 }
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1456 time_until_now += step->steptime + step->resttime;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1457 previous_target_lo = step->target_lo;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1458 previous_target_hi = step->target_hi;
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1459 previous_fridge_mode = step->fridge_mode;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1460 }
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1461 if (debug)
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1462 fprintf(stdout, " %s %02d:%02d\n", valid_step ? "TRUE":"FALSE", minutes, seconds);
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1463
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1464 if (valid_step == TRUE) {
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1465 unit->prof_percent = (100 * run_minutes) / tot_minutes;
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 275
diff changeset
1466 if (((minutes == 10) || (minutes == 40)) && (seconds == 1)) {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1467 syslog(LOG_NOTICE, "Profile `%s' running %dd %02d:%02d in step %d, %d%% done, target %s %.3f..%.3f degrees",
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 275
diff changeset
1468 profile->name, run_hours / 24, run_hours % 24, run_minutes % 60, current_step,
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1469 unit->prof_percent, unit->prof_fridge_mode ? (char *)"air":(char *)"beer",
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1470 unit->prof_target_lo, unit->prof_target_hi);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1471 unit->mqtt_flag |= (MQTT_FLAG_PERCENT | MQTT_FLAG_PROFILE | MQTT_FLAG_SP);
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1472 }
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1473 } else {
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1474 /*
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1475 * No more steps to do
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
1476 */
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1477 unit->prof_state = PROFILE_DONE;
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1478 unit->prof_percent = 100;
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1479 syslog(LOG_NOTICE, "Profile `%s' is done", profile->name);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1480 unit->mqtt_flag |= (MQTT_FLAG_PERCENT | MQTT_FLAG_PROFILE | MQTT_FLAG_SP);
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1481 }
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1482 break;
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1483
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1484 case PROFILE_DONE:
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1485 /*
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1486 * Keep this state, set target temperature to the last step.
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1487 */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1488 previous_target_lo = profile->inittemp_lo;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1489 previous_target_hi = profile->inittemp_hi;
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1490 previous_fridge_mode = profile->fridge_mode;
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1491 for (step = profile->steps; step; step = step->next) {
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1492 if ((step->steptime + step->resttime) == 0)
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1493 break;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1494 previous_target_lo = step->target_lo;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1495 previous_target_hi = step->target_hi;
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1496 previous_fridge_mode = step->fridge_mode;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1497
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1498 }
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1499 unit->prof_target_lo = previous_target_lo;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1500 unit->prof_target_hi = previous_target_hi;
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1501 unit->prof_fridge_mode = previous_fridge_mode;
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1502 unit->prof_percent = 100;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1503 break;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1504 } /* switch */
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1505 }
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1506 }
402
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1507 } else {
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1508 /*
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1509 * Set some sane values
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1510 */
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1511 unit->prof_target_lo = 19.8;
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1512 unit->prof_target_hi = 20.2;
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1513 unit->prof_fridge_mode = 0;
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1514 }
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1515
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1516 /*
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1517 * Manual switching
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1518 */
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1519 if (unit->mode == UNITMODE_NONE) {
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1520 device_out(unit->heater_address, unit->heater_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1521 device_out(unit->cooler_address, unit->cooler_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1522 device_out(unit->fan_address, unit->fan_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1523 }
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1524
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1525 /*
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1526 * Usage counters
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1527 */
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1528 if (unit->heater_address && unit->heater_state)
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1529 unit->heater_usage++;
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1530 if (unit->cooler_address && unit->cooler_state)
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1531 unit->cooler_usage++;
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1532 if (unit->fan_address && unit->fan_state)
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1533 unit->fan_usage++;
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1534 if (unit->light_address && unit->light_state)
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1535 unit->light_usage++;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1536
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1537 /*
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1538 * Interior lights
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1539 */
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1540 if (unit->light_address) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1541 if (unit->door_state && unit->light_state) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1542 if (unit->light_wait > 0) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1543 unit->light_wait--;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1544 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1545 unit->light_state = 0;
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1546 syslog(LOG_NOTICE, "Unit `%s' lights On => Off", unit->name);
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1547 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1548 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1549 if (!unit->door_state && !unit->light_state) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1550 unit->light_wait = unit->light_delay; /* No delay to turn lights on */
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1551 unit->light_state = 1;
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1552 syslog(LOG_NOTICE, "Unit `%s' lights Off => On", unit->name);
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1553 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1554 device_out(unit->light_address, unit->light_state);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1555 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1556
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1557 /*
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1558 * Temperature control in this unit
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1559 */
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1560 if ((unit->mode == UNITMODE_FRIDGE) || (unit->mode == UNITMODE_BEER) || (unit->mode == UNITMODE_PROFILE)) {
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1561
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1562 /*
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1563 * Set both PID's to their input values.
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1564 */
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1565 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_NONE;
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1566 if (unit->mode == UNITMODE_FRIDGE) {
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1567 unit->PID_cool->SetP = unit->fridge_set + unit->PID_cool->idleRange;
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1568 unit->PID_heat->SetP = unit->fridge_set - unit->PID_heat->idleRange;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1569 unit->PID_cool->Input = unit->PID_heat->Input = unit->air_temperature / 1000.0;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1570 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_BOO;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1571 } else if (unit->mode == UNITMODE_BEER) {
401
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1572 unit->PID_cool->SetP = unit->beer_set;
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1573 unit->PID_heat->SetP = unit->beer_set;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1574 unit->PID_cool->Input = unit->PID_heat->Input = unit->beer_temperature / 1000.0;
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1575 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_AUTO;
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1576 } else if (unit->mode == UNITMODE_PROFILE) {
401
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1577 double usetemp;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1578 unit->PID_cool->SetP = unit->prof_target_hi;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1579 unit->PID_heat->SetP = unit->prof_target_lo;
401
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1580 /*
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1581 * Get percentage to use from each thermometer. unit->prof_fridge_mode = 0..100
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1582 */
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1583 usetemp = ((unit->prof_fridge_mode * (unit->air_temperature / 1000.0)) +
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1584 ((100 - unit->prof_fridge_mode) * (unit->beer_temperature / 1000.0))) / 100.0;
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1585 if (debug)
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1586 fprintf(stdout, " fridge_mode=%d measured=%.3f %.3f => %.3f\n", unit->prof_fridge_mode,
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1587 unit->air_temperature / 1000.0, unit->beer_temperature / 1000.0, usetemp);
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1588 unit->PID_cool->Input = unit->PID_heat->Input = usetemp;
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1589 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_AUTO;
314
a919c6dc2100 Restored blackout window
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
1590 }
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
1591
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1592 /*
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1593 * PID controller compute
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1594 */
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1595 UpdatePID(unit->PID_heat);
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1596 UpdatePID(unit->PID_cool);
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1597
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1598 /*
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1599 * Logging
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1600 */
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1601 if (unit->heater_address) {
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1602 /*
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1603 * Prevent extreme heating
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1604 */
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1605 if ((unit->mode == UNITMODE_BEER) && ((unit->air_temperature / 1000.0) > (unit->PID_heat->Input + 5.0))) {
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1606 unit->PID_heat->OutP = 0.0;
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1607 }
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1608 if (debug)
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1609 fprintf(stdout, "Heat: sp=%.2f Input=%.2f iState=%.2f Err=%.2f Out=%.2f\n",
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1610 unit->PID_heat->SetP, unit->PID_heat->Input, unit->PID_heat->iState, unit->PID_heat->Err, unit->PID_heat->OutP);
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1611 if (seconds == 60) {
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1612 syslog(LOG_NOTICE, "Heat: sp=%.2f Input=%.2f iState=%.2f Err=%.2f Out=%.2f",
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1613 unit->PID_heat->SetP, unit->PID_heat->Input, unit->PID_heat->iState, unit->PID_heat->Err, unit->PID_heat->OutP);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1614 }
494
092b45686a75 Fix Deadlok problem when there is only a heater or a cooler.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
1615 } else {
092b45686a75 Fix Deadlok problem when there is only a heater or a cooler.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
1616 unit->PID_heat->OutP = 0.0;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1617 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1618 if (unit->cooler_address) {
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1619 /*
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1620 * Prevent extreme cooling
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1621 */
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1622 if ((unit->mode == UNITMODE_BEER) && ((unit->air_temperature / 1000.0) < (unit->PID_cool->Input - 5.0))) {
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1623 unit->PID_cool->OutP = 0.0;
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1624 }
317
18dd6eadba31 Simple temperature control in fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 316
diff changeset
1625 if (debug)
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1626 fprintf(stdout, "Cool: sp=%.2f Input=%.2f iState=%.2f Err=%.2f Out=%.2f\n",
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1627 unit->PID_cool->SetP, unit->PID_cool->Input, unit->PID_cool->iState, unit->PID_cool->Err, unit->PID_cool->OutP);
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1628 if (seconds == 60) {
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1629 syslog(LOG_NOTICE, "Cool: sp=%.2f Input=%.2f iState=%.2f Err=%.2f Out=%.2f",
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1630 unit->PID_cool->SetP, unit->PID_cool->Input, unit->PID_cool->iState, unit->PID_cool->Err, unit->PID_cool->OutP);
317
18dd6eadba31 Simple temperature control in fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 316
diff changeset
1631 }
494
092b45686a75 Fix Deadlok problem when there is only a heater or a cooler.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
1632 } else {
092b45686a75 Fix Deadlok problem when there is only a heater or a cooler.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
1633 unit->PID_cool->OutP = 0.0;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1634 }
317
18dd6eadba31 Simple temperature control in fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 316
diff changeset
1635
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1636 /*
494
092b45686a75 Fix Deadlok problem when there is only a heater or a cooler.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
1637 * Deadlock, kill lowest value.
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1638 */
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1639 if (unit->PID_cool->OutP && unit->PID_heat->OutP) {
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1640 if (unit->PID_cool->OutP > unit->PID_heat->OutP)
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1641 unit->PID_heat->OutP = 0.0;
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1642 else
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1643 unit->PID_cool->OutP = 0.0;
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
1644 }
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
1645
318
aad7789a40f2 Better protection, fixed fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 317
diff changeset
1646 if (unit->heater_address && ! unit->cooler_state) {
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1647 if (unit->PID_heat->OutP >= 50) {
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1648 if (unit->heater_wait < unit->heater_delay) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1649 unit->heater_wait++;
273
b863e0147296 Fixed unit edit heater/cooler delay values. Heater and Cooler start/stop now use a different algorithm.
Michiel Broek <mbroek@mbse.eu>
parents: 270
diff changeset
1650 } else {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1651 int power = round(unit->PID_heat->OutP);
319
8c454ec761a8 Actuators behind a PID now use power percentage instead of always 100%
Michiel Broek <mbroek@mbse.eu>
parents: 318
diff changeset
1652 if (unit->heater_state != power) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1653 syslog(LOG_NOTICE, "Unit `%s' heater %d%% => %d%%", unit->name, unit->heater_state, power);
319
8c454ec761a8 Actuators behind a PID now use power percentage instead of always 100%
Michiel Broek <mbroek@mbse.eu>
parents: 318
diff changeset
1654 unit->heater_state = power;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1655 if (unit->heater_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1656 mqtt_publish_int(unit->alias, (char *)"heater", unit->heater_state);
273
b863e0147296 Fixed unit edit heater/cooler delay values. Heater and Cooler start/stop now use a different algorithm.
Michiel Broek <mbroek@mbse.eu>
parents: 270
diff changeset
1657 }
234
b69438db19ec Added loggin when a device is switched on or off in beer/fridge/profile mode.
Michiel Broek <mbroek@mbse.eu>
parents: 233
diff changeset
1658 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1659 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1660 if (unit->heater_wait > 0) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1661 unit->heater_wait--;
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1662 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1663 if (unit->heater_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1664 syslog(LOG_NOTICE, "Unit `%s' heater On => Off", unit->name);
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1665 unit->heater_state = 0;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1666 if (unit->heater_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1667 mqtt_publish_int(unit->alias, (char *)"heater", 0);
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1668 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1669 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1670 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1671 if (unit->door_state)
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1672 device_out(unit->heater_address, unit->heater_state);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1673 else
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1674 device_out(unit->heater_address, 0);
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1675 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1676
318
aad7789a40f2 Better protection, fixed fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 317
diff changeset
1677 if (unit->cooler_address && ! unit->heater_state) {
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1678 if (unit->PID_cool->OutP >= 50) {
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1679 if (unit->cooler_wait < unit->cooler_delay) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1680 unit->cooler_wait++;
273
b863e0147296 Fixed unit edit heater/cooler delay values. Heater and Cooler start/stop now use a different algorithm.
Michiel Broek <mbroek@mbse.eu>
parents: 270
diff changeset
1681 } else {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1682 int power = round(unit->PID_cool->OutP);
319
8c454ec761a8 Actuators behind a PID now use power percentage instead of always 100%
Michiel Broek <mbroek@mbse.eu>
parents: 318
diff changeset
1683 if (unit->cooler_state != power) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1684 syslog(LOG_NOTICE, "Unit `%s' cooler %d%% => %d%%", unit->name, unit->cooler_state, power);
319
8c454ec761a8 Actuators behind a PID now use power percentage instead of always 100%
Michiel Broek <mbroek@mbse.eu>
parents: 318
diff changeset
1685 unit->cooler_state = power;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1686 if (unit->cooler_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1687 mqtt_publish_int(unit->alias, (char *)"cooler", unit->cooler_state);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 268
diff changeset
1688 }
234
b69438db19ec Added loggin when a device is switched on or off in beer/fridge/profile mode.
Michiel Broek <mbroek@mbse.eu>
parents: 233
diff changeset
1689 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1690 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1691 if (unit->cooler_wait > 0) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1692 unit->cooler_wait--;
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1693 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1694 if (unit->cooler_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1695 syslog(LOG_NOTICE, "Unit `%s' cooler On => Off", unit->name);
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1696 unit->cooler_state = 0;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1697 if (unit->cooler_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1698 mqtt_publish_int(unit->alias, (char *)"cooler", 0);
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1699 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1700 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1701 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1702 if (unit->door_state)
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1703 device_out(unit->cooler_address, unit->cooler_state);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1704 else
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1705 device_out(unit->cooler_address, 0);
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1706 }
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1707 if (debug)
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1708 fprintf(stdout, "Final: PIDheat=%.2f PWRheat=%d PIDcool=%.2f PWRcool=%d\n",
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 491
diff changeset
1709 unit->PID_heat->OutP, unit->heater_state, unit->PID_cool->OutP, unit->cooler_state);
348
ffc4b8aa824f Changed Fan switch logic.
Michiel Broek <mbroek@mbse.eu>
parents: 328
diff changeset
1710
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1711 /*
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1712 * If there is a fan, and the unit door is closed, and the unit should be doing
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1713 * something, then turn on the global fan.
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1714 */
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1715 if (unit->fan_address) {
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1716 if (unit->door_state) {
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1717 if (unit->fan_wait < unit->fan_delay) {
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1718 unit->fan_wait++;
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1719 } else {
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1720 if (! unit->fan_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1721 syslog(LOG_NOTICE, "Unit `%s' Fan Off => On", unit->name);
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1722 unit->fan_state = 100;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1723 if (unit->fan_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1724 mqtt_publish_int(unit->alias, (char *)"fan", 100);
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1725 }
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1726 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1727 } else {
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1728 if (unit->fan_wait > 0) {
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1729 unit->fan_wait--;
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1730 } else {
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1731 if (unit->fan_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1732 syslog(LOG_NOTICE, "Unit `%s' Fan On => Off", unit->name);
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1733 unit->fan_state = 0;
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1734 if (unit->fan_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1735 mqtt_publish_int(unit->alias, (char *)"fan", 0);
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1736 }
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1737 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1738 }
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1739 device_out(unit->fan_address, unit->fan_state);
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1740 }
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1741
312
7b0f819a3805 Added more precision to the unit low and high black window margins. Switched to PID routine from Pid without a PhD. The PID compute routine is now in the one second loop. The switch delay times are now in seconds, 0..720.
Michiel Broek <mbroek@mbse.eu>
parents: 311
diff changeset
1742 } else {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 361
diff changeset
1743 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_NONE;
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1744 } /* fridge beer or profile mode */
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1745
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1746 /*
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1747 * Now everything is set and done, update the LCD display
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1748 */
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1749 LCDair = unit->air_temperature / 1000.0;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1750 LCDbeer = unit->beer_temperature / 1000.0;
490
080c8ea4875e Remove temporary marker.
Michiel Broek <mbroek@mbse.eu>
parents: 489
diff changeset
1751 LCDstatC = LCDstatH = ' ';
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1752 if (unit->heater_address) {
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1753 if (unit->heater_state)
489
9cb274b7e027 Swapped heat/cool symbols.
Michiel Broek <mbroek@mbse.eu>
parents: 488
diff changeset
1754 LCDstatH = '\6';
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1755 else
489
9cb274b7e027 Swapped heat/cool symbols.
Michiel Broek <mbroek@mbse.eu>
parents: 488
diff changeset
1756 LCDstatH = '\5';
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1757 }
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1758 if (unit->cooler_address) {
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1759 if (unit->cooler_state)
489
9cb274b7e027 Swapped heat/cool symbols.
Michiel Broek <mbroek@mbse.eu>
parents: 488
diff changeset
1760 LCDstatC = '\4';
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1761 else
489
9cb274b7e027 Swapped heat/cool symbols.
Michiel Broek <mbroek@mbse.eu>
parents: 488
diff changeset
1762 LCDstatC = '\3';
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1763 }
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1764 LCDspH = LCDspL = 0.0;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1765 if (unit->mode == UNITMODE_BEER)
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1766 LCDspH = LCDspL = unit->beer_set;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1767 else if (unit->mode == UNITMODE_FRIDGE)
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1768 LCDspH = LCDspL = unit->fridge_set;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1769 else if (unit->mode == UNITMODE_PROFILE) {
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1770 if (unit->prof_state != PROFILE_OFF) {
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1771 LCDspL = unit->prof_target_lo;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1772 LCDspH = unit->prof_target_hi;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1773 }
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1774 }
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1775 if ((seconds == 60) && ((unit->mode == UNITMODE_FRIDGE) || (unit->mode == UNITMODE_BEER) || (unit->mode == UNITMODE_PROFILE))) {
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1776 unit->mqtt_flag |= MQTT_FLAG_SP;
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1777 }
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1778 #ifdef HAVE_WIRINGPI_H
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1779 piLock(LOCK_LCD);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1780 #endif
496
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1781 /*
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1782 * Write 4 rows to the LCD to display the unit state
5cf6f099c897 The FAN always runs if the unit is active. Bumped tp version 0.5.3
Michiel Broek <mbroek@mbse.eu>
parents: 494
diff changeset
1783 */
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1784 lcd_buf_write(row++, "Unit %d: %s ", LCDunit, UNITMODE[unit->mode]);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1785 lcd_buf_write(row++, "%s ", unit->name);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1786 lcd_buf_write(row++, "%c%5.1f\2 A%6.2f\1 ", LCDstatC, LCDspH, LCDair);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1787 lcd_buf_write(row++, "%c%5.1f\2 B%6.2f\1 ", LCDstatH, LCDspL, LCDbeer);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1788 #ifdef HAVE_WIRINGPI_H
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1789 piUnlock(LOCK_LCD);
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1790 #endif
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1791
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1792 /*
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1793 * Publish MQTT messages set in flag
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1794 */
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1795 if (unit->mqtt_flag & MQTT_FLAG_SP) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1796 mqtt_publish_float(unit->alias, (char *)"setpoint/high", LCDspH, 1);
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1797 mqtt_publish_float(unit->alias, (char *)"setpoint/low", LCDspL, 1);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1798 }
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1799 if (unit->mqtt_flag & MQTT_FLAG_AIR) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1800 mqtt_publish_float(unit->alias, (char *)"air/temperature", unit->air_temperature / 1000.0, 3);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1801 }
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1802 if (unit->mqtt_flag & MQTT_FLAG_BEER) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1803 mqtt_publish_float(unit->alias, (char *)"beer/temperature", unit->beer_temperature / 1000.0, 3);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1804 }
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1805 if (unit->mqtt_flag & MQTT_FLAG_MODE) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1806 mqtt_publish_str(unit->alias, (char *)"mode", (char *)UNITMODE[unit->mode]);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1807 }
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1808 if (unit->mqtt_flag & MQTT_FLAG_PROFILE) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1809 mqtt_publish_str(unit->alias, (char *)"profile/uuid", unit->profile);
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1810 mqtt_publish_str(unit->alias, (char *)"profile/state", (char *)PROFSTATE[unit->prof_state]);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1811 }
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1812 if (unit->mqtt_flag & MQTT_FLAG_PERCENT) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1813 mqtt_publish_int(unit->alias, (char *)"profile/percent", unit->prof_percent);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1814 }
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1815 unit->mqtt_flag = 0;
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1816 } /* for units */
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1817
204
9a14d6b2de7f Fixed LCD display updates. Better key routines.
Michiel Broek <mbroek@mbse.eu>
parents: 200
diff changeset
1818 #ifdef HAVE_WIRINGPI_H
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
1819 piLock(LOCK_MENU);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1820 #endif
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1821 if (setupmenu == MENU_NONE) {
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1822 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1823 piLock(LOCK_LCD);
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1824 #endif
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1825 lcd_buf_show();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1826 #ifdef HAVE_WIRINGPI_H
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1827 piUnlock(LOCK_LCD);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1828 #endif
241
4ba138737bf4 Added thread locks to all LCD access functions. This seems to have fixed the LCD corruption problems.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1829 }
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1830 #ifdef HAVE_WIRINGPI_H
244
2f868eaefec2 Selecting units in setup does now work. Menu select variables are protected with thread locking.
Michiel Broek <mbroek@mbse.eu>
parents: 241
diff changeset
1831 piUnlock(LOCK_MENU);
204
9a14d6b2de7f Fixed LCD display updates. Better key routines.
Michiel Broek <mbroek@mbse.eu>
parents: 200
diff changeset
1832 #endif
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1833
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1834 if (seconds == 60) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1835 seconds = 0;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1836
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1837 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1838 * Log temperature and status every minute if unit is active.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1839 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1840 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1841 if (unit->mode != UNITMODE_OFF) {
176
8c7d87a2c094 Initial code for a simple PID controller.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
1842
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1843 snprintf(target_lo, 39, "NA");
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1844 snprintf(target_hi, 39, "NA");
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1845 snprintf(heater, 39, "NA");
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1846 snprintf(cooler, 39, "NA");
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1847 snprintf(fan, 39, "NA");
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1848 snprintf(door, 39, "NA");
297
a70527a4e56a Added usage counters to the beer logfiles. Bumped to version 0.2.4
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1849 snprintf(use_heater, 39, "NA");
a70527a4e56a Added usage counters to the beer logfiles. Bumped to version 0.2.4
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1850 snprintf(use_cooler, 39, "NA");
a70527a4e56a Added usage counters to the beer logfiles. Bumped to version 0.2.4
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1851 snprintf(use_fan, 39, "NA");
355
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1852 snprintf(room_temp, 39, "NA");
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1853
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1854 if (unit->mode == UNITMODE_BEER) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1855 snprintf(target_lo, 39, "%.1f", unit->beer_set);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1856 snprintf(target_hi, 39, "%.1f", unit->beer_set);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1857 } else if (unit->mode == UNITMODE_FRIDGE) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1858 snprintf(target_lo, 39, "%.1f", unit->fridge_set);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1859 snprintf(target_hi, 39, "%.1f", unit->fridge_set);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1860 } else if (unit->mode == UNITMODE_PROFILE) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1861 snprintf(target_lo, 39, "%.1f", unit->prof_target_lo);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1862 snprintf(target_hi, 39, "%.1f", unit->prof_target_hi);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1863 }
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1864
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1865 if (unit->heater_address) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1866 snprintf(heater, 39, "%d", unit->heater_state);
297
a70527a4e56a Added usage counters to the beer logfiles. Bumped to version 0.2.4
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1867 snprintf(use_heater, 39, "%d", unit->heater_usage);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1868 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1869 if (unit->cooler_address) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1870 snprintf(cooler, 39, "%d", unit->cooler_state);
297
a70527a4e56a Added usage counters to the beer logfiles. Bumped to version 0.2.4
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1871 snprintf(use_cooler, 39, "%d", unit->cooler_usage);
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1872 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1873 if (unit->fan_address) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1874 snprintf(fan, 39, "%d", unit->fan_state);
297
a70527a4e56a Added usage counters to the beer logfiles. Bumped to version 0.2.4
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1875 snprintf(use_fan, 39, "%d", unit->fan_usage);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1876 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1877 if (unit->door_address) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1878 snprintf(door, 39, "%d", unit->door_state);
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1879 }
355
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1880 if (Config.temp_address) {
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1881 snprintf(room_temp, 39, "%.3f", Config.temp_value / 1000.0);
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1882 }
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1883
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1884 snprintf(buf, 1023, "%s,%.3f,%.3f,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s",
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1885 UNITMODE[unit->mode], unit->air_temperature / 1000.0,
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1886 unit->beer_temperature / 1000.0,
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 395
diff changeset
1887 target_lo, heater, cooler, fan, door, use_heater, use_cooler, use_fan, room_temp, target_hi);
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1888 filename = xstrcpy(unit->name);
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1889 filename = xstrcat(filename, (char *)".log");
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1890 logger(filename, buf);
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1891 free(filename);
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1892 filename = NULL;
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1893 }
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1894 }
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1895
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1896 minutes++;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1897 if (minutes == 60) {
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1898 minutes = 0;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1899 /*
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1900 * Log usage counters every hour
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1901 */
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1902 for (unit = Config.units; unit; unit = unit->next) {
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1903 syslog(LOG_NOTICE, "Unit `%s' usage heater=%d cooler=%d fan=%d", unit->name, unit->heater_usage, unit->cooler_usage, unit->fan_usage);
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1904 }
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1905 }
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1906
227
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1907 /*
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1908 * Save the configuration each half hour.
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1909 */
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1910 if ((minutes == 15) || (minutes == 45))
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1911 wrconfig();
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1912 }
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1913 }
200
a215ddaabbe2 Added first panel key routines. The LCD display steps manual only and has a 2 minutes backlight timeout.
Michiel Broek <mbroek@mbse.eu>
parents: 199
diff changeset
1914
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1915 slcdDummy(slcdHandle);
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1916 key = keycheck();
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
1917 if (key != KEY_NONE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
1918 panel_key_events(key);
200
a215ddaabbe2 Added first panel key routines. The LCD display steps manual only and has a 2 minutes backlight timeout.
Michiel Broek <mbroek@mbse.eu>
parents: 199
diff changeset
1919
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1920 usleep(100000);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1921
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1922 } while (run);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1923
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1924 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1925 * Stop units processing in a neat way
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1926 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1927 for (unit = Config.units; unit; unit = unit->next) {
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1928
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1929 if (unit->mode != UNITMODE_OFF) {
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1930 if (unit->heater_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1931 mqtt_publish_int(unit->alias, (char *)"heater", 0);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1932 if (unit->cooler_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1933 mqtt_publish_int(unit->alias, (char *)"cooler", 0);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1934 if (unit->fan_address)
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1935 mqtt_publish_int(unit->alias, (char *)"fan", 0);
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1936 mqtt_publish_int(unit->alias, (char *)"state", 0);
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1937 }
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1938
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1939 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1940 * Turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1941 */
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1942 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->light_state = 0;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1943 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1944 device_out(unit->heater_address, unit->heater_state);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1945 device_out(unit->cooler_address, unit->cooler_state);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1946 device_out(unit->fan_address, unit->fan_state);
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1947 device_out(unit->light_address, unit->light_state);
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1948 syslog(LOG_NOTICE, "Unit `%s' stopped in mode %s", unit->name, UNITMODE[unit->mode]);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1949 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1950
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1951 mqtt_disconnect();
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1952
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1953 syslog(LOG_NOTICE, "Out of loop");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1954 if (debug)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1955 fprintf(stdout, (char *)"Out of loop\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1956
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1957 /*
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1958 * Give threads time to cleanup
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1959 */
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1960 usleep(1500000);
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1961
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1962 stopLCD();
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1963 if (sock != -1) {
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1964 if (shutdown(sock, SHUT_RDWR)) {
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1965 syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno));
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1966 }
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1967 sock = -1;
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1968 }
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
1969 wrconfig();
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
1970 ulockprog((char *)"thermferm");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1971 return 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1972 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1973

mercurial