thermferm/thermferm.c

Sun, 05 May 2024 17:24:54 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 05 May 2024 17:24:54 +0200
changeset 730
6eba006ed8f5
parent 726
8289078ff7be
permissions
-rw-r--r--

Much faster shutdown of the websocket service.

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"
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
40 #include "websocket.h"
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
43 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
44 int my_reboot = FALSE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 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
46 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
47 int run_hold = FALSE;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
48 int row;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
50 extern int debug;
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
51 extern int foreground;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 extern sys_config Config;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 extern int lcdHandle;
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
54 extern int slcdHandle;
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_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
56 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
57 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
58 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
59 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
60 extern int my_server_shutdown;
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
61 extern int my_ws_state;
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
62 extern int my_ws_shutdown;
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
63 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
64 #ifdef USE_SIMULATOR
716
5c30c8ef83a8 Version 0.9.19b3. The simulator thread can be paused to be able to add and delete simulators. Added simulated door and PSU status. Devices can now fully use multiple simulators. Better rounding of simulated temperature values. The server SIMULATOR DEL and ADD commands pause the simulator when the linked list is manipulated. Fixed SIGSEGV when a simulator is added. Added socket SO_REUSEADDR again to the server socket.
Michiel Broek <mbroek@mbse.eu>
parents: 714
diff changeset
65 extern int my_simulator_command;
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
66 #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
67 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
68 extern int my_one_wire_shutdown;
205
ca18ff45deba Start initial menu setup
Michiel Broek <mbroek@mbse.eu>
parents: 204
diff changeset
69 int setupmenu = MENU_NONE;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
70 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
71 float temp_temp = 20.0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
72
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
73 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
74 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
75 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
76 pthread_t my_server_thread;
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
77 pthread_t my_ws_thread;
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
78 #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
79 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
80 #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
81
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
82 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
83
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
84 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
85 extern const char PROFSTATE[4][6];
104
5e538c4e1ecb Added units logging
Michiel Broek <mbroek@mbse.eu>
parents: 93
diff changeset
86
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
87 extern int sock;
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
88
40
dafbbd5e9922 Prepared unix socket communication
Michiel Broek <mbroek@mbse.eu>
parents: 34
diff changeset
89
484
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 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
91 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
92 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
93 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
94 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
95 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
96
7362ebd40f26 Use user defined characters for the LCD display just like in Arduino projects.
Michiel Broek <mbroek@mbse.eu>
parents: 481
diff changeset
97
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
98 int server(void);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 void help(void);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 void die(int);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
101 void stopLCD(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
102 #ifdef HAVE_WIRINGPI_H
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
103 void sendRCswitch(char *, int);
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
104 void stopRCswitch(void);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
105 #endif
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
106
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107
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
108
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_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
110 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
111 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
112 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
113 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
114 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
115 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
116 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
117 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
118 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
119
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
120
726
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
121 #ifndef HAVE_GETTID
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
122 /*
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
123 * Wrapper for older systems
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
124 */
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
125 pid_t gettid(void)
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
126 {
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
127 return (pid_t)syscall(__NR_gettid);
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
128 }
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
129 #endif
8289078ff7be Added test for gettid()
Michiel Broek <mbroek@mbse.eu>
parents: 717
diff changeset
130
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 void help(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 {
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
134 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
135 fprintf(stdout, "Usage: thermferm [-d] [-h]\n");
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
136 fprintf(stdout, " -d --debug Extra debug logging\n");
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
137 fprintf(stdout, " -f --foreground Run in foreground\n");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138 fprintf(stdout, " -h --help Display this help\n");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140
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
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143 void die(int onsig)
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 switch (onsig) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146 case SIGHUP: syslog(LOG_NOTICE, "Got SIGHUP, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
148 case SIGINT: syslog(LOG_NOTICE, "Keyboard interrupt, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
149 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
150 case SIGTERM: syslog(LOG_NOTICE, "Got SIGTERM, shutting down");
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
151 break;
326
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
152 case SIGSEGV: syslog(LOG_NOTICE, "Got SIGSEGV, shutting down");
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
153 my_shutdown = TRUE;
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
154 exit(SIGSEGV);
ae34b47700bb Changed die() handler
Michiel Broek <mbroek@mbse.eu>
parents: 321
diff changeset
155 break;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 default: syslog(LOG_NOTICE, "die() on signal %d", onsig);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
159 my_shutdown = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
163
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
164 void show_mode(void)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
165 {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
166 char buf[21];
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
167
328
1713dc0cd20f Fixed error
Michiel Broek <mbroek@mbse.eu>
parents: 326
diff changeset
168 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
169 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
170 lcdPuts(lcdHandle, buf);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
171 lcdPosition(lcdHandle, 0, 1);
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 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
174 slcdPosition(slcdHandle, 0, 1);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
175 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
176
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
177
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
178
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
179 void go_menu(int menu)
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
180 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
181 char buf[21];
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
182
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
183 pthread_mutex_lock(&mutexes[LOCK_LCD]);
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
184 pthread_mutex_lock(&mutexes[LOCK_MENU]);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
185 #ifdef HAVE_WIRINGPI_H
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
186 lcdClear(lcdHandle);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
187 lcdPosition(lcdHandle, 0, 0);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
188 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
189 slcdClear(slcdHandle);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
190 slcdPosition(slcdHandle, 0, 0);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
191 setupmenu = menu;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
192
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
193 switch (menu) {
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
194 case MENU_NONE:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
195 lcd_buf_show();
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
196 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
197
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
198 case MENU_TOP_DEFAULT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
199 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
200 lcdPuts(lcdHandle, "Setup mode.");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
201 lcdPosition(lcdHandle, 0, 1);
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
202 lcdPuts(lcdHandle, "Up&Down = Escape");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
203 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
204 slcdPuts(slcdHandle, "Setup mode.");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
205 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
206 slcdPuts(slcdHandle, "Up&Down = Escape");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
207 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
208
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
209 case MENU_TOP_UNITS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
210 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
211 lcdPuts(lcdHandle, "Select units");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
212 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
213 slcdPuts(slcdHandle, "Select units");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
214 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
215
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
216 case MENU_UNITS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
217 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
218 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
219 lcdPosition(lcdHandle, 0, 1);
556
c2ee7f9a069e Fixed compile for LCD display
Michiel Broek <mbroek@mbse.eu>
parents: 554
diff changeset
220 lcdPuts(lcdHandle, current_unit->alias);
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, "Choose unit:");
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
223 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
224 slcdPuts(slcdHandle, current_unit->alias);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
225 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
226
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
227 case MENU_MODE_OFF: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
228 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
229 lcdPuts(lcdHandle, "New mode OFF");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
230 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
231 slcdPuts(slcdHandle, "New mode OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
232 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
233
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
234 case MENU_MODE_NONE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
235 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
236 lcdPuts(lcdHandle, "New mode NONE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
237 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
238 slcdPuts(slcdHandle, "New mode NONE");
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
239 break;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
240
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
241 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
242 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
243 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
244 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
245 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
246 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
247
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
248 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
249 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
250 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
251 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
252 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
253 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
254
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
255 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
256 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
257 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
258 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
259 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
260 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
261
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
262 case MENU_MODE_BEER: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
263 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
264 lcdPuts(lcdHandle, "New mode BEER");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
265 #endif
488
bee1f70fb42b Small brewpanel display error fix, did not affect real hardware.
Michiel Broek <mbroek@mbse.eu>
parents: 486
diff changeset
266 slcdPuts(slcdHandle, "New mode BEER");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
267 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
268
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
269 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
270 #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
271 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
272 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
273 #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
274 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
275 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
276 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
277 #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
278 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
279 #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
280 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
281 break;
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
282
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
283 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
284 #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
285 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
286 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
287 #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
288 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
289 slcdPosition(slcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
290 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
291 #ifdef HAVE_WIRINGPI_H
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
292 lcdPuts(lcdHandle, buf);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
293 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
294 slcdPuts(slcdHandle, buf);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
295 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
296
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
297 case MENU_MODE_FRIDGE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
298 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
299 lcdPuts(lcdHandle, "New mode FRIDGE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
300 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
301 slcdPuts(slcdHandle, "New mode FRIDGE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
302 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
303
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
304 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
305 #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
306 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
307 lcdPosition(lcdHandle, 0, 1);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
308 #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
309 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
310 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
311 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
312 #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
313 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
314 #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
315 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
316 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
317
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
318 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
319 #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
320 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
321 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
322 #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
323 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
324 slcdPosition(slcdHandle, 0, 1);
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
325 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
326 #ifdef HAVE_WIRINGPI_H
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
327 lcdPuts(lcdHandle, buf);
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);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
330 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
331
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
332 case MENU_MODE_PROFILE: show_mode();
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
333 #ifdef HAVE_WIRINGPI_H
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
334 lcdPuts(lcdHandle, "New mode PROFILE");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
335 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
336 slcdPuts(slcdHandle, "New mode PROFILE");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
337 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
338
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
339 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
340 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
341 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
342 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
343 lcdPuts(lcdHandle, "Start profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
344 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
345 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
346 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
347 slcdPuts(slcdHandle, "Start profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
348 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
349
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
350 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
351 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
352 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
353 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
354 lcdPuts(lcdHandle, "Pause profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
355 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
356 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
357 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
358 slcdPuts(slcdHandle, "Pause profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
359 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
360
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
361 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
362 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
363 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
364 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
365 lcdPuts(lcdHandle, "Abort profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
366 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
367 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
368 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
369 slcdPuts(slcdHandle, "Abort profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
370 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
371
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
372 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
373 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
374 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
375 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
376 lcdPuts(lcdHandle, "Resume profile");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
377 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
378 slcdPuts(slcdHandle, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
379 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
380 slcdPuts(slcdHandle, "Resume profile");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
381 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
382
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
383 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
384 #ifdef HAVE_WIRINGPI_H
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
385 lcdPuts(lcdHandle, buf);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
386 lcdPosition(lcdHandle, 0, 1);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
387 lcdPuts(lcdHandle, "Set profile OFF");
418
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, buf);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
390 slcdPosition(slcdHandle, 0, 1);
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
391 slcdPuts(slcdHandle, "Set profile OFF");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
392 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
393
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
394 case MENU_TOP_SYS:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
395 #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
396 lcdPuts(lcdHandle, "System menu");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
397 #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
398 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
399 break;
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
400
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
401 case MENU_SYS_HALT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
402 #ifdef HAVE_WIRINGPI_H
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
403 lcdPuts(lcdHandle, "Halt system");
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
404 #endif
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
405 slcdPuts(slcdHandle, "Halt system");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
406 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
407
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
408 case MENU_SYS_REBOOT:
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
409 #ifdef HAVE_WIRINGPI_H
669
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
410 lcdPuts(lcdHandle, "Restart app.");
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
411 #endif
669
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
412 slcdPuts(slcdHandle, "Restart app.");
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
413 break;
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
414 }
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
415
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
416 pthread_mutex_unlock(&mutexes[LOCK_MENU]);
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
417 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
214
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
418 }
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
419
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
420
37d1eb0e1d66 Added a bunch of panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
421
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
422 void stopLCD(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
423 {
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
424 pthread_mutex_lock(&mutexes[LOCK_LCD]);
418
0bfe08c7ba6e Reenabled code round LCD driver.
Michiel Broek <mbroek@mbse.eu>
parents: 406
diff changeset
425 #ifdef HAVE_WIRINGPI_H
223
14700edd2a67 Removed LCD shadow copy buffer.
Michiel Broek <mbroek@mbse.eu>
parents: 221
diff changeset
426 lcdClear(lcdHandle);
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
427 #endif
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
428 slcdClear(slcdHandle);
426
e54611453d29 Moved global bit defines to config.h
Michiel Broek <mbroek@mbse.eu>
parents: 423
diff changeset
429 setBacklight(0);
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
430 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
431 }
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
432
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
433
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
434
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
435 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
436 * Change mode of current_unit
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
437 */
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
438 void change_mode(int mode)
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
439 {
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
440 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
441 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
442 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
443 }
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
444 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
445 current_unit->mode = mode;
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
446 /* 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
447 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
448 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
449 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
450 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
451 device_out(current_unit->heater_address, current_unit->heater_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
452 device_out(current_unit->cooler_address, current_unit->cooler_state);
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
453 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
454 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
455 if (current_unit->mode == UNITMODE_PROFILE) {
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
456 /*
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
457 * 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
458 * main processing loop.
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
459 */
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
460 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
461 current_unit->prof_target_hi = 20.0;
406
44566f986f76 Fixed compiling on a real RPi.
Michiel Broek <mbroek@mbse.eu>
parents: 405
diff changeset
462 current_unit->prof_fridge_mode = 0;
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
463 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
464 }
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
465
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
466
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
467
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
468 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
469 * Handle panel key events
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
470 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
471 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
472 {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
473 units_list *unit;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
474 int rc;
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
475
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
476 switch (setupmenu) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
477 case MENU_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
478 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
479 lcd_buf_step(key);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
480 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
481 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
482 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
483
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
484 case MENU_TOP_DEFAULT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
485 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
486 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
487 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
488 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
489 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
490 go_menu(MENU_TOP_SYS);
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_TOP_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_NONE);
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 go_menu(MENU_TOP_SYS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
498 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
499 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
500 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
501 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
502 * Start with the first unit
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
503 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
504 current_unit = Config.units;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
505 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
506 }
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 case MENU_UNITS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
510 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
511 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
512 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
513 if (current_unit->next) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
514 current_unit = current_unit->next;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
515 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
516 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
517 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
518 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
519 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
520 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
521 current_unit = unit;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
522 go_menu(MENU_UNITS);
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 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
525 }
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 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
528 /*
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
529 * Drop into the current mode
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
530 */
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
531 switch (current_unit->mode) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
532 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
533 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
534 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
535 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
536 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
537 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
538 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
539 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
540 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
541 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
542 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
543 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
544 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
545
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
546 case MENU_MODE_OFF:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
547 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
548 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
549 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
550 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
551 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
552 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
553 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
554 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
555 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
556 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
557 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
558 change_mode(UNITMODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
559 go_menu(MENU_MODE_OFF);
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 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
562
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
563 case MENU_MODE_NONE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
564 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
565 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
566 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
567 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
568 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
569 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
570 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
571 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
572 go_menu(MENU_NONE_HEAT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
573 else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
574 change_mode(UNITMODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
575 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
576 }
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_HEAT:
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_COOL);
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_FAN);
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->heater_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
589 current_unit->heater_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->heater_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_HEAT);
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_COOL:
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_FAN);
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_HEAT);
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->cooler_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
605 current_unit->cooler_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->cooler_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_COOL);
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_NONE_FAN:
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_MODE_NONE);
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_NONE_HEAT);
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_NONE_COOL);
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->fan_state)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
621 current_unit->fan_state = 0;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
622 else
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
623 current_unit->fan_state = 100;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
624 go_menu(MENU_NONE_FAN);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
625 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
626 break;
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 case MENU_MODE_FRIDGE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
629 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
630 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
631 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
632 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
633 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
634 go_menu(MENU_MODE_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
635 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
636 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
637 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
638 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
639 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
640 change_mode(UNITMODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
641 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
642 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
643 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
644 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
645
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
646 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
647 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
648 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
649 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
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 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
652 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
653 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
654 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
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 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
657 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
658 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
659 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
660 }
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
661 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
662 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
663 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
664 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
665 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
666 }
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 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
668 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
669 }
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 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
671
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 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
673 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
674 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
675 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
676 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
677 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
678 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
679 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
680 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
681 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
682 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
683 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
684 }
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
685 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
686 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
687 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
688 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
689 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
690 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
691 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
692 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
693 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
694
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
695 case MENU_MODE_BEER:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
696 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
697 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
698 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
699 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
700 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
701 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
702 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
703 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
704 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
705 go_menu(MENU_MODE_FRIDGE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
706 if (key == KEY_ENTER) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
707 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
708 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
709 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
710 } else {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
711 change_mode(UNITMODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
712 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
713 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
714 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
715 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
716
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
717 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
718 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
719 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
720 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
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 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
723 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
724 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
725 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
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 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
728 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
729 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
730 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
731 }
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
732 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
733 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
734 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
735 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
736 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
737 }
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 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
739 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
740 }
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 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
742
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 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
744 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
745 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
746 if (key == KEY_DOWN) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
747 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
748 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
749 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
750 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
751 if (key == KEY_UP) {
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
752 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
753 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
754 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
755 }
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
756 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
757 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
758 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
759 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
760 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
761 }
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
762 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
763 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
764 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
765
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
766 case MENU_MODE_PROFILE:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
767 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
768 go_menu(MENU_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
769 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
770 go_menu(MENU_MODE_OFF);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
771 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
772 go_menu(MENU_MODE_BEER);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
773 if (key == KEY_ENTER) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
774 if (current_unit->mode == UNITMODE_PROFILE) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
775 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
776 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
777 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
778 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
779 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
780 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
781 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
782 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
783 break;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
784 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
785 } else {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
786 change_mode(UNITMODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
787 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
788 }
246
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 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
791
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
792 case MENU_PROFILE_START:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
793 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
794 go_menu(MENU_MODE_PROFILE);
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_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
797 current_unit->prof_started = time(NULL);
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 288
diff changeset
798 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
799 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
800 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
801 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
802 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
803 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
804 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
805
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
806 case MENU_PROFILE_PAUSE:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
807 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
808 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
809 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
810 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
811 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
812 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
813 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
814 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
815 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
816 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
817 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
818
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
819 case MENU_PROFILE_ABORT:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
820 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
821 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
822 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
823 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
824 go_menu(MENU_PROFILE_RESUME);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
825 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
826 go_menu(MENU_PROFILE_PAUSE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
827 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
828 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
829 current_unit->prof_state = PROFILE_OFF;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
830 current_unit->prof_started = 0;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
831 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
832 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
833 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
834 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
835 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
836
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
837 case MENU_PROFILE_RESUME:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
838 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
839 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
840 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
841 go_menu(MENU_PROFILE_ABORT);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
842 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
843 current_unit->prof_state = PROFILE_RUN;
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
844 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
845 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
846 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
847 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
848 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
849
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
850 case MENU_PROFILE_GOOFF:
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
851 if (key == KEY_ESCAPE)
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
852 go_menu(MENU_MODE_PROFILE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
853 if (key == KEY_ENTER) {
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
854 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
855 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
856 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
857 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
858 }
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
859 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
860 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
861
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
862 case MENU_TOP_SYS:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
863 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
864 go_menu(MENU_NONE);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
865 if (key == KEY_DOWN)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
866 go_menu(MENU_TOP_DEFAULT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
867 if (key == KEY_UP)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
868 go_menu(MENU_TOP_UNITS);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
869 if (key == KEY_ENTER)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
870 go_menu(MENU_SYS_HALT);
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
871 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
872
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
873 case MENU_SYS_HALT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
874 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
875 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
876 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
877 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
878 if (key == KEY_CONFIRM) {
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
879 rc = system("/sbin/halt");
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
880 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
881 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
882 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
883 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
884
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
885 case MENU_SYS_REBOOT:
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
886 if (key == KEY_ESCAPE)
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
887 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
888 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
889 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
890 if (key == KEY_CONFIRM) {
669
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
891 /*
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
892 * Restart. The server process will restart which is handled
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
893 * in the main thread loop.
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
894 */
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
895 my_reboot = my_shutdown = TRUE;
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
896 syslog(LOG_NOTICE, "Application restart from panel");
247
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
897 go_menu(MENU_NONE);
f3d0e9445fcd Added profile panel menus and system panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 246
diff changeset
898 }
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
899 break;
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
900 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
901 }
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
902
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
903
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
904
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
905 int main(int argc, char *argv[])
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
906 {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
907 int rc, c, i;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
908 pid_t frk;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
909
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
910 while (1) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
911 int option_index = 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
912 static struct option long_options[] = {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
913 {"debug", 0, 0, 'c'},
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
914 {"foreground", 0, 0, 'f'},
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
915 {"help", 0, 0, 'h'},
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
916 {0, 0, 0, 0}
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
917 };
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
918
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
919 c = getopt_long(argc, argv, "dh", long_options, &option_index);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
920 if (c == -1)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
921 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
922
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
923 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
924 case 'd': debug = TRUE;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
925 break;
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
926 case 'f': foreground = TRUE;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
927 break;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
928 case 'h': help();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
929 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
930 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
931 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
932
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
933 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
934 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
935
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
936 if (rdconfig()) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
937 fprintf(stderr, "Error reading configuration\n");
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
938 syslog(LOG_NOTICE, "Error reading configuration: halted");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
939 return 1;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
940 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
941
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
942 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
943 * 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
944 * 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
945 * Don't catch SIGCHLD.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
946 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
947 for (i = 0; i < NSIG; i++) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
948 if ((i != SIGCHLD) && (i != SIGKILL) && (i != SIGSTOP))
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
949 signal(i, (void (*))die);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
950 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
951
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 64
diff changeset
952 #ifdef HAVE_WIRINGPI_H
651
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
953 syslog(LOG_NOTICE, "Build with wiringPi");
611
732d482f47c8 Improved logging if wiringpi failed.
Michiel Broek
parents: 608
diff changeset
954 if (wiringPiSetup () ) {
732d482f47c8 Improved logging if wiringpi failed.
Michiel Broek
parents: 608
diff changeset
955 syslog(LOG_NOTICE, "Error wiringPiSetup(): halted");
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
956 return 1;
611
732d482f47c8 Improved logging if wiringpi failed.
Michiel Broek
parents: 608
diff changeset
957 }
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
958 #endif
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
959
651
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
960 #ifdef USE_SIMULATOR
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
961 syslog(LOG_NOTICE, "Build with simulator");
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
962 #endif
da166cb8470f Log compile options on startup.
Michiel Broek <mbroek@mbse.eu>
parents: 648
diff changeset
963
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
964 if (foreground) {
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
965 /*
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
966 * Run in foreground.
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
967 */
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
968 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
969 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
970 } while (my_reboot == TRUE);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
971 } else {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
972 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
973 * Server initialization is complete. Now we can fork the
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
974 * 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
975 * 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
976 * users control terminal. This is done before the fork, so
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
977 * 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
978 * 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
979 * associated with that terminal as its control terminal.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
980 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
981 if ((pgrp = setpgid(0, 0)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
982 syslog(LOG_NOTICE, "setpgpid failed");
26
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
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
985 frk = fork();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
986 switch (frk) {
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
987 case -1:
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
988 syslog(LOG_NOTICE, "Daemon fork failed: %s", strerror(errno));
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
989 stopLCD();
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
990 exit(1);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
991 case 0: /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
992 * Run the daemon
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
993 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
994 fclose(stdin);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
995 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
996 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
997 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
998 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
999 fclose(stdout);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1000 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
1001 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
1002 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1003 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1004 fclose(stderr);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1005 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
1006 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
1007 _exit(2);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1008 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1009 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
1010 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
1011 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
1012 } while (my_reboot == TRUE);
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1013 break;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1014 /* Not reached */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1015 default:
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1016 /*
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1017 * Here we detach this process and let the child
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1018 * run the deamon process.
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1019 */
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1020 syslog(LOG_NOTICE, "Starting daemon with pid %d", frk);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1021 exit(0);
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 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1024
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
1025 killconfig();
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1026 syslog(LOG_NOTICE, "Finished, rc=%d", rc);
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1027 return rc;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1028 }
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
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1031 void do_unit(units_list *unit, int LCDunit, int seconds, int minutes)
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1032 {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1033 time_t now;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1034 prof_step *step;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1035 int rc, temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1036 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
1037 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
1038 float previous_target_lo, previous_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1039 float LCDair, LCDbeer, LCDspL, LCDspH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1040 unsigned char LCDstatC, LCDstatH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1041
678
cc49115e769e Better websocket broadcast messages. Added GLOBAL JSON command to the server. Better logic to trigger websocket and mqtt data updates for the fermenter units. Websocket receive added fermenter mode, stage, setpoints, switches. Added more css styles for the fermenter screen. Added the fermenter screen php and javascript.
Michiel Broek <mbroek@mbse.eu>
parents: 675
diff changeset
1042 // unit->mqtt_flag &= ~MQTT_FLAG_DATA;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1043 unit->alarm_flag = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1044
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1045 if (unit->air_address) {
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1046 unit->air_state = rc = device_in(unit->air_address, &temp);
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1047 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1048 if (unit->air_temperature != temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1049 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1050 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1051 unit->air_temperature = temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1052 }
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1053 } else {
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1054 unit->air_state = DEVPRESENT_NO;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1055 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1056
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1057 if (unit->beer_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1058 rc = device_in(unit->beer_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1059 if ((rc == DEVPRESENT_NO) && unit->beer_address2) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1060 /* Read alternative sensor */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1061 rc = device_in(unit->beer_address2, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1062 }
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1063 unit->beer_state = rc;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1064 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1065 if (unit->beer_temperature != temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1066 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1067 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1068 unit->beer_temperature = temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1069 }
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1070 } else {
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1071 unit->beer_state = DEVPRESENT_NO;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1072 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1073
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1074 if (unit->chiller_address) {
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1075 unit->chiller_state = rc = device_in(unit->chiller_address, &temp);
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1076 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1077 if (unit->chiller_temperature != temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1078 unit->mqtt_flag |= MQTT_FLAG_DATA;
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 unit->chiller_temperature = temp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1081 }
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1082 } else {
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1083 unit->chiller_state = DEVPRESENT_NO;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1084 }
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 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1087 * Unit door state, default is closed.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1088 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1089 if (unit->door_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1090 rc = device_in(unit->door_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1091 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1092 if (temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1093 if (unit->door_state == 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1094 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
1095 unit->door_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1096 unit->mqtt_flag |= MQTT_FLAG_DATA;
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 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1099 if (unit->door_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1100 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
1101 unit->door_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1102 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1103 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1104 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1105 * 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
1106 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1107 if (unit->mode != UNITMODE_NONE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1108 unit->alarm_flag |= ALARM_FLAG_DOOR;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1109 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1110 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1111 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1112 unit->door_state = 1;
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 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1115 unit->door_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1116 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1117
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 * Unit PSU state
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1120 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1121 if (unit->psu_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1122 rc = device_in(unit->psu_address, &temp);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1123 if (rc == DEVPRESENT_YES) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1124 if (temp) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1125 if (unit->psu_state == 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1126 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
1127 unit->psu_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1128 unit->mqtt_flag |= MQTT_FLAG_DATA;
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 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1131 if (unit->psu_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1132 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
1133 unit->psu_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1134 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1135 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1136 unit->alarm_flag |= ALARM_FLAG_PSU;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1137 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1138 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1139 unit->psu_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1140 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1141 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1142 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1143 * No state available, assume Ok.
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->psu_state = 1;
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
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1148 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1149 * Handle profile
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1150 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1151 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
1152 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1153 * 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
1154 * 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
1155 * unit->prof_target - Calculated target temperature.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1156 * unit->prof_paused - Internal pause counter.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1157 * 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
1158 * 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
1159 * 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
1160 */
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 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1163 * Safe defaults
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1164 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1165 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
1166 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
1167 unit->prof_fridge_mode = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1168
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1169 switch (unit->prof_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1170 case PROFILE_OFF:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1171 unit->prof_percent = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1172 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1173 case PROFILE_PAUSE:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1174 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1175 * Keep current temperature, measure pause time. For
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1176 * temperature fall thru.
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 unit->prof_paused++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1179 case PROFILE_RUN:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1180 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1181 * Calculate current profile step and desired temperature.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1182 * 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
1183 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1184 previous_target_lo = unit->profile_inittemp_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1185 previous_target_hi = unit->profile_inittemp_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1186 previous_fridge_mode = unit->profile_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1187 time_until_now = current_step = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1188 now = time(NULL);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1189 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
1190 run_minutes = run_seconds / 60;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1191 run_hours = run_minutes / 60;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1192 if (debug)
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1193 syslog(LOG_NOTICE, "run_HMS=%d,%d,%d", run_hours, run_minutes, run_seconds);
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1194
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1195 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1196 * Primary fermentation tests
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1197 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1198 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
1199 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
1200 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
1201 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
1202 if (unit->prof_primary_done == 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1203 if (unit->cooler_address) {
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 * 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
1206 * 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
1207 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1208 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
1209 unit->prof_primary_done = time(NULL);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1210 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
1211 if (! unit->event_msg)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1212 unit->event_msg = xstrcpy((char *)"Primary peak");
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 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1215 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1216 * 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
1217 * beer temperature to rise freely.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1218 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1219 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
1220 unit->prof_primary_done = time(NULL);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1221 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
1222 if (! unit->event_msg)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1223 unit->event_msg = xstrcpy((char *)"Primary peak");
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 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1226 }
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 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1229 * See how long this profile will take
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1230 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1231 tot_minutes = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1232 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
1233 tot_minutes += ((step->steptime + step->resttime) * 60);
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 if ((tot_minutes == 0) && unit->profile_totalsteps) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1236 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
1237 unit->prof_state = PROFILE_OFF;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1238 break;
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
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1241 valid_step = FALSE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1242 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
1243 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1244 * step->steptime
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1245 * step->resttime
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1246 * step->target
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1247 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1248 current_step++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1249 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
1250 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1251 * This is our current step
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 valid_step = TRUE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1254 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
1255 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
1256 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
1257 if (step->fridge_mode > previous_fridge_mode) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1258 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
1259 } 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
1260 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
1261 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1262 unit->prof_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1263 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1264 if (debug)
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1265 syslog(LOG_NOTICE, "prof_fridge_mode=%d run_minutes=%d steptime=%d time_until_now=%d",
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1266 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
1267 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1268 unit->prof_target_lo = step->target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1269 unit->prof_target_hi = step->target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1270 unit->prof_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1271 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1272 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1273 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1274 time_until_now += step->steptime + step->resttime;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1275 previous_target_lo = step->target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1276 previous_target_hi = step->target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1277 previous_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1278 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1279
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1280 if (valid_step == TRUE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1281 unit->prof_percent = (100 * run_minutes) / tot_minutes;
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1282 if (((minutes == 10) || (minutes == 40)) && (seconds == 1)) {
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1283 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
1284 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
1285 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
1286 unit->mqtt_flag |= MQTT_FLAG_DATA;
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 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1289 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1290 * No more steps to do
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1291 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1292 unit->prof_state = PROFILE_DONE;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1293 unit->prof_percent = 100;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1294 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
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 if (! unit->event_msg)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1297 unit->event_msg = xstrcpy((char *)"Profile finished");
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 break;
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 case PROFILE_DONE:
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1302 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1303 * 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
1304 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1305 previous_target_lo = unit->profile_inittemp_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1306 previous_target_hi = unit->profile_inittemp_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1307 previous_fridge_mode = unit->profile_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1308 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
1309 if ((step->steptime + step->resttime) == 0)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1310 break;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1311 previous_target_lo = step->target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1312 previous_target_hi = step->target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1313 previous_fridge_mode = step->fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1314 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1315 unit->prof_target_lo = previous_target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1316 unit->prof_target_hi = previous_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1317 unit->prof_fridge_mode = previous_fridge_mode;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1318 unit->prof_percent = 100;
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 } /* switch */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1321 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1322 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1323 * Set some sane values
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1324 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1325 unit->prof_target_lo = 19.8;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1326 unit->prof_target_hi = 20.2;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1327 unit->prof_fridge_mode = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1328 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1329
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1330 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1331 * Manual switching
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1332 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1333 if (unit->mode == UNITMODE_NONE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1334 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
1335 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
1336 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
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 * Usage counters
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->heater_address && unit->heater_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1343 unit->heater_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1344 if (unit->cooler_address && unit->cooler_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1345 unit->cooler_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1346 if (unit->fan_address && unit->fan_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1347 unit->fan_usage++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1348 if (unit->light_address && unit->light_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1349 unit->light_usage++;
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 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1352 * Interior lights
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1353 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1354 if (unit->light_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1355 if (unit->light_timer) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1356 unit->light_timer--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1357 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1358 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
1359 if (unit->light_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1360 unit->light_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1361 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1362 unit->light_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1363 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
1364 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1365 }
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 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
1369 unit->light_state = 1;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1370 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1371 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
1372 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1373 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
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 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1377 * Temperature control in this unit
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1378 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1379 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
1380
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 * 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
1383 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1384 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
1385 if (unit->mode == UNITMODE_FRIDGE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1386 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
1387 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
1388 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
1389 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
1390 } else if (unit->mode == UNITMODE_BEER) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1391 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
1392 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
1393 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
1394 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
1395 } else if (unit->mode == UNITMODE_PROFILE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1396 double usetemp;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1397 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
1398 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
1399 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1400 * 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
1401 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1402 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
1403 ((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
1404 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
1405 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
1406 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1407
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 * 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
1410 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1411 for (int i = 0; i < 10; i++) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1412 UpdatePID(unit->PID_heat);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1413 UpdatePID(unit->PID_cool);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1414 }
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 * Logging
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 if (unit->heater_address) {
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 * Prevent extreme heating
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1421 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1422 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
1423 unit->PID_heat->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1424 }
714
24749c296a50 Version 0.9.19b2. Simulator redesign and it is now possible to run more then one simulator. All simulated devices have address names that include the simulator number. Added the setup screen for the most part. Not compatible with previous versions if a simulator was used, delete all simulators and simulated devices during stop and start.
Michiel Broek <mbroek@mbse.eu>
parents: 693
diff changeset
1425 if ((seconds == 60) && (unit->mode > UNITMODE_NONE)) {
717
22dd7ab614e5 Add new fermenter adds dummy yeast temperatures. Periodic thermferm unit logging adds the unit alias name. Added Green LED hide color. Moved getglobal.php to dbglobal.php. Adjusted several record types in global and fermenter javascript records so there is less guesswork. Only display control leds and switches for defined equipment.
Michiel Broek <mbroek@mbse.eu>
parents: 716
diff changeset
1426 syslog(LOG_NOTICE, "Heat: sp=%.3f Input=%.3f iState=%.3f Err=%.3f Out=%.1f Unit=%s",
22dd7ab614e5 Add new fermenter adds dummy yeast temperatures. Periodic thermferm unit logging adds the unit alias name. Added Green LED hide color. Moved getglobal.php to dbglobal.php. Adjusted several record types in global and fermenter javascript records so there is less guesswork. Only display control leds and switches for defined equipment.
Michiel Broek <mbroek@mbse.eu>
parents: 716
diff changeset
1427 unit->PID_heat->SetP, unit->PID_heat->Input, unit->PID_heat->iState, unit->PID_heat->Err, unit->PID_heat->OutP, unit->alias);
665
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 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1430 unit->PID_heat->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1431 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1432 if (unit->cooler_address) {
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 * Prevent extreme cooling
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1435 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1436 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
1437 unit->PID_cool->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1438 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1439 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1440 * 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
1441 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1442 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
1443 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
1444 unit->PID_cool->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1445 unit->alarm_flag |= ALARM_FLAG_CHILLER;
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1446 if (seconds == 60) {
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1447 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
1448 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1449 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1450 }
714
24749c296a50 Version 0.9.19b2. Simulator redesign and it is now possible to run more then one simulator. All simulated devices have address names that include the simulator number. Added the setup screen for the most part. Not compatible with previous versions if a simulator was used, delete all simulators and simulated devices during stop and start.
Michiel Broek <mbroek@mbse.eu>
parents: 693
diff changeset
1451 if ((seconds == 60) && (unit->mode > UNITMODE_NONE)) {
717
22dd7ab614e5 Add new fermenter adds dummy yeast temperatures. Periodic thermferm unit logging adds the unit alias name. Added Green LED hide color. Moved getglobal.php to dbglobal.php. Adjusted several record types in global and fermenter javascript records so there is less guesswork. Only display control leds and switches for defined equipment.
Michiel Broek <mbroek@mbse.eu>
parents: 716
diff changeset
1452 syslog(LOG_NOTICE, "Cool: sp=%.3f Input=%.3f iState=%.3f Err=%.3f Out=%.1f Unit=%s",
22dd7ab614e5 Add new fermenter adds dummy yeast temperatures. Periodic thermferm unit logging adds the unit alias name. Added Green LED hide color. Moved getglobal.php to dbglobal.php. Adjusted several record types in global and fermenter javascript records so there is less guesswork. Only display control leds and switches for defined equipment.
Michiel Broek <mbroek@mbse.eu>
parents: 716
diff changeset
1453 unit->PID_cool->SetP, unit->PID_cool->Input, unit->PID_cool->iState, unit->PID_cool->Err, unit->PID_cool->OutP, unit->alias);
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1454 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1455 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1456 unit->PID_cool->OutP = 0.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 * Deadlock, kill lowest value.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1461 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1462 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
1463 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
1464 unit->PID_heat->OutP = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1465 else
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1466 unit->PID_cool->OutP = 0.0;
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 if (unit->heater_address && ! unit->cooler_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1470 if (unit->PID_heat->OutP >= 50) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1471 if (unit->heater_wait < unit->heater_delay) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1472 unit->heater_wait++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1473 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1474 int power = round(unit->PID_heat->OutP);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1475 if (unit->heater_state != power) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1476 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
1477 unit->heater_state = power;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1478 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1479 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1480 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1481 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1482 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1483 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1484 if (unit->heater_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1485 unit->heater_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1486 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1487 if (unit->heater_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1488 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
1489 unit->heater_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1490 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1491 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1492 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1493 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1494 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1495 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1496 if (unit->door_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1497 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
1498 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1499 device_out(unit->heater_address, 0);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1500 }
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 if (unit->cooler_address && ! unit->heater_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1504 if (unit->PID_cool->OutP >= 50) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1505 if (unit->cooler_wait < unit->cooler_delay) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1506 unit->cooler_wait++;
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 int power = round(unit->PID_cool->OutP);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1509 if (unit->cooler_state != power) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1510 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
1511 unit->cooler_state = power;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1512 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1513 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1514 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1515 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1516 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1517 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1518 if (unit->cooler_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1519 unit->cooler_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1520 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1521 if (unit->cooler_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1522 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
1523 unit->cooler_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1524 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1525 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1526 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1527 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1528 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1529 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1530 if (unit->door_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1531 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
1532 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1533 device_out(unit->cooler_address, 0);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1534 }
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 * 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
1539 * something, then turn on the global fan.
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1540 * 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
1541 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1542 if (unit->fan_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1543 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
1544 if (unit->fan_wait < unit->fan_delay) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1545 unit->fan_wait++;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1546 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1547 if (! unit->fan_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1548 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
1549 unit->fan_state = 100;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1550 if (unit->fan_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1551 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1552 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1553 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1554 }
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_wait > 0) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1557 unit->fan_wait--;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1558 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1559 if (unit->fan_state) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1560 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
1561 unit->fan_state = 0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1562 if (unit->fan_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1563 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1564 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1565 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1566 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1567 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1568 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
1569 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1570
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1571 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1572 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
1573 } /* fridge beer or profile mode */
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 * 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
1577 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1578 LCDair = unit->air_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1579 LCDbeer = unit->beer_temperature / 1000.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1580 LCDstatC = LCDstatH = ' ';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1581 if (unit->heater_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1582 if (unit->heater_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1583 LCDstatH = '\6';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1584 else
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1585 LCDstatH = '\5';
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 if (unit->cooler_address) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1588 if (unit->cooler_state)
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1589 LCDstatC = '\4';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1590 else
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1591 LCDstatC = '\3';
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1592 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1593 LCDspH = LCDspL = 0.0;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1594 if (unit->mode == UNITMODE_BEER) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1595 LCDspH = unit->beer_set_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1596 LCDspL = unit->beer_set_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1597 } else if (unit->mode == UNITMODE_FRIDGE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1598 LCDspH = unit->fridge_set_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1599 LCDspL = unit->fridge_set_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1600 } else if (unit->mode == UNITMODE_PROFILE) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1601 if (unit->prof_state != PROFILE_OFF) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1602 LCDspL = unit->prof_target_lo;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1603 LCDspH = unit->prof_target_hi;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1604 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1605 }
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1606 if (seconds == 60) {
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1607 unit->mqtt_flag |= MQTT_FLAG_DATA;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1608 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1609 pthread_mutex_lock(&mutexes[LOCK_LCD]);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1610 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1611 * 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
1612 */
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1613 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
1614 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
1615 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
1616 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
1617 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1618
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 * Publish MQTT messages set in flag
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 if (unit->mqtt_flag) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1623 if (unit->mqtt_flag & MQTT_FLAG_BIRTH) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1624 publishDBirth(unit);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1625 unit->mqtt_flag &= ~MQTT_FLAG_BIRTH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1626 } else {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1627 publishDData(unit);
678
cc49115e769e Better websocket broadcast messages. Added GLOBAL JSON command to the server. Better logic to trigger websocket and mqtt data updates for the fermenter units. Websocket receive added fermenter mode, stage, setpoints, switches. Added more css styles for the fermenter screen. Added the fermenter screen php and javascript.
Michiel Broek <mbroek@mbse.eu>
parents: 675
diff changeset
1628 // unit->mqtt_flag &= ~MQTT_FLAG_DATA;
665
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1629 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1630 if (unit->mqtt_flag & MQTT_FLAG_DEATH) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1631 publishDDeath(unit);
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1632 unit->mqtt_flag &= ~MQTT_FLAG_DEATH;
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1633 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1634 }
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1635
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1636 /*
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1637 * Handle changed alarms
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->alarm_flag != unit->alarm_last) {
66fae54fa7ba Fermentation processing in it's own function.
Michiel Broek <mbroek@mbse.eu>
parents: 661
diff changeset
1640 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
1641 unit->alarm_last = unit->alarm_flag;
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
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1646 SM_DECL(thermferm,(char *)"thermferm")
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1647 SM_STATES
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1648 CheckRun,
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1649 WaitMinute,
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1650 DateTime,
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1651 RoomTHB,
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1652 Units,
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1653 ShowLCD,
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1654 Minute,
667
bba6ca418e09 Removed lcd-buffer create logmessage. Combined Keys and Delay states.
Michiel Broek <mbroek@mbse.eu>
parents: 666
diff changeset
1655 Keys
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1656 SM_NAMES
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1657 (char *)"CheckRun",
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1658 (char *)"WaitMinute",
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1659 (char *)"DateTime",
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1660 (char *)"RoomTHB",
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1661 (char *)"Units",
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1662 (char *)"ShowLCD",
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1663 (char *)"Minute",
667
bba6ca418e09 Removed lcd-buffer create logmessage. Combined Keys and Delay states.
Michiel Broek <mbroek@mbse.eu>
parents: 666
diff changeset
1664 (char *)"Keys"
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1665 SM_EDECL
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1667 time_t now, last = (time_t)0, ndata = (time_t)0;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1668 int key, LCDunit, rc, temp, seconds = 0, minutes = 0;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1669 struct tm *tm;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1670 units_list *unit;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1671
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1672 SM_START(CheckRun)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1673
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1674 SM_STATE(CheckRun)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1675
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1676 if (my_shutdown) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1677 SM_SUCCESS;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1678 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1679
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1680 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1681 * Use to stop processing units. Should be used when a unit is
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1682 * added or removed.
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1683 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1684 if (run_pause) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1685 run_hold = TRUE;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1686 syslog(LOG_NOTICE, "run_pause: entering hold state");
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1687 for (;;) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1688 mDelay(100);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1689 if (! run_pause)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1690 break;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1691 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1692 syslog(LOG_NOTICE, "run_pause: leaving hold state");
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1693 run_hold = FALSE;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1694 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1695 * In case the LCD buffers were cleared, setup the first page.
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1696 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1697 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1698 lcd_buf_write(1, (char *)" ThermFerm ");
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1699 lcd_buf_write(2, (char *)"Version %s ", VERSION);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1700 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1701 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1702 SM_PROCEED(WaitMinute);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1703
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1704 SM_STATE(WaitMinute)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1705
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1706 if (my_shutdown) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1707 SM_SUCCESS;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1708 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1709
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1710 now = time(NULL);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1711 if (now != last) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1712 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1713 * Each second
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1714 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1715 last = now;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1716 seconds++;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1717 SM_PROCEED(DateTime);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1718 } else {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1719 SM_PROCEED(Keys);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1720 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1721
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1722 SM_STATE(DateTime)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1723
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1724 row = 3;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1725 tm = localtime(&now);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1726 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1727 lcd_buf_write(row++, " %02d-%02d-%04d ", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1728 lcd_buf_write(row++, " %02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1729 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1730 SM_PROCEED(RoomTHB);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1731
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1732 SM_STATE(RoomTHB)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1733
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1734 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1735 lcd_buf_write(row, "Room temp N/A ");
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1736 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1737 int updateHT = 0;
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1738 if (Config.temp_uuid) {
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1739 Config.temp_state = rc = device_in(Config.temp_uuid, &temp);
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1740 if (rc == DEVPRESENT_YES) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1741 if (Config.temp_value != temp)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1742 updateHT = 1;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1743 Config.temp_value = temp;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1744 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1745 lcd_buf_write(row, "Room temp %.1f%c ", Config.temp_value / 1000.0, 0x01);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1746 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1747 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1748 mDelay(10);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1749 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1750 row++;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1751
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1752 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1753 lcd_buf_write(row, " Humidity N/A ");
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1754 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
693
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1755 if (Config.hum_uuid) {
3518c07737d8 Version 0.9.19a2. Dropped TEMPSTATE[] and only use DEVPRESENT[] to mark devices state. Adjusted webpages for this switch in responses. Adjusted MySQL mon_fermenters enum values too. Rename some global Config records to better reflect their real use.Added one-wire json records and websocket. Announce when some onewire device changes. Add UNITS JSON command without parameter. Dropped global tempFormat setting that was never used.
Michiel Broek <mbroek@mbse.eu>
parents: 678
diff changeset
1756 Config.hum_state = rc = device_in(Config.hum_uuid, &temp);
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1757 if (rc == DEVPRESENT_YES) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1758 if (Config.hum_value != temp)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1759 updateHT = 1;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1760 Config.hum_value = temp;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1761 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1762 lcd_buf_write(row, " Humidity %.1f%% ", Config.hum_value / 1000.0);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1763 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1764 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1765 mDelay(10);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1766 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1767 row++;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1768
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1769 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1770 * If TH(B) changed. or if 5 minutes without
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1771 * update, send the NDATA message.
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1772 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1773 if (updateHT || (now > (ndata + 300))) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1774 publishNData(false, 0);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1775 ndata = now;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1776 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1777 SM_PROCEED(Units);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1778
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1779 SM_STATE(Units)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1780
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1781 LCDunit = 0;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1782 for (unit = Config.units; unit; unit = unit->next) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1783 LCDunit++;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1784 do_unit(unit, LCDunit, seconds, minutes);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1785 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1786 SM_PROCEED(ShowLCD);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1787
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1788 SM_STATE(ShowLCD)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1789
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1790 pthread_mutex_lock(&mutexes[LOCK_MENU]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1791 if (setupmenu == MENU_NONE) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1792 pthread_mutex_lock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1793 lcd_buf_show();
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1794 pthread_mutex_unlock(&mutexes[LOCK_LCD]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1795 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1796 pthread_mutex_unlock(&mutexes[LOCK_MENU]);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1797 SM_PROCEED(Minute);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1798
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1799 SM_STATE(Minute)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1800
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1801 if (seconds == 60) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1802 seconds = 0;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1803
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1804 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1805 * Publish data every minute if unit is active.
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1806 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1807 for (unit = Config.units; unit; unit = unit->next) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1808 if (unit->mode != UNITMODE_OFF) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1809 publishDLog(unit);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1810 if (unit->event_msg)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1811 free(unit->event_msg);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1812 unit->event_msg = NULL;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1813 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1814 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1815
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1816 minutes++;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1817 if (minutes == 60) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1818 minutes = 0;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1819 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1820 * Log usage counters every hour
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1821 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1822 for (unit = Config.units; unit; unit = unit->next) {
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1823 syslog(LOG_NOTICE, "Unit `%s' usage heater=%d cooler=%d fan=%d", unit->alias, unit->heater_usage, unit->cooler_usage, unit->fan_usage);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1824 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1825 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1826
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1827 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1828 * Save the configuration each half hour.
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1829 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1830 if ((minutes == 15) || (minutes == 45))
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1831 wrconfig();
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1832 }
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1833 SM_PROCEED(Keys);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1834
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1835 SM_STATE(Keys)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1836
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1837 slcdDummy(slcdHandle);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1838 key = keycheck();
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1839 if (key != KEY_NONE)
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1840 panel_key_events(key);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1841
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1842 mDelay(25);
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1843 ws_check();
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1844 mDelay(25);
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1845 SM_PROCEED(CheckRun);
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1846
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1847 SM_END
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1848 SM_RETURN
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1849
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1850
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1851 int server(void)
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1852 {
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1853 units_list *unit;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1854 int rc;
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1855 long t = 0;
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1856
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
1857 syslog(LOG_NOTICE, "Server process started");
669
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1858
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1859 if ((rc = initLCD (Config.lcd_cols, Config.lcd_rows))) {
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1860 fprintf(stderr, "Cannot initialize LCD display, rc=%d\n", rc);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1861 return 1;
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1862 }
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1863
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1864 #ifdef HAVE_WIRINGPI_H
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1865 lcdCharDef(lcdHandle, 1, degC);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1866 lcdCharDef(lcdHandle, 2, SP_Symbol);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1867 lcdCharDef(lcdHandle, 3, CoolONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1868 lcdCharDef(lcdHandle, 4, RevCoolONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1869 lcdCharDef(lcdHandle, 5, HeatONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1870 lcdCharDef(lcdHandle, 6, RevHeatONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1871 #endif
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1872 slcdCharDef(slcdHandle, 1, degC);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1873 slcdCharDef(slcdHandle, 2, SP_Symbol);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1874 slcdCharDef(slcdHandle, 3, CoolONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1875 slcdCharDef(slcdHandle, 4, RevCoolONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1876 slcdCharDef(slcdHandle, 5, HeatONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1877 slcdCharDef(slcdHandle, 6, RevHeatONOFF);
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1878
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
1879 my_shutdown = my_reboot = FALSE;
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1880 my_devices_shutdown = my_panel_shutdown = my_server_shutdown = my_ws_shutdown = my_one_wire_shutdown = 0;
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1881 my_devices_state = my_panel_state = my_server_state = my_ws_state = my_one_wire_state = 0;
716
5c30c8ef83a8 Version 0.9.19b3. The simulator thread can be paused to be able to add and delete simulators. Added simulated door and PSU status. Devices can now fully use multiple simulators. Better rounding of simulated temperature values. The server SIMULATOR DEL and ADD commands pause the simulator when the linked list is manipulated. Fixed SIGSEGV when a simulator is added. Added socket SO_REUSEADDR again to the server socket.
Michiel Broek <mbroek@mbse.eu>
parents: 714
diff changeset
1882 my_simulator_state = THREAD_OFF;
669
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1883 #ifdef USE_SIMULATOR
716
5c30c8ef83a8 Version 0.9.19b3. The simulator thread can be paused to be able to add and delete simulators. Added simulated door and PSU status. Devices can now fully use multiple simulators. Better rounding of simulated temperature values. The server SIMULATOR DEL and ADD commands pause the simulator when the linked list is manipulated. Fixed SIGSEGV when a simulator is added. Added socket SO_REUSEADDR again to the server socket.
Michiel Broek <mbroek@mbse.eu>
parents: 714
diff changeset
1884 my_simulator_command = THREAD_OFF;
669
daa22055cd3d Reboot from the panel is now restart application. The restart is working again, also via bmsapp.
Michiel Broek <mbroek@mbse.eu>
parents: 667
diff changeset
1885 #endif
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
1886 if (lockprog((char *)"thermferm")) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 267
diff changeset
1887 syslog(LOG_NOTICE, "Can't lock");
34
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
1888 return 1;
38e3e3a49320 Added lock/pid file
Michiel Broek <mbroek@mbse.eu>
parents: 33
diff changeset
1889 }
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
1890 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
1891
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
1892 /*
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1893 * Start websockets first.
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1894 */
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1895 rc = pthread_create(&my_ws_thread, NULL, my_ws_loop, (void *)t );
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1896 if (rc) {
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1897 fprintf(stderr, "my_ws_loop thread didn't start rc=%d\n", rc);
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1898 syslog(LOG_NOTICE, "my_ws_loop thread didn't start rc=%d", rc);
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1899 } else {
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1900 t++;
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1901 }
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1902
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1903 /*
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
1904 * Next scan the one-wire bus
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
1905 */
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
1906 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
1907 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
1908 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
1909 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
1910 } 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
1911 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
1912 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
1913 }
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
1914
350
7283561977b1 Added door and PSU sensors. Added interior light logic and switching.
Michiel Broek <mbroek@mbse.eu>
parents: 349
diff changeset
1915 if ((rc = devices_detect())) {
158
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1916 syslog(LOG_NOTICE, "Detected %d new devices", rc);
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1917 wrconfig();
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1918 }
f1b7e2ef90be Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
1919
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
1920 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
1921 if (rc) {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1922 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
1923 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
1924 } else {
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1925 t++;
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1926 }
f16def8472ba Threads partly working via new devices interface
Michiel Broek <mbroek@mbse.eu>
parents: 160
diff changeset
1927
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
1928 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
1929 if (rc) {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1930 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
1931 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
1932 } else {
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
1933 t++;
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1934 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 41
diff changeset
1935
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
1936 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
1937 if (rc) {
199
3f5d277a69e3 Added panel thread
Michiel Broek <mbroek@mbse.eu>
parents: 198
diff changeset
1938 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
1939 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
1940 } else {
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1941 t++;
13502d0dda65 The brewpanel works, but still needs a lot more
Michiel Broek <mbroek@mbse.eu>
parents: 420
diff changeset
1942 }
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
1943
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
1944 #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
1945 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
1946 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
1947 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
1948 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
1949 } 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
1950 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
1951 }
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
1952 #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
1953
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
1954
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1955 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1956 * Initialize units for processing
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1957 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1958 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1959 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1960 * Safety, turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1961 */
525
5855abe0e82c Added unit alarm flag
Michiel Broek <mbroek@mbse.eu>
parents: 524
diff changeset
1962 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
1963 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
1964 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
1965 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
1966 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
1967 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
1968 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
1969 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
1970 }
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1971 } 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
1972 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
1973 } 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
1974 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
1975 } 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
1976 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
1977 } 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
1978 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
1979 }
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1980 }
547
0e4d4b45249f Versie 0.8.0. Fixed eerste DBIRTH fout geinitialiseerde waardes.
Michiel Broek <mbroek@mbse.eu>
parents: 545
diff changeset
1981 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
1982
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
1983 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
1984 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
1985 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
1986 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
1987 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
1988 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
1989 }
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
1990 }
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
1991
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1992 pthread_mutex_lock(&mutexes[LOCK_LCD]);
238
a0f1deb65889 Added more panel menus
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
1993 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
1994 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
1995 // 0.9.17a2
645
49eb753a958b All thread locks from wiringPi to standard pthreads.
Michiel Broek <mbroek@mbse.eu>
parents: 644
diff changeset
1996 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
1997
666
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1998 /*
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
1999 * Run state table
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
2000 */
48cc8868f9f4 Added commandline switch --foreground, the --debug now only activates extra debug logging. No more console output. The thermferm process uses a state table, this makes the code more readable and have less large functions.
Michiel Broek <mbroek@mbse.eu>
parents: 665
diff changeset
2001 thermferm();
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2002
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2003 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2004 * Stop units processing in a neat way
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2005 */
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2006 for (unit = Config.units; unit; unit = unit->next) {
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2007 /*
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2008 * Turn everything off
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2009 */
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
2010 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
2011 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
2012 device_out(unit->heater_address, unit->heater_state);
515
7ab5cf2afc0c Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2013 pub_domoticz_output(unit->heater_idx, unit->heater_state);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2014 device_out(unit->cooler_address, unit->cooler_state);
515
7ab5cf2afc0c Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2015 pub_domoticz_output(unit->cooler_idx, unit->cooler_state);
182
dd69ccba8fa8 Removing units thread
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2016 device_out(unit->fan_address, unit->fan_state);
515
7ab5cf2afc0c Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2017 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
2018 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
2019 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
2020 /*
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
2021 * 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
2022 */
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
2023 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
2024 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
2025 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
2026 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
2027 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
2028 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
2029 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
2030 }
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
2031 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
2032 }
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
2033 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
2034
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
2035 /*
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
2036 * 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
2037 */
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
2038 #ifdef USE_SIMULATOR
716
5c30c8ef83a8 Version 0.9.19b3. The simulator thread can be paused to be able to add and delete simulators. Added simulated door and PSU status. Devices can now fully use multiple simulators. Better rounding of simulated temperature values. The server SIMULATOR DEL and ADD commands pause the simulator when the linked list is manipulated. Fixed SIGSEGV when a simulator is added. Added socket SO_REUSEADDR again to the server socket.
Michiel Broek <mbroek@mbse.eu>
parents: 714
diff changeset
2039 my_simulator_command = THREAD_OFF;
5c30c8ef83a8 Version 0.9.19b3. The simulator thread can be paused to be able to add and delete simulators. Added simulated door and PSU status. Devices can now fully use multiple simulators. Better rounding of simulated temperature values. The server SIMULATOR DEL and ADD commands pause the simulator when the linked list is manipulated. Fixed SIGSEGV when a simulator is added. Added socket SO_REUSEADDR again to the server socket.
Michiel Broek <mbroek@mbse.eu>
parents: 714
diff changeset
2040 while (my_simulator_state != THREAD_OFF) { mDelay(50); };
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
2041 #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
2042 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
2043 while (my_panel_state) { mDelay(50); };
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2044
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
2045 /*
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
2046 * 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
2047 * will stop this thread. Includes a failsafe.
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
2048 */
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
2049 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
2050 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
2051 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
2052 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
2053 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
2054 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
2055 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
2056 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
2057 }
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
2058 }
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
2059
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
2060 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
2061 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
2062 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
2063 while (my_one_wire_state) { mDelay(50); };
730
6eba006ed8f5 Much faster shutdown of the websocket service.
Michiel Broek <mbroek@mbse.eu>
parents: 726
diff changeset
2064 my_ws_stop();
675
825210ba2707 Added websockets to thermferm. Started new www directory for websocket enabled web. The init script now waits until thermferm is completely stopped.
Michiel Broek <mbroek@mbse.eu>
parents: 669
diff changeset
2065 while (my_ws_state) { mDelay(50); };
646
e3edc783006b Running threads and locking doesn't depend on wiringPi anymore.
Michiel Broek <mbroek@mbse.eu>
parents: 645
diff changeset
2066 mqtt_disconnect();
28
32ed1ea4d0b6 Coolers working with a hardcode reference
Michiel Broek <mbroek@mbse.eu>
parents: 27
diff changeset
2067
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2068 stopLCD();
420
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2069 if (sock != -1) {
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2070 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
2071 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
2072 }
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2073 sock = -1;
644a6106d712 The first ideas of the brewpanel simulation are in place.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2074 }
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
2075 lcd_buf_reset();
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 83
diff changeset
2076 wrconfig();
41
f534ace74eea Code preparation for client/server communication
Michiel Broek <mbroek@mbse.eu>
parents: 40
diff changeset
2077 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
2078
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
2079 syslog(LOG_NOTICE, "Server process ended");
26
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2080 return 0;
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2081 }
9322c619c525 Added coolers program, first draft
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2082

mercurial