thermferm/thermferm.c

Thu, 17 Sep 2015 20:54:34 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 17 Sep 2015 20:54:34 +0200
changeset 406
44566f986f76
parent 405
0ad4cb5f4afa
child 418
0bfe08c7ba6e
permissions
-rw-r--r--

Fixed compiling on a real RPi.

26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
326
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
2 * Copyright (C) 2014-2015
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"
198
20716bcff2b0 Added dependencies for panel
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
32 #include "panel.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
33 #include "futil.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
34 #include "xutil.h"
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
35 #include "pid.h"
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
38 int my_shutdown = FALSE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 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
40 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
41 int run_hold = FALSE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
43 extern int debug;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 extern sys_config Config;
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
45 #ifdef HAVE_WIRINGPI_H
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 extern int lcdHandle;
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
47 int setupmenu = MENU_NONE;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
48 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
49 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
50 float temp_temp = 20.0;
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
51 #endif
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
52
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
53 #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
54 pthread_t threads[5];
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
55 #endif
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
56 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
57 extern const char PROFSTATE[4][6];
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
58
40
dafbbd5e9922 Prepared unix socket communication
Michiel Broek <mbroek@mbse.eu>
parents: 34
diff changeset
59
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
60 int server(void);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 void help(void);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 void die(int);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
63 #ifdef HAVE_WIRINGPI_H
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
64 void sendRCswitch(char *, int);
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
65 void stopLCD(void);
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
66 void stopRCswitch(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
67 #endif
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
68
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 void help(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 {
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
73 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
74 fprintf(stdout, "Usage: thermferm [-d] [-h]\n");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 fprintf(stdout, " -d --debug Debug and run in foreground\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 fprintf(stdout, " -h --help Display this help\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 void die(int onsig)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 switch (onsig) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 case SIGHUP: syslog(LOG_NOTICE, "Got SIGHUP, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 case SIGINT: syslog(LOG_NOTICE, "Keyboard interrupt, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88 case SIGTERM: syslog(LOG_NOTICE, "Got SIGTERM, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89 break;
326
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
90 case SIGSEGV: syslog(LOG_NOTICE, "Got SIGSEGV, shutting down");
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
91 my_shutdown = TRUE;
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
92 exit(SIGSEGV);
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
93 break;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 default: syslog(LOG_NOTICE, "die() on signal %d", onsig);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
97 my_shutdown = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
101
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
102 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
103 void show_mode(void)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
104 {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
105 char buf[21];
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
106
328
1713dc0cd20f Fixed error
Michiel Broek <mbroek@mbse.eu>
parents: 326
diff changeset
107 snprintf(buf, 20, "Old mode %s", UNITMODE[current_unit->mode]);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
108 lcdPuts(lcdHandle, buf);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
109 lcdPosition(lcdHandle, 0, 1);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
110 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
111
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
112
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
113
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
114 void go_menu(int menu)
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
115 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
116 char buf[21];
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
117
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
118 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
119 piLock(LOCK_MENU);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
120 lcdClear(lcdHandle);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
121 lcdPosition(lcdHandle, 0, 0);
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
122 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
123 setupmenu = menu;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
124
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
125 switch (menu) {
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
126 case MENU_NONE: lcd_buf_show();
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
127 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
128
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
129 case MENU_TOP_DEFAULT: lcdPuts(lcdHandle, "Setup mode.");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
130 lcdPosition(lcdHandle, 0, 1);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
131 lcdPuts(lcdHandle, "Up&Down = Escape");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
132 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
133
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
134 case MENU_TOP_UNITS: lcdPuts(lcdHandle, "Select units");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
135 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
136
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
137 case MENU_UNITS: 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
138 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
139 lcdPuts(lcdHandle, current_unit->name);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
140 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
141
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
142 case MENU_MODE_OFF: show_mode();
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
143 lcdPuts(lcdHandle, "New mode OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
144 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
145
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
146 case MENU_MODE_NONE: show_mode();
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
147 lcdPuts(lcdHandle, "New mode NONE");
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
148 break;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
149
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
150 case MENU_NONE_HEAT: snprintf(buf, Config.lcd_cols, "Set heater %s", current_unit->heater_state ? "OFF":"ON");
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
151 lcdPuts(lcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
152 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
153
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
154 case MENU_NONE_COOL: snprintf(buf, Config.lcd_cols, "Set cooler %s", current_unit->cooler_state ? "OFF":"ON");
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
155 lcdPuts(lcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
156 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
157
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
158 case MENU_NONE_FAN: snprintf(buf, Config.lcd_cols, "Set fan %s", current_unit->fan_state ? "OFF":"ON");
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
159 lcdPuts(lcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
160 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
161
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
162 case MENU_MODE_BEER: show_mode();
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
163 lcdPuts(lcdHandle, "New mode BEER");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
164 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
165
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
166 case MENU_BEER_TEMP: 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
167 lcdPosition(lcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
168 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
169 lcdPuts(lcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
170 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
171
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
172 case MENU_MODE_FRIDGE: show_mode();
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
173 lcdPuts(lcdHandle, "New mode FRIDGE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
174 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
175
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
176 case MENU_FRIDGE_TEMP: 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
177 lcdPosition(lcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
178 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
179 lcdPuts(lcdHandle, buf);
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
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
182 case MENU_MODE_PROFILE: show_mode();
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
183 lcdPuts(lcdHandle, "New mode PROFILE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
184 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
185
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
186 case MENU_PROFILE_SELECT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
187 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
188 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
189 lcdPuts(lcdHandle, "Select profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
190 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
191
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
192 case MENU_PROFILE_START: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
193 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
194 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
195 lcdPuts(lcdHandle, "Start profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
196 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
197
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
198 case MENU_PROFILE_PAUSE: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
199 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
200 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
201 lcdPuts(lcdHandle, "Pause profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
202 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
203
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
204 case MENU_PROFILE_ABORT: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
205 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
206 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
207 lcdPuts(lcdHandle, "Abort profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
208 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
209
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
210 case MENU_PROFILE_RESUME: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
211 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
212 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
213 lcdPuts(lcdHandle, "Resume profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
214 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
215
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
216 case MENU_PROFILE_GOOFF: snprintf(buf, Config.lcd_cols, "%s", current_profile->name);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
217 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
218 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
219 lcdPuts(lcdHandle, "Set profile OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
220 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
221
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
222 case MENU_TOP_SYS: lcdPuts(lcdHandle, "System menu");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
223 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
224
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
225 case MENU_SYS_HALT: lcdPuts(lcdHandle, "Halt system");
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
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
228 case MENU_SYS_REBOOT: lcdPuts(lcdHandle, "Reboot system");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
229 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
230 }
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
231
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
232 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
233 piUnlock(LOCK_LCD);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
234 }
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
235
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
236
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
237
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
238 void stopLCD(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
239 {
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
240 piLock(LOCK_LCD);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
241 lcdClear(lcdHandle);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
242 setBacklight(0);
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
243 piUnlock(LOCK_LCD);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
244 }
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
245
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
246
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
247
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
248 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
249 * Change mode of current_unit
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
250 */
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
251 void change_mode(int mode)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
252 {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
253 if ((current_unit->mode == UNITMODE_OFF) && (mode != UNITMODE_OFF))
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
254 initlog(current_unit->name);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
255 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
256 current_unit->mode = mode;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
257 /* 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
258 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
259 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
260 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
261 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
262 device_out(current_unit->heater_address, current_unit->heater_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
263 device_out(current_unit->cooler_address, current_unit->cooler_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
264 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
265 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
266 if (current_unit->mode == UNITMODE_PROFILE) {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
267 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
268 * 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
269 * main processing loop.
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
270 */
406
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
271 current_unit->prof_target_lo = 19.8;
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
272 current_unit->prof_target_hi = 20.2;
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
273 current_unit->prof_fridge_mode = 0;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
274 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
275 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
276
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
277
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
278 #endif
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
279
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
280
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
281
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
282 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
283 * Handle panel key events
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
284 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
285 #ifdef HAVE_WIRINGPI_H
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
286 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
287 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
288 units_list *unit;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
289 profiles_list *profile;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
290 int rc;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
291
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
292 switch (setupmenu) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
293 case MENU_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
294 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
295 lcd_buf_step(key);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
296 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
297 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
298 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
299
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
300 case MENU_TOP_DEFAULT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
301 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
302 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
303 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
304 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
305 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
306 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
307 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
308
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
309 case MENU_TOP_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
310 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
311 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
312 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
313 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
314 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
315 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
316 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
317 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
318 * Start with the first unit
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
319 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
320 current_unit = Config.units;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
321 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
322 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
323 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
324
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
325 case MENU_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
326 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
327 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
328 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
329 if (current_unit->next) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
330 current_unit = current_unit->next;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
331 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
332 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
333 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
334 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
335 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
336 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
337 current_unit = unit;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
338 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
339 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
340 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
341 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
342 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
343 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
344 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
345 * Drop into the current mode
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
346 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
347 switch (current_unit->mode) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
348 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
349 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
350 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
351 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
352 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
353 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
354 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
355 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
356 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
357 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
358 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
359 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
360 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
361
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
362 case MENU_MODE_OFF:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
363 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
364 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
365 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
366 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
367 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
368 go_menu(MENU_MODE_PROFILE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
369 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
370 change_mode(UNITMODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
371 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
372 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
373 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
374
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
375 case MENU_MODE_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
376 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
377 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
378 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
379 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
380 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
381 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
382 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
383 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
384 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
385 else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
386 change_mode(UNITMODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
387 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
388 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
389 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
390 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
391
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
392 case MENU_NONE_HEAT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
393 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
394 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
395 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
396 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
397 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
398 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
399 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
400 if (current_unit->heater_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
401 current_unit->heater_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
402 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
403 current_unit->heater_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
404 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
405 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
406 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
407
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
408 case MENU_NONE_COOL:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
409 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
410 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
411 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
412 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
413 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
414 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
415 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
416 if (current_unit->cooler_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
417 current_unit->cooler_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
418 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
419 current_unit->cooler_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
420 go_menu(MENU_NONE_COOL);
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 break;
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 case MENU_NONE_FAN:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
425 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
426 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
427 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
428 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
429 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
430 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
431 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
432 if (current_unit->fan_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
433 current_unit->fan_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
434 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
435 current_unit->fan_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
436 go_menu(MENU_NONE_FAN);
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 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
439
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
440 case MENU_MODE_FRIDGE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
441 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
442 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
443 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
444 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
445 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
446 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
447 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
448 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
449 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
450 go_menu(MENU_FRIDGE_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
451 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
452 change_mode(UNITMODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
453 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
454 }
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 break;
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 case MENU_FRIDGE_TEMP:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
459 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
460 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
461 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
462 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
463 temp_temp -= 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
464 go_menu(MENU_FRIDGE_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
465 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
466 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
467 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
468 temp_temp += 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
469 go_menu(MENU_FRIDGE_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
470 }
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
471 if (key == KEY_CONFIRM) {
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
472 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
473 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
474 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
475 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
476 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
477 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
478 break;
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 case MENU_MODE_BEER:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
481 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
482 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
483 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
484 go_menu(MENU_MODE_PROFILE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
485 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
486 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
487 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
488 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
489 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
490 go_menu(MENU_BEER_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
491 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
492 change_mode(UNITMODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
493 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
494 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
495 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
496 break;
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 case MENU_BEER_TEMP:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
499 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
500 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
501 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
502 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
503 temp_temp -= 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
504 go_menu(MENU_BEER_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
505 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
506 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
507 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
508 temp_temp += 0.1;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
509 go_menu(MENU_BEER_TEMP);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
510 }
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
511 if (key == KEY_CONFIRM) {
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
512 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
513 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
514 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
515 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
516 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
517 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
518 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
519
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
520 case MENU_MODE_PROFILE:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
521 if (current_unit->profile) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
522 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
523 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
524 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
525 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
526 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
527 current_profile = NULL;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
528 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
529 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
530 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
531 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
532 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
533 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
534 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
535 if (key == KEY_ENTER) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
536 if (current_unit->mode == UNITMODE_PROFILE) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
537 switch (current_unit->prof_state) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
538 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
539 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
540 else
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
541 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
542 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
543 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
544 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
545 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
546 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
547 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
548 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
549 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
550 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
551 change_mode(UNITMODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
552 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
553 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
554 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
555 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
556
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
557 case MENU_PROFILE_SELECT:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
558 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
559 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
560 if (key == KEY_DOWN) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
561 if (current_profile->next) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
562 current_profile = current_profile->next;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
563 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
564 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
565 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
566 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
567 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
568 if (key == KEY_UP) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
569 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
570 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
571 current_profile = profile;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
572 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
573 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
574 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
575 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
576 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
577 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
578 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
579 current_unit->profile = current_profile->uuid;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
580 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
581 go_menu(MENU_PROFILE_START);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
582 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
583 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
584
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
585 case MENU_PROFILE_START:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
586 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
587 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
588 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
589 go_menu(MENU_PROFILE_SELECT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
590 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
591 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
592 current_unit->prof_started = time(NULL);
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
593 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
594 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
595 syslog(LOG_NOTICE, "Profile started from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
596 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
597 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
598 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
599
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
600 case MENU_PROFILE_PAUSE:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
601 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
602 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
603 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
604 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
605 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
606 current_unit->prof_state = PROFILE_PAUSE;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
607 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
608 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
609 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
610 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
611
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
612 case MENU_PROFILE_ABORT:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
613 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
614 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
615 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
616 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
617 go_menu(MENU_PROFILE_RESUME);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
618 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
619 go_menu(MENU_PROFILE_PAUSE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
620 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
621 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
622 current_unit->prof_state = PROFILE_OFF;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
623 current_unit->prof_started = 0;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
624 syslog(LOG_NOTICE, "Profile aborted from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
625 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
626 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
627 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
628
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
629 case MENU_PROFILE_RESUME:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
630 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
631 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
632 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
633 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
634 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
635 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
636 syslog(LOG_NOTICE, "Profile resume from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
637 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
638 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
639 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
640
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
641 case MENU_PROFILE_GOOFF:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
642 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
643 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
644 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
645 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
646 current_unit->prof_state = PROFILE_OFF;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
647 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
648 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
649 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
650 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
651
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
652 case MENU_TOP_SYS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
653 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
654 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
655 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
656 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
657 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
658 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
659 if (key == KEY_ENTER)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
660 go_menu(MENU_SYS_HALT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
661 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
662
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
663 case MENU_SYS_HALT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
664 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
665 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
666 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
667 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
668 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
669 rc = system("/sbin/halt");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
670 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
671 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
672 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
673 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
674
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
675 case MENU_SYS_REBOOT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
676 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
677 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
678 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
679 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
680 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
681 rc = system("/sbin/reboot");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
682 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
683 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
684 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
685 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
686 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
687 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
688 #endif
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
689
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
690
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
691
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
692
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
693 int main(int argc, char *argv[])
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
694 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
695 int rc, c, i;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
696 pid_t frk;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
697
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
698 while (1) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
699 int option_index = 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
700 static struct option long_options[] = {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
701 {"debug", 0, 0, 'c'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
702 {"help", 0, 0, 'h'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
703 {0, 0, 0, 0}
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
704 };
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
705
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
706 c = getopt_long(argc, argv, "dh", long_options, &option_index);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
707 if (c == -1)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
708 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
709
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
710 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
711 case 'd': debug = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
712 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
713 case 'h': help();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
714 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
715 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
716 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
717
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
718 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
719 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
720 if (debug)
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
721 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
722
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
723 if (rdconfig()) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
724 fprintf(stderr, "Error reading configuration\n");
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
725 syslog(LOG_NOTICE, "Error reading configuration: halted");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
726 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
727 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
728
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
729 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
730 * 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
731 * 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
732 * Don't catch SIGCHLD.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
733 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
734 for (i = 0; i < NSIG; i++) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
735 if ((i != SIGCHLD) && (i != SIGKILL) && (i != SIGSTOP))
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
736 signal(i, (void (*))die);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
737 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
738
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
739 #ifdef HAVE_WIRINGPI_H
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
740 if (wiringPiSetup () )
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
741 return 1;
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
742
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
743 if ((rc = initLCD (Config.lcd_cols, Config.lcd_rows))) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
744 fprintf(stderr, "Cannot initialize LCD display, rc=%d\n", rc);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
745 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
746 }
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
747 #endif
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
748
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
749 if (debug) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
750 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
751 * For debugging run in foreground.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
752 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
753 rc = server();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
754 } else {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
755 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
756 * Server initialization is complete. Now we can fork the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
757 * 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
758 * 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
759 * users control terminal. This is done before the fork, so
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
760 * 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
761 * 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
762 * associated with that terminal as its control terminal.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
763 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
764 if ((pgrp = setpgid(0, 0)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
765 syslog(LOG_NOTICE, "setpgpid failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
766 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
767
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
768 frk = fork();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
769 switch (frk) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
770 case -1:
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
771 syslog(LOG_NOTICE, "Daemon fork failed: %s", strerror(errno));
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
772 #ifdef HAVE_WIRINGPI_H
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
773 stopLCD();
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
774 #endif
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
775 exit(1);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
776 case 0: /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
777 * Run the daemon
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
778 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
779 fclose(stdin);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
780 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
781 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
782 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
783 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
784 fclose(stdout);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
785 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
786 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
787 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
788 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
789 fclose(stderr);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
790 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
791 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
792 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
793 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
794 mypid = getpid();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
795 rc = server();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
796 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
797 /* Not reached */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
798 default:
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
799 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
800 * Here we detach this process and let the child
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
801 * run the deamon process.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
802 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
803 syslog(LOG_NOTICE, "Starting daemon with pid %d", frk);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
804 exit(0);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
805 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
806 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
807
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
808 syslog(LOG_NOTICE, "Finished, rc=%d", rc);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
809 return rc;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
810 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
811
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
812
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
813
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
814 int server(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
815 {
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
816 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
817 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
818 time_t now, last = (time_t)0;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
819 units_list *unit;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
820 profiles_list *profile;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
821 prof_step *step;
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
822 int rc, run = 1, seconds = 0, minutes = 0, temp, deviation;
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
823 int run_seconds, run_minutes, run_hours, tot_minutes;
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
824 #ifdef HAVE_WIRINGPI_H
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
825 struct tm *tm;
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
826 int row, key;
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
827 #else
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
828 long t = 0;
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
829 #endif
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
830 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
831 float previous_target_lo, previous_target_hi;
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
832
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
833
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
834 if (lockprog((char *)"thermferm")) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
835 syslog(LOG_NOTICE, "Can't lock");
34
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
836 return 1;
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
837 }
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
838
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
839 if ((rc = devices_detect())) {
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
840 syslog(LOG_NOTICE, "Detected %d new devices", rc);
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
841 wrconfig();
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
842 }
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
843
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
844 #ifdef HAVE_WIRINGPI_H
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
845 rc = piThreadCreate(my_devices_loop);
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
846 #else
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
847 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
848 #endif
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
849 if (rc) {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
850 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
851 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
852 #ifndef HAVE_WIRINGPI_H
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
853 } else {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
854 t++;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
855 #endif
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
856 }
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
857
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
858 #ifdef HAVE_WIRINGPI_H
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
859 rc = piThreadCreate(my_server_loop);
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
860 #else
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
861 rc = pthread_create(&threads[t], NULL, my_server_loop, (void *)t );
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
862 #endif
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
863 if (rc) {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
864 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
865 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
866 #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
867 } else {
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
868 t++;
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
869 #endif
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
870 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
871
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
872 #ifdef HAVE_WIRINGPI_H
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
873 if ((rc = piThreadCreate(my_panel_loop))) {
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
874 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
875 syslog(LOG_NOTICE, "my_panel_loop thread didn't start rc=%d", rc);
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
876 }
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
877 #endif
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
878
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
879
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
880 #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
881 #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
882 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
883 #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
884 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
885 #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
886 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
887 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
888 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
889 #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
890 } 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
891 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
892 #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
893 }
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
894 #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
895
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
896 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
897 * Initialize units for processing
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
898 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
899 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
900 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
901 * Safety, turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
902 */
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
903 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
904 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
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
905 if (unit->mode == UNITMODE_PROFILE) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
906 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
907 syslog(LOG_NOTICE, "Starting unit `%s' in profile mode, no profile defined.", unit->name);
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
908 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
909 syslog(LOG_NOTICE, "Starting unit `%s' in profile state %s.", unit->name, PROFSTATE[unit->prof_state]);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
910 } 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
911 syslog(LOG_NOTICE, "Starting unit `%s' beer cooler at %.1f degrees", unit->name, unit->beer_set);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
912 } 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
913 syslog(LOG_NOTICE, "Starting unit `%s' as refridgerator at %.1f degrees", unit->name, unit->fridge_set);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
914 } 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
915 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
916 } 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
917 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
918 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
919 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
920
111
bdf3c5278a24 Added missing conditional
Michiel Broek <mbroek@mbse.eu>
parents: 108
diff changeset
921 #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
922 piLock(LOCK_LCD);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
923 lcd_buf_write(1, (char *)" ThermFerm ");
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
924 lcd_buf_write(2, (char *)" Version %s ", VERSION);
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
925 piUnlock(LOCK_LCD);
111
bdf3c5278a24 Added missing conditional
Michiel Broek <mbroek@mbse.eu>
parents: 108
diff changeset
926 #endif
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
927
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
928 /*
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
929 * Initialize logfiles for each unit
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
930 */
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
931 for (unit = Config.units; unit; unit = unit->next) {
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
932 if (unit->mode != UNITMODE_OFF) {
155
0d86f3c0a07b Unit mode can switch between OFF and NONE.
Michiel Broek <mbroek@mbse.eu>
parents: 150
diff changeset
933 initlog(unit->name);
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
934 }
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
935 }
33
2357e8636a60 Added user log with temperatures and cooler state
Michiel Broek <mbroek@mbse.eu>
parents: 29
diff changeset
936
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
937 do {
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
938 if (my_shutdown)
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
939 run = 0;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
940
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
941 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
942 * 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
943 * 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
944 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
945 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
946 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
947 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
948 for (;;) {
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
949 usleep(100000);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
950 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
951 break;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
952 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
953 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
954 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
955 #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
956 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
957 * 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
958 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
959 piLock(LOCK_LCD);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
960 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
961 lcd_buf_write(2, (char *)" Version %s ", VERSION);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
962 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
963 #endif
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
964 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
965
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
966 now = time(NULL);
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
967 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
968 /*
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
969 * 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
970 */
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
971 last = now;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
972 seconds++;
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
973
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
974 #ifdef HAVE_WIRINGPI_H
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
975 row = 3;
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
976 tm = localtime(&now);
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
977 piLock(LOCK_LCD);
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
978 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
979 lcd_buf_write(row++, " %02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
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
980 piUnlock(LOCK_LCD);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
981 #endif
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
982
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
983 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
984 rc = device_in(Config.temp_address, &temp);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
985 if (rc == DEVPRESENT_YES) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
986 Config.temp_value = temp;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
987 Config.temp_state = 0;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
988 #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
989 piLock(LOCK_LCD);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
990 lcd_buf_write(row++, "Room temp %.1f %cC ", Config.temp_value / 1000.0, 0xdf);
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
991 piUnlock(LOCK_LCD);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
992 #endif
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
993 } else if (rc == DEVPRESENT_ERROR) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
994 Config.temp_state = 1;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
995 } else {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
996 Config.temp_state = 2;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
997 }
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
998 }
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
999
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1000 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
1001 rc = device_in(Config.hum_address, &temp);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1002 if (rc == DEVPRESENT_YES) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1003 Config.hum_value = temp;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1004 Config.hum_state = 0;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1005 #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
1006 piLock(LOCK_LCD);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1007 lcd_buf_write(row++, " Humidity %.1f %% ", Config.hum_value / 1000.0, 0xdf);
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
1008 piUnlock(LOCK_LCD);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1009 #endif
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1010 } else if (rc == DEVPRESENT_ERROR) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1011 Config.hum_state = 1;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1012 } else {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1013 Config.hum_state = 2;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1014 }
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1015 }
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1016
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1017 for (unit = Config.units; unit; unit = unit->next) {
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1018 #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
1019 piLock(LOCK_LCD);
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1020 lcd_buf_write(row++, "Unit %s ", unit->name);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1021 lcd_buf_write(row++, "Mode %s ", UNITMODE[unit->mode]);
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
1022 piUnlock(LOCK_LCD);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1023 #endif
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1024
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1025 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
1026 rc = device_in(unit->air_address, &temp);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1027 if (rc == DEVPRESENT_YES) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1028 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1029 * It is possible to have read errors or extreme values.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1030 * This can happen with bad connections so we compare the
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1031 * value with the previous one. If the difference is too
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1032 * 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
1033 * 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
1034 * Maximum error is 40 degrees for now.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1035 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1036 deviation = 40000;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1037 if ((unit->air_temperature == 0) ||
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1038 (unit->air_temperature && (temp > (int)unit->air_temperature - deviation) && (temp < ((int)unit->air_temperature + deviation)))) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1039 unit->air_temperature = temp;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1040 unit->air_state = 0;
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1041 #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
1042 piLock(LOCK_LCD);
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1043 lcd_buf_write(row++, " Air %.3f %cC ", unit->air_temperature / 1000.0, 0xdf);
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
1044 piUnlock(LOCK_LCD);
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1045 #endif
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1046 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1047 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
1048 if (debug) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1049 fprintf(stdout, "deviation error deviation=%d, old=%d new=%d\n", deviation, unit->air_temperature, temp);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1050 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1051 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1052 } else if (rc == DEVPRESENT_ERROR) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1053 unit->air_state = 1;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1054 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1055 unit->air_state = 2;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1056 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1057 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1058
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1059 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
1060 rc = device_in(unit->beer_address, &temp);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1061 if (rc == DEVPRESENT_YES) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1062 deviation = 40000;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1063 if ((unit->beer_temperature == 0) ||
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1064 (unit->beer_temperature && (temp > (int)unit->beer_temperature - deviation) && (temp < ((int)unit->beer_temperature + deviation)))) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1065 unit->beer_temperature = temp;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1066 unit->beer_state = 0;
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1067 #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
1068 piLock(LOCK_LCD);
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1069 lcd_buf_write(row++, "Beer %.3f %cC ", unit->beer_temperature / 1000.0, 0xdf);
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
1070 piUnlock(LOCK_LCD);
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1071 #endif
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1072 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1073 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
1074 if (debug) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1075 fprintf(stdout, "deviation error deviation=%d, old=%d new=%d\n", deviation, unit->beer_temperature, temp);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1076 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1077 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1078 } else if (rc == DEVPRESENT_ERROR) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1079 unit->beer_state = 1;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1080 } else {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1081 unit->beer_state = 2;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1082 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1083 }
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1084
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1085 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
1086 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
1087 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
1088 if (temp) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1089 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
1090 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
1091 unit->door_state = 1;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1092 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1093 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1094 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
1095 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
1096 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
1097 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1098 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1099 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1100 unit->door_state = 1;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1101 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1102 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1103 /*
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1104 * No door switch, say door is closed.
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1105 */
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1106 unit->door_state = 1;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1107 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1108
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1109 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
1110 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
1111 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
1112 if (temp) {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1113 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
1114 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
1115 unit->psu_state = 1;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1116 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1117 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1118 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
1119 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
1120 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
1121 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1122 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1123 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1124 unit->psu_state = 1;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1125 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1126 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1127 unit->psu_state = 1;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1128 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1129
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1130 /*
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1131 * 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
1132 */
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1133 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
1134 /*
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1135 * 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
1136 * 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
1137 * 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
1138 * unit->prof_target - Calculated target temperature.
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1139 * unit->prof_paused - Internal pause counter.
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1140 * 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
1141 * 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
1142 * 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
1143 */
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1144 for (profile = Config.profiles; profile; profile = profile->next) {
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1145 if (strcmp(unit->profile, profile->uuid) == 0) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1146
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1147 /*
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1148 * Safe defaults
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1149 */
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
1150 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
1151 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
1152 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
1153
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1154 switch (unit->prof_state) {
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1155 case PROFILE_OFF:
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1156 unit->prof_percent = 0;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1157 break;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1158 case PROFILE_PAUSE:
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1159 /*
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1160 * Keep current temperature, measure pause time. For
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1161 * temperature fall thru.
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1162 */
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1163 unit->prof_paused++;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1164 case PROFILE_RUN:
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1165 /*
288
8b99ab77262b Corrected comment
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
1166 * Calculate current profile step and desired temperature.
8b99ab77262b Corrected comment
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
1167 * 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
1168 */
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
1169 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
1170 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
1171 previous_fridge_mode = profile->fridge_mode;
277
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1172 time_until_now = current_step = 0;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1173 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
1174 run_minutes = run_seconds / 60;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1175 run_hours = run_minutes / 60;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1176 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
1177 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
1178
277
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1179 /*
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1180 * Primary fermentation tests
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1181 */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1182 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
1183 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
1184 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
1185 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
1186 if (unit->prof_primary_done == 0) {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1187 if (unit->cooler_address) {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1188 /*
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1189 * 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
1190 * drops we assume the primary fermentation is done.
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1191 */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1192 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
1193 unit->prof_primary_done = time(NULL);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1194 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
1195 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1196 } else {
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1197 /*
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1198 * 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
1199 * beer temperature to rise freely.
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1200 */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1201 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
1202 unit->prof_primary_done = time(NULL);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1203 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
1204 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1205 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1206 }
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1207
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
1208 /*
277
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1209 * See how long this profile will take
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1210 */
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1211 tot_minutes = 0;
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1212 for (step = profile->steps; step; step = step->next) {
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1213 tot_minutes += ((step->steptime + step->resttime) * 60);
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1214 }
6f9a7cca8f19 Fixed profile progess percentage
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1215
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1216 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
1217 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
1218 /*
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1219 * step->steptime
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1220 * step->resttime
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1221 * step->target
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1222 */
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1223 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
1224 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
1225 /*
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1226 * This is our current step
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1227 */
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1228 valid_step = TRUE;
401
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1229 // unit->prof_fridge_mode = step->fridge_mode;
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1230 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
1231 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
1232 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
1233 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
1234 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
1235 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
1236 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
1237 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
1238 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
1239 } 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
1240 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
1241 } else {
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1242 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
1243 }
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1244 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
1245 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
1246 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
1247 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
1248 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
1249 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
1250 } 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
1251 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
1252 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
1253 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
1254 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
1255 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
1256 }
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1257 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1258 }
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1259 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
1260 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
1261 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
1262 previous_fridge_mode = step->fridge_mode;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1263 }
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1264 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
1265 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
1266
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
1267 if (valid_step == TRUE) {
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1268 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
1269 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
1270 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
1271 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
1272 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
1273 unit->prof_target_lo, unit->prof_target_hi);
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
1274 }
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
1275 } 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
1276 /*
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
1277 * 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
1278 */
221
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1279 unit->prof_state = PROFILE_DONE;
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 277
diff changeset
1280 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
1281 syslog(LOG_NOTICE, "Profile `%s' is done", profile->name);
91a5e7281c35 Fixed end of profile steps, didn't go to the PROFILE_DONE state.
Michiel Broek <mbroek@mbse.eu>
parents: 219
diff changeset
1282 }
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1283 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
1284
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1285 case PROFILE_DONE:
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1286 /*
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1287 * 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
1288 */
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
1289 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
1290 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
1291 previous_fridge_mode = profile->fridge_mode;
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1292 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
1293 if ((step->steptime + step->resttime) == 0)
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1294 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
1295 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
1296 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
1297 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
1298
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1299 }
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
1300 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
1301 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
1302 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
1303 unit->prof_percent = 100;
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1304 break;
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1305 } /* switch */
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1306 }
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1307 }
402
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1308 } else {
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1309 /*
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1310 * Set some sane values
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1311 */
6b9f0c3c7f63 Set sane default profile values when not using a profile.
Michiel Broek <mbroek@mbse.eu>
parents: 401
diff changeset
1312 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
1313 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
1314 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
1315 }
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1316
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1317 /*
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1318 * Manual switching
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1319 */
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1320 if (unit->mode == UNITMODE_NONE) {
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1321 device_out(unit->heater_address, unit->heater_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1322 device_out(unit->cooler_address, unit->cooler_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1323 device_out(unit->fan_address, unit->fan_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 182
diff changeset
1324 }
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1325
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1326 /*
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1327 * Usage counters
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1328 */
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1329 if (unit->heater_address && unit->heater_state)
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1330 unit->heater_usage++;
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1331 if (unit->cooler_address && unit->cooler_state)
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1332 unit->cooler_usage++;
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1333 if (unit->fan_address && unit->fan_state)
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1334 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
1335 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
1336 unit->light_usage++;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1337
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1338 #ifdef HAVE_WIRINGPI_H
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1339 if (unit->heater_address && unit->cooler_address) {
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
1340 piLock(LOCK_LCD);
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
1341 if (unit->heater_state) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1342 lcd_buf_write(row++, "Heater On ");
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
1343 } else if (unit->cooler_state) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1344 lcd_buf_write(row++, "Cooler On ");
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
1345 } else {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1346 lcd_buf_write(row++, "Standby ");
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
1347 }
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
1348 piUnlock(LOCK_LCD);
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
1349 piLock(LOCK_LCD);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1350 switch (unit->mode) {
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1351 case UNITMODE_BEER: lcd_buf_write(row++, "Target %.1f %cC ", unit->beer_set, 0xdf);
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1352 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1353 case UNITMODE_FRIDGE: lcd_buf_write(row++, "Target %.1f %cC ", unit->fridge_set, 0xdf);
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1354 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1355 case UNITMODE_PROFILE: if (unit->prof_state != PROFILE_OFF)
406
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
1356 lcd_buf_write(row++, "Tgt %.1f..%.1f %cC ", unit->prof_target_lo, unit->prof_target_hi, 0xdf);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1357 else
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1358 lcd_buf_write(row++, "Target not set ");
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1359 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1360 default: lcd_buf_write(row++, "Target not set ");
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1361 }
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
1362 piUnlock(LOCK_LCD);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1363 } else {
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
1364 piLock(LOCK_LCD);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1365 if (unit->heater_address) {
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1366 lcd_buf_write(row++, "Heat %s ", unit->heater_state ? "On ":"Off");
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1367 }
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1368 if (unit->cooler_address) {
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1369 lcd_buf_write(row++, "Cool %s ", unit->cooler_state ? "On ":"Off");
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
1370 }
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
1371 piUnlock(LOCK_LCD);
188
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1372 }
4fc17ef4593f Added heat/cool state to the LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
1373 #endif
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1374
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1375 /*
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1376 * Interior lights
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1377 */
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1378 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
1379 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
1380 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
1381 unit->light_wait--;
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1382 } else {
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1383 unit->light_state = 0;
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1384 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
1385 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1386 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1387 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
1388 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
1389 unit->light_state = 1;
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1390 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
1391 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1392 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
1393 }
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1394
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1395 /*
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1396 * 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
1397 */
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
1398 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
1399
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
1400 /*
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
1401 * 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
1402 */
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
1403 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
1404 if (unit->mode == UNITMODE_FRIDGE) {
401
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1405 unit->PID_cool->SetP = unit->fridge_set;
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1406 unit->PID_heat->SetP = unit->fridge_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
1407 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
1408 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
1409 } 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
1410 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
1411 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
1412 unit->PID_cool->Input = unit->PID_heat->Input = unit->beer_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
1413 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
1414 } 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
1415 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
1416 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
1417 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
1418 /*
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1419 * 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
1420 */
0226d0f37bb7 More fixes for profiles temperature window. Added the sliding beer/air target switch.
Michiel Broek <mbroek@mbse.eu>
parents: 398
diff changeset
1421 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
1422 ((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
1423 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
1424 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
1425 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
1426 unit->PID_cool->Input = unit->PID_heat->Input = usetemp;
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
1427 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
1428 }
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
1429
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
1430 /*
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
1431 * 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
1432 */
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1433 UpdatePID(unit->PID_heat);
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1434 UpdatePID(unit->PID_cool);
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1435
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1436 /*
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1437 * Logging
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1438 */
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
1439 if (unit->heater_address) {
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
1440 if (debug)
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1441 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
1442 unit->PID_heat->SetP, unit->PID_heat->Input, unit->PID_heat->iState, unit->PID_heat->Err, unit->PID_heat->OutP);
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1443 if (((unit->PID_heat->OutP >= 2) && unit->heater_address) || (seconds == 60) || unit->heater_state) {
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1444 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
1445 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
1446 }
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
1447 }
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
1448 if (unit->cooler_address) {
317
18dd6eadba31 Simple temperature control in fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 316
diff changeset
1449 if (debug)
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1450 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
1451 unit->PID_cool->SetP, unit->PID_cool->Input, unit->PID_cool->iState, unit->PID_cool->Err, unit->PID_cool->OutP);
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1452 if (((unit->PID_cool->OutP >= 2) && unit->cooler_address) || (seconds == 60) || unit->cooler_state) {
363
468ec0d96cce Back to the old PID algorythm. Version 0.3.1.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
1453 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
1454 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
1455 }
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
1456 }
317
18dd6eadba31 Simple temperature control in fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 316
diff changeset
1457
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1458 /*
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1459 * Deadlock
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1460 */
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
1461 if (unit->PID_cool->OutP && unit->PID_heat->OutP) {
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
1462 syslog(LOG_NOTICE, "Heat and Cool lockdown");
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
1463 unit->PID_cool->OutP = unit->PID_heat->OutP = 0.0;
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
1464 }
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
1465
318
aad7789a40f2 Better protection, fixed fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 317
diff changeset
1466 if (unit->heater_address && ! unit->cooler_state) {
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1467 if (unit->PID_heat->OutP >= 2) {
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1468 if (unit->heater_wait < unit->heater_delay) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1469 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
1470 } 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
1471 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
1472 if (unit->heater_state != power) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1473 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
1474 unit->heater_state = power;
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
1475 }
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
1476 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1477 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1478 if (unit->heater_wait > 0) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1479 unit->heater_wait--;
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1480 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1481 if (unit->heater_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1482 syslog(LOG_NOTICE, "Unit `%s' heater On => Off", unit->name);
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1483 unit->heater_state = 0;
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1484 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1485 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1486 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1487 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
1488 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
1489 else
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1490 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
1491 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1492
318
aad7789a40f2 Better protection, fixed fridge mode.
Michiel Broek <mbroek@mbse.eu>
parents: 317
diff changeset
1493 if (unit->cooler_address && ! unit->heater_state) {
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 363
diff changeset
1494 if (unit->PID_cool->OutP >= 2) {
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1495 if (unit->cooler_wait < unit->cooler_delay) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1496 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
1497 } 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
1498 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
1499 if (unit->cooler_state != power) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1500 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
1501 unit->cooler_state = power;
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 268
diff changeset
1502 }
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
1503 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1504 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1505 if (unit->cooler_wait > 0) {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1506 unit->cooler_wait--;
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1507 } else {
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1508 if (unit->cooler_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1509 syslog(LOG_NOTICE, "Unit `%s' cooler On => Off", unit->name);
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1510 unit->cooler_state = 0;
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1511 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1512 }
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1513 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1514 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
1515 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
1516 else
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1517 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
1518 }
348
ffc4b8aa824f Changed Fan switch logic.
Michiel Broek <mbroek@mbse.eu>
parents: 328
diff changeset
1519
ffc4b8aa824f Changed Fan switch logic.
Michiel Broek <mbroek@mbse.eu>
parents: 328
diff changeset
1520 if ((unit->heater_address || unit->cooler_address) && unit->fan_address) {
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1521 /*
348
ffc4b8aa824f Changed Fan switch logic.
Michiel Broek <mbroek@mbse.eu>
parents: 328
diff changeset
1522 * If there is a heater or cooler and we have a fan, turn fan on if
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1523 * cooling or heating. The Fan has a start/stop delay.
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1524 */
348
ffc4b8aa824f Changed Fan switch logic.
Michiel Broek <mbroek@mbse.eu>
parents: 328
diff changeset
1525 if ((unit->heater_address && unit->heater_state) || (unit->cooler_address && unit->cooler_state)) {
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1526 if (unit->fan_wait < unit->fan_delay) {
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1527 unit->fan_wait++;
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1528 } else {
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1529 if (! unit->fan_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1530 syslog(LOG_NOTICE, "Unit `%s' Fan Off => On", unit->name);
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1531 unit->fan_state = 100;
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1532 }
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1533 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1534 } else {
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1535 if (unit->fan_wait > 0) {
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1536 unit->fan_wait--;
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1537 } else {
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1538 if (unit->fan_state) {
352
a8e106c95db4 Improved regular logging, disabled some debug logging.
Michiel Broek <mbroek@mbse.eu>
parents: 350
diff changeset
1539 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
1540 unit->fan_state = 0;
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1541 }
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1542 }
313
8448fcf3d799 Code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 312
diff changeset
1543 }
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1544 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
1545 device_out(unit->fan_address, unit->fan_state);
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1546 else
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1547 device_out(unit->fan_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
1548 }
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
1549 } 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
1550 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
1551 } /* fridge beer or profile mode */
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1552 } /* for units */
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1553
204
9a14d6b2de7f Fixed LCD display updates. Better key routines.
Michiel Broek <mbroek@mbse.eu>
parents: 200
diff changeset
1554 #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
1555 piLock(LOCK_MENU);
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
1556 if (setupmenu == MENU_NONE) {
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
1557 piLock(LOCK_LCD);
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1558 lcd_buf_show();
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
1559 piUnlock(LOCK_LCD);
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
1560 }
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
1561 piUnlock(LOCK_MENU);
204
9a14d6b2de7f Fixed LCD display updates. Better key routines.
Michiel Broek <mbroek@mbse.eu>
parents: 200
diff changeset
1562 #endif
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1563
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1564 if (seconds == 60) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1565 seconds = 0;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1566
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1567 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1568 * Log temperature and status every minute if unit is active.
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1569 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1570 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1571 if (unit->mode != UNITMODE_OFF) {
176
8c7d87a2c094 Initial code for a simple PID controller.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
1572
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
1573 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
1574 snprintf(target_hi, 39, "NA");
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1575 snprintf(heater, 39, "NA");
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1576 snprintf(cooler, 39, "NA");
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1577 snprintf(fan, 39, "NA");
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1578 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
1579 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
1580 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
1581 snprintf(use_fan, 39, "NA");
355
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1582 snprintf(room_temp, 39, "NA");
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1583
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
1584 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
1585 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
1586 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
1587 } 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
1588 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
1589 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
1590 } 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
1591 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
1592 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
1593 }
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1594
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
1595 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
1596 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
1597 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
1598 }
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
1599 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
1600 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
1601 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
1602 }
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
1603 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
1604 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
1605 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
1606 }
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
1607 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
1608 snprintf(door, 39, "%d", unit->door_state);
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1609 }
355
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1610 if (Config.temp_address) {
8f946f9d125a Added logging of the room temperature.
Michiel Broek <mbroek@mbse.eu>
parents: 352
diff changeset
1611 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
1612 }
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1613
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
1614 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
1615 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
1616 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
1617 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
1618 filename = xstrcpy(unit->name);
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1619 filename = xstrcat(filename, (char *)".log");
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1620 logger(filename, buf);
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1621 free(filename);
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1622 filename = NULL;
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1623 }
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1624 }
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1625
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1626 minutes++;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1627 if (minutes == 60) {
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1628 minutes = 0;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1629 /*
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1630 * Log usage counters every hour
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1631 */
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1632 for (unit = Config.units; unit; unit = unit->next) {
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1633 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
1634 }
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1635 }
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1636
227
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1637 /*
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1638 * Save the configuration each half hour.
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1639 */
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1640 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
1641 wrconfig();
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1642 }
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1643 }
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
1644
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
1645 #ifdef HAVE_WIRINGPI_H
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1646 key = keycheck();
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
1647 if (key != KEY_NONE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
1648 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
1649 #endif
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
1650
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1651 usleep(100000);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1652
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1653 } while (run);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1654
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1655 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1656 * Stop units processing in a neat way
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1657 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1658 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1659 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1660 * Turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1661 */
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1662 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
1663 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
1664 device_out(unit->heater_address, unit->heater_state);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1665 device_out(unit->cooler_address, unit->cooler_state);
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1666 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
1667 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
1668 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
1669 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1670
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1671 if (debug)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1672 fprintf(stdout, (char *)"Out of loop\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1673
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1674 /*
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1675 * Give threads time to cleanup
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1676 */
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1677 usleep(1500000);
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1678
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
1679 #ifdef HAVE_WIRINGPI_H
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1680 stopLCD();
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
1681 #endif
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1682
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
1683 wrconfig();
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
1684 ulockprog((char *)"thermferm");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1685 return 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1686 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1687

mercurial