thermferm/units.c

Sun, 03 Aug 2014 22:49:33 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 03 Aug 2014 22:49:33 +0200
changeset 175
b73490398368
parent 170
3cb99272b84b
child 179
417ee898fb02
permissions
-rw-r--r--

Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.

93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 * Copyright (C) 2014
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 *
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 * Michiel Broek <mbroek at mbse dot eu>
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 *
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * This file is part of the mbsePi-apps
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 *
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 * This is free software; you can redistribute it and/or modify it
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * under the terms of the GNU General Public License as published by the
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * Free Software Foundation; either version 2, or (at your option) any
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * later version.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 *
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 * mbsePi-apps is distributed in the hope that it will be useful, but
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 * General Public License for more details.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 *
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 * along with EC-65K; see the file COPYING. If not, write to the Free
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 *****************************************************************************/
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 #include "thermferm.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 101
diff changeset
24 #include "units.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 101
diff changeset
25 #include "xutil.h"
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 extern int debug;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 extern sys_config Config;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 extern int my_shutdown;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 extern const char UNITMODE[5][8];
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 int read_w1_28(char *address, int *val)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 {
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
38 devices_list *device;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
39 int tmp;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
41 for (device = Config.devices; device; device = device->next) {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
42 if (strcmp(address, device->uuid) == 0) {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
43 tmp = device->value;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
44 *val = tmp;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
45 return device->present;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
49 return DEVPRESENT_NO;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 #ifdef HAVE_WIRINGPI_H
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 PI_THREAD (my_units_loop)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 #else
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 void *my_units_loop(void *threadid)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 #endif
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 units_list *unit;
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
61 int rc, temp, deviation;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 * Initialize units for processing
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 for (unit = Config.units; unit; unit = unit->next) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 * Safety, turn everything off
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = 0;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 if (unit->profile && (int)unit->prof_started && (unit->mode == UNITMODE_PROFILE)) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 syslog(LOG_NOTICE, "Starting unit %s profile %s", unit->name, unit->profile);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 } else if (unit->mode == UNITMODE_BEER) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 syslog(LOG_NOTICE, "Starting unit %s beer cooler at %.1f degrees", unit->name, unit->beer_set);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 } else if (unit->mode == UNITMODE_FRIDGE) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 syslog(LOG_NOTICE, "Starting unit %s as refridgerator at %.1f degrees", unit->name, unit->fridge_set);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 } else if (unit->mode == UNITMODE_NONE) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 syslog(LOG_NOTICE, "Starting unit %s in inactive state", unit->name);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 } else {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 syslog(LOG_NOTICE, "Starting unit %s in off state", unit->name);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 syslog(LOG_NOTICE, "Thread my_units_loop started");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 if (debug)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 fprintf(stdout, "Thread my_units_loop started\n");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89 * Loop forever until the external shutdown variable is set.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 for (;;) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97 * Update the state of all fermenter units
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 for (unit = Config.units; unit; unit = unit->next) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104 if (unit->air_address) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
105 rc = read_w1_28(unit->air_address, &temp);
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
106 if (rc == DEVPRESENT_YES) {
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 * It is possible to have read errors or extreme values.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 * This can happen with bad connections so we compare the
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 * value with the previous one. If the difference is too
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 * much, we don't send that value. That also means that if
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 * the next value is ok again, it will be marked invalid too.
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: 170
diff changeset
113 * Maximum error is 40 degrees for now.
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 */
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: 170
diff changeset
115 deviation = 40000;
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
116 if ((unit->air_temperature == 0) ||
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
117 (unit->air_temperature && (temp > (int)unit->air_temperature - deviation) && (temp < ((int)unit->air_temperature + deviation)))) {
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
118 unit->air_temperature = temp;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
119 unit->air_state = 0;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 } else {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
121 syslog(LOG_NOTICE, "deviation error deviation=%d, old=%d new=%d", deviation, unit->air_temperature, temp);
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122 if (debug) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
123 fprintf(stdout, "deviation error deviation=%d, old=%d new=%d\n", deviation, unit->air_temperature, temp);
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125 }
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
126 } else if (rc == DEVPRESENT_ERROR) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
127 unit->air_state = 1;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
128 } else {
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
129 unit->air_state = 2;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135 if (unit->beer_address) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
136 rc = read_w1_28(unit->beer_address, &temp);
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
137 if (rc == DEVPRESENT_YES) {
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: 170
diff changeset
138 deviation = 40000;
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
139 if ((unit->beer_temperature == 0) ||
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
140 (unit->beer_temperature && (temp > (int)unit->beer_temperature - deviation) && (temp < ((int)unit->beer_temperature + deviation)))) {
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
141 unit->beer_temperature = temp;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
142 unit->beer_state = 0;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143 } else {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
144 syslog(LOG_NOTICE, "deviation error deviation=%d, old=%d new=%d", deviation, unit->beer_temperature, temp);
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145 if (debug) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
146 fprintf(stdout, "deviation error deviation=%d, old=%d new=%d\n", deviation, unit->beer_temperature, temp);
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
148 }
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
149 } else if (rc == DEVPRESENT_ERROR) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
150 unit->beer_state = 1;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
151 } else {
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
152 unit->beer_state = 2;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
153 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
154 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
155 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
159 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 usleep(10000);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
163 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
164 * Stop units processing in a neat way
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
165 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
166 for (unit = Config.units; unit; unit = unit->next) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
167 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 * Turn everything off
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = 0;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171 syslog(LOG_NOTICE, "Stopped unit %s mode %s", unit->name, UNITMODE[unit->mode]);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
172 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
173
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
174 syslog(LOG_NOTICE, "Thread my_units_loop stopped");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
175 if (debug)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
176 fprintf(stdout, "Thread my_units_loop stopped\n");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 return 0;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
178 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
179
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
180

mercurial