thermferm/units.c

Mon, 04 Aug 2014 23:34:22 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 04 Aug 2014 23:34:22 +0200
changeset 179
417ee898fb02
parent 175
b73490398368
child 181
4099412fca09
permissions
-rw-r--r--

Added PID implementation and 433 MHz radio control switches. Not reliable yet.

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;
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
61 devices_list *device;
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
62 int rc, temp, deviation;
93
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 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 * Initialize units for processing
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 for (unit = Config.units; unit; unit = unit->next) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 * Safety, turn everything off
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 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
72 if (unit->profile && (int)unit->prof_started && (unit->mode == UNITMODE_PROFILE)) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 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
74 } else if (unit->mode == UNITMODE_BEER) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 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
76 } else if (unit->mode == UNITMODE_FRIDGE) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 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
78 } else if (unit->mode == UNITMODE_NONE) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 syslog(LOG_NOTICE, "Starting unit %s in inactive state", unit->name);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 } else {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 syslog(LOG_NOTICE, "Starting unit %s in off state", unit->name);
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
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 syslog(LOG_NOTICE, "Thread my_units_loop started");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 if (debug)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87 fprintf(stdout, "Thread my_units_loop started\n");
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 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 * Loop forever until the external shutdown variable is set.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 for (;;) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 break;
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 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 * Update the state of all fermenter units
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 for (unit = Config.units; unit; unit = unit->next) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105 if (unit->air_address) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
106 rc = read_w1_28(unit->air_address, &temp);
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
107 if (rc == DEVPRESENT_YES) {
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 * It is possible to have read errors or extreme values.
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 * This can happen with bad connections so we compare the
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 * value with the previous one. If the difference is too
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 * 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
113 * 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
114 * Maximum error is 40 degrees for now.
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 */
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
116 deviation = 40000;
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
117 if ((unit->air_temperature == 0) ||
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
118 (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
119 unit->air_temperature = temp;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
120 unit->air_state = 0;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121 } else {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
122 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
123 if (debug) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
124 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
125 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 }
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
127 } else if (rc == DEVPRESENT_ERROR) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
128 unit->air_state = 1;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
129 } else {
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
130 unit->air_state = 2;
93
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 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 if (unit->beer_address) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
137 rc = read_w1_28(unit->beer_address, &temp);
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
138 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
139 deviation = 40000;
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
140 if ((unit->beer_temperature == 0) ||
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
141 (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
142 unit->beer_temperature = temp;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
143 unit->beer_state = 0;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144 } else {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
145 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
146 if (debug) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
147 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
148 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
149 }
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 164
diff changeset
150 } else if (rc == DEVPRESENT_ERROR) {
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
151 unit->beer_state = 1;
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
152 } else {
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
153 unit->beer_state = 2;
93
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 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 if (my_shutdown)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157 break;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
159 device_out(unit->heater_address, unit->heater_state);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
160 if (my_shutdown)
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
161 break;
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
162 device_out(unit->cooler_address, unit->cooler_state);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
163 if (my_shutdown)
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
164 break;
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
165 device_out(unit->fan_address, unit->fan_state);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
166 if (my_shutdown)
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 175
diff changeset
167 break;
93
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 usleep(10000);
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171
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 * Stop units processing in a neat way
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
174 */
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
175 for (unit = Config.units; unit; unit = unit->next) {
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
176 /*
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 * Turn everything off
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 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
180 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
181 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
182
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
183 syslog(LOG_NOTICE, "Thread my_units_loop stopped");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
184 if (debug)
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
185 fprintf(stdout, "Thread my_units_loop stopped\n");
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
186 return 0;
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
187 }
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
188
b759f814469d Added units processing thread
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
189

mercurial