Tue, 02 Sep 2014 15:07:34 +0200
PROFILE PUT command logging added.
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
1 | #ifndef _MBSELIB_H |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
2 | #define _MBSELIB_H |
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 | |
9322c619c525
Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | #define TRUE 1 |
9322c619c525
Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | #define FALSE 0 |
9322c619c525
Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
8 | #include "../config.h" |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
9 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
10 | #include <stdlib.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
11 | #include <stdio.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
12 | #include <stdint.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
13 | #include <stdarg.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
14 | #include <string.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
15 | #include <ctype.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
16 | #include <sys/types.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
17 | #include <sys/stat.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
18 | #include <sys/time.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
19 | #include <time.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
20 | #include <fcntl.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
21 | #include <syslog.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
22 | #include <unistd.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
23 | #include <errno.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
24 | #include <signal.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
25 | #include <getopt.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
26 | #include <limits.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
27 | #include <sys/socket.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
28 | #include <arpa/inet.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
29 | #include <netdb.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
30 | #include <poll.h> |
84 | 31 | #include <dirent.h> |
79 | 32 | #include <uuid/uuid.h> |
262
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
33 | #include <math.h> |
74 | 34 | #ifndef HAVE_WIRINGPI_H |
35 | #include <pthread.h> | |
36 | #endif | |
73 | 37 | #include <libxml/xmlmemory.h> |
38 | #include <libxml/parser.h> | |
75
4b976601737d
Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents:
74
diff
changeset
|
39 | #include <libxml/encoding.h> |
4b976601737d
Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents:
74
diff
changeset
|
40 | #include <libxml/xmlwriter.h> |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
41 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
42 | #ifdef HAVE_WIRINGPI_H |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
43 | /* wiringPi */ |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
44 | #include <wiringPi.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
45 | #include <pcf8574.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
46 | #include <lcd.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
47 | |
215
5ad534c79a22
Do not use 100% cpu on a system without devices
Michiel Broek <mbroek@mbse.eu>
parents:
214
diff
changeset
|
48 | |
240
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
49 | /* |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
50 | * Thread locks |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
51 | */ |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
52 | #define LOCK_DEVICES 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
|
53 | #define LOCK_LCD 1 |
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
|
54 | #define LOCK_MENU 2 |
240
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
55 | #define LOCK_SPARE2 3 |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
56 | |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
57 | |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
58 | |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
59 | /* |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
60 | * Frontpanel menu numbers |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
61 | */ |
214
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
62 | #define MENU_NONE 0 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
63 | #define MENU_TOP_DEFAULT 1 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
64 | #define MENU_TOP_UNITS 2 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
65 | #define MENU_UNITS 21 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
66 | #define MENU_MODE_OFF 211 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
67 | #define MENU_MODE_NONE 212 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
68 | #define MENU_NONE_HEAT 2121 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
69 | #define MENU_NONE_COOL 2122 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
70 | #define MENU_NONE_FAN 2123 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
71 | #define MENU_MODE_BEER 213 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
72 | #define MENU_BEER_TEMP 2131 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
73 | #define MENU_MODE_FRIDGE 214 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
74 | #define MENU_FRIDGE_TEMP 2141 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
75 | #define MENU_MODE_PROFILE 215 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
76 | #define MENU_PROFILE_SELECT 2151 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
77 | #define MENU_PROFILE_START 2152 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
78 | #define MENU_PROFILE_PAUSE 2153 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
79 | #define MENU_PROFILE_ABORT 2154 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
80 | #define MENU_PROFILE_RESUME 2155 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
81 | #define MENU_PROFILE_GOOFF 2156 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
82 | #define MENU_TOP_SYS 3 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
83 | #define MENU_SYS_HALT 31 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
84 | #define MENU_SYS_REBOOT 32 |
205 | 85 | |
215
5ad534c79a22
Do not use 100% cpu on a system without devices
Michiel Broek <mbroek@mbse.eu>
parents:
214
diff
changeset
|
86 | #endif |
205 | 87 | |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
88 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
89 | #define TRUE 1 |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
90 | #define FALSE 0 |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
91 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
92 | #define MBSE_SS(x) (x)?(x):"(null)" |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
93 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
94 | |
71 | 95 | /* |
96 | * Fermenter units. These units are connected via the 1-wire bus. | |
97 | * Each unit can have: | |
98 | * a DS18B20 sensor to measure the air temperature inside the unit. | |
99 | * a DS18B20 sensor to measure the beer temperature. | |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
100 | * a DS2413 to turn the cooler and heater on or off. |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
101 | * a DS2413 to switch the fan and sense the door. |
71 | 102 | */ |
103 | typedef struct _units_list { | |
104 | struct _units_list *next; | |
89 | 105 | int version; /* Record version */ |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
106 | char *uuid; /* uid code */ |
71 | 107 | char *name; /* friendly name */ |
108 | float volume; /* Volume of this unit */ | |
109 | char *air_address; /* DS18B20 address */ | |
101
1302abe92eb1
Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents:
95
diff
changeset
|
110 | int air_state; /* 0=ok, 1=missing, 2=error */ |
1302abe92eb1
Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents:
95
diff
changeset
|
111 | int air_temperature; /* Air temperature in C * 1000 */ |
71 | 112 | char *beer_address; /* DS18B20 address */ |
101
1302abe92eb1
Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents:
95
diff
changeset
|
113 | int beer_state; /* 0=ok, 1=missing, 2=error */ |
1302abe92eb1
Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents:
95
diff
changeset
|
114 | int beer_temperature; /* Beer temperature in C * 1000 */ |
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:
165
diff
changeset
|
115 | char *heater_address; /* Heater relay or PWM */ |
270
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
116 | int heater_state; /* Heater state 0..100 */ |
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
117 | int heater_delay; /* Heater delay time /15 sec */ |
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
118 | int heater_wait; /* Heater wait counter */ |
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:
165
diff
changeset
|
119 | char *cooler_address; /* Cooler relay or PWM */ |
270
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
120 | int cooler_state; /* Cooler state 0..100 */ |
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
121 | int cooler_delay; /* Cooler delay time /15 sec */ |
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
122 | int cooler_wait; /* Cooler wait counter */ |
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:
165
diff
changeset
|
123 | char *fan_address; /* Fan relay or PWM */ |
270
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
124 | int fan_state; /* Fan state 0..100 */ |
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
125 | int fan_delay; /* Fan delay time /15 sec */ |
df81d583c2c3
The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents:
262
diff
changeset
|
126 | int fan_wait; /* Fan wait counter */ |
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:
165
diff
changeset
|
127 | char *door_address; /* Door input address */ |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
128 | int door_state; /* Door and light status */ |
71 | 129 | int mode; /* Unit mode */ |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
130 | float beer_set; /* Beer temperature setting */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
131 | float fridge_set; /* Fridge temperature setting */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
132 | float temp_set_min; /* Minimum temperature */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
133 | float temp_set_max; /* Maximum temperature */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
134 | float idle_rangeL; /* Idle temperature low */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
135 | float idle_rangeH; /* Idle range high */ |
132
8bd209d1c020
Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents:
106
diff
changeset
|
136 | char *profile; /* Active profile uuid */ |
71 | 137 | time_t prof_started; /* Profile start time */ |
89 | 138 | int prof_state; /* Profile OFF|PAUSE|RUN|DONE */ |
157
259a018758f9
Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents:
136
diff
changeset
|
139 | float prof_target; /* Profile current target temp */ |
194
9eaaba49450f
Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents:
191
diff
changeset
|
140 | time_t prof_paused; /* Profile total pause time */ |
185 | 141 | float PID_I_err; /* PID Intergal error */ |
176
8c7d87a2c094
Initial code for a simple PID controller.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
142 | float PID_err_old; /* PID old error value */ |
71 | 143 | } units_list; |
144 | ||
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
145 | #define UNITMODE_OFF 0 /* Unit turned off */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
146 | #define UNITMODE_NONE 1 /* Unit on but does nothing */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
147 | #define UNITMODE_FRIDGE 2 /* Unit acts as a fridge */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
148 | #define UNITMODE_BEER 3 /* Unit acts as beer cooler */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
149 | #define UNITMODE_PROFILE 4 /* Unit runs in profile mode */ |
71 | 150 | |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
151 | |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
152 | /* |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
153 | * Fermenting steps |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
154 | */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
155 | typedef struct _prof_step { |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
156 | struct _prof_step *next; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
157 | int version; /* Version 1 */ |
92 | 158 | int steptime; /* Step time to target in hours */ |
159 | int resttime; /* Rest time on target in hours */ | |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
160 | float target; /* Target temperature */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
161 | } prof_step; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
162 | |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
163 | /* |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
164 | * Fermenting profiles |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
165 | */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
166 | typedef struct _prof_list { |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
167 | struct _prof_list *next; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
168 | int version; /* Version 1 */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
169 | char *uuid; /* Profile uuid */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
170 | char *name; /* Profile name */ |
136
264e5ee5abfc
Profiles now have a busy state
Michiel Broek <mbroek@mbse.eu>
parents:
132
diff
changeset
|
171 | int busy; /* Profile busy == 1, free == 0 */ |
191
c74bbc24a1c8
Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents:
185
diff
changeset
|
172 | float inittemp; /* Temp target before start */ |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
173 | prof_step *steps; /* Profile steps */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
174 | } profiles_list; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
175 | |
89 | 176 | #define PROFILE_OFF 0 /* Profile not active */ |
177 | #define PROFILE_PAUSE 1 /* Profile pause */ | |
178 | #define PROFILE_RUN 2 /* Profile is running */ | |
179 | #define PROFILE_DONE 3 /* Profile is finished */ | |
218 | 180 | #define PROFILE_ABORT 4 /* Profile abort */ |
181 | ||
89 | 182 | |
158 | 183 | /* |
184 | * External devices like sensors, relays. | |
185 | */ | |
186 | typedef struct _dev_list { | |
187 | struct _dev_list *next; | |
188 | int version; /* Version 1 */ | |
189 | char *uuid; /* UUID of this device */ | |
190 | int type; /* Device type */ | |
191 | int direction; /* Device direction */ | |
192 | int value; /* Device value */ | |
209
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
206
diff
changeset
|
193 | int offset; /* Device offset value */ |
158 | 194 | int present; /* Device present */ |
195 | char *address; /* Device address */ | |
196 | int subdevice; /* Device sub address */ | |
197 | int gpiopin; /* Device GPIO pin or -1 */ | |
198 | char *description; /* Device description */ | |
199 | int inuse; /* In use counter */ | |
200 | char *comment; /* What we think it is */ | |
201 | time_t timestamp; /* Last updated */ | |
202 | } devices_list; | |
203 | ||
204 | #define DEVTYPE_NA 0 /* Unknown device type */ | |
205 | #define DEVTYPE_W1 1 /* 1-Wire bus */ | |
206 | #define DEVTYPE_GPIO 2 /* GPIO I/O device */ | |
207 | #define DEVTYPE_RC433 3 /* 433 MHz device */ | |
208 | #define DEVTYPE_DHT 4 /* DHT type device on GPIO */ | |
209 | #define DEVTYPE_I2C 5 /* I2C bus device */ | |
210 | #define DEVTYPE_SPI 6 /* SPI bus device */ | |
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
|
211 | #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
|
212 | #define DEVTYPE_SIM 7 /* Simulated device */ |
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
|
213 | #endif |
158 | 214 | |
215 | #define DEVPRESENT_UNDEF 0 /* Precence not testable */ | |
216 | #define DEVPRESENT_NO 1 /* Device is missing */ | |
217 | #define DEVPRESENT_YES 2 /* Device is detected */ | |
218 | #define DEVPRESENT_ERROR 3 /* Device is in error */ | |
219 | ||
220 | #define DEVDIR_UNDEF 0 /* Undefined */ | |
221 | #define DEVDIR_IN_BIN 1 /* Binary input */ | |
222 | #define DEVDIR_OUT_BIN 2 /* Binary output */ | |
223 | #define DEVDIR_IN_ANALOG 3 /* Temperature input etc. */ | |
224 | #define DEVDIR_OUT_ANALOG 4 /* Analog steering */ | |
225 | #define DEVDIR_OUT_PWM 5 /* PWM outout */ | |
162
6fc9e3f7962f
Added Raspberry GPIO devices
Michiel Broek <mbroek@mbse.eu>
parents:
158
diff
changeset
|
226 | #define DEVDIR_INTERN 6 /* Internal function */ |
71 | 227 | |
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
|
228 | #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
|
229 | |
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
|
230 | /* |
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
|
231 | * The frigo is a simulation of a fridge with a heating device. |
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
|
232 | * It has a volume air, a volume of your beer. There is a simulated |
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
|
233 | * thermal sensor that measures the air and one that measures the beer. |
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
|
234 | * It looks like a normal live setup. |
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
|
235 | */ |
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
|
236 | typedef struct _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
|
237 | struct _simulator *next; |
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
|
238 | int version; /* Version of this record */ |
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
|
239 | char *uuid; /* Simulator uuid */ |
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
|
240 | char *name; /* Simulator name */ |
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
|
241 | int volume_air; /* Volume air of the frigo */ |
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
|
242 | int volume_beer; /* Volume beer inside frigo */ |
262
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
243 | double room_temperature; /* Temp outside frigo */ |
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
244 | double air_temperature; /* Simulated air temperature */ |
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
245 | double beer_temperature; /* Simulated beer temperature */ |
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
246 | double cooler_temp; /* Lowest cooler temperature */ |
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
|
247 | int cooler_time; /* Time to reach temperature */ |
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
|
248 | float cooler_size; /* Size of cooler in square mtr */ |
262
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
249 | double heater_temp; /* Highest heater temperature */ |
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
|
250 | int heater_time; /* Time to reach temperature */ |
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
|
251 | float heater_size; /* Size of heater in square mtr */ |
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
|
252 | int heater_state; /* Heater status */ |
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
|
253 | int cooler_state; /* Cooler status */ |
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
|
254 | float frigo_isolation; /* Frigo isolation value */ |
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
|
255 | /* |
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
|
256 | * Status values, maintained by the simulator but stored |
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
|
257 | * here so they don't get lost over program restarts. |
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
|
258 | */ |
262
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
259 | double s_yeast_heat; /* Heat generated by yeast */ |
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
|
260 | time_t s_yeast_started; /* Start date/time fermentation */ |
262
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
261 | double s_cool_temp; /* Temp cooler */ |
d0014ccec615
Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents:
259
diff
changeset
|
262 | double s_heat_temp; /* Temp heater */ |
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
|
263 | time_t s_cool_changed; /* Start date/time cooler */ |
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
|
264 | time_t s_heat_changed; /* Start date/time heater */ |
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
|
265 | } simulator_list; |
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
|
266 | |
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
|
267 | #endif |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
268 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
269 | typedef struct _sys_config { |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
270 | char *name; /* Configuration name */ |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
271 | int my_port; /* my client/server port */ |
77
143077e54255
Added old configuration to write xml config
Michiel Broek <mbroek@mbse.eu>
parents:
76
diff
changeset
|
272 | unsigned char tempFormat; /* Temperature format, C or F */ |
206
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
273 | char *temp_address; /* Environment temperature */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
274 | int temp_state; /* 0=ok, 1=missing, 2=error */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
275 | int temp_value; /* Air temperature in C * 1000 */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
276 | char *hum_address; /* Environment huminity */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
277 | int hum_state; /* 0=ok, 1=missing, 2=error */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
278 | int hum_value; /* Huminity in % * 1000 */ |
66
805f1d285acd
Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents:
54
diff
changeset
|
279 | #ifdef HAVE_WIRINGPI_H |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
280 | int lcd_cols; /* LCD display columns */ |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
281 | int lcd_rows; /* LCD display rows */ |
78
c49ab5179bf3
Added lcd i2c address to xml configuration
Michiel Broek <mbroek@mbse.eu>
parents:
77
diff
changeset
|
282 | int lcd_address; /* LCD display i2c address */ |
66
805f1d285acd
Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents:
54
diff
changeset
|
283 | #endif |
71 | 284 | units_list *units; /* Fermenter units */ |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
285 | profiles_list *profiles; /* Ferment profiles */ |
158 | 286 | devices_list *devices; /* Sensors and switches */ |
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
|
287 | #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
|
288 | simulator_list *simulators; /* Simulators */ |
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
|
289 | #endif |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
290 | } sys_config; |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
291 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
292 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
293 | |
66
805f1d285acd
Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents:
54
diff
changeset
|
294 | #endif |