thermferm/thermferm.h

Sat, 14 Nov 2015 16:52:33 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 14 Nov 2015 16:52:33 +0100
changeset 420
644a6106d712
parent 418
0bfe08c7ba6e
child 497
18ace27338e5
permissions
-rw-r--r--

The first ideas of the brewpanel simulation are in place.

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"
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 339
diff changeset
9 #include "pid.h"
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
10
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
11 #include <stdlib.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
12 #include <stdio.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
13 #include <stdint.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
14 #include <stdarg.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
15 #include <string.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
16 #include <ctype.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
17 #include <sys/types.h>
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
18 #include <sys/socket.h>
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
19 #include <sys/stat.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
20 #include <sys/time.h>
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
21 #include <sys/un.h>
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
22 #include <time.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
23 #include <fcntl.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
24 #include <syslog.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
25 #include <unistd.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
26 #include <errno.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
27 #include <signal.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
28 #include <getopt.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
29 #include <limits.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
30 #include <sys/socket.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
31 #include <arpa/inet.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
32 #include <netdb.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
33 #include <poll.h>
84
ef4c0032b51f Can list the 1-wire bus
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
34 #include <dirent.h>
79
eb9dd60aa791 Added uuid library
Michiel Broek <mbroek@mbse.eu>
parents: 78
diff changeset
35 #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
36 #include <math.h>
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 73
diff changeset
37 #ifndef HAVE_WIRINGPI_H
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 73
diff changeset
38 #include <pthread.h>
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 73
diff changeset
39 #endif
73
4a28de5b9b47 Changed include files
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
40 #include <libxml/xmlmemory.h>
4a28de5b9b47 Changed include files
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
41 #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
42 #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
43 #include <libxml/xmlwriter.h>
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
44
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
45 #ifdef HAVE_WIRINGPI_H
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
46 /* wiringPi */
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
47 #include <wiringPi.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
48 #include <pcf8574.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
49 #include <lcd.h>
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
50
215
5ad534c79a22 Do not use 100% cpu on a system without devices
Michiel Broek <mbroek@mbse.eu>
parents: 214
diff changeset
51
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
52 /*
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
53 * Thread locks
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
54 */
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
55 #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
56 #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
57 #define LOCK_MENU 2
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
58 #define LOCK_SPARE2 3
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
59
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
60 #endif
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
61
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
62
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
63 /*
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
64 * Frontpanel menu numbers
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 218
diff changeset
65 */
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
66 #define MENU_NONE 0
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
67 #define MENU_TOP_DEFAULT 1
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
68 #define MENU_TOP_UNITS 2
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
69 #define MENU_UNITS 21
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
70 #define MENU_MODE_OFF 211
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
71 #define MENU_MODE_NONE 212
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
72 #define MENU_NONE_HEAT 2121
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
73 #define MENU_NONE_COOL 2122
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
74 #define MENU_NONE_FAN 2123
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
75 #define MENU_MODE_BEER 213
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
76 #define MENU_BEER_TEMP 2131
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
77 #define MENU_MODE_FRIDGE 214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
78 #define MENU_FRIDGE_TEMP 2141
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
79 #define MENU_MODE_PROFILE 215
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
80 #define MENU_PROFILE_SELECT 2151
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
81 #define MENU_PROFILE_START 2152
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
82 #define MENU_PROFILE_PAUSE 2153
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
83 #define MENU_PROFILE_ABORT 2154
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
84 #define MENU_PROFILE_RESUME 2155
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
85 #define MENU_PROFILE_GOOFF 2156
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
86 #define MENU_TOP_SYS 3
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
87 #define MENU_SYS_HALT 31
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
88 #define MENU_SYS_REBOOT 32
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 194
diff changeset
89
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 194
diff changeset
90
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
91
339
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
92 /*
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
93 * 1-Wire devices
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
94 */
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
95 #define W1_FAMILY_DEFAULT 0
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
96 #define W1_FAMILY_SMEM_01 0x01
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
97 #define W1_FAMILY_SMEM_81 0x81
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
98 #define W1_THERM_DS18S20 0x10
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
99 #define W1_FAMILY_DS28E04 0x1C
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
100 #define W1_COUNTER_DS2423 0x1D
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
101 #define W1_THERM_DS1822 0x22
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
102 #define W1_EEPROM_DS2433 0x23
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
103 #define W1_THERM_DS18B20 0x28
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
104 #define W1_FAMILY_DS2408 0x29
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
105 #define W1_EEPROM_DS2431 0x2D
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
106 #define W1_FAMILY_DS2760 0x30
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
107 #define W1_FAMILY_DS2780 0x32
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
108 #define W1_FAMILY_DS2413 0x3A
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
109 #define W1_THERM_DS1825 0x3B
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
110 #define W1_FAMILY_DS2781 0x3D
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
111 #define W1_THERM_DS28EA00 0x42
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
112
16203280eea2 Added defines copied from kernel source with 1-Wire device family numbers.
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
113
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
114
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
115 #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
116
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
117
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
118 /*
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
119 * Fermenter units. These units are connected via the 1-wire bus.
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
120 * Each unit can have:
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
121 * a DS18B20 sensor to measure the air temperature inside the unit.
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
122 * a DS18B20 sensor(s) to measure the beer temperature.
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
123 * a DS2408 to turn the cooler, heater and fans on or off. Sense door and PSU state.
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
124 */
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
125 typedef struct _units_list {
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
126 struct _units_list *next;
89
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
127 int version; /* Record version */
76
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
128 char *uuid; /* uid code */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
129 char *name; /* friendly name */
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
130 float volume; /* Volume of this unit */
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
131 char *air_address; /* DS18B20 address */
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 95
diff changeset
132 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
133 int air_temperature; /* Air temperature in C * 1000 */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
134 char *beer_address; /* DS18B20 address */
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 95
diff changeset
135 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
136 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
137 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
138 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
139 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
140 int heater_wait; /* Heater wait counter */
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 292
diff changeset
141 int heater_usage; /* Heater usage in seconds */
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
142 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
143 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
144 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
145 int cooler_wait; /* Cooler wait counter */
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 292
diff changeset
146 int cooler_usage; /* Cooler usage in seconds */
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
147 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
148 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
149 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
150 int fan_wait; /* Fan wait counter */
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 292
diff changeset
151 int fan_usage; /* Fan usage in seconds */
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
152 char *light_address; /* Lights relay */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
153 int light_state; /* Lights state 0..100 */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
154 int light_delay; /* Lights delay time /15 sec */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
155 int light_wait; /* Lights wait counter */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
156 int light_usage; /* Lights usage in seconds */
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
157 char *door_address; /* Door input address */
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
158 int door_state; /* Door status */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
159 char *psu_address; /* Power Supply input address */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
160 int psu_state; /* Power Supply status */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
161 int mode; /* Unit mode */
76
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
162 float beer_set; /* Beer temperature setting */
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
163 float fridge_set; /* Fridge temperature setting */
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
164 float temp_set_min; /* Minimum temperature */
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
165 float temp_set_max; /* Maximum temperature */
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
166 char *profile; /* Active profile uuid */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
167 time_t prof_started; /* Profile start time */
89
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
168 int prof_state; /* Profile OFF|PAUSE|RUN|DONE */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
169 float prof_target_lo; /* Profile current target low */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
170 float prof_target_hi; /* Profile current target high */
194
9eaaba49450f Added some ideas about profiles.
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
171 time_t prof_paused; /* Profile total pause time */
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 270
diff changeset
172 int prof_percent; /* Profile percentage done */
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
173 float prof_peak_abs; /* Profile absolute peak temp */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
174 float prof_peak_rel; /* Profile relative peak temp */
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 284
diff changeset
175 time_t prof_primary_done; /* Profile primary is done */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
176 int prof_fridge_mode; /* Profile fridge/beer mode */
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 339
diff changeset
177 pid_var *PID_cool; /* PID cooler */
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 339
diff changeset
178 pid_var *PID_heat; /* PID heater */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
179 } units_list;
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
180
76
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
181 #define UNITMODE_OFF 0 /* Unit turned off */
d2c7b32f27d6 Can now write the fermenter units configurations
Michiel Broek <mbroek@mbse.eu>
parents: 75
diff changeset
182 #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
183 #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
184 #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
185 #define UNITMODE_PROFILE 4 /* Unit runs in profile mode */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
186
91
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
187
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
188 /*
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
189 * Fermenting steps
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
190 */
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
191 typedef struct _prof_step {
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
192 struct _prof_step *next;
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
193 int version; /* Version 1 */
92
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 91
diff changeset
194 int steptime; /* Step time to target in hours */
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 91
diff changeset
195 int resttime; /* Rest time on target in hours */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
196 float target_lo; /* Low Target temperature */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
197 float target_hi; /* High target temperature */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
198 int fridge_mode; /* Fridge or beer mode */
91
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
199 } prof_step;
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
200
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
201 /*
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
202 * Fermenting profiles
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
203 */
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
204 typedef struct _prof_list {
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
205 struct _prof_list *next;
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
206 int version; /* Version 1 */
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
207 char *uuid; /* Profile uuid */
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
208 char *name; /* Profile name */
136
264e5ee5abfc Profiles now have a busy state
Michiel Broek <mbroek@mbse.eu>
parents: 132
diff changeset
209 int busy; /* Profile busy == 1, free == 0 */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
210 float inittemp_lo; /* Low target before start */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
211 float inittemp_hi; /* High target before start */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
212 int fridge_mode; /* Fridge or beer mode */
91
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
213 prof_step *steps; /* Profile steps */
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
214 } profiles_list;
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
215
89
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
216 #define PROFILE_OFF 0 /* Profile not active */
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
217 #define PROFILE_PAUSE 1 /* Profile pause */
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
218 #define PROFILE_RUN 2 /* Profile is running */
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
219 #define PROFILE_DONE 3 /* Profile is finished */
218
311a293b3e46 Added profile state ABORT
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
220 #define PROFILE_ABORT 4 /* Profile abort */
311a293b3e46 Added profile state ABORT
Michiel Broek <mbroek@mbse.eu>
parents: 215
diff changeset
221
89
8bab04a663dd Added profile states
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
222
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
223 /*
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
224 * External devices like sensors, relays.
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
225 */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
226 typedef struct _dev_list {
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
227 struct _dev_list *next;
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
228 int version; /* Version 1 */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
229 char *uuid; /* UUID of this device */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
230 int type; /* Device type */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
231 int direction; /* Device direction */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
232 int value; /* Device value */
209
c5b1dfd83e81 Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
233 int offset; /* Device offset value */
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
234 int present; /* Device present */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
235 char *address; /* Device address */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
236 int subdevice; /* Device sub address */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
237 int gpiopin; /* Device GPIO pin or -1 */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
238 char *description; /* Device description */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
239 int inuse; /* In use counter */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
240 char *comment; /* What we think it is */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
241 time_t timestamp; /* Last updated */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
242 } devices_list;
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
243
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
244 #define DEVTYPE_NA 0 /* Unknown device type */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
245 #define DEVTYPE_W1 1 /* 1-Wire bus */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
246 #define DEVTYPE_GPIO 2 /* GPIO I/O device */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
247 #define DEVTYPE_RC433 3 /* 433 MHz device */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
248 #define DEVTYPE_DHT 4 /* DHT type device on GPIO */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
249 #define DEVTYPE_I2C 5 /* I2C bus device */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
250 #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
251 #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
252 #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
253 #endif
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
254
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
255 #define DEVPRESENT_UNDEF 0 /* Precence not testable */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
256 #define DEVPRESENT_NO 1 /* Device is missing */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
257 #define DEVPRESENT_YES 2 /* Device is detected */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
258 #define DEVPRESENT_ERROR 3 /* Device is in error */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
259
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
260 #define DEVDIR_UNDEF 0 /* Undefined */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
261 #define DEVDIR_IN_BIN 1 /* Binary input */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
262 #define DEVDIR_OUT_BIN 2 /* Binary output */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
263 #define DEVDIR_IN_ANALOG 3 /* Temperature input etc. */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
264 #define DEVDIR_OUT_ANALOG 4 /* Analog steering */
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
265 #define DEVDIR_OUT_PWM 5 /* PWM outout */
162
6fc9e3f7962f Added Raspberry GPIO devices
Michiel Broek <mbroek@mbse.eu>
parents: 158
diff changeset
266 #define DEVDIR_INTERN 6 /* Internal function */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
267
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
268 #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
269
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
270 /*
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
271 * 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
272 * 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
273 * 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
274 * 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
275 */
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
276 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
277 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
278 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
279 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
280 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
281 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
282 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
283 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
284 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
285 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
286 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
287 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
288 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
289 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
290 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
291 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
292 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
293 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
294 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
295 /*
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
296 * 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
297 * 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
298 */
262
d0014ccec615 Simulation of fridge cold loss to the room added for testing.
Michiel Broek <mbroek@mbse.eu>
parents: 259
diff changeset
299 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
300 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
301 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
302 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
303 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
304 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
305 } 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
306
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
307 #endif
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
308
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
309 typedef struct _sys_config {
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
310 char *name; /* Configuration name */
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
311 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
312 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
313 char *temp_address; /* Environment temperature */
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 205
diff changeset
314 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
315 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
316 char *hum_address; /* Environment huminity */
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 205
diff changeset
317 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
318 int hum_value; /* Huminity in % * 1000 */
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
319 int lcd_cols; /* LCD display columns */
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
320 int lcd_rows; /* LCD display rows */
78
c49ab5179bf3 Added lcd i2c address to xml configuration
Michiel Broek <mbroek@mbse.eu>
parents: 77
diff changeset
321 int lcd_address; /* LCD display i2c address */
71
a09c5cdc4022 Removed rc-switch
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
322 units_list *units; /* Fermenter units */
91
901ca9858a7a Added fermenting profiles to the configuration
Michiel Broek <mbroek@mbse.eu>
parents: 89
diff changeset
323 profiles_list *profiles; /* Ferment profiles */
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 157
diff changeset
324 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
325 #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
326 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
327 #endif
51
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
328 } sys_config;
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
329
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
330
a03b6dac5398 Removed library, bumped to version 0.0.7
Michiel Broek <mbroek@mbse.eu>
parents: 48
diff changeset
331
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 54
diff changeset
332 #endif

mercurial