Sat, 16 Aug 2014 17:11:09 +0200
Selecting units in setup does now work. Menu select variables are protected with thread locking.
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> |
74 | 33 | #ifndef HAVE_WIRINGPI_H |
34 | #include <pthread.h> | |
35 | #endif | |
73 | 36 | #include <libxml/xmlmemory.h> |
37 | #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
|
38 | #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
|
39 | #include <libxml/xmlwriter.h> |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
40 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
41 | #ifdef HAVE_WIRINGPI_H |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
42 | /* wiringPi */ |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
43 | #include <wiringPi.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
44 | #include <pcf8574.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
45 | #include <lcd.h> |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
46 | |
215
5ad534c79a22
Do not use 100% cpu on a system without devices
Michiel Broek <mbroek@mbse.eu>
parents:
214
diff
changeset
|
47 | |
240
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
48 | /* |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
49 | * Thread locks |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
50 | */ |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
51 | #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
|
52 | #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
|
53 | #define LOCK_MENU 2 |
240
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
54 | #define LOCK_SPARE2 3 |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
55 | |
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 | * Frontpanel menu numbers |
6bdda35b4a13
Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents:
218
diff
changeset
|
60 | */ |
214
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
61 | #define MENU_NONE 0 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
62 | #define MENU_TOP_DEFAULT 1 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
63 | #define MENU_TOP_UNITS 2 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
64 | #define MENU_UNITS 21 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
65 | #define MENU_MODE_OFF 211 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
66 | #define MENU_MODE_NONE 212 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
67 | #define MENU_NONE_HEAT 2121 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
68 | #define MENU_NONE_COOL 2122 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
69 | #define MENU_NONE_FAN 2123 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
70 | #define MENU_MODE_BEER 213 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
71 | #define MENU_BEER_TEMP 2131 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
72 | #define MENU_MODE_FRIDGE 214 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
73 | #define MENU_FRIDGE_TEMP 2141 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
74 | #define MENU_MODE_PROFILE 215 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
75 | #define MENU_PROFILE_SELECT 2151 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
76 | #define MENU_PROFILE_START 2152 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
77 | #define MENU_PROFILE_PAUSE 2153 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
78 | #define MENU_PROFILE_ABORT 2154 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
79 | #define MENU_PROFILE_RESUME 2155 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
80 | #define MENU_PROFILE_GOOFF 2156 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
81 | #define MENU_TOP_SYS 3 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
82 | #define MENU_SYS_HALT 31 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
83 | #define MENU_SYS_REBOOT 32 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
84 | #define MENU_SYS_MASH 33 |
37d1eb0e1d66
Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents:
209
diff
changeset
|
85 | #define MENU_SYS_THERMS 34 |
205 | 86 | |
215
5ad534c79a22
Do not use 100% cpu on a system without devices
Michiel Broek <mbroek@mbse.eu>
parents:
214
diff
changeset
|
87 | #endif |
205 | 88 | |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
89 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
90 | #define TRUE 1 |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
91 | #define FALSE 0 |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
92 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
93 | #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
|
94 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
95 | |
71 | 96 | /* |
97 | * Fermenter units. These units are connected via the 1-wire bus. | |
98 | * Each unit can have: | |
99 | * a DS18B20 sensor to measure the air temperature inside the unit. | |
100 | * 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
|
101 | * 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
|
102 | * a DS2413 to switch the fan and sense the door. |
71 | 103 | */ |
104 | typedef struct _units_list { | |
105 | struct _units_list *next; | |
89 | 106 | int version; /* Record version */ |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
107 | char *uuid; /* uid code */ |
71 | 108 | char *name; /* friendly name */ |
109 | float volume; /* Volume of this unit */ | |
110 | char *air_address; /* DS18B20 address */ | |
101
1302abe92eb1
Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents:
95
diff
changeset
|
111 | 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
|
112 | int air_temperature; /* Air temperature in C * 1000 */ |
71 | 113 | char *beer_address; /* DS18B20 address */ |
101
1302abe92eb1
Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents:
95
diff
changeset
|
114 | 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
|
115 | 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
|
116 | char *heater_address; /* Heater relay or PWM */ |
71 | 117 | int heater_state; /* Heater status */ |
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
|
118 | char *cooler_address; /* Cooler relay or PWM */ |
71 | 119 | int cooler_state; /* Cooler status */ |
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
|
120 | char *fan_address; /* Fan relay or PWM */ |
71 | 121 | int fan_state; /* Fan status */ |
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
|
122 | char *door_address; /* Door input address */ |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
123 | int door_state; /* Door and light status */ |
71 | 124 | int mode; /* Unit mode */ |
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
125 | float beer_set; /* Beer temperature setting */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
126 | float fridge_set; /* Fridge temperature setting */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
127 | float temp_set_min; /* Minimum temperature */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
128 | float temp_set_max; /* Maximum temperature */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
129 | float idle_rangeL; /* Idle temperature low */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
130 | 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
|
131 | char *profile; /* Active profile uuid */ |
71 | 132 | time_t prof_started; /* Profile start time */ |
89 | 133 | 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
|
134 | float prof_target; /* Profile current target temp */ |
194
9eaaba49450f
Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents:
191
diff
changeset
|
135 | time_t prof_paused; /* Profile total pause time */ |
185 | 136 | 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
|
137 | float PID_err_old; /* PID old error value */ |
71 | 138 | } units_list; |
139 | ||
76
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
140 | #define UNITMODE_OFF 0 /* Unit turned off */ |
d2c7b32f27d6
Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents:
75
diff
changeset
|
141 | #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
|
142 | #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
|
143 | #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
|
144 | #define UNITMODE_PROFILE 4 /* Unit runs in profile mode */ |
71 | 145 | |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
146 | |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
147 | /* |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
148 | * Fermenting steps |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
149 | */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
150 | typedef struct _prof_step { |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
151 | struct _prof_step *next; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
152 | int version; /* Version 1 */ |
92 | 153 | int steptime; /* Step time to target in hours */ |
154 | 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
|
155 | float target; /* Target temperature */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
156 | } prof_step; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
157 | |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
158 | /* |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
159 | * Fermenting profiles |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
160 | */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
161 | typedef struct _prof_list { |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
162 | struct _prof_list *next; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
163 | int version; /* Version 1 */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
164 | char *uuid; /* Profile uuid */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
165 | char *name; /* Profile name */ |
136
264e5ee5abfc
Profiles now have a busy state
Michiel Broek <mbroek@mbse.eu>
parents:
132
diff
changeset
|
166 | 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
|
167 | float inittemp; /* Temp target before start */ |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
168 | prof_step *steps; /* Profile steps */ |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
169 | } profiles_list; |
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
170 | |
89 | 171 | #define PROFILE_OFF 0 /* Profile not active */ |
172 | #define PROFILE_PAUSE 1 /* Profile pause */ | |
173 | #define PROFILE_RUN 2 /* Profile is running */ | |
174 | #define PROFILE_DONE 3 /* Profile is finished */ | |
218 | 175 | #define PROFILE_ABORT 4 /* Profile abort */ |
176 | ||
89 | 177 | |
158 | 178 | /* |
179 | * External devices like sensors, relays. | |
180 | */ | |
181 | typedef struct _dev_list { | |
182 | struct _dev_list *next; | |
183 | int version; /* Version 1 */ | |
184 | char *uuid; /* UUID of this device */ | |
185 | int type; /* Device type */ | |
186 | int direction; /* Device direction */ | |
187 | int value; /* Device value */ | |
209
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
206
diff
changeset
|
188 | int offset; /* Device offset value */ |
158 | 189 | int present; /* Device present */ |
190 | char *address; /* Device address */ | |
191 | int subdevice; /* Device sub address */ | |
192 | int gpiopin; /* Device GPIO pin or -1 */ | |
193 | char *description; /* Device description */ | |
194 | int inuse; /* In use counter */ | |
195 | char *comment; /* What we think it is */ | |
196 | time_t timestamp; /* Last updated */ | |
197 | } devices_list; | |
198 | ||
199 | #define DEVTYPE_NA 0 /* Unknown device type */ | |
200 | #define DEVTYPE_W1 1 /* 1-Wire bus */ | |
201 | #define DEVTYPE_GPIO 2 /* GPIO I/O device */ | |
202 | #define DEVTYPE_RC433 3 /* 433 MHz device */ | |
203 | #define DEVTYPE_DHT 4 /* DHT type device on GPIO */ | |
204 | #define DEVTYPE_I2C 5 /* I2C bus device */ | |
205 | #define DEVTYPE_SPI 6 /* SPI bus device */ | |
206 | ||
207 | #define DEVPRESENT_UNDEF 0 /* Precence not testable */ | |
208 | #define DEVPRESENT_NO 1 /* Device is missing */ | |
209 | #define DEVPRESENT_YES 2 /* Device is detected */ | |
210 | #define DEVPRESENT_ERROR 3 /* Device is in error */ | |
211 | ||
212 | #define DEVDIR_UNDEF 0 /* Undefined */ | |
213 | #define DEVDIR_IN_BIN 1 /* Binary input */ | |
214 | #define DEVDIR_OUT_BIN 2 /* Binary output */ | |
215 | #define DEVDIR_IN_ANALOG 3 /* Temperature input etc. */ | |
216 | #define DEVDIR_OUT_ANALOG 4 /* Analog steering */ | |
217 | #define DEVDIR_OUT_PWM 5 /* PWM outout */ | |
162
6fc9e3f7962f
Added Raspberry GPIO devices
Michiel Broek <mbroek@mbse.eu>
parents:
158
diff
changeset
|
218 | #define DEVDIR_INTERN 6 /* Internal function */ |
71 | 219 | |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
220 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
221 | typedef struct _sys_config { |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
222 | char *name; /* Configuration name */ |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
223 | 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
|
224 | 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
|
225 | char *temp_address; /* Environment temperature */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
226 | 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
|
227 | 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
|
228 | char *hum_address; /* Environment huminity */ |
78fb6f99e473
Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents:
205
diff
changeset
|
229 | 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
|
230 | 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
|
231 | #ifdef HAVE_WIRINGPI_H |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
232 | int lcd_cols; /* LCD display columns */ |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
233 | int lcd_rows; /* LCD display rows */ |
78
c49ab5179bf3
Added lcd i2c address to xml configuration
Michiel Broek <mbroek@mbse.eu>
parents:
77
diff
changeset
|
234 | 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
|
235 | #endif |
71 | 236 | units_list *units; /* Fermenter units */ |
91
901ca9858a7a
Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents:
89
diff
changeset
|
237 | profiles_list *profiles; /* Ferment profiles */ |
158 | 238 | devices_list *devices; /* Sensors and switches */ |
51
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
239 | } sys_config; |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
240 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
241 | |
a03b6dac5398
Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents:
48
diff
changeset
|
242 | |
66
805f1d285acd
Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents:
54
diff
changeset
|
243 | #endif |