thermferm/thermferm.c

Sun, 07 Apr 2024 16:05:06 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 07 Apr 2024 16:05:06 +0200
changeset 665
66fae54fa7ba
parent 661
8c1e7a52e24f
child 666
48cc8868f9f4
permissions
-rw-r--r--

Fermentation processing in it's own function.

26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
654
e981d0185485 Added one-wire thread and some old state table macro's. The state machine first state scans new one-wire devices and stores them in a linked list.
Michiel Broek <mbroek@mbse.eu>
parents: 652
diff changeset
2 * Copyright (C) 2014-2024
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 * Michiel Broek <mbroek at mbse dot eu>
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * This file is part of the mbsePi-apps
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 * This is free software; you can redistribute it and/or modify it
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * under the terms of the GNU General Public License as published by the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * Free Software Foundation; either version 2, or (at your option) any
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * later version.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 * mbsePi-apps is distributed in the hope that it will be useful, but
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 * General Public License for more details.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 *
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
19 * along with ThermFerm; see the file COPYING. If not, write to the Free
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 *****************************************************************************/
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
23 #include "lock.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
24 #include "rdconfig.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
25 #include "server.h"
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
26 #include "thermferm.h"
654
e981d0185485 Added one-wire thread and some old state table macro's. The state machine first state scans new one-wire devices and stores them in a linked list.
Michiel Broek <mbroek@mbse.eu>
parents: 652
diff changeset
27 #include "devices.h"
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 651
diff changeset
28 #include "delay.h"
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
29 #include "simulator.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
30 #include "lcd-pcf8574.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
31 #include "lcd-buffer.h"
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
32 #include "slcd.h"
198
20716bcff2b0 Added dependencies for panel
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
33 #include "panel.h"
654
e981d0185485 Added one-wire thread and some old state table macro's. The state machine first state scans new one-wire devices and stores them in a linked list.
Michiel Broek <mbroek@mbse.eu>
parents: 652
diff changeset
34 #include "one-wire.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
35 #include "futil.h"
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 105
diff changeset
36 #include "xutil.h"
316
73cd31dc6ce1 Moved pid function to separate files
Michiel Broek <mbroek@mbse.eu>
parents: 315
diff changeset
37 #include "pid.h"
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
38 #include "mqtt.h"
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
39 #include "statetbl.h"
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
42 int my_shutdown = FALSE;
550
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
43 int my_reboot = FALSE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 static pid_t pgrp, mypid;
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
45 int run_pause = FALSE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
46 int run_hold = FALSE;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
47 int row;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
49 extern int debug;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 extern sys_config Config;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 extern int lcdHandle;
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
52 extern int slcdHandle;
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
53 extern int my_devices_state;
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
54 extern int my_devices_shutdown;
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
55 extern int my_panel_state;
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
56 extern int my_panel_shutdown;
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
57 extern int my_server_state;
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
58 extern int my_server_shutdown;
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
59 extern int my_simulator_state;
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
60 #ifdef USE_SIMULATOR
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
61 extern int my_simulator_shutdown;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
62 #endif
654
e981d0185485 Added one-wire thread and some old state table macro's. The state machine first state scans new one-wire devices and stores them in a linked list.
Michiel Broek <mbroek@mbse.eu>
parents: 652
diff changeset
63 extern int my_one_wire_state;
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
64 extern int my_one_wire_shutdown;
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
65 int setupmenu = MENU_NONE;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
66 units_list *current_unit = NULL; /* In panel editor this points to the current unit. */
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
67 float temp_temp = 20.0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
68
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
69 pthread_t my_one_wire_thread;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
70 pthread_t my_devices_thread;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
71 pthread_t my_panel_thread;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
72 pthread_t my_server_thread;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
73 #ifdef USE_SIMULATOR
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
74 pthread_t my_simulator_thread;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
75 #endif
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
76
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
77 pthread_mutex_t mutexes[5];
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
78
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
79 extern const char UNITMODE[5][8];
195
b34a1b2421fb Reset output when a different profile is selected. Better startup logging about the unit state. Added Beer, Fridge and partial Profile settings from the liveview weeb screen.
Michiel Broek <mbroek@mbse.eu>
parents: 194
diff changeset
80 extern const char PROFSTATE[4][6];
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
81
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
82 extern int sock;
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
83
40
dafbbd5e9922 Prepared unix socket communication
Michiel Broek <mbroek@mbse.eu>
parents: 34
diff changeset
84
484
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
85 unsigned char degC[8] = { 0b01000, 0b10100, 0b01000, 0b00111, 0b01000, 0b01000, 0b01000, 0b00111 }; // [1] degree c sybmol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
86 unsigned char SP_Symbol[8] = { 0b11100, 0b10000, 0b11100, 0b00111, 0b11101, 0b00111, 0b00100, 0b00100 }; // [2] SP Symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
87 unsigned char CoolONOFF[8] = { 0b00000, 0b01110, 0b01000, 0b01000, 0b01000, 0b01000, 0b01110, 0b00000 }; // [3] Cool Symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
88 unsigned char RevCoolONOFF[8] = { 0b11111, 0b10001, 0b10111, 0b10111, 0b10111, 0b10111, 0b10001, 0b11111 }; // [4] Reverse Cool Symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
89 unsigned char HeatONOFF[8] = { 0b00000, 0b01010, 0b01010, 0b01110, 0b01110, 0b01010, 0b01010, 0b00000 }; // [5] HEAT symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
90 unsigned char RevHeatONOFF[8] = { 0b11111, 0b10101, 0b10101, 0b10001, 0b10001, 0b10101, 0b10101, 0b11111 }; // [6] reverse HEAT symbol
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
91
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
92
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
93 int server(void);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 void help(void);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 void die(int);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
96 void stopLCD(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
97 #ifdef HAVE_WIRINGPI_H
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
98 void sendRCswitch(char *, int);
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
99 void stopRCswitch(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
100 #endif
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
101
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
103
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
104 extern int mqtt_qos;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
105 extern int mqtt_last_mid;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
106 extern int mqtt_last_mid_sent;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
107 extern int mqtt_mid_sent;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
108 extern int mqtt_disconnect_sent;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
109 extern int mqtt_connected;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
110 extern int mqtt_status;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
111 extern int mqtt_use;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
112 extern struct mosquitto *mosq;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
113 extern char *state;
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
114
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
115
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117 void help(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118 {
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
119 fprintf(stdout, "mbsePi-apps thermferm v%s starting\n\n", VERSION);
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
120 fprintf(stdout, "Usage: thermferm [-d] [-h]\n");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121 fprintf(stdout, " -d --debug Debug and run in foreground\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122 fprintf(stdout, " -h --help Display this help\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
123 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127 void die(int onsig)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129 switch (onsig) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 case SIGHUP: syslog(LOG_NOTICE, "Got SIGHUP, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 case SIGINT: syslog(LOG_NOTICE, "Keyboard interrupt, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134 case SIGTERM: syslog(LOG_NOTICE, "Got SIGTERM, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135 break;
326
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
136 case SIGSEGV: syslog(LOG_NOTICE, "Got SIGSEGV, shutting down");
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
137 my_shutdown = TRUE;
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
138 exit(SIGSEGV);
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
139 break;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140 default: syslog(LOG_NOTICE, "die() on signal %d", onsig);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
143 my_shutdown = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
147
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
148 void show_mode(void)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
149 {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
150 char buf[21];
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
151
328
1713dc0cd20f Fixed error
Michiel Broek <mbroek@mbse.eu>
parents: 326
diff changeset
152 snprintf(buf, 20, "Old mode %s", UNITMODE[current_unit->mode]);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
153 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
154 lcdPuts(lcdHandle, buf);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
155 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
156 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
157 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
158 slcdPosition(slcdHandle, 0, 1);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
159 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
160
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
161
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
162
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
163 void go_menu(int menu)
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
164 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
165 char buf[21];
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
166
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
167 pthread_mutex_lock(&mutexes[LOCK_LCD]);
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
168 pthread_mutex_lock(&mutexes[LOCK_MENU]);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
169 #ifdef HAVE_WIRINGPI_H
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
170 lcdClear(lcdHandle);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
171 lcdPosition(lcdHandle, 0, 0);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
172 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
173 slcdClear(slcdHandle);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
174 slcdPosition(slcdHandle, 0, 0);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
175 setupmenu = menu;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
176
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
177 switch (menu) {
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
178 case MENU_NONE:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
179 lcd_buf_show();
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
180 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
181
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
182 case MENU_TOP_DEFAULT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
183 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
184 lcdPuts(lcdHandle, "Setup mode.");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
185 lcdPosition(lcdHandle, 0, 1);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
186 lcdPuts(lcdHandle, "Up&Down = Escape");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
187 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
188 slcdPuts(slcdHandle, "Setup mode.");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
189 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
190 slcdPuts(slcdHandle, "Up&Down = Escape");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
191 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
192
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
193 case MENU_TOP_UNITS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
194 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
195 lcdPuts(lcdHandle, "Select units");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
196 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
197 slcdPuts(slcdHandle, "Select units");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
198 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
199
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
200 case MENU_UNITS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
201 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
202 lcdPuts(lcdHandle, "Choose unit:");
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
203 lcdPosition(lcdHandle, 0, 1);
556
c2ee7f9a069e Fixed compile for LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 554
diff changeset
204 lcdPuts(lcdHandle, current_unit->alias);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
205 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
206 slcdPuts(slcdHandle, "Choose unit:");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
207 slcdPosition(slcdHandle, 0, 1);
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
208 slcdPuts(slcdHandle, current_unit->alias);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
209 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
210
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
211 case MENU_MODE_OFF: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
212 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
213 lcdPuts(lcdHandle, "New mode OFF");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
214 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
215 slcdPuts(slcdHandle, "New mode OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
216 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
217
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
218 case MENU_MODE_NONE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
219 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
220 lcdPuts(lcdHandle, "New mode NONE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
221 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
222 slcdPuts(slcdHandle, "New mode NONE");
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
223 break;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
224
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
225 case MENU_NONE_HEAT: snprintf(buf, Config.lcd_cols, "Set heater %s", current_unit->heater_state ? "OFF":"ON");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
226 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
227 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
228 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
229 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
230 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
231
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
232 case MENU_NONE_COOL: snprintf(buf, Config.lcd_cols, "Set cooler %s", current_unit->cooler_state ? "OFF":"ON");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
233 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
234 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
235 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
236 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
237 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
238
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
239 case MENU_NONE_FAN: snprintf(buf, Config.lcd_cols, "Set fan %s", current_unit->fan_state ? "OFF":"ON");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
240 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
241 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
242 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
243 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
244 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
245
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
246 case MENU_MODE_BEER: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
247 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
248 lcdPuts(lcdHandle, "New mode BEER");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
249 #endif
488
bee1f70fb42b Small brewpanel display error fix, did not affect real hardware.
Michiel Broek <mbroek@mbse.eu>
parents: 486
diff changeset
250 slcdPuts(slcdHandle, "New mode BEER");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
251 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
252
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
253 case MENU_BEER_TEMP_LO:
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
254 #ifdef HAVE_WIRINGPI_H
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
255 lcdPuts(lcdHandle, "Set beer low");
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
256 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
257 #endif
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
258 slcdPuts(slcdHandle, "Set beer low");
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
259 slcdPosition(slcdHandle, 0, 1);
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
260 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
261 #ifdef HAVE_WIRINGPI_H
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
262 lcdPuts(lcdHandle, buf);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
263 #endif
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
264 slcdPuts(slcdHandle, buf);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
265 break;
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
266
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
267 case MENU_BEER_TEMP_HI:
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
268 #ifdef HAVE_WIRINGPI_H
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
269 lcdPuts(lcdHandle, "Set beer high");
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
270 lcdPosition(lcdHandle, 0, 1);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
271 #endif
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
272 slcdPuts(slcdHandle, "Set beer high");
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
273 slcdPosition(slcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
274 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
275 #ifdef HAVE_WIRINGPI_H
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
276 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
277 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
278 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
279 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
280
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
281 case MENU_MODE_FRIDGE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
282 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
283 lcdPuts(lcdHandle, "New mode FRIDGE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
284 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
285 slcdPuts(slcdHandle, "New mode FRIDGE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
286 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
287
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
288 case MENU_FRIDGE_TEMP_LO:
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
289 #ifdef HAVE_WIRINGPI_H
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
290 lcdPuts(lcdHandle, "Set fridge low");
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
291 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
292 #endif
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
293 slcdPuts(slcdHandle, "Set fridge low");
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
294 slcdPosition(slcdHandle, 0, 1);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
295 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
296 #ifdef HAVE_WIRINGPI_H
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
297 lcdPuts(lcdHandle, buf);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
298 #endif
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
299 slcdPuts(slcdHandle, buf);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
300 break;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
301
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
302 case MENU_FRIDGE_TEMP_HI:
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
303 #ifdef HAVE_WIRINGPI_H
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
304 lcdPuts(lcdHandle, "Set fridge high");
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
305 lcdPosition(lcdHandle, 0, 1);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
306 #endif
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
307 slcdPuts(slcdHandle, "Set fridge high");
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
308 slcdPosition(slcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
309 snprintf(buf, Config.lcd_cols, "Set %.1f", temp_temp);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
310 #ifdef HAVE_WIRINGPI_H
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
311 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
312 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
313 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
314 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
315
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
316 case MENU_MODE_PROFILE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
317 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
318 lcdPuts(lcdHandle, "New mode PROFILE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
319 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
320 slcdPuts(slcdHandle, "New mode PROFILE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
321 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
322
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
323 case MENU_PROFILE_START: snprintf(buf, Config.lcd_cols, "%s", current_unit->profile_name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
324 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
325 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
326 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
327 lcdPuts(lcdHandle, "Start profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
328 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
329 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
330 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
331 slcdPuts(slcdHandle, "Start profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
332 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
333
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
334 case MENU_PROFILE_PAUSE: snprintf(buf, Config.lcd_cols, "%s", current_unit->profile_name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
335 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
336 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
337 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
338 lcdPuts(lcdHandle, "Pause profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
339 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
340 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
341 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
342 slcdPuts(slcdHandle, "Pause profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
343 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
344
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
345 case MENU_PROFILE_ABORT: snprintf(buf, Config.lcd_cols, "%s", current_unit->profile_name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
346 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
347 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
348 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
349 lcdPuts(lcdHandle, "Abort profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
350 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
351 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
352 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
353 slcdPuts(slcdHandle, "Abort profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
354 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
355
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
356 case MENU_PROFILE_RESUME: snprintf(buf, Config.lcd_cols, "%s", current_unit->profile_name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
357 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
358 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
359 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
360 lcdPuts(lcdHandle, "Resume profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
361 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
362 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
363 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
364 slcdPuts(slcdHandle, "Resume profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
365 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
366
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
367 case MENU_PROFILE_GOOFF: snprintf(buf, Config.lcd_cols, "%s", current_unit->profile_name);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
368 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
369 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
370 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
371 lcdPuts(lcdHandle, "Set profile OFF");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
372 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
373 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
374 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
375 slcdPuts(slcdHandle, "Set profile OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
376 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
377
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
378 case MENU_TOP_SYS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
379 #ifdef HAVE_WIRINGPI_H
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
380 lcdPuts(lcdHandle, "System menu");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
381 #endif
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
382 slcdPuts(slcdHandle, "System menu");
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
383 break;
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
384
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
385 case MENU_SYS_HALT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
386 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
387 lcdPuts(lcdHandle, "Halt system");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
388 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
389 slcdPuts(slcdHandle, "Halt system");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
390 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
391
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
392 case MENU_SYS_REBOOT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
393 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
394 lcdPuts(lcdHandle, "Reboot system");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
395 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
396 slcdPuts(slcdHandle, "Reboot system");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
397 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
398 }
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
399
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
400 pthread_mutex_unlock(&mutexes[LOCK_MENU]);
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
401 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
402 }
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
403
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
404
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
405
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
406 void stopLCD(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
407 {
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
408 pthread_mutex_lock(&mutexes[LOCK_LCD]);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
409 #ifdef HAVE_WIRINGPI_H
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
410 lcdClear(lcdHandle);
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
411 #endif
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
412 slcdClear(slcdHandle);
426
e54611453d29 Moved global bit defines to config.h
Michiel Broek <mbroek@mbse.eu>
parents: 423
diff changeset
413 setBacklight(0);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
414 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
415 }
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
416
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
417
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
418
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
419 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
420 * Change mode of current_unit
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
421 */
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
422 void change_mode(int mode)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
423 {
533
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
424 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
425 if ((current_unit->mode == UNITMODE_OFF) && (mode != UNITMODE_OFF)) {
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
426 current_unit->mqtt_flag |= MQTT_FLAG_BIRTH;
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
427 }
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
428 syslog(LOG_NOTICE, "Mode from %s to %s via panel interface", UNITMODE[current_unit->mode], UNITMODE[mode]);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
429 current_unit->mode = mode;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
430 /* Allways turn everything off after a mode change */
367
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
431 current_unit->PID_cool->OutP = current_unit->PID_heat->OutP = 0.0;
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
432 current_unit->PID_cool->Mode = current_unit->PID_heat->Mode = PID_MODE_NONE;
582
ba340e00aab2 Version 0.9.5, interior lights are now only controlled by the open door or a 5 minutes timer. The timer is started via an MQTT command. The BMS web application sends this command just before a webcam page is requested.
Chiel Broek <mbse@mbse.eu>
parents: 578
diff changeset
433 current_unit->heater_state = current_unit->cooler_state = current_unit->fan_state = current_unit->light_state = current_unit->light_timer = 0;
367
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
434 current_unit->heater_wait = current_unit->cooler_wait = current_unit->fan_wait = current_unit->light_wait = 0;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
435 device_out(current_unit->heater_address, current_unit->heater_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
436 device_out(current_unit->cooler_address, current_unit->cooler_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
437 device_out(current_unit->fan_address, current_unit->fan_state);
367
b9130db48c63 Fixed compiling on a real RPi
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
438 device_out(current_unit->light_address, current_unit->light_state);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
439 if (current_unit->mode == UNITMODE_PROFILE) {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
440 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
441 * Set a sane default until it will be overruled by the
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
442 * main processing loop.
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
443 */
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
444 current_unit->prof_target_lo = 20.0;
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
445 current_unit->prof_target_hi = 20.0;
406
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
446 current_unit->prof_fridge_mode = 0;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
447 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
448 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
449
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
450
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
451
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
452 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
453 * Handle panel key events
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
454 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
455 void panel_key_events(int key)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
456 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
457 units_list *unit;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
458 int rc;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
459
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
460 switch (setupmenu) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
461 case MENU_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
462 if ((key == KEY_DOWN) || (key == KEY_UP))
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
463 lcd_buf_step(key);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
464 if ((key == KEY_CONFIRM) && (setupmenu == MENU_NONE))
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
465 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
466 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
467
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
468 case MENU_TOP_DEFAULT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
469 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
470 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
471 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
472 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
473 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
474 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
475 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
476
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
477 case MENU_TOP_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
478 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
479 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
480 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
481 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
482 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
483 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
484 if ((key == KEY_ENTER) && Config.units) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
485 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
486 * Start with the first unit
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
487 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
488 current_unit = Config.units;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
489 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
490 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
491 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
492
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
493 case MENU_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
494 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
495 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
496 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
497 if (current_unit->next) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
498 current_unit = current_unit->next;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
499 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
500 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
501 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
502 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
503 for (unit = Config.units; unit; unit = unit->next) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
504 if (unit->next && (unit->next == current_unit)) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
505 current_unit = unit;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
506 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
507 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
508 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
509 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
510 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
511 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
512 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
513 * Drop into the current mode
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
514 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
515 switch (current_unit->mode) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
516 case UNITMODE_OFF: go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
517 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
518 case UNITMODE_NONE: go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
519 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
520 case UNITMODE_FRIDGE: go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
521 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
522 case UNITMODE_BEER: go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
523 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
524 case UNITMODE_PROFILE: go_menu(MENU_MODE_PROFILE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
525 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
526 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
527 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
528 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
529
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
530 case MENU_MODE_OFF:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
531 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
532 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
533 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
534 go_menu(MENU_MODE_NONE);
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
535 if (key == KEY_UP) {
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
536 if (current_unit->profile_uuid)
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
537 go_menu(MENU_MODE_PROFILE);
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
538 else
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
539 go_menu(MENU_MODE_BEER);
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
540 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
541 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
542 change_mode(UNITMODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
543 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
544 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
545 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
546
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
547 case MENU_MODE_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
548 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
549 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
550 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
551 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
552 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
553 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
554 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
555 if (current_unit->mode == UNITMODE_NONE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
556 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
557 else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
558 change_mode(UNITMODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
559 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
560 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
561 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
562 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
563
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
564 case MENU_NONE_HEAT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
565 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
566 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
567 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
568 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
569 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
570 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
571 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
572 if (current_unit->heater_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
573 current_unit->heater_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
574 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
575 current_unit->heater_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
576 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
577 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
578 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
579
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
580 case MENU_NONE_COOL:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
581 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
582 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
583 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
584 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
585 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
586 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
587 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
588 if (current_unit->cooler_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
589 current_unit->cooler_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
590 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
591 current_unit->cooler_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
592 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
593 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
594 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
595
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
596 case MENU_NONE_FAN:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
597 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
598 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
599 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
600 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
601 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
602 go_menu(MENU_NONE_COOL);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
603 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
604 if (current_unit->fan_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
605 current_unit->fan_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
606 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
607 current_unit->fan_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
608 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
609 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
610 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
611
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
612 case MENU_MODE_FRIDGE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
613 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
614 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
615 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
616 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
617 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
618 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
619 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
620 if (current_unit->mode == UNITMODE_FRIDGE) {
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
621 temp_temp = current_unit->fridge_set_lo;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
622 go_menu(MENU_FRIDGE_TEMP_LO);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
623 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
624 change_mode(UNITMODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
625 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
626 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
627 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
628 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
629
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
630 case MENU_FRIDGE_TEMP_LO:
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
631 if (key == KEY_ESCAPE) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
632 temp_temp = current_unit->fridge_set_hi;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
633 go_menu(MENU_FRIDGE_TEMP_HI);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
634 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
635 if (key == KEY_DOWN) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
636 if (temp_temp > current_unit->temp_set_min)
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
637 temp_temp -= 0.1;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
638 go_menu(MENU_FRIDGE_TEMP_LO);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
639 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
640 if (key == KEY_UP) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
641 if (temp_temp < current_unit->temp_set_max)
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
642 temp_temp += 0.1;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
643 go_menu(MENU_FRIDGE_TEMP_LO);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
644 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
645 if (key == KEY_CONFIRM) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
646 if (temp_temp != current_unit->fridge_set_lo) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
647 syslog(LOG_NOTICE, "Fridge temp low changed from %.1f to %.1f from the panel", current_unit->fridge_set_lo, temp_temp);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
648 current_unit->fridge_set_lo = temp_temp;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
649 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
650 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
651 temp_temp = current_unit->fridge_set_hi;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
652 go_menu(MENU_FRIDGE_TEMP_HI);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
653 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
654 break;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
655
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
656 case MENU_FRIDGE_TEMP_HI:
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
657 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
658 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
659 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
660 if (temp_temp > current_unit->temp_set_min)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
661 temp_temp -= 0.1;
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
662 go_menu(MENU_FRIDGE_TEMP_HI);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
663 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
664 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
665 if (temp_temp < current_unit->temp_set_max)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
666 temp_temp += 0.1;
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
667 go_menu(MENU_FRIDGE_TEMP_HI);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
668 }
302
3d2bd47f35b4 Use confirm instead of enter key when stepping to a new beer or fridge temperature
Michiel Broek <mbroek@mbse.eu>
parents: 297
diff changeset
669 if (key == KEY_CONFIRM) {
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
670 if (temp_temp != current_unit->fridge_set_hi) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
671 syslog(LOG_NOTICE, "Fridge temp high changed from %.1f to %.1f from the panel", current_unit->fridge_set_hi, temp_temp);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
672 current_unit->fridge_set_hi = temp_temp;
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
673 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
674 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
675 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
676 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
677 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
678
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
679 case MENU_MODE_BEER:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
680 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
681 go_menu(MENU_UNITS);
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
682 if (key == KEY_DOWN) {
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
683 if (current_unit->profile_uuid)
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
684 go_menu(MENU_MODE_PROFILE);
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
685 else
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
686 go_menu(MENU_MODE_OFF);
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
687 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
688 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
689 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
690 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
691 if (current_unit->mode == UNITMODE_BEER) {
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
692 temp_temp = current_unit->beer_set_lo;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
693 go_menu(MENU_BEER_TEMP_LO);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
694 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
695 change_mode(UNITMODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
696 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
697 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
698 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
699 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
700
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
701 case MENU_BEER_TEMP_LO:
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
702 if (key == KEY_ESCAPE) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
703 temp_temp = current_unit->beer_set_hi;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
704 go_menu(MENU_BEER_TEMP_HI);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
705 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
706 if (key == KEY_DOWN) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
707 if (temp_temp > current_unit->temp_set_min)
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
708 temp_temp -= 0.1;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
709 go_menu(MENU_BEER_TEMP_LO);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
710 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
711 if (key == KEY_UP) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
712 if (temp_temp < current_unit->temp_set_max)
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
713 temp_temp += 0.1;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
714 go_menu(MENU_BEER_TEMP_LO);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
715 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
716 if (key == KEY_CONFIRM) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
717 if (temp_temp != current_unit->beer_set_lo ) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
718 syslog(LOG_NOTICE, "Beer temp low changed from %.1f to %.1f from the panel", current_unit->beer_set_lo, temp_temp);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
719 current_unit->beer_set_lo = temp_temp;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
720 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
721 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
722 temp_temp = current_unit->beer_set_hi;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
723 go_menu(MENU_BEER_TEMP_HI);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
724 }
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
725 break;
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
726
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
727 case MENU_BEER_TEMP_HI:
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
728 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
729 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
730 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
731 if (temp_temp > current_unit->temp_set_min)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
732 temp_temp -= 0.1;
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
733 go_menu(MENU_BEER_TEMP_HI);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
734 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
735 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
736 if (temp_temp < current_unit->temp_set_max)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
737 temp_temp += 0.1;
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
738 go_menu(MENU_BEER_TEMP_HI);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
739 }
302
3d2bd47f35b4 Use confirm instead of enter key when stepping to a new beer or fridge temperature
Michiel Broek <mbroek@mbse.eu>
parents: 297
diff changeset
740 if (key == KEY_CONFIRM) {
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
741 if (temp_temp != current_unit->beer_set_hi ) {
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
742 syslog(LOG_NOTICE, "Beer temp high changed from %.1f to %.1f from the panel", current_unit->beer_set_hi, temp_temp);
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
743 current_unit->beer_set_hi = temp_temp;
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
744 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
745 }
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
746 go_menu(MENU_MODE_BEER);
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
747 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
748 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
749
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
750 case MENU_MODE_PROFILE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
751 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
752 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
753 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
754 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
755 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
756 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
757 if (key == KEY_ENTER) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
758 if (current_unit->mode == UNITMODE_PROFILE) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
759 switch (current_unit->prof_state) {
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
760 case PROFILE_OFF: go_menu(MENU_PROFILE_START);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
761 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
762 case PROFILE_PAUSE: go_menu(MENU_PROFILE_RESUME);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
763 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
764 case PROFILE_RUN: go_menu(MENU_PROFILE_PAUSE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
765 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
766 case PROFILE_DONE: go_menu(MENU_PROFILE_GOOFF);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
767 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
768 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
769 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
770 change_mode(UNITMODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
771 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
772 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
773 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
774 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
775
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
776 case MENU_PROFILE_START:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
777 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
778 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
779 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
780 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
781 current_unit->prof_started = time(NULL);
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
782 current_unit->prof_paused = current_unit->prof_primary_done = 0;
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
783 current_unit->prof_peak_abs = current_unit->prof_peak_rel = 0.0;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
784 syslog(LOG_NOTICE, "Profile started from the panel");
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
785 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
786 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
787 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
788 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
789
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
790 case MENU_PROFILE_PAUSE:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
791 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
792 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
793 if ((key == KEY_DOWN) || (key == KEY_UP))
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
794 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
795 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
796 current_unit->prof_state = PROFILE_PAUSE;
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
797 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
798 syslog(LOG_NOTICE, "Profile pause from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
799 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
800 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
801 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
802
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
803 case MENU_PROFILE_ABORT:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
804 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
805 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
806 if ((key == KEY_DOWN) || (key == KEY_UP)) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
807 if (current_unit->prof_state == PROFILE_PAUSE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
808 go_menu(MENU_PROFILE_RESUME);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
809 else if (current_unit->prof_state == PROFILE_RUN)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
810 go_menu(MENU_PROFILE_PAUSE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
811 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
812 if ((key == KEY_ENTER) && ((current_unit->prof_state == PROFILE_RUN) || (current_unit->prof_state == PROFILE_PAUSE))) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
813 current_unit->prof_state = PROFILE_OFF;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
814 current_unit->prof_started = 0;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
815 syslog(LOG_NOTICE, "Profile aborted from the panel");
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
816 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
817 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
818 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
819 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
820
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
821 case MENU_PROFILE_RESUME:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
822 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
823 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
824 if ((key == KEY_DOWN) || (key == KEY_UP))
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
825 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
826 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
827 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
828 syslog(LOG_NOTICE, "Profile resume from the panel");
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
829 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
830 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
831 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
832 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
833
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
834 case MENU_PROFILE_GOOFF:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
835 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
836 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
837 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
838 if (current_unit->prof_state == PROFILE_DONE) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
839 current_unit->prof_state = PROFILE_OFF;
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
840 current_unit->mqtt_flag |= MQTT_FLAG_DATA;
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
841 syslog(LOG_NOTICE, "Profile from done to off from the panel");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
842 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
843 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
844 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
845
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
846 case MENU_TOP_SYS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
847 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
848 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
849 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
850 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
851 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
852 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
853 if (key == KEY_ENTER)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
854 go_menu(MENU_SYS_HALT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
855 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
856
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
857 case MENU_SYS_HALT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
858 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
859 go_menu(MENU_TOP_SYS);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
860 if ((key == KEY_DOWN) || (key == KEY_UP))
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
861 go_menu(MENU_SYS_REBOOT);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
862 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
863 rc = system("/sbin/halt");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
864 syslog(LOG_NOTICE, "System halt from panel: /sbin/halt rc=%d", rc);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
865 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
866 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
867 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
868
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
869 case MENU_SYS_REBOOT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
870 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
871 go_menu(MENU_TOP_SYS);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
872 if ((key == KEY_DOWN) || (key == KEY_UP))
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
873 go_menu(MENU_SYS_HALT);
248
870d0be6880d Removed two system menus that would not work correctly. All panel menus are complete now.
Michiel Broek <mbroek@mbse.eu>
parents: 247
diff changeset
874 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
875 rc = system("/sbin/reboot");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
876 syslog(LOG_NOTICE, "System reboot from panel: /sbin/reboot rc=%d", rc);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
877 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
878 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
879 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
880 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
881 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
882
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
883
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
884
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
885 int main(int argc, char *argv[])
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
886 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
887 int rc, c, i;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
888 pid_t frk;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
889
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
890 while (1) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
891 int option_index = 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
892 static struct option long_options[] = {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
893 {"debug", 0, 0, 'c'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
894 {"help", 0, 0, 'h'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
895 {0, 0, 0, 0}
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
896 };
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
897
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
898 c = getopt_long(argc, argv, "dh", long_options, &option_index);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
899 if (c == -1)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
900 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
901
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
902 switch (c) {
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
903 case 'd': debug = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
904 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
905 case 'h': help();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
906 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
907 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
908 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
909
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
910 openlog("thermferm", LOG_PID|LOG_CONS|LOG_NOWAIT, LOG_USER);
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
911 syslog(LOG_NOTICE, "mbsePi-apps thermferm v%s starting", VERSION);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
912 if (debug)
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
913 fprintf(stdout, "mbsePi-apps thermferm v%s starting\n", VERSION);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
914
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
915 if (rdconfig()) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
916 fprintf(stderr, "Error reading configuration\n");
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
917 syslog(LOG_NOTICE, "Error reading configuration: halted");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
918 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
919 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
920
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
921 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
922 * Catch all the signals we can, and ignore the rest. Note that SIGKILL can't be ignored
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
923 * but that's live. This daemon should only be stopped by SIGTERM.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
924 * Don't catch SIGCHLD.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
925 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
926 for (i = 0; i < NSIG; i++) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
927 if ((i != SIGCHLD) && (i != SIGKILL) && (i != SIGSTOP))
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
928 signal(i, (void (*))die);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
929 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
930
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
931 #ifdef HAVE_WIRINGPI_H
651
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
932 syslog(LOG_NOTICE, "Build with wiringPi");
611
732d482f47c8 Improved logging if wiringpi failed.
Michiel Broek
parents: 608
diff changeset
933 if (wiringPiSetup () ) {
732d482f47c8 Improved logging if wiringpi failed.
Michiel Broek
parents: 608
diff changeset
934 syslog(LOG_NOTICE, "Error wiringPiSetup(): halted");
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
935 return 1;
611
732d482f47c8 Improved logging if wiringpi failed.
Michiel Broek
parents: 608
diff changeset
936 }
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
937 #endif
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
938
651
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
939 #ifdef USE_SIMULATOR
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
940 syslog(LOG_NOTICE, "Build with simulator");
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
941 #endif
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
942
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
943 if ((rc = initLCD (Config.lcd_cols, Config.lcd_rows))) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
944 fprintf(stderr, "Cannot initialize LCD display, rc=%d\n", rc);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
945 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
946 }
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
947
484
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
948 #ifdef HAVE_WIRINGPI_H
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
949 lcdCharDef(lcdHandle, 1, degC);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
950 lcdCharDef(lcdHandle, 2, SP_Symbol);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
951 lcdCharDef(lcdHandle, 3, CoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
952 lcdCharDef(lcdHandle, 4, RevCoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
953 lcdCharDef(lcdHandle, 5, HeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
954 lcdCharDef(lcdHandle, 6, RevHeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
955 #endif
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
956 slcdCharDef(slcdHandle, 1, degC);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
957 slcdCharDef(slcdHandle, 2, SP_Symbol);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
958 slcdCharDef(slcdHandle, 3, CoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
959 slcdCharDef(slcdHandle, 4, RevCoolONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
960 slcdCharDef(slcdHandle, 5, HeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
961 slcdCharDef(slcdHandle, 6, RevHeatONOFF);
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
962
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
963 if (debug) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
964 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
965 * For debugging run in foreground.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
966 */
550
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
967 do {
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
968 rc = server();
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
969 } while (my_reboot == TRUE);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
970 } else {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
971 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
972 * Server initialization is complete. Now we can fork the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
973 * daemon and return to the user. We need to do a setpgrp
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
974 * so that the daemon will no longer be assosiated with the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
975 * users control terminal. This is done before the fork, so
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
976 * that the child will not be a process group leader. Otherwise,
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
977 * if the child were to open a terminal, it would become
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
978 * associated with that terminal as its control terminal.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
979 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
980 if ((pgrp = setpgid(0, 0)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
981 syslog(LOG_NOTICE, "setpgpid failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
982 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
983
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
984 frk = fork();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
985 switch (frk) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
986 case -1:
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
987 syslog(LOG_NOTICE, "Daemon fork failed: %s", strerror(errno));
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
988 stopLCD();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
989 exit(1);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
990 case 0: /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
991 * Run the daemon
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
992 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
993 fclose(stdin);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
994 if (open("/dev/null", O_RDONLY) != 0) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
995 syslog(LOG_NOTICE, "Reopen of stdin to /dev/null failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
996 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
997 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
998 fclose(stdout);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
999 if (open("/dev/null", O_WRONLY | O_APPEND | O_CREAT,0600) != 1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1000 syslog(LOG_NOTICE, "Reopen of stdout to /dev/null failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1001 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1002 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1003 fclose(stderr);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1004 if (open("/dev/null", O_WRONLY | O_APPEND | O_CREAT,0600) != 2) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1005 syslog(LOG_NOTICE, "Reopen of stderr to /dev/null failed");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1006 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1007 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1008 mypid = getpid();
550
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1009 do {
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1010 rc = server();
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1011 } while (my_reboot == TRUE);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1012 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1013 /* Not reached */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1014 default:
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1015 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1016 * Here we detach this process and let the child
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1017 * run the deamon process.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1018 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1019 syslog(LOG_NOTICE, "Starting daemon with pid %d", frk);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1020 exit(0);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1021 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1022 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1023
561
fcfc3dbe85fa Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents: 557
diff changeset
1024 killconfig();
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1025 syslog(LOG_NOTICE, "Finished, rc=%d", rc);
597
93667d842c9b Less debug messages on stdout
Michiel Broek <mbroek@mbse.eu>
parents: 596
diff changeset
1026 if (debug)
93667d842c9b Less debug messages on stdout
Michiel Broek <mbroek@mbse.eu>
parents: 596
diff changeset
1027 fprintf(stdout, "Finished, rc=%d\n", rc);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1028 return rc;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1029 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1030
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1031
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1032 void do_unit(units_list *unit, int LCDunit, int *seconds, int *minutes)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1033 {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1034 time_t now;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1035 prof_step *step;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1036 int rc, temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1037 int run_seconds, run_minutes, run_hours, tot_minutes;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1038 int current_step, valid_step, time_until_now, previous_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1039 float previous_target_lo, previous_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1040 float LCDair, LCDbeer, LCDspL, LCDspH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1041 unsigned char LCDstatC, LCDstatH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1042
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1043 unit->mqtt_flag &= ~MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1044 unit->alarm_flag = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1045
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1046 if (unit->air_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1047 rc = device_in(unit->air_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1048 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1049 if (unit->air_temperature != temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1050 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1051 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1052 unit->air_temperature = temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1053 unit->air_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1054 } else if (rc == DEVPRESENT_ERROR) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1055 unit->air_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1056 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1057 unit->air_state = 2;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1058 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1059 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1060
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1061 if (unit->beer_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1062 rc = device_in(unit->beer_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1063 if ((rc == DEVPRESENT_NO) && unit->beer_address2) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1064 /* Read alternative sensor */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1065 rc = device_in(unit->beer_address2, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1066 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1067 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1068 if (unit->beer_temperature != temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1069 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1070 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1071 unit->beer_temperature = temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1072 unit->beer_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1073 } else if (rc == DEVPRESENT_ERROR) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1074 unit->beer_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1075 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1076 unit->beer_state = 2;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1077 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1078 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1079
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1080 if (unit->chiller_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1081 rc = device_in(unit->chiller_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1082 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1083 if (unit->chiller_temperature != temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1084 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1085 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1086 unit->chiller_temperature = temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1087 unit->chiller_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1088 } else if (rc == DEVPRESENT_ERROR) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1089 unit->chiller_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1090 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1091 unit->chiller_state = 2;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1092 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1093 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1094
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1095 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1096 * Unit door state, default is closed.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1097 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1098 if (unit->door_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1099 rc = device_in(unit->door_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1100 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1101 if (temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1102 if (unit->door_state == 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1103 syslog(LOG_NOTICE, "Unit `%s' door closed", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1104 unit->door_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1105 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1106 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1107 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1108 if (unit->door_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1109 syslog(LOG_NOTICE, "Unit `%s' door opened", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1110 unit->door_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1111 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1112 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1113 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1114 * If unit is active and the door is open
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1115 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1116 if (unit->mode != UNITMODE_NONE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1117 unit->alarm_flag |= ALARM_FLAG_DOOR;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1118 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1119 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1120 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1121 unit->door_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1122 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1123 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1124 unit->door_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1125 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1126
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1127 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1128 * Unit PSU state
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1129 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1130 if (unit->psu_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1131 rc = device_in(unit->psu_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1132 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1133 if (temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1134 if (unit->psu_state == 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1135 syslog(LOG_NOTICE, "Unit `%s' PSU (12 volt) is on", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1136 unit->psu_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1137 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1138 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1139 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1140 if (unit->psu_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1141 syslog(LOG_NOTICE, "Unit `%s' PSU (12 volt) is off", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1142 unit->psu_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1143 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1144 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1145 unit->alarm_flag |= ALARM_FLAG_PSU;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1146 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1147 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1148 unit->psu_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1149 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1150 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1151 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1152 * No state available, assume Ok.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1153 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1154 unit->psu_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1155 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1156
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1157 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1158 * Handle profile
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1159 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1160 if ((unit->mode == UNITMODE_PROFILE) && (unit->profile_uuid)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1161 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1162 * unit->prof_started - start time or 0 if not yet running.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1163 * unit->prof_state - PROFILE_OFF|PROFILE_PAUSE|PROFILE_RUN|PROFILE_DONE
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1164 * unit->prof_target - Calculated target temperature.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1165 * unit->prof_paused - Internal pause counter.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1166 * unit->prof_peak_abs - Peak temperature of the beer.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1167 * unit->prof_peak_rel - Peak temperature between beer and fridge.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1168 * unit->prof_primary_done - time when primary fermentation was over the peak.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1169 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1170
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1171 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1172 * Safe defaults
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1173 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1174 unit->prof_target_lo = unit->profile_inittemp_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1175 unit->prof_target_hi = unit->profile_inittemp_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1176 unit->prof_fridge_mode = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1177
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1178 switch (unit->prof_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1179 case PROFILE_OFF:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1180 unit->prof_percent = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1181 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1182 case PROFILE_PAUSE:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1183 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1184 * Keep current temperature, measure pause time. For
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1185 * temperature fall thru.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1186 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1187 unit->prof_paused++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1188 case PROFILE_RUN:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1189 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1190 * Calculate current profile step and desired temperature.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1191 * When all steps are done, set state to PROFILE_DONE.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1192 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1193 previous_target_lo = unit->profile_inittemp_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1194 previous_target_hi = unit->profile_inittemp_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1195 previous_fridge_mode = unit->profile_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1196 time_until_now = current_step = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1197 now = time(NULL);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1198 run_seconds = (int)(now - unit->prof_started - unit->prof_paused);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1199 run_minutes = run_seconds / 60;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1200 run_hours = run_minutes / 60;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1201 if (debug)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1202 fprintf(stdout, "run_HMS=%d,%d,%d ", run_hours, run_minutes, run_seconds);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1203
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1204 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1205 * Primary fermentation tests
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1206 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1207 if ((unit->beer_temperature / 1000.0) > unit->prof_peak_abs)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1208 unit->prof_peak_abs = unit->beer_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1209 if (((unit->beer_temperature - unit->air_temperature) / 1000.0) > unit->prof_peak_rel)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1210 unit->prof_peak_rel = (unit->beer_temperature - unit->air_temperature) / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1211 if (unit->prof_primary_done == 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1212 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1213 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1214 * There is a cooler. If the difference between the beer and air temperature
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1215 * drops we assume the primary fermentation is done.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1216 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1217 if (((unit->beer_temperature - unit->air_temperature) / 1000.0) < (unit->prof_peak_rel - 0.5)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1218 unit->prof_primary_done = time(NULL);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1219 syslog(LOG_NOTICE, "Profile `%s' primary fermentation is ready (cooler mode)", unit->profile_name);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1220 if (! unit->event_msg)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1221 unit->event_msg = xstrcpy((char *)"Primary peak");
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1222 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1223 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1224 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1225 * This method works if the unit has no cooling or if the profile allowed the
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1226 * beer temperature to rise freely.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1227 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1228 if ((unit->beer_temperature / 1000.0) < (unit->prof_peak_abs - 0.5)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1229 unit->prof_primary_done = time(NULL);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1230 syslog(LOG_NOTICE, "Profile `%s' primary fermentation is ready (free rise mode)", unit->profile_name);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1231 if (! unit->event_msg)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1232 unit->event_msg = xstrcpy((char *)"Primary peak");
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1233 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1234 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1235 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1236
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1237 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1238 * See how long this profile will take
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1239 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1240 tot_minutes = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1241 for (step = unit->profile_steps; step; step = step->next) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1242 tot_minutes += ((step->steptime + step->resttime) * 60);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1243 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1244 if ((tot_minutes == 0) && unit->profile_totalsteps) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1245 syslog(LOG_NOTICE, "Profile `%s' steps disappeared", unit->profile_name);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1246 unit->prof_state = PROFILE_OFF;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1247 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1248 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1249
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1250 valid_step = FALSE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1251 for (step = unit->profile_steps; step; step = step->next) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1252 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1253 * step->steptime
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1254 * step->resttime
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1255 * step->target
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1256 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1257 current_step++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1258 if ((run_hours >= time_until_now) && (run_hours < (time_until_now + step->steptime + step->resttime))) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1259 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1260 * This is our current step
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1261 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1262 valid_step = TRUE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1263 if ((run_hours - time_until_now) < step->steptime) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1264 unit->prof_target_lo = previous_target_lo + (((run_minutes - (time_until_now * 60.0)) / (step->steptime * 60.0)) * (step->target_lo - previous_target_lo));
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1265 unit->prof_target_hi = previous_target_hi + (((run_minutes - (time_until_now * 60.0)) / (step->steptime * 60.0)) * (step->target_hi - previous_target_hi));
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1266 if (step->fridge_mode > previous_fridge_mode) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1267 unit->prof_fridge_mode = (((run_minutes - (time_until_now * 60)) * 100) / (step->steptime * 60));
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1268 } else if (step->fridge_mode < previous_fridge_mode) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1269 unit->prof_fridge_mode = 100 - (((run_minutes - (time_until_now * 60)) * 100) / (step->steptime * 60));
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1270 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1271 unit->prof_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1272 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1273 if (debug)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1274 fprintf(stdout, "prof_fridge_mode=%d run_minutes=%d steptime=%d time_until_now=%d\n",
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1275 unit->prof_fridge_mode, run_minutes, step->steptime, time_until_now);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1276 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1277 unit->prof_target_lo = step->target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1278 unit->prof_target_hi = step->target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1279 unit->prof_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1280 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1281 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1282 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1283 time_until_now += step->steptime + step->resttime;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1284 previous_target_lo = step->target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1285 previous_target_hi = step->target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1286 previous_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1287 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1288
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1289 if (valid_step == TRUE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1290 unit->prof_percent = (100 * run_minutes) / tot_minutes;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1291 if (((*minutes == 10) || (*minutes == 40)) && (*seconds == 1)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1292 syslog(LOG_NOTICE, "Profile `%s' running %dd %02d:%02d in step %d, %d%% done, fridge/beer %d%% %.3f..%.3f degrees",
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1293 unit->profile_name, run_hours / 24, run_hours % 24, run_minutes % 60, current_step,
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1294 unit->prof_percent, unit->prof_fridge_mode, unit->prof_target_lo, unit->prof_target_hi);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1295 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1296 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1297 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1298 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1299 * No more steps to do
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1300 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1301 unit->prof_state = PROFILE_DONE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1302 unit->prof_percent = 100;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1303 syslog(LOG_NOTICE, "Profile `%s' is done", unit->profile_name);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1304 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1305 if (! unit->event_msg)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1306 unit->event_msg = xstrcpy((char *)"Profile finished");
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1307 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1308 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1309
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1310 case PROFILE_DONE:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1311 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1312 * Keep this state, set target temperature to the last step.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1313 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1314 previous_target_lo = unit->profile_inittemp_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1315 previous_target_hi = unit->profile_inittemp_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1316 previous_fridge_mode = unit->profile_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1317 for (step = unit->profile_steps; step; step = step->next) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1318 if ((step->steptime + step->resttime) == 0)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1319 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1320 previous_target_lo = step->target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1321 previous_target_hi = step->target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1322 previous_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1323 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1324 unit->prof_target_lo = previous_target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1325 unit->prof_target_hi = previous_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1326 unit->prof_fridge_mode = previous_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1327 unit->prof_percent = 100;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1328 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1329 } /* switch */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1330 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1331 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1332 * Set some sane values
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1333 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1334 unit->prof_target_lo = 19.8;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1335 unit->prof_target_hi = 20.2;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1336 unit->prof_fridge_mode = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1337 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1338
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1339 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1340 * Manual switching
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1341 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1342 if (unit->mode == UNITMODE_NONE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1343 device_out(unit->heater_address, unit->heater_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1344 device_out(unit->cooler_address, unit->cooler_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1345 device_out(unit->fan_address, unit->fan_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1346 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1347
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1348 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1349 * Usage counters
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1350 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1351 if (unit->heater_address && unit->heater_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1352 unit->heater_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1353 if (unit->cooler_address && unit->cooler_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1354 unit->cooler_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1355 if (unit->fan_address && unit->fan_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1356 unit->fan_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1357 if (unit->light_address && unit->light_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1358 unit->light_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1359
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1360 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1361 * Interior lights
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1362 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1363 if (unit->light_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1364 if (unit->light_timer) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1365 unit->light_timer--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1366 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1367 if (unit->door_state && !unit->light_timer && unit->light_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1368 if (unit->light_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1369 unit->light_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1370 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1371 unit->light_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1372 syslog(LOG_NOTICE, "Unit `%s' lights On => Off", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1373 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1374 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1375 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1376 if ((!unit->door_state || unit->light_timer) && !unit->light_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1377 unit->light_wait = unit->light_delay; /* No delay to turn lights on */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1378 unit->light_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1379 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1380 syslog(LOG_NOTICE, "Unit `%s' lights Off => On", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1381 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1382 device_out(unit->light_address, unit->light_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1383 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1384
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1385 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1386 * Temperature control in this unit
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1387 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1388 if ((unit->mode == UNITMODE_FRIDGE) || (unit->mode == UNITMODE_BEER) || (unit->mode == UNITMODE_PROFILE)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1389
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1390 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1391 * Set both PID's to their input values.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1392 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1393 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_NONE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1394 if (unit->mode == UNITMODE_FRIDGE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1395 unit->PID_cool->SetP = unit->fridge_set_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1396 unit->PID_heat->SetP = unit->fridge_set_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1397 unit->PID_cool->Input = unit->PID_heat->Input = unit->air_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1398 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_BOO;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1399 } else if (unit->mode == UNITMODE_BEER) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1400 unit->PID_cool->SetP = unit->beer_set_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1401 unit->PID_heat->SetP = unit->beer_set_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1402 unit->PID_cool->Input = unit->PID_heat->Input = unit->beer_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1403 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_AUTO;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1404 } else if (unit->mode == UNITMODE_PROFILE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1405 double usetemp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1406 unit->PID_cool->SetP = unit->prof_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1407 unit->PID_heat->SetP = unit->prof_target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1408 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1409 * Get percentage to use from each thermometer. unit->prof_fridge_mode = 0..100
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1410 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1411 usetemp = ((unit->prof_fridge_mode * (unit->air_temperature / 1000.0)) +
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1412 ((100 - unit->prof_fridge_mode) * (unit->beer_temperature / 1000.0))) / 100.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1413 unit->PID_cool->Input = unit->PID_heat->Input = usetemp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1414 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_AUTO;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1415 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1416
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1417 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1418 * PID controller compute, simulate 100 mSec loops by running 10 times.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1419 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1420 for (int i = 0; i < 10; i++) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1421 UpdatePID(unit->PID_heat);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1422 UpdatePID(unit->PID_cool);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1423 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1424 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1425 * Logging
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1426 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1427 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1428 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1429 * Prevent extreme heating
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1430 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1431 if ((unit->mode == UNITMODE_BEER) && ((unit->air_temperature / 1000.0) > (unit->PID_heat->Input + 8.0))) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1432 unit->PID_heat->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1433 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1434 if (*seconds == 60) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1435 syslog(LOG_NOTICE, "Heat: sp=%.3f Input=%.3f iState=%.3f Err=%.3f Out=%.1f",
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1436 unit->PID_heat->SetP, unit->PID_heat->Input, unit->PID_heat->iState, unit->PID_heat->Err, unit->PID_heat->OutP);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1437 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1438 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1439 unit->PID_heat->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1440 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1441 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1442 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1443 * Prevent extreme cooling
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1444 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1445 if ((unit->mode == UNITMODE_BEER) && ((unit->air_temperature / 1000.0) < (unit->PID_cool->Input - 8.0))) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1446 unit->PID_cool->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1447 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1448 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1449 * Prevent cooling if we use a chiller and the chiller temperature is not low enough.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1450 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1451 if (unit->chiller_address && (unit->chiller_state == 0)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1452 if ((unit->chiller_temperature / 1000.0) > ((unit->air_temperature / 1000.0) - 1)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1453 unit->PID_cool->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1454 unit->alarm_flag |= ALARM_FLAG_CHILLER;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1455 if (*seconds == 60) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1456 syslog(LOG_NOTICE, "Cool: Air=%.2f Chiller=%.2f alarm", unit->air_temperature / 1000.0, unit->chiller_temperature / 1000.0);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1457 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1458 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1459 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1460 if (*seconds == 60) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1461 syslog(LOG_NOTICE, "Cool: sp=%.3f Input=%.3f iState=%.3f Err=%.3f Out=%.1f",
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1462 unit->PID_cool->SetP, unit->PID_cool->Input, unit->PID_cool->iState, unit->PID_cool->Err, unit->PID_cool->OutP);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1463 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1464 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1465 unit->PID_cool->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1466 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1467
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1468 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1469 * Deadlock, kill lowest value.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1470 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1471 if (unit->PID_cool->OutP && unit->PID_heat->OutP) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1472 if (unit->PID_cool->OutP > unit->PID_heat->OutP)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1473 unit->PID_heat->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1474 else
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1475 unit->PID_cool->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1476 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1477
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1478 if (unit->heater_address && ! unit->cooler_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1479 if (unit->PID_heat->OutP >= 50) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1480 if (unit->heater_wait < unit->heater_delay) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1481 unit->heater_wait++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1482 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1483 int power = round(unit->PID_heat->OutP);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1484 if (unit->heater_state != power) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1485 syslog(LOG_NOTICE, "Unit `%s' heater %d%% => %d%%", unit->alias, unit->heater_state, power);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1486 unit->heater_state = power;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1487 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1488 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1489 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1490 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1491 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1492 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1493 if (unit->heater_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1494 unit->heater_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1495 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1496 if (unit->heater_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1497 syslog(LOG_NOTICE, "Unit `%s' heater On => Off", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1498 unit->heater_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1499 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1500 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1501 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1502 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1503 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1504 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1505 if (unit->door_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1506 device_out(unit->heater_address, unit->heater_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1507 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1508 device_out(unit->heater_address, 0);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1509 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1510 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1511
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1512 if (unit->cooler_address && ! unit->heater_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1513 if (unit->PID_cool->OutP >= 50) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1514 if (unit->cooler_wait < unit->cooler_delay) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1515 unit->cooler_wait++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1516 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1517 int power = round(unit->PID_cool->OutP);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1518 if (unit->cooler_state != power) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1519 syslog(LOG_NOTICE, "Unit `%s' cooler %d%% => %d%%", unit->alias, unit->cooler_state, power);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1520 unit->cooler_state = power;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1521 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1522 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1523 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1524 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1525 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1526 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1527 if (unit->cooler_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1528 unit->cooler_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1529 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1530 if (unit->cooler_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1531 syslog(LOG_NOTICE, "Unit `%s' cooler On => Off", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1532 unit->cooler_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1533 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1534 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1535 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1536 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1537 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1538 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1539 if (unit->door_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1540 device_out(unit->cooler_address, unit->cooler_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1541 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1542 device_out(unit->cooler_address, 0);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1543 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1544 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1545
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1546 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1547 * If there is a fan, and the unit door is closed, and the unit should be doing
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1548 * something, then turn on the global fan.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1549 * But if there is a chiller, do not turn it on if cooling.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1550 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1551 if (unit->fan_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1552 if ((unit->door_state) && (unit->cooler_state == 0)) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1553 if (unit->fan_wait < unit->fan_delay) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1554 unit->fan_wait++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1555 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1556 if (! unit->fan_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1557 syslog(LOG_NOTICE, "Unit `%s' Fan Off => On", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1558 unit->fan_state = 100;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1559 if (unit->fan_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1560 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1561 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1562 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1563 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1564 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1565 if (unit->fan_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1566 unit->fan_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1567 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1568 if (unit->fan_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1569 syslog(LOG_NOTICE, "Unit `%s' Fan On => Off", unit->alias);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1570 unit->fan_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1571 if (unit->fan_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1572 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1573 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1574 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1575 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1576 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1577 device_out(unit->fan_address, unit->fan_state);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1578 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1579
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1580 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1581 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_NONE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1582 } /* fridge beer or profile mode */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1583
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1584 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1585 * Now everything is set and done, update the LCD display
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1586 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1587 LCDair = unit->air_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1588 LCDbeer = unit->beer_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1589 LCDstatC = LCDstatH = ' ';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1590 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1591 if (unit->heater_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1592 LCDstatH = '\6';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1593 else
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1594 LCDstatH = '\5';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1595 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1596 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1597 if (unit->cooler_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1598 LCDstatC = '\4';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1599 else
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1600 LCDstatC = '\3';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1601 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1602 LCDspH = LCDspL = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1603 if (unit->mode == UNITMODE_BEER) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1604 LCDspH = unit->beer_set_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1605 LCDspL = unit->beer_set_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1606 } else if (unit->mode == UNITMODE_FRIDGE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1607 LCDspH = unit->fridge_set_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1608 LCDspL = unit->fridge_set_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1609 } else if (unit->mode == UNITMODE_PROFILE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1610 if (unit->prof_state != PROFILE_OFF) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1611 LCDspL = unit->prof_target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1612 LCDspH = unit->prof_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1613 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1614 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1615 if (*seconds == 60) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1616 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1617 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1618 pthread_mutex_lock(&mutexes[LOCK_LCD]);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1619 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1620 * Write 4 rows to the LCD to display the unit state
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1621 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1622 lcd_buf_write(row++, "Unit %d: %s ", LCDunit, UNITMODE[unit->mode]);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1623 lcd_buf_write(row++, "%s ", unit->product_name);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1624 lcd_buf_write(row++, "%c%5.1f\2 A%6.2f\1 ", LCDstatC, LCDspH, LCDair);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1625 lcd_buf_write(row++, "%c%5.1f\2 B%6.2f\1 ", LCDstatH, LCDspL, LCDbeer);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1626 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1627
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1628 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1629 * Publish MQTT messages set in flag
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1630 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1631 if (unit->mqtt_flag) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1632 if (unit->mqtt_flag & MQTT_FLAG_BIRTH) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1633 publishDBirth(unit);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1634 unit->mqtt_flag &= ~MQTT_FLAG_BIRTH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1635 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1636 publishDData(unit);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1637 unit->mqtt_flag &= ~MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1638 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1639 if (unit->mqtt_flag & MQTT_FLAG_DEATH) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1640 publishDDeath(unit);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1641 unit->mqtt_flag &= ~MQTT_FLAG_DEATH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1642 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1643 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1644
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1645 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1646 * Handle changed alarms
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1647 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1648 if (unit->alarm_flag != unit->alarm_last) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1649 syslog(LOG_NOTICE, "Unit `%s' Alarm %d => %d", unit->alias, unit->alarm_last, unit->alarm_flag);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1650 unit->alarm_last = unit->alarm_flag;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1651 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1652 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1653
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1654
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1655
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1656 int server(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1657 {
544
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1658 time_t now, last = (time_t)0, ndata = (time_t)0;;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1659 units_list *unit;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1660 int rc, run = 1, seconds = 0, minutes = 0, temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1661 int key;
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
1662 struct tm *tm;
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 72
diff changeset
1663 long t = 0;
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1664 int LCDunit;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1665
550
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1666 syslog(LOG_NOTICE, "Server process started");
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1667 my_shutdown = my_reboot = FALSE;
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
1668 if (lockprog((char *)"thermferm")) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1669 syslog(LOG_NOTICE, "Can't lock");
34
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
1670 return 1;
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
1671 }
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1672 mqtt_connect();
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1673
656
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1674 /*
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1675 * First scan the one-wire bus
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1676 */
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1677 rc = pthread_create(&my_one_wire_thread, NULL, my_one_wire_loop, (void *)t );
656
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1678 if (rc) {
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1679 fprintf(stderr, "my_one_wire_loop thread didn't start rc=%d\n", rc);
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1680 syslog(LOG_NOTICE, "my_one_wire_loop thread didn't start rc=%d", rc);
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1681 } else {
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1682 t++;
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1683 mDelay(2500); /* Wait a while to detect the devices */
656
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1684 }
ca47c742a25d One-wire thread is now the first to start. The devices_detect() function now uses the detected one-wire linked list instead of scan the sysfs. Base code for ds2413 added in the state table, needs rework.
Michiel Broek <mbroek@mbse.eu>
parents: 654
diff changeset
1685
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1686 if ((rc = devices_detect())) {
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1687 syslog(LOG_NOTICE, "Detected %d new devices", rc);
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1688 wrconfig();
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1689 }
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1690
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1691 rc = pthread_create(&my_devices_thread, NULL, my_devices_loop, (void *)t );
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1692 if (rc) {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1693 fprintf(stderr, "my_devices_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1694 syslog(LOG_NOTICE, "my_devices_loop thread didn't start rc=%d", rc);
164
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1695 } else {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1696 t++;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1697 }
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1698
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1699 rc = pthread_create(&my_server_thread, NULL, my_server_loop, (void *)t );
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1700 if (rc) {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1701 fprintf(stderr, "my_server_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1702 syslog(LOG_NOTICE, "my_server_loop thread didn't start rc=%d", rc);
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1703 } else {
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1704 t++;
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1705 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1706
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1707 rc = pthread_create(&my_panel_thread, NULL, my_panel_loop, (void *)t );
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1708 if (rc) {
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
1709 fprintf(stderr, "my_panel_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1710 syslog(LOG_NOTICE, "my_panel_loop thread didn't start rc=%d", rc);
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1711 } else {
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1712 t++;
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1713 }
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
1714
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
1715 #ifdef USE_SIMULATOR
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1716 rc = pthread_create(&my_simulator_thread, NULL, my_simulator_loop, (void *)t );
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
1717 if (rc) {
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
1718 fprintf(stderr, "my_simulator_loop thread didn't start rc=%d\n", rc);
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1719 syslog(LOG_NOTICE, "my_simulator_loop thread didn't start rc=%d", rc);
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
1720 } else {
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
1721 t++;
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
1722 }
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
1723 #endif
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
1724
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1725
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1726 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1727 * Initialize units for processing
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1728 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1729 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1730 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1731 * Safety, turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1732 */
525
5855abe0e82c Added unit alarm flag
Michiel Broek <mbroek@mbse.eu>
parents: 524
diff changeset
1733 unit->mqtt_flag = unit->alarm_flag = unit->alarm_last = 0;
582
ba340e00aab2 Version 0.9.5, interior lights are now only controlled by the open door or a 5 minutes timer. The timer is started via an MQTT command. The BMS web application sends this command just before a webcam page is requested.
Chiel Broek <mbse@mbse.eu>
parents: 578
diff changeset
1734 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->light_state = unit->light_timer = 0;
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1735 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
195
b34a1b2421fb Reset output when a different profile is selected. Better startup logging about the unit state. Added Beer, Fridge and partial Profile settings from the liveview weeb screen.
Michiel Broek <mbroek@mbse.eu>
parents: 194
diff changeset
1736 if (unit->mode == UNITMODE_PROFILE) {
570
1e0192b295b9 Removed useless version marks from the xml configuration. Added DCMD profile configuration to install and delete profiles in a fermenter. Removed the old profiles configuration. Removed useless xml configuration error check because none has been triggered in five years, Removed several obsolete upgrade functions. Updated the web liveview.
Michiel Broek <mbroek@mbse.eu>
parents: 569
diff changeset
1737 if (!unit->profile_uuid)
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1738 syslog(LOG_NOTICE, "Starting unit `%s' in profile mode, no profile defined.", unit->alias);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1739 else {
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1740 syslog(LOG_NOTICE, "Starting unit `%s' in profile state %s.", unit->alias, PROFSTATE[unit->prof_state]);
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1741 }
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1742 } else if (unit->mode == UNITMODE_BEER) {
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
1743 syslog(LOG_NOTICE, "Starting unit `%s' beer cooler at %.1f - %.1f degrees", unit->alias, unit->beer_set_lo, unit->beer_set_hi);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1744 } else if (unit->mode == UNITMODE_FRIDGE) {
578
d694abd9d809 Version 0.9.3. Splitted the temperature low and high settings in fridge and beer mode.
Michiel Broek <mbroek@mbse.eu>
parents: 576
diff changeset
1745 syslog(LOG_NOTICE, "Starting unit `%s' as refridgerator at %.1f - %.1f degrees", unit->alias, unit->fridge_set_lo, unit->fridge_set_hi);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1746 } else if (unit->mode == UNITMODE_NONE) {
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1747 syslog(LOG_NOTICE, "Starting unit `%s' in inactive state", unit->alias);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1748 } else {
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1749 syslog(LOG_NOTICE, "Starting unit `%s' in off state", unit->alias);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1750 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1751 }
547
0e4d4b45249f Versie 0.8.0. Fixed eerste DBIRTH fout geinitialiseerde waardes.
Michiel Broek <mbroek@mbse.eu>
parents: 545
diff changeset
1752 publishDBirthAll();
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1753
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1754 for (unit = Config.units; unit; unit = unit->next) {
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1755 if (unit->mode != UNITMODE_OFF) {
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1756 unit->event_msg = xstrcpy((char *)"Startup");
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1757 publishDLog(unit);
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1758 free(unit->event_msg);
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1759 unit->event_msg = NULL;
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1760 }
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1761 }
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1762
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1763 pthread_mutex_lock(&mutexes[LOCK_LCD]);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
1764 lcd_buf_write(1, (char *)" ThermFerm ");
661
8c1e7a52e24f Version 0.9.17a2. Disabled a lot of mutex locks, some are blocking and need to be fixed. This version seems to be working, more or less.
Michiel Broek <mbroek@mbse.eu>
parents: 660
diff changeset
1765 lcd_buf_write(2, (char *)"Version %s ", VERSION);
8c1e7a52e24f Version 0.9.17a2. Disabled a lot of mutex locks, some are blocking and need to be fixed. This version seems to be working, more or less.
Michiel Broek <mbroek@mbse.eu>
parents: 660
diff changeset
1766 // 0.9.17a2
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1767 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
33
2357e8636a60 Added user log with temperatures and cooler state
Michiel Broek <mbroek@mbse.eu>
parents: 29
diff changeset
1768
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1769 do {
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
1770 if (my_shutdown)
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
1771 run = 0;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1772
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1773 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1774 * Use to stop processing units. Should be used when a unit is
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1775 * added or removed.
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1776 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1777 if (run_pause) {
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1778 run_hold = TRUE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1779 syslog(LOG_NOTICE, "run_pause: entering hold state");
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1780 for (;;) {
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 651
diff changeset
1781 mDelay(100);
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1782 if (! run_pause)
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1783 break;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1784 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1785 syslog(LOG_NOTICE, "run_pause: leaving hold state");
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1786 run_hold = FALSE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1787 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1788 * In case the LCD buffers were cleared, setup the first page.
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1789 */
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1790 pthread_mutex_lock(&mutexes[LOCK_LCD]);
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1791 lcd_buf_write(1, (char *)" ThermFerm ");
661
8c1e7a52e24f Version 0.9.17a2. Disabled a lot of mutex locks, some are blocking and need to be fixed. This version seems to be working, more or less.
Michiel Broek <mbroek@mbse.eu>
parents: 660
diff changeset
1792 lcd_buf_write(2, (char *)"Version %s ", VERSION);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1793 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1794 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 244
diff changeset
1795
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1796 now = time(NULL);
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1797 if (now != last) {
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1798 /*
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1799 * Each second
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 188
diff changeset
1800 */
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1801 last = now;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1802 seconds++;
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1803
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1804 row = 3;
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1805 tm = localtime(&now);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1806 pthread_mutex_lock(&mutexes[LOCK_LCD]);
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1807 lcd_buf_write(row++, " %02d-%02d-%04d ", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900);
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1808 lcd_buf_write(row++, " %02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1809 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
105
a5a964148e34 Started code of roulating lcd display
Michiel Broek <mbroek@mbse.eu>
parents: 104
diff changeset
1810
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1811 pthread_mutex_lock(&mutexes[LOCK_LCD]);
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1812 lcd_buf_write(row, "Room temp N/A ");
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1813 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
545
c382a6c58c20 Fixed compiling whithout mqtt support.
Michiel Broek <mbroek@mbse.eu>
parents: 544
diff changeset
1814 int updateHT = 0;
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1815 if (Config.temp_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1816 rc = device_in(Config.temp_address, &temp);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1817 if (rc == DEVPRESENT_YES) {
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1818 if (Config.temp_value != temp)
545
c382a6c58c20 Fixed compiling whithout mqtt support.
Michiel Broek <mbroek@mbse.eu>
parents: 544
diff changeset
1819 updateHT = 1;
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1820 Config.temp_value = temp;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1821 Config.temp_state = 0;
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1822 pthread_mutex_lock(&mutexes[LOCK_LCD]);
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1823 lcd_buf_write(row, "Room temp %.1f%c ", Config.temp_value / 1000.0, 0x01);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1824 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1825 } else if (rc == DEVPRESENT_ERROR) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1826 Config.temp_state = 1;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1827 } else {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1828 Config.temp_state = 2;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1829 }
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 651
diff changeset
1830 mDelay(10);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1831 }
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1832 row++;
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1833
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1834 pthread_mutex_lock(&mutexes[LOCK_LCD]);
497
18ace27338e5 Compiles mosquitto code if library is found on the system. Bumped to version 0.5.4
Michiel Broek <mbroek@mbse.eu>
parents: 496
diff changeset
1835 lcd_buf_write(row, " Humidity N/A ");
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1836 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1837
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1838 if (Config.hum_address) {
395
e32e83550963 Switched to new device read code. Removed the incomplete support for the DS2408 1-wire chip.
Michiel Broek <mbroek@mbse.eu>
parents: 367
diff changeset
1839 rc = device_in(Config.hum_address, &temp);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1840 if (rc == DEVPRESENT_YES) {
499
602d9968960f Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents: 498
diff changeset
1841 if (Config.hum_value != temp)
545
c382a6c58c20 Fixed compiling whithout mqtt support.
Michiel Broek <mbroek@mbse.eu>
parents: 544
diff changeset
1842 updateHT = 1;
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1843 Config.hum_value = temp;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1844 Config.hum_state = 0;
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1845 pthread_mutex_lock(&mutexes[LOCK_LCD]);
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1846 lcd_buf_write(row, " Humidity %.1f%% ", Config.hum_value / 1000.0);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1847 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1848 } else if (rc == DEVPRESENT_ERROR) {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1849 Config.hum_state = 1;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1850 } else {
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1851 Config.hum_state = 2;
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1852 }
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 651
diff changeset
1853 mDelay(10);
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1854 }
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1855 row++;
544
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1856 /*
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1857 * If TH(B) changed. or if 5 minutes without
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1858 * update, send the NDATA message.
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1859 */
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1860 if (updateHT || (now > (ndata + 300))) {
510
2da3d3340403 Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents: 507
diff changeset
1861 publishNData(false, 0);
544
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1862 ndata = now;
e2889b17f48c Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents: 536
diff changeset
1863 }
207
8d2ba4126519 Added global setup
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1864
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1865 LCDunit = 0;
108
50d2187fdb74 New rotating LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1866 for (unit = Config.units; unit; unit = unit->next) {
486
5a237a99a793 Compacted LCD display for units, allways 4 instead of 4 to 6 lines. But it's a bit more cryptic. We could write a short manual.
Michiel Broek <mbroek@mbse.eu>
parents: 484
diff changeset
1867 LCDunit++;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1868 do_unit(unit, LCDunit, &seconds, &minutes);
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1869
349
1f89da6511a9 Added Fan delay logic.
Michiel Broek <mbroek@mbse.eu>
parents: 348
diff changeset
1870 } /* for units */
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1871
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1872 pthread_mutex_lock(&mutexes[LOCK_MENU]);
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
1873 if (setupmenu == MENU_NONE) {
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1874 pthread_mutex_lock(&mutexes[LOCK_LCD]);
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1875 lcd_buf_show();
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1876 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
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
1877 }
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1878 pthread_mutex_unlock(&mutexes[LOCK_MENU]);
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1879
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1880 if (seconds == 60) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1881 seconds = 0;
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1882
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1883 /*
591
95cf33f8021f Removed writing local unit data logs
Michiel Broek <mbroek@mbse.eu>
parents: 588
diff changeset
1884 * Publish data every minute if unit is active.
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1885 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1886 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1887 if (unit->mode != UNITMODE_OFF) {
575
86496d2bc4bb Version 0.9.2 DLOG messages every minute unless a unit is off. More event messages added. The target temperatur is now taken from the PIDs.
Michiel Broek <mbroek@mbse.eu>
parents: 572
diff changeset
1888 publishDLog(unit);
86496d2bc4bb Version 0.9.2 DLOG messages every minute unless a unit is off. More event messages added. The target temperatur is now taken from the PIDs.
Michiel Broek <mbroek@mbse.eu>
parents: 572
diff changeset
1889 if (unit->event_msg)
86496d2bc4bb Version 0.9.2 DLOG messages every minute unless a unit is off. More event messages added. The target temperatur is now taken from the PIDs.
Michiel Broek <mbroek@mbse.eu>
parents: 572
diff changeset
1890 free(unit->event_msg);
86496d2bc4bb Version 0.9.2 DLOG messages every minute unless a unit is off. More event messages added. The target temperatur is now taken from the PIDs.
Michiel Broek <mbroek@mbse.eu>
parents: 572
diff changeset
1891 unit->event_msg = NULL;
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1892 }
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
1893 }
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1894
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1895 minutes++;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1896 if (minutes == 60) {
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1897 minutes = 0;
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1898 /*
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1899 * Log usage counters every hour
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1900 */
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1901 for (unit = Config.units; unit; unit = unit->next) {
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1902 syslog(LOG_NOTICE, "Unit `%s' usage heater=%d cooler=%d fan=%d", unit->alias, unit->heater_usage, unit->cooler_usage, unit->fan_usage);
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1903 }
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
1904 }
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1905
227
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1906 /*
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1907 * Save the configuration each half hour.
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1908 */
1cb55ea51f76 Remove debug log information about regular configuration saving.
Michiel Broek <mbroek@mbse.eu>
parents: 223
diff changeset
1909 if ((minutes == 15) || (minutes == 45))
167
56b008563db8 Fixed GET AIR|BEER commands. Save configuration every 30 minutes.
Michiel Broek <mbroek@mbse.eu>
parents: 165
diff changeset
1910 wrconfig();
64
2431965e8a8c Write loglines only every 60 seconds
Michiel Broek <mbroek@mbse.eu>
parents: 63
diff changeset
1911 }
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1912 }
200
a215ddaabbe2 Added first panel key routines. The LCD display steps manual only and has a 2 minutes backlight timeout.
Michiel Broek <mbroek@mbse.eu>
parents: 199
diff changeset
1913
422
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1914 slcdDummy(slcdHandle);
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
1915 key = keycheck();
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
1916 if (key != KEY_NONE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
1917 panel_key_events(key);
200
a215ddaabbe2 Added first panel key routines. The LCD display steps manual only and has a 2 minutes backlight timeout.
Michiel Broek <mbroek@mbse.eu>
parents: 199
diff changeset
1918
652
16d3d4b58b5b Moved all delay functions into a new general file.
Michiel Broek <mbroek@mbse.eu>
parents: 651
diff changeset
1919 mDelay(100);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1920
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1921 } while (run);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1922
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1923 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1924 * Stop units processing in a neat way
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1925 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1926 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1927 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1928 * Turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1929 */
582
ba340e00aab2 Version 0.9.5, interior lights are now only controlled by the open door or a 5 minutes timer. The timer is started via an MQTT command. The BMS web application sends this command just before a webcam page is requested.
Chiel Broek <mbse@mbse.eu>
parents: 578
diff changeset
1930 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->light_state = unit->light_timer = 0;
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1931 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1932 device_out(unit->heater_address, unit->heater_state);
515
7ab5cf2afc0c Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1933 pub_domoticz_output(unit->heater_idx, unit->heater_state);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1934 device_out(unit->cooler_address, unit->cooler_state);
515
7ab5cf2afc0c Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1935 pub_domoticz_output(unit->cooler_idx, unit->cooler_state);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1936 device_out(unit->fan_address, unit->fan_state);
515
7ab5cf2afc0c Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1937 pub_domoticz_output(unit->fan_idx, unit->fan_state);
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1938 device_out(unit->light_address, unit->light_state);
533
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1939 if (unit->mode != UNITMODE_OFF) {
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1940 /*
575
86496d2bc4bb Version 0.9.2 DLOG messages every minute unless a unit is off. More event messages added. The target temperatur is now taken from the PIDs.
Michiel Broek <mbroek@mbse.eu>
parents: 572
diff changeset
1941 * If unit is active, publish we are dying.
533
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1942 */
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1943 unit->mqtt_flag = MQTT_FLAG_DATA;
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1944 publishDData(unit);
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1945 publishDDeath(unit);
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1946 unit->event_msg = xstrcpy((char *)"Shutdown");
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1947 publishDLog(unit);
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1948 free(unit->event_msg);
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1949 unit->event_msg = NULL;
533
49580ca85ab7 Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents: 532
diff changeset
1950 }
554
ab9f22ab57b5 Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents: 550
diff changeset
1951 syslog(LOG_NOTICE, "Unit `%s' stopped in mode %s", unit->alias, UNITMODE[unit->mode]);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1952 }
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1953 syslog(LOG_NOTICE, "Out of loop, stopping threads..");
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1954
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1955 /*
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1956 * Stop threads
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1957 */
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1958 #ifdef USE_SIMULATOR
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1959 my_simulator_shutdown = 1;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1960 while (my_simulator_state) { mDelay(50); };
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1961 #endif
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1962 my_panel_shutdown = 1;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1963 while (my_panel_state) { mDelay(50); };
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1964
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1965 /*
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1966 * Cancel command and shutdown via variable, one of them
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1967 * will stop this thread. Includes a failsafe.
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1968 */
660
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1969 my_server_shutdown = 1;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1970 rc = pthread_cancel(my_server_thread);
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1971 rc = 0;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1972 while (my_server_state) {
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1973 mDelay(50);
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1974 if (rc++ > 20) {
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1975 syslog(LOG_NOTICE, "Cannot terminate my_server_loop()");
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1976 break;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1977 }
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1978 }
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1979
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1980 my_devices_shutdown = 1;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1981 while (my_devices_state) { mDelay(50); };
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1982 my_one_wire_shutdown = 1;
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1983 while (my_one_wire_state) { mDelay(50); };
a28ef4d9afa4 Version 0.9.17a1. Revised starting and stopping the threads. Fixed stopping the command server thread. Moved one-wire tempeature sensors resolution correction to the one-wire thread. The devices thread fetches temperatures from the one-wire thread. The one-wire thread does everything for the temperature sensors. The command server uses private sockets. Still, only one session at the same time is handled.
Michiel Broek <mbroek@mbse.eu>
parents: 656
diff changeset
1984
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
1985 mqtt_disconnect();
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
1986
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1987 stopLCD();
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1988 if (sock != -1) {
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1989 if (shutdown(sock, SHUT_RDWR)) {
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1990 syslog(LOG_NOTICE, "Can't shutdown socket: %s", strerror(errno));
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1991 }
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1992 sock = -1;
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
1993 }
561
fcfc3dbe85fa Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents: 557
diff changeset
1994 lcd_buf_reset();
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
1995 wrconfig();
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
1996 ulockprog((char *)"thermferm");
550
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1997
04c942cded91 Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents: 548
diff changeset
1998 syslog(LOG_NOTICE, "Server process ended");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1999 return 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2000 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2001

mercurial