thermferm/server.c

Sun, 15 Jul 2018 12:05:16 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 15 Jul 2018 12:05:16 +0200
changeset 536
e833bbd5e733
parent 534
92b546d4a839
child 542
73b63f431da2
permissions
-rw-r--r--

Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.

42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*****************************************************************************
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: 529
diff changeset
2 * Copyright (C) 2008-2018
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 *
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 * Michiel Broek <mbroek at mbse dot eu>
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 *
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * This file is part of the mbsePi-apps
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 *
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 * This is free software; you can redistribute it and/or modify it
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * under the terms of the GNU General Public License as published by the
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * Free Software Foundation; either version 2, or (at your option) any
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * later version.
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 *
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 * mbsePi-apps is distributed in the hope that it will be useful, but
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 * General Public License for more details.
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 *
01b96a24ae7c Corrected missing and obsolete files
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
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 *****************************************************************************/
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 101
diff changeset
23 #include "rdconfig.h"
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 45
diff changeset
24 #include "thermferm.h"
155
0d86f3c0a07b Unit mode can switch between OFF and NONE.
Michiel Broek <mbroek@mbse.eu>
parents: 140
diff changeset
25 #include "logger.h"
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
26 #include "devices.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 101
diff changeset
27 #include "server.h"
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
28 #include "lcd-buffer.h"
106
1bd9a16f5061 Added .h files
Michiel Broek <mbroek@mbse.eu>
parents: 101
diff changeset
29 #include "xutil.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: 493
diff changeset
30 #include "mqtt.h"
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31
58
e8e7b46b705b Fixed compilation without wiringpi
Michiel Broek <mbroek@mbse.eu>
parents: 54
diff changeset
32
75
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
33 extern int my_shutdown;
4b976601737d Writes a basic xml configuration next to the plain ascii config file
Michiel Broek <mbroek@mbse.eu>
parents: 74
diff changeset
34 extern int debug;
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
35 extern int run_pause;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
36 extern int run_hold;
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
37 extern sys_config Config;
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
38 extern const char UNITMODE[5][8];
101
1302abe92eb1 Made temperature sensors working in the units
Michiel Broek <mbroek@mbse.eu>
parents: 100
diff changeset
39 extern const char TEMPSTATE[3][8];
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
40 extern const char DEVTYPE[8][6];
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
41 extern const char DEVPRESENT[4][6];
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
42 extern const char DEVDIR[7][11];
217
2922d439ff63 Added profile state ABORT
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
43 extern const char PROFSTATE[5][6];
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
44
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
46 int s; /* connected socket */
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
47 int ls; /* listen socket */
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
49 struct sockaddr_in myaddr_in; /* for local socket address */
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
50 struct sockaddr_in peeraddr_in; /* for peer socket address */
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
51
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
52 struct hostent *hp;
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
53
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
54 #define SS_BUFSIZE 1024
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
55 #define SS_TIMEOUT 300
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56
389
584d40bb4b09 Graph lines logging can handle longer logfiles and has a safety limit.
Michiel Broek <mbroek@mbse.eu>
parents: 381
diff changeset
57 #define MAX_INTERVALS 10
584d40bb4b09 Graph lines logging can handle longer logfiles and has a safety limit.
Michiel Broek <mbroek@mbse.eu>
parents: 381
diff changeset
58 const int GRAPH_INTERVAL[MAX_INTERVALS] = { 0, 1, 5, 15, 30, 60, 120, 240, 480, 960 };
584d40bb4b09 Graph lines logging can handle longer logfiles and has a safety limit.
Michiel Broek <mbroek@mbse.eu>
parents: 381
diff changeset
59 const int GRAPH_DATALINES[MAX_INTERVALS] = { 0, 800, 3200, 12000, 24000, 48000, 96000, 192000, 384000, 768000 };
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
60 const char MONTH[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
61
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
62
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
63 typedef struct _ls_list {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
64 struct _ls_list *next; /* Next record pointer */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
65 char d_name[256]; /* File name */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
66 mode_t mode; /* File mode */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
67 off_t size; /* File size */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
68 time_t mtime; /* File modification time */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
69 } ls_list;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
70
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
71
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
72
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
73 void tidy_lslist(ls_list **);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
74 void fill_list(ls_list **, char *, mode_t, off_t, time_t);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
75 int comp(ls_list **,ls_list **);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
76 void sort_list(ls_list **);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
77
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
78
46
000399c64d3f More client/server communications
Michiel Broek <mbroek@mbse.eu>
parents: 45
diff changeset
79
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
80 /*
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
81 * Send message to client
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
82 */
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
83 int srv_send(const char *format, ...)
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
84 {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
85 char out[SS_BUFSIZE];
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
86 va_list va_ptr;
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
87
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
88 if (s == -1)
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
89 return -1;
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
91 va_start(va_ptr, format);
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
92 vsnprintf(out, SS_BUFSIZE-1, format, va_ptr);
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
93 va_end(va_ptr);
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
94
48
d8c64f81b192 Single client server works
Michiel Broek <mbroek@mbse.eu>
parents: 46
diff changeset
95 if (debug) {
80
81bf78a7618e Switched to xml configuration
Michiel Broek <mbroek@mbse.eu>
parents: 79
diff changeset
96 syslog(LOG_NOTICE, "send: \"%s\"", out);
45
053c4657105f Mirror LCD display on the webpage works
Michiel Broek <mbroek@mbse.eu>
parents: 44
diff changeset
97 fprintf(stdout, "send: \"%s\"\n", out);
48
d8c64f81b192 Single client server works
Michiel Broek <mbroek@mbse.eu>
parents: 46
diff changeset
98 }
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
99
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
100 if (send(s, out, strlen(out), 0) != strlen(out)) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
101 syslog(LOG_NOTICE, "srv_send failed");
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
102 return -1;
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
103 }
80
81bf78a7618e Switched to xml configuration
Michiel Broek <mbroek@mbse.eu>
parents: 79
diff changeset
104
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
105 if (send(s, (char *)"\r\n", 2, 0) != 2) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
106 syslog(LOG_NOTICE, "srv_send failed");
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
107 return -1;
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
108 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
109
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
110 return 0;
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
111 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
112
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
113
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114
88
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
115 /*
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
116 * Argument is a buffer of size SS_BUFSIZE.
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
117 * Return -1 if error, else the number of received
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
118 * character. \n is line end, ignore \r.
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
119 */
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
120 int srv_recv(char *buffer)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
121 {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
122 int bytesloaded = 0;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
123 ssize_t ret;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
124 unsigned char buf;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
125 socklen_t fromlen;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
126
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
127 memset(buffer, 0, SS_BUFSIZE);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
128
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
129 while(1) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
130 /*
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
131 * read a single byte
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
132 */
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
133 fromlen = sizeof(peeraddr_in);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
134 ret = recvfrom(s, &buf, 1, 0, (struct sockaddr *)&peeraddr_in, &fromlen);
368
ac27038f4c70 Fix for server crash
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
135 if (ret < 0) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
136 syslog(LOG_NOTICE, "recvfrom(): %s", strerror(errno));
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
137 return -1; /* error */
368
ac27038f4c70 Fix for server crash
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
138 } else if (ret == 0) {
ac27038f4c70 Fix for server crash
Michiel Broek <mbroek@mbse.eu>
parents: 364
diff changeset
139 return -1; /* no data */
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
140 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
141
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
142 if (buf == '\n')
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
143 break;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
144
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
145 if (buf != '\r') {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
146 buffer[bytesloaded] = buf;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
147 bytesloaded++;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
148 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
149 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
150
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
151 if (debug) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
152 syslog(LOG_NOTICE, "recv: %d `%s'", bytesloaded, buffer);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
153 fprintf(stdout, "recv: %d `%s'\n", bytesloaded, buffer);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
154 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
155 return bytesloaded;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
156 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
157
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
158
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
159
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
160 /*
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
161 * Update the device inuse counter.
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
162 */
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
163 void device_count(int plus, char *uuid)
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
164 {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
165 devices_list *device;
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
166
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
167 for (device = Config.devices; device; device = device->next) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
168 if (strcmp(device->uuid, uuid) == 0) {
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
169 #ifdef HAVE_WIRINGPI_H
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
170 piLock(LOCK_DEVICES);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
171 #endif
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
172 if (plus == TRUE) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
173 device->inuse++;
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
174 } else {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
175 if (device->inuse)
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
176 device->inuse--;
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
177 }
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
178 #ifdef HAVE_WIRINGPI_H
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
179 piUnlock(LOCK_DEVICES);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
180 #endif
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
181 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
182 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
183 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
184
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
185
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
186
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
187 int delete_Profile(char *uuid)
138
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
188 {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
189 profiles_list *current = Config.profiles;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
190 profiles_list *previous = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
191 prof_step *step, *olds;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
192
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
193 while (current) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
194 if (strcmp(current->uuid, uuid) == 0) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
195 if (previous == NULL) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
196 Config.profiles = current->next;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
197 free(current->uuid);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
198 current->uuid = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
199 free(current->name);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
200 current->name = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
201 if (current->steps) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
202 for (step = current->steps; step; step = olds) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
203 olds = step->next;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
204 free(step);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
205 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
206 current->steps = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
207 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
208 free(current);
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
209 return 1;
138
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
210 } else {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
211 free(current->uuid);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
212 current->uuid = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
213 free(current->name);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
214 current->name = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
215 if (current->steps) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
216 for (step = current->steps; step; step = olds) {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
217 olds = step->next;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
218 free(step);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
219 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
220 current->steps = NULL;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
221 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
222 previous->next = current->next;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
223 free(current);
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
224 current = previous->next;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
225 return 1;
138
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
226 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
227 } else {
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
228 previous = current;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
229 current = current->next;
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
230 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
231 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
232
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
233 return 0;
138
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
234 }
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
235
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
236
e7e7a23af890 Added DEL PROFILE command
Michiel Broek <mbroek@mbse.eu>
parents: 136
diff changeset
237
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
238 void tidy_lslist(ls_list **lap)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
239 {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
240 ls_list *tmp, *old;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
241
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
242 for (tmp = *lap; tmp; tmp = old) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
243 old = tmp->next;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
244 free(tmp);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
245 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
246 *lap = NULL;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
247 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
248
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
249
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
250
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
251 void fill_list(ls_list **lap, char *name, mode_t mode, off_t size, time_t mtime)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
252 {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
253 ls_list **tmp;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
254
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
255 for (tmp = lap; *tmp; tmp = &((*tmp)->next));
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
256
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
257 *tmp = (ls_list *)malloc(sizeof(ls_list));
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
258 (*tmp)->next = NULL;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
259 strncpy((*tmp)->d_name, name, 256);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
260 (*tmp)->mode = mode;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
261 (*tmp)->size = size;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
262 (*tmp)->mtime = mtime;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
263 tmp = &((*tmp)->next);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
264 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
265
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
266
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
267
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
268 void sort_list(ls_list **lap)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
269 {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
270 ls_list *ta, **vector;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
271 size_t n = 0, i;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
272
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
273 if (*lap == NULL)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
274 return;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
275
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
276 for (ta = *lap; ta; ta = ta->next)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
277 n++;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
278 vector = (ls_list **)malloc(n * sizeof(ls_list *));
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
279 i = 0;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
280
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
281 for (ta = *lap; ta; ta = ta->next) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
282 vector[i++] = ta;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
283 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
284 qsort(vector, n, sizeof(ls_list *), (int(*)(const void*, const void*))comp);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
285
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
286 (*lap) = vector[0];
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
287 i = 1;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
288
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
289 for (ta = *lap; ta; ta = ta->next) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
290 if (i < n)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
291 ta->next = vector[i++];
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
292 else
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
293 ta->next = NULL;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
294 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
295
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
296 free(vector);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
297 return;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
298 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
299
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
300
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
301
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
302 int comp(ls_list **lsp1, ls_list **lsp2)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
303 {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
304 return strcmp((*lsp1)->d_name, (*lsp2)->d_name);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
305 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
306
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
307
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
308
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
309 /*
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
310 * ARCHIVE DIR
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
311 * ARCHIVE GET filename
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
312 * ARCHIVE LOG filename
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
313 * ARCHIVE HELP
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
314 */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
315 int cmd_archive(char *buf)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
316 {
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
317 char *opt, *param, *name = NULL, *filename = NULL, *logname = NULL, mbits[11], tstr[24];
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
318 DIR *dd;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
319 FILE *fp;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
320 struct dirent entry, *result;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
321 ls_list *lsx = NULL, *tmp;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
322 struct stat sbuf;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
323 struct tm *tbuf;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
324 time_t ftime;
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
325 int found;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
326 units_list *unit;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
327
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
328
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
329 opt = strtok(buf, " \0");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
330 opt = strtok(NULL, " \0");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
331
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
332 if (opt == NULL) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
333 srv_send((char *)"501 Subcommand missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
334 return 0;
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
335 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
336 param = strtok(NULL, "\0");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
337
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
338 if (strcmp(opt, (char *)"HELP") == 0) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
339 srv_send((char *)"100 Help text follows:");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
340 srv_send((char *)"Recognized commands:");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
341 srv_send((char *)"ARCHIVE DIR Archived logfiles directory");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
342 srv_send((char *)"ARCHIVE GET filename Archived logfile download");
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
343 srv_send((char *)"ARCHIVE LOG filename Archived logfile data in graphsteps");
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
344 srv_send((char *)".");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
345 return 0;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
346 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
347
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
348 if (strcmp(opt, (char *)"DIR") == 0) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
349
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
350 if (getenv((char *)"USER") == NULL) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
351 name = xstrcpy((char *)"/root");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
352 } else {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
353 name = xstrcpy(getenv((char *)"HOME"));
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
354 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
355 name = xstrcat(name, (char *)"/.thermferm/log/");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
356
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
357 if ((dd = opendir(name))) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
358 for (;;) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
359 if ((readdir_r(dd, &entry, &result)) != 0) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
360 syslog(LOG_NOTICE, "readdir_r: error=%d", errno);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
361 break;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
362 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
363 if (result == NULL) /* End of directory */
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
364 break;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
365 if (result->d_name[0] != '.') {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
366 filename = xstrcpy(name);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
367 filename = xstrcat(filename, result->d_name);
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
368 /*
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
369 * Remove files from the list when they are in use
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
370 */
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
371 found = 0;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
372 for (unit = Config.units; unit; unit = unit->next) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
373 if (unit->mode != UNITMODE_OFF) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
374 logname = xstrcpy(unit->name);
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
375 logname = xstrcat(logname, (char *)".log");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
376 if (! strcmp(result->d_name, logname))
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
377 found = 1;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
378 free(logname);
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
379 logname = NULL;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
380 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
381 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
382 if ((found == 0) && ((stat(filename, &sbuf)) == 0)) {
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
383 fill_list(&lsx, result->d_name, sbuf.st_mode, sbuf.st_size, sbuf.st_mtime);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
384 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
385 free(filename);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
386 filename = NULL;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
387 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
388 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
389 closedir(dd);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
390 } else {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
391 syslog(LOG_NOTICE, "opendir: \"%s\" error=%d", name, errno);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
392 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
393
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
394 sort_list(&lsx);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
395
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
396 srv_send((char *)"212 Archive directory follows:");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
397 for (tmp = lsx; tmp; tmp = tmp->next) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
398 sprintf(mbits, "----------");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
399 if (tmp->mode & S_IRUSR)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
400 mbits[1] = 'r';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
401 if (tmp->mode & S_IWUSR)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
402 mbits[2] = 'w';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
403 if (tmp->mode & S_IXUSR)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
404 mbits[3] = 'x';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
405 if (tmp->mode & S_IRGRP)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
406 mbits[4] = 'r';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
407 if (tmp->mode & S_IWGRP)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
408 mbits[5] = 'w';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
409 if (tmp->mode & S_IXGRP)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
410 mbits[6] = 'x';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
411 if (tmp->mode & S_IROTH)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
412 mbits[7] = 'r';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
413 if (tmp->mode & S_IWOTH)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
414 mbits[8] = 'w';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
415 if (tmp->mode & S_IXOTH)
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
416 mbits[9] = 'x';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
417 ftime = tmp->mtime;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
418 tbuf = localtime(&ftime);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
419 sprintf(tstr, "%02d %s %04d %02d:%02d", tbuf->tm_mday, MONTH[tbuf->tm_mon], tbuf->tm_year+1900, tbuf->tm_hour, tbuf->tm_min);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
420 srv_send((char *)"%s,%s,%d,%s", tmp->d_name, mbits, tmp->size, tstr);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
421 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
422 srv_send((char *)".");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
423 tidy_lslist(&lsx);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
424
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
425 free(name);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
426 name = NULL;
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
427 return 0;
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
428 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
429
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
430 if (param == NULL) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
431 srv_send((char *)"502 Parameter missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
432 return 0;
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
433 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
434
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
435 if (strcmp(opt, (char *)"GET") == 0) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
436 if (getenv((char *)"USER") == NULL) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
437 name = xstrcpy((char *)"/root");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
438 } else {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
439 name = xstrcpy(getenv((char *)"HOME"));
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
440 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
441 name = xstrcat(name, (char *)"/.thermferm/log/");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
442 name = xstrcat(name, param);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
443
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
444 if ((fp = fopen(name, "r"))) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
445 char buffer[256];
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
446
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
447 srv_send((char *)"212 Archive file follows:");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
448 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
449 int i;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
450
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
451 for (i = 0; i < strlen(buffer); i++) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
452 if (buffer[i] == '\n')
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
453 buffer[i] = '\0';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
454 if (buffer[i] == '\r')
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
455 buffer[i] = '\0';
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
456 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
457 srv_send(buffer);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
458 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
459 srv_send((char *)".");
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
460 fclose(fp);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
461 } else {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
462 srv_send((char *)"440 No such file");
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
463 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
464
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
465 free(name);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
466 name = NULL;
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
467 return 0;
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
468 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
469
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
470 if (strcmp(opt, (char *)"LOG") == 0) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
471 if (getenv((char *)"USER") == NULL) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
472 name = xstrcpy((char *)"/root");
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
473 } else {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
474 name = xstrcpy(getenv((char *)"HOME"));
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
475 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
476 name = xstrcat(name, (char *)"/.thermferm/log/");
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
477 name = xstrcat(name, param);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
478
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
479 if ((fp = fopen(name, "r"))) {
390
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
480 char buffer[256], outbuf[256], q[5], hr[3];
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
481 char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n, *chiller_n;
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
482 char *heater_u, *cooler_u;
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
483 int lines = 0, heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, graphstep = 0;
356
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
484 float room_t = 0.0;
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
485
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
486 srv_send((char *)"212 Logfile list follows:");
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
487 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
488 lines++;
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
489 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
490 fseek(fp, 0L, SEEK_SET);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
491 /*
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
492 * We have counted the lines in the logfile including the header lines.
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
493 * The header lines should be ignored but there are so few of them, we
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
494 * just include them in the total.
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
495 * Now find a reasonable interval of lines to sent to the client.
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
496 */
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
497 for (graphstep = 1; graphstep <= MAX_INTERVALS; graphstep++) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
498 if (lines < GRAPH_DATALINES[graphstep]) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
499 break;
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
500 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
501 }
389
584d40bb4b09 Graph lines logging can handle longer logfiles and has a safety limit.
Michiel Broek <mbroek@mbse.eu>
parents: 381
diff changeset
502 if (graphstep > MAX_INTERVALS)
584d40bb4b09 Graph lines logging can handle longer logfiles and has a safety limit.
Michiel Broek <mbroek@mbse.eu>
parents: 381
diff changeset
503 graphstep = MAX_INTERVALS;
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
504 syslog(LOG_NOTICE, "ARCHIVE LOG %s: lines=%d, interval=%d, graphstep=%d", param, lines, GRAPH_INTERVAL[graphstep], graphstep);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
505
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
506 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
507 /*
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
508 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA,18.000,20.1,5.312
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
509 * | | | | | | | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
510 * date_n | | | | | | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
511 * mode_n ----------+ | | | | | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
512 * air_n -----------------+ | | | | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
513 * beer_n -----------------------+ | | | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
514 * target_lo_n ------------------------+ | | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
515 * heater_n -------------------------------+ | | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
516 * cooler_n ---------------------------------+ | | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
517 * not used ------------------------------------+ | | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
518 * not used ---------------------------------------+ | | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
519 * heater_u --------------------------------------------+ | | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
520 * cooler_u ------------------------------------------------+ | | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
521 * not used ---------------------------------------------------+ | | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
522 * room_n ----------------------------------------------------------+ | |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
523 * target_hi_n -----------------------------------------------------------+ |
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
524 * chiller_n ------------------------------------------------------------------+
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
525 */
390
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
526 hr[0] = q[0] = buffer[11];
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
527 hr[1] = q[1] = buffer[12];
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
528 q[2] = buffer[14];
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
529 q[3] = buffer[15];
390
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
530 hr[2] = '\0';
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
531 buffer[strlen(buffer) -1] = '\0';
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
532 date_n = strtok(buffer, ",\0"); /* timestamp */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
533 mode_n = strtok(NULL, ",\0"); /* unit mode */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
534 air_n = strtok(NULL, ",\0"); /* air temp */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
535 beer_n = strtok(NULL, ",\0"); /* beer temp */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
536 target_lo_n = strtok(NULL, ",\0"); /* target low temp */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
537 heater_n = strtok(NULL, ",\0"); /* current heater state */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
538 cooler_n = strtok(NULL, ",\0"); /* current cooler state */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
539 heater_u = strtok(NULL, ",\0"); /* current fan state */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
540 heater_u = strtok(NULL, ",\0"); /* current door state */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
541 heater_u = strtok(NULL, ",\0"); /* heater use counter */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
542 cooler_u = strtok(NULL, ",\0"); /* cooler use counter */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
543 room_n = strtok(NULL, ",\0"); /* fan use counter */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
544 room_n = strtok(NULL, ",\0"); /* room temperature */
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
545 target_hi_n = strtok(NULL, ",\0"); /* target high temp */
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
546 chiller_n = strtok(NULL, ",\0"); /* chiller temp */
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
547
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
548 if (strncmp(mode_n, (char *)"Mode", 4)) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
549 /*
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
550 * Output a line at the right intervals
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
551 */
390
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
552 int hour = atoi(hr);
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
553 if (((graphstep == 1)) ||
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
554 ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) ||
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
555 ((graphstep == 3) && ((q[2] == '0' && q[3] == '0') || (q[2] == '1' && q[3] == '5') || (q[2] == '3' && q[3] == '0') || (q[2] == '4' && q[3] == '5'))) ||
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
556 ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) ||
390
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
557 ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) ||
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
558 ((graphstep == 6) && (hour % 2 == 0) && (q[2] == '0' && q[3] == '0')) || /* 120 minutes */
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
559 ((graphstep == 7) && (hour % 4 == 0) && (q[2] == '0' && q[3] == '0')) || /* 240 minutes */
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
560 ((graphstep >= 8) && (hour % 8 == 0) && (q[2] == '0' && q[3] == '0')) ) { /* 480 minutes */
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
561 heat_used = cool_used = 0;
356
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
562 if (heater_u && strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) {
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
563 if (h && heater_l) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
564 heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
565 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
566 }
356
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
567 if (cooler_u && strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) {
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
568 if (c && cooler_l) {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
569 cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
570 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
571 }
356
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
572 if (room_n)
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
573 sscanf(room_n, "%f", &room_t);
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
574 if (target_hi_n == NULL)
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
575 target_hi_n = target_lo_n;
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
576 snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s,%s",
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
577 date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n, heat_used, cool_used, room_t,target_hi_n, chiller_n);
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
578 srv_send(outbuf);
356
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
579 if (heater_u && h && strcmp(heater_u, "NA"))
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
580 heater_l = h;
356
44bcfe087f9e Added room temperature to ARCHIVE LOG command output.
Michiel Broek <mbroek@mbse.eu>
parents: 345
diff changeset
581 if (cooler_u && c & strcmp(cooler_u, "NA"))
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
582 cooler_l = c;
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
583 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
584 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
585 }
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
586
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
587 srv_send((char *)".");
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
588 fclose(fp);
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
589 } else {
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
590 srv_send((char *)"440 No such file");
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
591 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
592
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
593 free(name);
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
594 name = NULL;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
595 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
596
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
597 return 0;
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
598 }
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
599
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
600
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
601
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
602 int delete_Device(char *uuid)
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
603 {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
604 devices_list *current = Config.devices;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
605 devices_list *previous = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
606
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
607 while (current) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
608 if (strcmp(current->uuid, uuid) == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
609 if (previous == NULL) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
610 Config.devices = current->next;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
611 free(current->uuid);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
612 current->uuid = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
613 free(current->address);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
614 current->address = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
615 free(current->description);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
616 current->description = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
617 free(current->comment);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
618 current->comment = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
619 free(current);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
620 return 1;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
621 } else {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
622 free(current->uuid);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
623 current->uuid = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
624 free(current->address);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
625 current->address = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
626 free(current->description);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
627 current->description = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
628 free(current->comment);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
629 current->comment = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
630 previous->next = current->next;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
631 free(current);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
632 current = previous->next;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
633 return 1;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
634 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
635 } else {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
636 previous = current;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
637 current = current->next;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
638 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
639 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
640 return 0;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
641 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
642
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
643
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
644
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
645 /*
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
646 * DEVICE ADD type
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
647 * DEVICE DEL uuid
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
648 * DEVICE LIST
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
649 * DEVICE GET uuid
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
650 * DEVICE PUT uuid
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
651 */
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
652 int cmd_device(char *buf)
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
653 {
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
654 char *opt, *param, *kwd, *val, ibuf[SS_BUFSIZE];
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
655 devices_list *device, *tmpd;
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
656 int i, rc, rlen, ival;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
657 uuid_t uu;
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
658
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
659 opt = strtok(buf, " \0");
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
660 opt = strtok(NULL, " \0");
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
661
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
662 if (opt == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
663 srv_send((char *)"501 Subcommand missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
664 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
665 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
666 param = strtok(NULL, "\0");
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
667
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
668 if (strcmp(opt, (char *)"HELP") == 0) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
669 srv_send((char *)"100 Help text follows:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
670 srv_send((char *)"Recognized commands:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
671 srv_send((char *)"DEVICE ADD type Add device (RC433/DHT/I2C/SPI)");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
672 srv_send((char *)"DEVICE DEL uuid Delete device by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
673 srv_send((char *)"DEVICE LIST List all devices");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
674 srv_send((char *)"DEVICE GET uuid Read device by uuid parameters");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
675 srv_send((char *)"DEVICE PUT uuid Write device by uuid parameters");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
676 srv_send((char *)".");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
677 return 0;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
678 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
679
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
680 if (strcmp(opt, (char *)"LIST") == 0) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
681 srv_send((char *)"212 Devices list follows:");
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
682 for (device = Config.devices; device; device = device->next) {
345
9894b559441c Added device direction and value in devices maintenance screen
Michiel Broek <mbroek@mbse.eu>
parents: 344
diff changeset
683 srv_send((char *)"%s,%s,%d,%d,%s,%s,%d", device->uuid, device->address, device->subdevice,
9894b559441c Added device direction and value in devices maintenance screen
Michiel Broek <mbroek@mbse.eu>
parents: 344
diff changeset
684 device->inuse, device->comment, DEVDIR[device->direction], device->value + device->offset);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
685 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
686 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
687 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
688 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
689
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
690 if (param == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
691 srv_send((char *)"502 Parameter missing");
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
692 return 1;
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
693 }
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
694
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
695 if (strcmp(opt, (char *)"ADD") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
696 if ((strcmp(param, (char *)"RC433") == 0) || (strcmp(param, (char *)"DHT") == 0) ||
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
697 (strcmp(param, (char *)"I2C") == 0) || (strcmp(param, (char *)"SPI") == 0)) {
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 167
diff changeset
698
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
699 device = (devices_list *)malloc(sizeof(devices_list));
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
700 device->next = NULL;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
701 device->version = 1;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
702 device->uuid = malloc(37);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
703 uuid_generate(uu);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
704 uuid_unparse(uu, device->uuid);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
705 for (i = 0; i < 8; i++) {
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
706 if (strcmp(param, DEVTYPE[i]) == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
707 device->type = i;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
708 break;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
709 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
710 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
711 device->direction = DEVDIR_UNDEF;
209
c5b1dfd83e81 Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents: 208
diff changeset
712 device->value = device->offset = device->subdevice = device->inuse = 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
713 device->present = DEVPRESENT_UNDEF;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
714 device->address = xstrcpy((char *)"Enter address here");
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
715 device->gpiopin = -1;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
716 device->description = xstrcpy((char *)"Describe me here");
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
717 device->comment = xstrcpy((char *)"Comment here");
170
3cb99272b84b A bit of code cleanup
Michiel Broek <mbroek@mbse.eu>
parents: 167
diff changeset
718
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
719 #ifdef HAVE_WIRINGPI_H
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
720 piLock(LOCK_DEVICES);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
721 #endif
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
722 if (Config.devices == NULL) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
723 Config.devices = device;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
724 } else {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
725 for (tmpd = Config.devices; tmpd; tmpd = tmpd->next) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
726 if (tmpd->next == NULL) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
727 tmpd->next = device;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
728 break;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
729 }
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
730 }
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
731 }
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
732 #ifdef HAVE_WIRINGPI_H
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
733 piUnlock(LOCK_DEVICES);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
734 #endif
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
735 syslog(LOG_NOTICE, "Device %s added", device->uuid);
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
736 srv_send((char *)"211 Device %s added", device->uuid);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
737 return 1;
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
738
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
739 } else {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
740 srv_send((char *)"503 Parameter error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
741 return 0;
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
742 }
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
743 }
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
744
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
745 if (strcmp(opt, (char *)"DEL") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
746
240
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
747 #ifdef HAVE_WIRINGPI_H
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
748 piLock(LOCK_DEVICES);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
749 #endif
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
750 rc = delete_Device(param);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
751 #ifdef HAVE_WIRINGPI_H
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
752 piUnlock(LOCK_DEVICES);
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
753 #endif
6bdda35b4a13 Added thread locks for device processing
Michiel Broek <mbroek@mbse.eu>
parents: 237
diff changeset
754 if (rc) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
755 syslog(LOG_NOTICE, "Device %s deleted", param);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
756 srv_send((char *)"211 Device %s deleted", param);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
757 return 1;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
758 } else {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
759 srv_send((char *)"440 No such device");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
760 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
761 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
762 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
763
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
764 if (strcmp(opt, (char *)"GET") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
765 for (device = Config.devices; device; device = device->next) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
766 if (strcmp(device->uuid, param) == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
767 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
768 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
769 #endif
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
770 int my_value = device->value;
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
771 int my_timestamp = (int)device->timestamp;
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
772 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
773 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
774 #endif
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
775 srv_send((char *)"213 Device record follows:");
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
776 srv_send((char *)"TYPE,%s", DEVTYPE[device->type]);
344
acd840c9fcc0 Fixed Offset label in device editor. Added code to edit pin states for DS2408 and DS2413 1-wire devices.
Michiel Broek <mbroek@mbse.eu>
parents: 331
diff changeset
777 srv_send((char *)"ADDRESS,%s", device->address);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
778 srv_send((char *)"DIRECTION,%s", DEVDIR[device->direction]);
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
779 srv_send((char *)"VALUE,%d", my_value);
209
c5b1dfd83e81 Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents: 208
diff changeset
780 srv_send((char *)"OFFSET,%d", device->offset);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
781 srv_send((char *)"PRESENT,%s", DEVPRESENT[device->present]);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
782 srv_send((char *)"SUBDEVICE,%d", device->subdevice);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
783 srv_send((char *)"GPIOPIN,%d", device->gpiopin);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
784 srv_send((char *)"DESCRIPTION,%s", device->description);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
785 srv_send((char *)"INUSE,%d", device->inuse);
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
786 srv_send((char *)"COMMENT,%s", device->comment);
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
787 srv_send((char *)"TIMESTAMP,%d", my_timestamp);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
788 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
789 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
790 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
791 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
792 srv_send((char *)"440 No such device");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
793 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
794 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
795
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
796 if (strcmp(opt, (char *)"PUT") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
797 for (device = Config.devices; device; device = device->next) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
798 if (strcmp(device->uuid, param) == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
799 while (1) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
800 rlen = srv_recv(ibuf);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
801 if (rlen == -1) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
802 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
803 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
804 if (strlen(ibuf)) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
805 if (strcmp(ibuf, (char *)".") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
806 srv_send((char *)"219 Accepted Device record");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
807 return 1;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
808 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
809 kwd = strtok(ibuf, ",\0");
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
810 val = strtok(NULL, "\0");
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
811 if (kwd && val) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
812 if (strcmp(kwd, (char *)"TYPE") == 0) {
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
813 for (i = 0; i < 8; i++) {
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
814 if (strcmp(val, DEVTYPE[i]) == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
815 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
816 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
817 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
818 if (device->type != i)
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
819 syslog(LOG_NOTICE, "Device %s changed type %s to %s", device->uuid, DEVTYPE[device->type], DEVTYPE[i]);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
820 device->type = i;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
821 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
822 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
823 #endif
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
824 break;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
825 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
826 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
827
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
828 } else if (strcmp(kwd, (char *)"DIRECTION") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
829 for (i = 0; i < 7; i++) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
830 if (strcmp(val, DEVDIR[i]) == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
831 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
832 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
833 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
834 if (device->direction != i)
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
835 syslog(LOG_NOTICE, "Device %s changed direction %s to %s", device->uuid, DEVDIR[device->type], DEVDIR[i]);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
836 device->direction = i;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
837 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
838 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
839 #endif
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
840 break;
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
841 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
842 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
843
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
844 } else if (strcmp(kwd, (char *)"VALUE") == 0) {
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
845 if (sscanf(val, "%d", &ival) == 1) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
846 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
847 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
848 #endif
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
849 if (device->value != ival)
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
850 syslog(LOG_NOTICE, "Device %s changed value %d to %d", device->uuid, device->value, ival);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
851 device->value = ival;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
852 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
853 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
854 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
855 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
856
209
c5b1dfd83e81 Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents: 208
diff changeset
857 } else if (strcmp(kwd, (char *)"OFFSET") == 0) {
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
858 if (sscanf(val, "%d", &ival) == 1) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
859 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
860 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
861 #endif
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
862 if (device->offset != ival)
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
863 syslog(LOG_NOTICE, "Device %s changed offset %d to %d", device->uuid, device->offset, ival);
209
c5b1dfd83e81 Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents: 208
diff changeset
864 device->offset = ival;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
865 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
866 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
867 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
868 }
209
c5b1dfd83e81 Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents: 208
diff changeset
869
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
870 } else if (strcmp(kwd, (char *)"PRESENT") == 0) {
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
871 for (i = 0; i < 4; i++) {
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
872 if (strcmp(val, DEVPRESENT[i]) == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
873 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
874 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
875 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
876 if (device->present != i)
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
877 syslog(LOG_NOTICE, "Device %s changed present %s to %s", device->uuid, DEVPRESENT[device->present], DEVPRESENT[i]);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
878 device->present = i;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
879 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
880 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
881 #endif
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
882 break;
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
883 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
884 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
885
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
886 } else if (strcmp(kwd, (char *)"ADDRESS") == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
887 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
888 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
889 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
890 if (device->address) {
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
891 if (strcmp(device->address, val))
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
892 syslog(LOG_NOTICE, "Device %s changed address `%s' to `%s'", device->uuid, device->address, val);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
893 free(device->address);
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
894 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
895 device->address = xstrcpy(val);
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
896 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
897 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
898 #endif
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
899
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
900 } else if (strcmp(kwd, (char *)"SUBDEVICE") == 0) {
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
901 if (sscanf(val, "%d", &ival) == 1) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
902 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
903 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
904 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
905 if (device->subdevice != ival)
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
906 syslog(LOG_NOTICE, "Device %s changed subdevice %d to %d", device->uuid, device->subdevice, ival);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
907 device->subdevice = ival;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
908 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
909 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
910 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
911 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
912
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
913 } else if (strcmp(kwd, (char *)"GPIOPIN") == 0) {
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
914 if (sscanf(val, "%d", &ival) == 1) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
915 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
916 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
917 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
918 if (device->gpiopin != ival)
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
919 syslog(LOG_NOTICE, "Device %s changed gpiopin %d to %d", device->uuid, device->gpiopin, ival);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
920 device->gpiopin = ival;
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
921 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
922 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
923 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
924 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
925
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
926 } else if (strcmp(kwd, (char *)"DESCRIPTION") == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
927 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
928 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
929 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
930 if (device->description) {
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
931 if (strcmp(device->description, val))
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
932 syslog(LOG_NOTICE, "Device %s changed description `%s' to `%s'", device->uuid, device->description, val);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
933 free(device->description);
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
934 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
935 device->description = xstrcpy(val);
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
936 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
937 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
938 #endif
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
939
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
940 } else if (strcmp(kwd, (char *)"COMMENT") == 0) {
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
941 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
942 piLock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
943 #endif
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
944 if (device->comment) {
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
945 if (strcmp(device->comment, val))
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
946 syslog(LOG_NOTICE, "Device %s changed comment `%s' to `%s'", device->uuid, device->comment, val);
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
947 free(device->comment);
276
a19cc3770f09 Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
Michiel Broek <mbroek@mbse.eu>
parents: 274
diff changeset
948 }
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
949 device->comment = xstrcpy(val);
325
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
950 #ifdef HAVE_WIRINGPI_H
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
951 piUnlock(LOCK_DEVICES);
35b6f6605ae3 More device locks in the network server
Michiel Broek <mbroek@mbse.eu>
parents: 313
diff changeset
952 #endif
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
953
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
954 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
955 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
956 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
957 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
958 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
959 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
960 srv_send((char *)"440 No such device");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
961 return 0;
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
962 }
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
963
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
964 srv_send((char *)"504 Subcommand error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
965 return 0;
157
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
966 }
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
967
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
968
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
969
259a018758f9 Added GET AIR, GET BEER, GET TARGET commands
Michiel Broek <mbroek@mbse.eu>
parents: 156
diff changeset
970 /*
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
971 * GLOBAL GET
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
972 * GLOBAL PUT
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
973 */
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
974 int cmd_global(char *buf)
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
975 {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
976 char *opt, *kwd, *val, ibuf[SS_BUFSIZE];
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
977 int ival, rlen;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
978
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
979 opt = strtok(buf, " \0");
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
980 opt = strtok(NULL, "\0");
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
981
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
982 if (opt == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
983 srv_send((char *)"501 Subcommand missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
984 return 0;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
985 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
986
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
987 if (strcmp(opt, (char *)"HELP") == 0) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
988 srv_send((char *)"100 Help text follows:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
989 srv_send((char *)"Recognized commands:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
990 srv_send((char *)"GLOBAL GET Get global settings");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
991 srv_send((char *)"GLOBAL PUT Put global settings");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
992 srv_send((char *)".");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
993 return 0;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
994 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
995
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
996 if (strcmp(opt, (char *)"GET") == 0) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
997 srv_send((char *)"213 Global Settings record follows:");
269
dc88583a068d All web screens now show the program name and version
Michiel Broek <mbroek@mbse.eu>
parents: 268
diff changeset
998 srv_send((char *)"RELEASE,%s", VERSION);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
999 srv_send((char *)"NAME,%s", Config.name);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1000 srv_send((char *)"PORT,%d", Config.my_port);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1001 srv_send((char *)"TEMPFORMAT,%c", Config.tempFormat);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1002 srv_send((char *)"TEMP_ADDRESS,%s", Config.temp_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1003 srv_send((char *)"TEMP_STATE,%s", TEMPSTATE[Config.temp_state]);
208
934d45d9751d Added room temperature and humidity to the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1004 srv_send((char *)"TEMP_VALUE,%.1f", Config.temp_value / 1000.0);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1005 srv_send((char *)"HUM_ADDRESS,%s", Config.hum_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1006 srv_send((char *)"HUM_STATE,%s", TEMPSTATE[Config.hum_state]);
208
934d45d9751d Added room temperature and humidity to the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 206
diff changeset
1007 srv_send((char *)"HUM_VALUE,%.0f", Config.hum_value / 1000.0);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1008 srv_send((char *)"TEMP_HUM_IDX,%d", Config.temp_hum_idx);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1009 srv_send((char *)"LCD_COLS,%d", Config.lcd_cols);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1010 srv_send((char *)"LCD_ROWS,%d", Config.lcd_rows);
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1011 srv_send((char *)"NEXT_UNIT,%d", Config.next_unit);
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1012 srv_send((char *)"MQTT_HOST,%s", Config.mqtt_host);
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
1013 srv_send((char *)"MQTT_PORT,%d", Config.mqtt_port);
534
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1014 srv_send((char *)"MQTT_USER,%s", Config.mqtt_username);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1015 srv_send((char *)"MQTT_PASS,%s", Config.mqtt_password);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1016 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1017 return 0;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1018 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1019
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1020 if (strcmp(opt, (char *)"PUT") == 0) {
534
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1021 bool mqtt_reconnect = false;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1022 while (1) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1023 rlen = srv_recv(ibuf);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1024 if (rlen == -1) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1025 return 0;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1026 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1027 if (strlen(ibuf)) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1028 if (strcmp(ibuf, (char *)".") == 0) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1029 srv_send((char *)"219 Accepted Global record");
534
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1030 if (mqtt_reconnect)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1031 mqtt_connect();
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1032 return 1;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1033 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1034 kwd = strtok(ibuf, ",\0");
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1035 val = strtok(NULL, "\0");
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1036 if (kwd) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1037 if (strcmp(kwd, (char *)"NAME") == 0) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1038 if (val && Config.name && strcmp(val, Config.name))
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1039 syslog(LOG_NOTICE, "Global name `%s' to `%s'", Config.name, val);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1040 if (Config.name)
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1041 free(Config.name);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1042 if (val)
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1043 Config.name = xstrcpy(val);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1044 else
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1045 Config.name = NULL;
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1046
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1047 } else if (val && (strcmp(kwd, (char *)"PORT") == 0)) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1048 if (sscanf(val, "%d", &ival) == 1) {
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1049 if (Config.my_port != ival)
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1050 syslog(LOG_NOTICE, "Global port %d to %d", Config.my_port, ival);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1051 Config.my_port = ival;
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1052 }
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1053
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1054 } else if (val && (strcmp(kwd, (char *)"TEMPFORMAT") == 0)) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1055 if ((val[0] == 'C') || (val[0] == 'F')) {
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1056 if (Config.tempFormat != val[0])
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1057 syslog(LOG_NOTICE, "Global port %c to %c", Config.tempFormat, val[0]);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1058 Config.tempFormat = val[0];
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1059 }
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1060
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1061 } else if (strcmp(kwd, (char *)"TEMP_ADDRESS") == 0) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1062 if (val && Config.temp_address && (strcmp(val, Config.temp_address)))
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1063 syslog(LOG_NOTICE, "Global temperature address `%s' to `%s'", Config.temp_address, val);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1064 if (Config.temp_address) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1065 device_count(FALSE, Config.temp_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1066 free(Config.temp_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1067 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1068 if (val) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1069 Config.temp_address = xstrcpy(val);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1070 device_count(TRUE, Config.temp_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1071 } else
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1072 Config.temp_address = NULL;
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1073
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1074 } else if (strcmp(kwd, (char *)"HUM_ADDRESS") == 0) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1075 if (val && Config.hum_address && (strcmp(val, Config.hum_address)))
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1076 syslog(LOG_NOTICE, "Global humidity address `%s' to `%s'", Config.hum_address, val);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1077 if (Config.hum_address) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1078 device_count(FALSE, Config.hum_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1079 free(Config.hum_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1080 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1081 if (val) {
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1082 Config.hum_address = xstrcpy(val);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1083 device_count(TRUE, Config.hum_address);
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1084 } else
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1085 Config.hum_address = NULL;
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1086
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1087 } else if (val && (strcmp(kwd, (char *)"TEMP_HUM_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1088 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1089 if (Config.temp_hum_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1090 syslog(LOG_NOTICE, "Global Temp/Humidity idx %d to %d", Config.temp_hum_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1091 Config.temp_hum_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1092 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
1093
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1094 } else if (val && (strcmp(kwd, (char *)"LCD_COLS") == 0)) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1095 if (sscanf(val, "%d", &ival) == 1) {
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1096 if (Config.lcd_cols != ival)
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1097 syslog(LOG_NOTICE, "Global LCD columns %d to %d", Config.lcd_cols, ival);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1098 Config.lcd_cols = ival;
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1099 }
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1100
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1101 } else if (val && (strcmp(kwd, (char *)"LCD_ROWS") == 0)) {
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1102 if (sscanf(val, "%d", &ival) == 1) {
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1103 if (Config.lcd_rows != ival)
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1104 syslog(LOG_NOTICE, "Global LCD rows %d to %d", Config.lcd_rows, ival);
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1105 Config.lcd_rows = ival;
278
76c8a6f18e4d GLOBAL PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 276
diff changeset
1106 }
534
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1107
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1108 } else if (strcmp(kwd, (char *)"MQTT_HOST") == 0) {
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1109 if (val && Config.mqtt_host && (strcmp(val, Config.mqtt_host)))
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1110 syslog(LOG_NOTICE, "Global MQTT host `%s' to `%s'", Config.mqtt_host, val);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1111 mqtt_disconnect();
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1112 mqtt_reconnect = true;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1113 if (Config.mqtt_host)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1114 free(Config.mqtt_host);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1115 if (val)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1116 Config.mqtt_host = xstrcpy(val);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1117 else
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1118 Config.mqtt_host = NULL;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1119
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1120 } else if (val && (strcmp(kwd, (char *)"MQTT_PORT") == 0)) {
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1121 if (sscanf(val, "%d", &ival) == 1) {
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1122 if (Config.mqtt_port != ival) {
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1123 syslog(LOG_NOTICE, "Global MQTT port %d to %d", Config.mqtt_port, ival);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1124 mqtt_disconnect();
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1125 mqtt_reconnect = true;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1126 Config.mqtt_port = ival;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1127 }
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1128 }
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1129
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1130 } else if (strcmp(kwd, (char *)"MQTT_USER") == 0) {
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1131 if (val && Config.mqtt_username && (strcmp(val, Config.mqtt_username)))
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1132 syslog(LOG_NOTICE, "Global MQTT username `%s' to `%s'", Config.mqtt_username, val);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1133 mqtt_disconnect();
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1134 mqtt_reconnect = true;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1135 if (Config.mqtt_username)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1136 free(Config.mqtt_username);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1137 if (val)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1138 Config.mqtt_username = xstrcpy(val);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1139 else
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1140 Config.mqtt_username = NULL;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1141
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1142 } else if (strcmp(kwd, (char *)"MQTT_PASS") == 0) {
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1143 if (val && Config.mqtt_password && (strcmp(val, Config.mqtt_password)))
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1144 syslog(LOG_NOTICE, "Global MQTT password `%s' to `%s'", Config.mqtt_password, val);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1145 mqtt_disconnect();
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1146 mqtt_reconnect = true;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1147 if (Config.mqtt_password)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1148 free(Config.mqtt_password);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1149 if (val)
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1150 Config.mqtt_password = xstrcpy(val);
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1151 else
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1152 Config.mqtt_password = NULL;
92b546d4a839 Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents: 533
diff changeset
1153
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1154 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1155 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1156 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1157 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1158 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1159
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1160 srv_send((char *)"504 Subcommand error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1161 return 0;
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1162 }
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1163
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1164
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1165
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
1166 /*
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1167 * LIST
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1168 * LIST LOG
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1169 */
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1170 int cmd_list(char *buf)
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1171 {
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1172 char *opt;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1173 // char *param, *filename, q[5], hr[3], buffer[256], outbuf[256];
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1174 // char *date_n, *mode_n, *air_n, *beer_n, *target_lo_n, *target_hi_n, *heater_n, *cooler_n, *room_n, *chiller_n;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1175 // char *heater_u, *cooler_u;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1176 // int heater_l = 0, cooler_l = 0, h = 0, c = 0, heat_used = 0, cool_used = 0, lines = 0, graphstep = 0;
84
ef4c0032b51f Can list the 1-wire bus
Michiel Broek <mbroek@mbse.eu>
parents: 81
diff changeset
1177 units_list *unit;
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1178 // FILE *fp;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1179 // float room_t;
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1180
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
1181 opt = strtok(buf, " \0");
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1182 opt = strtok(NULL, " \0");
84
ef4c0032b51f Can list the 1-wire bus
Michiel Broek <mbroek@mbse.eu>
parents: 81
diff changeset
1183
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1184 if (opt == NULL) {
92
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1185 /*
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1186 * Default, list available units
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1187 */
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1188 srv_send((char *)"212 Fermenter list follows:");
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1189 for (unit = Config.units; unit; unit = unit->next) {
131
528dc0bb81ab Always use uuid to select units and remove numeric record id's.
Michiel Broek <mbroek@mbse.eu>
parents: 125
diff changeset
1190 srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]);
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1191 }
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1192 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1193 return 0;
92
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1194
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1195 } else if (strcmp(opt, (char *)"HELP") == 0) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1196 srv_send((char *)"100 Help text follows:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1197 srv_send((char *)"Recognized commands:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1198 srv_send((char *)"LIST List available units");
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1199 // srv_send((char *)"LIST LOG uuid List logfile of unit by uuid");
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1200 srv_send((char *)".");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1201 return 0;
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1202 /*
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1203 } else if (strcmp(opt, (char *)"LOG") == 0) {
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1204
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1205 param = strtok(NULL, "\0");
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1206 if (param == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1207 srv_send((char *)"502 Parameter missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1208 return 0;
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1209 }
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1210
266
07819a7ad3c1 Better log output for web graphs. Webgraphs can now display heater and cooler usage.
Michiel Broek <mbroek@mbse.eu>
parents: 264
diff changeset
1211 q[0] = q[1] = q[2] = q[3] = q[4] = 'a';
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1212 for (unit = Config.units; unit; unit = unit->next) {
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1213 if (strcmp(param, unit->uuid) == 0)
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1214 break;
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1215 }
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1216
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1217 srv_send((char *)"212 Logfile list follows:");
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1218 if (getenv((char *)"USER") == NULL) {
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1219 filename = xstrcpy((char *)"/root");
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1220 } else {
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1221 filename = xstrcpy(getenv((char *)"HOME"));
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1222 }
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1223 filename = xstrcat(filename, (char *)"/.thermferm/log/");
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1224 filename = xstrcat(filename, unit->name);
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1225 filename = xstrcat(filename, (char *)".log");
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1226 if ((fp = fopen(filename, "r"))) {
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1227 */
300
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1228 /*
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1229 * Count the lines in the logfile
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1230 */
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1231 /* lines = 0;
300
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1232 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1233 lines++;
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1234 }
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1235 fseek(fp, 0L, SEEK_SET);
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1236 */ /*
300
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1237 * We have counted the lines in the logfile including the header lines.
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1238 * The header lines should be ignored but there are so few of them, we
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1239 * just include them in the total.
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1240 * Now find a reasonable interval of lines to sent to the client.
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1241 */
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1242 /* for (graphstep = 1; graphstep <= MAX_INTERVALS; graphstep++) {
300
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1243 if (lines < GRAPH_DATALINES[graphstep]) {
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1244 break;
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1245 }
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1246 }
390
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
1247 if (graphstep > MAX_INTERVALS)
daa435544ab1 Graphs stepping should now work for archives and current fermenters.
Michiel Broek <mbroek@mbse.eu>
parents: 389
diff changeset
1248 graphstep = MAX_INTERVALS;
300
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1249 syslog(LOG_NOTICE, "LIST LOG %s: lines=%d, interval=%d, graphstep=%d", unit->name, lines, GRAPH_INTERVAL[graphstep], graphstep);
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1250
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1251 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1252 */ /*
299
d1c52fb43e30 Show heater/cooler usgae in percent on the web page. Bunped to version 0.2.5
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1253 * 2014-11-15 18:39,BEER,20.312,19.750,20.0,0,NA,NA,NA,78105,NA,NA
d1c52fb43e30 Show heater/cooler usgae in percent on the web page. Bunped to version 0.2.5
Michiel Broek <mbroek@mbse.eu>
parents: 293
diff changeset
1254 */
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1255 // hr[0] = q[0] = buffer[11];
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1256 // hr[1] = q[1] = buffer[12];
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1257 // q[2] = buffer[14];
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1258 // q[3] = buffer[15];
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1259 // hr[2] = '\0';
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1260 // buffer[strlen(buffer) -1] = '\0';
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1261 // date_n = strtok(buffer, ",\0"); /* timestamp */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1262 // mode_n = strtok(NULL, ",\0"); /* unit mode */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1263 // air_n = strtok(NULL, ",\0"); /* air temp */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1264 // beer_n = strtok(NULL, ",\0"); /* beer temp */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1265 // target_lo_n = strtok(NULL, ",\0"); /* target low temp */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1266 // heater_n = strtok(NULL, ",\0"); /* current heater state */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1267 // cooler_n = strtok(NULL, ",\0"); /* current cooler state */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1268 // heater_u = strtok(NULL, ",\0"); /* current fan state */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1269 // heater_u = strtok(NULL, ",\0"); /* current door state */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1270 // heater_u = strtok(NULL, ",\0"); /* heater use counter */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1271 // cooler_u = strtok(NULL, ",\0"); /* cooler use counter */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1272 // room_n = strtok(NULL, ",\0"); /* fan use counter */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1273 // room_n = strtok(NULL, ",\0"); /* room temperature */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1274 // target_hi_n = strtok(NULL, ",\0"); /* target high temp */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1275 // chiller_n = strtok(NULL, ",\0"); /* chiller temp */
264
91c358556ecf LIST LOG also output lines on state changes
Michiel Broek <mbroek@mbse.eu>
parents: 261
diff changeset
1276
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1277 // if (strncmp(mode_n, (char *)"Mode", 4)) {
266
07819a7ad3c1 Better log output for web graphs. Webgraphs can now display heater and cooler usage.
Michiel Broek <mbroek@mbse.eu>
parents: 264
diff changeset
1278 /*
300
4ce46ff3e37d The LIST LOG command now automatic adjusts the number of output lines and resolution by calculating a reasonable interval between 1 and 60 minutes. Bumped to version 0.2.6
Michiel Broek <mbroek@mbse.eu>
parents: 299
diff changeset
1279 * Output a line at the right intervals
266
07819a7ad3c1 Better log output for web graphs. Webgraphs can now display heater and cooler usage.
Michiel Broek <mbroek@mbse.eu>
parents: 264
diff changeset
1280 */
536
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1281 // int hour = atoi(hr);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1282 // if (((graphstep == 1)) ||
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1283 // ((graphstep == 2) && (q[3] == '0' || q[3] == '5')) ||
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1284 // ((graphstep == 3) && ((q[2] == '0' && q[3] == '0') || (q[2] == '1' && q[3] == '5') || (q[2] == '3' && q[3] == '0') || (q[2] == '4' && q[3] == '5'))) ||
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1285 // ((graphstep == 4) && ((q[2] == '0' && q[3] == '0') || (q[2] == '3' && q[3] == '0'))) ||
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1286 // ((graphstep == 5) && (q[2] == '0' && q[3] == '0')) ||
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1287 // ((graphstep == 6) && (hour % 2 == 0) && (q[2] == '0' && q[3] == '0')) || /* 120 minutes */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1288 // ((graphstep == 7) && (hour % 4 == 0) && (q[2] == '0' && q[3] == '0')) || /* 240 minutes */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1289 // ((graphstep >= 8) && (hour % 8 == 0) && (q[2] == '0' && q[3] == '0')) ) { /* 480 minutes */
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1290 // heat_used = cool_used = 0;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1291 // if (strcmp(heater_u, "NA") && (sscanf(heater_u, "%d", &h) == 1)) {
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1292 // if (h && heater_l) {
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1293 // heat_used = ((h - heater_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1294 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1295 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1296 // if (strcmp(cooler_u, "NA") && (sscanf(cooler_u, "%d", &c) == 1)) {
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1297 // if (c && cooler_l) {
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1298 // cool_used = ((c - cooler_l) * 100) / (GRAPH_INTERVAL[graphstep] * 60);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1299 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1300 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1301 // if (room_n)
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1302 // sscanf(room_n, "%f", &room_t);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1303 // else
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1304 // room_t = 0.0;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1305 // if (target_hi_n == NULL)
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1306 // target_hi_n = target_lo_n;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1307 // snprintf(outbuf, 255, "%s,%s,%s,%s,%s,%s,%s,%d,%d,%.1f,%s,%s",
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1308 // date_n, mode_n, air_n, beer_n, target_lo_n, heater_n, cooler_n,
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1309 // heat_used, cool_used, room_t, target_hi_n, chiller_n);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1310 // srv_send(outbuf);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1311 // if (h && strcmp(heater_u, "NA"))
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1312 // heater_l = h;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1313 // if (c & strcmp(cooler_u, "NA"))
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1314 // cooler_l = c;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1315 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1316 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1317 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1318 // }
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1319 // free(filename);
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1320 // filename = NULL;
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1321 // srv_send((char *)".");
e833bbd5e733 Versie 0.6.5. LIST LOG <unit> commando verwijderd, alleen ARCHIVE LOG <unit> is nog in gebruik. De chiller temperatuur zit nu ook in de log en grafiek.
Michiel Broek <mbroek@mbse.eu>
parents: 534
diff changeset
1322 // return 0;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1323 }
120
466c5cee0463 Added LIST LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 106
diff changeset
1324
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1325 srv_send((char *)"504 Subcommand error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1326 return 0;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1327 }
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1328
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1329
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1330
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1331 /*
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1332 * PROFILE ADD name Add a new profile
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1333 * PROFILE DEL uuid Delete profile with uuid
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1334 * PROFILE LIST List available profiles
258
e02393b29733 Updated web dashboard layout
Michiel Broek <mbroek@mbse.eu>
parents: 249
diff changeset
1335 * PROFILE GET uuid Get profile record
e02393b29733 Updated web dashboard layout
Michiel Broek <mbroek@mbse.eu>
parents: 249
diff changeset
1336 * PROFILE PUT uuid Put profile record
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1337 * PROFILE GETS uuid Get profile steps list
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1338 * PROFILE PUTS uuid Put profile steps list
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1339 */
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1340 int cmd_profile(char *buf)
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1341 {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1342 char ibuf[SS_BUFSIZE], *sstep, *rest, *tlarg, *tharg, *frarg, *param, *kwd, *val;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1343 int j, ival, rlen, istep, irest, ifrarg;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1344 float ftlarg, ftharg, fval;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1345 char *opt;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1346 profiles_list *profile, *tmpp;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1347 prof_step *step, *olds;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1348 uuid_t uu;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1349
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1350 opt = strtok(buf, " \0");
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1351 opt = strtok(NULL, " \0");
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1352
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1353 if (opt == NULL) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1354 srv_send((char *)"501 Subcommand missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1355 return 0;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1356 }
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1357
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1358 if (strcmp(opt, (char *)"HELP") == 0) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1359 srv_send((char *)"100 Help text follows:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1360 srv_send((char *)"Recognized commands:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1361 srv_send((char *)"PROFILE uuid,name Profile rename");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1362 srv_send((char *)"PROFILE ADD name Add new Profile with name");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1363 srv_send((char *)"PROFILE DEL uuid Delete Profile by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1364 srv_send((char *)"PROFILE LIST List available profiles");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1365 srv_send((char *)"PROFILE GET uuid Get Profile record by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1366 srv_send((char *)"PROFILE PUT uuid Put Profile record by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1367 srv_send((char *)"PROFILE GETS uuid Profile get steps list");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1368 srv_send((char *)"PROFILE PUTS uuid Profile put steps list");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1369 srv_send((char *)".");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1370 return 0;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1371 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1372
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1373 if (strcmp(opt, (char *)"LIST") == 0) {
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 85
diff changeset
1374 /*
92
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1375 * Fermenting profiles
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 85
diff changeset
1376 */
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1377 srv_send((char *)"212 Profiles list follows:");
92
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1378 for (profile = Config.profiles; profile; profile = profile->next) {
124
350401bac16e Added maintenance tabs and extended server output
Michiel Broek <mbroek@mbse.eu>
parents: 120
diff changeset
1379 j = 0;
350401bac16e Added maintenance tabs and extended server output
Michiel Broek <mbroek@mbse.eu>
parents: 120
diff changeset
1380 for (step = profile->steps; step; step = step->next)
350401bac16e Added maintenance tabs and extended server output
Michiel Broek <mbroek@mbse.eu>
parents: 120
diff changeset
1381 j++;
136
264e5ee5abfc Profiles now have a busy state
Michiel Broek <mbroek@mbse.eu>
parents: 133
diff changeset
1382 srv_send((char *)"%s,%s,%d,%d", profile->uuid, profile->name, j, profile->busy);
86
3d7a241329e2 Using final user paths for log, configuration and profiles
Michiel Broek <mbroek@mbse.eu>
parents: 85
diff changeset
1383 }
92
116226a8c70a Added profiles configuration
Michiel Broek <mbroek@mbse.eu>
parents: 88
diff changeset
1384 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1385 return 0;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1386 }
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1387
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1388 param = strtok(NULL, "\0");
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1389 if (param == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1390 srv_send((char *)"502 Parameter missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1391 return 0;
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1392 }
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1393
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1394 if (strcmp(opt, (char *)"ADD") == 0) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1395 profile = (profiles_list *)malloc(sizeof(profiles_list));
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1396 profile->next = NULL;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1397 profile->version = 1;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1398 profile->uuid = malloc(37);
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1399 uuid_generate(uu);
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1400 uuid_unparse(uu, profile->uuid);
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1401 profile->name = xstrcpy(param);
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1402 profile->busy = profile->fridge_mode = 0;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1403 profile->inittemp_lo = 19.8;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1404 profile->inittemp_hi = 20.2;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1405 profile->steps = NULL;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1406 if (Config.profiles == NULL) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1407 Config.profiles = profile;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1408 } else {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1409 for (tmpp = Config.profiles; tmpp; tmpp = tmpp->next) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1410 if (tmpp->next == NULL) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1411 tmpp->next = profile;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1412 break;
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1413 }
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1414 }
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1415 }
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1416
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1417 syslog(LOG_NOTICE, "Profile %s added", profile->uuid);
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1418 srv_send((char *)"211 Profile %s added", profile->uuid);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1419 return 1;
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1420
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
1421
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1422 } else if (strcmp(opt, (char *)"DEL") == 0) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1423 if (delete_Profile(param)) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1424 syslog(LOG_NOTICE, "Profile %s deleted", param);
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1425 srv_send((char *)"211 Profile %s deleted", param);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1426 return 1;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1427 } else {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1428 srv_send((char *)"440 No such profile");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1429 return 0;
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
1430 }
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1431
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1432 } else if (strcmp(opt, (char *)"GET") == 0) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1433 for (profile = Config.profiles; profile; profile = profile->next) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1434 if (strcmp(profile->uuid, param) == 0) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1435 srv_send((char *)"213 Profile record follows:");
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1436 srv_send((char *)"UUID,%s", profile->uuid);
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1437 srv_send((char *)"NAME,%s", profile->name);
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1438 srv_send((char *)"INITTEMP_LO,%.1f", profile->inittemp_lo);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1439 srv_send((char *)"INITTEMP_HI,%.1f", profile->inittemp_hi);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1440 srv_send((char *)"FRIDGE_MODE,%d", profile->fridge_mode);
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1441 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1442 return 0;
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1443 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1444 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1445 srv_send((char *)"440 No such profile");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1446 return 0;
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1447
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1448 } else if (strcmp(opt, (char *)"PUT") == 0) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1449 for (profile = Config.profiles; profile; profile = profile->next) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1450 if (strcmp(profile->uuid, param) == 0) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1451 while (1) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1452 rlen = srv_recv(ibuf);
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1453 if (rlen == -1) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1454 return 0;
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1455 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1456 if (strlen(ibuf)) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1457 if (strcmp(ibuf, (char *)".") == 0) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1458 srv_send((char *)"219 Accepted Profile record");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1459 return 1;
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1460 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1461 kwd = strtok(ibuf, ",\0");
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1462 val = strtok(NULL, "\0");
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1463 if (kwd && val) {
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1464 if (strcmp(kwd, (char *)"NAME") == 0) {
279
4c505414435c PROFILE PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 278
diff changeset
1465 if (profile->name) {
4c505414435c PROFILE PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 278
diff changeset
1466 if (strcmp(profile->name, val))
4c505414435c PROFILE PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 278
diff changeset
1467 syslog(LOG_NOTICE, "Profile %s name `%s' to `%s'", profile->uuid, profile->name, val);
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1468 free(profile->name);
279
4c505414435c PROFILE PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 278
diff changeset
1469 }
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1470 profile->name = xstrcpy(val);
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1471 } else if (strcmp(kwd, (char *)"INITTEMP_LO") == 0) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1472 if (sscanf(val, "%f", &fval) == 1) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1473 if (profile->inittemp_lo != fval)
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1474 syslog(LOG_NOTICE, "Profile %s initial temperature low %.1f to %.1f", profile->uuid, profile->inittemp_lo, fval);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1475 profile->inittemp_lo = fval;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1476 }
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1477 } else if (strcmp(kwd, (char *)"INITTEMP_HI") == 0) {
279
4c505414435c PROFILE PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 278
diff changeset
1478 if (sscanf(val, "%f", &fval) == 1) {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1479 if (profile->inittemp_hi != fval)
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1480 syslog(LOG_NOTICE, "Profile %s initial temperature high %.1f to %.1f", profile->uuid, profile->inittemp_hi, fval);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1481 profile->inittemp_hi = fval;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1482 }
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1483 } else if (strcmp(kwd, (char *)"FRIDGE_MODE") == 0) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1484 if (sscanf(val, "%d", &ival) == 1) {
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1485 if (profile->fridge_mode != ival)
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1486 syslog(LOG_NOTICE, "Profile %s fridge mode %d to %d", profile->uuid, profile->fridge_mode, ival);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1487 profile->fridge_mode = ival;
279
4c505414435c PROFILE PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 278
diff changeset
1488 }
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1489 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1490 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1491 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1492 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1493 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1494 }
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1495 srv_send((char *)"440 No such profile");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1496 return 0;
192
5d013b4a9138 Added PROFILE GET and PROFILE PUT commands. Adjusted the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 191
diff changeset
1497
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1498 } else if (strcmp(opt, (char *)"GETS") == 0) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1499
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1500 for (profile = Config.profiles; profile; profile = profile->next) {
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1501 if (strcmp(profile->uuid, param) == 0) {
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1502 srv_send((char *)"215 Profile steps follow:");
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1503 for (step = profile->steps; step; step = step->next) {
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1504 srv_send((char *)"%d,%d,%.1f,%.1f,%d", step->steptime, step->resttime, step->target_lo, step->target_hi, step->fridge_mode);
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1505 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1506 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1507 return 0;
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1508 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1509 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1510
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1511 srv_send((char *)"440 No such profile");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1512 return 0;
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1513
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1514 } else if (strcmp(opt, (char *)"PUTS") == 0) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1515
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1516 for (profile = Config.profiles; profile; profile = profile->next) {
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
1517 if (strcmp(profile->uuid, param) == 0) {
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1518
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1519 if (profile->steps) {
280
de3dc781ba65 PROFILE PUTS command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 279
diff changeset
1520 syslog(LOG_NOTICE, "PROFILE PUTS %s erased all old steps", profile->uuid);
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1521 for (step = profile->steps; step; step = olds) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1522 olds = step->next;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1523 free(step);
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1524 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1525 profile->steps = NULL;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1526 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1527
280
de3dc781ba65 PROFILE PUTS command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 279
diff changeset
1528 j = 0;
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1529 while (1) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1530 rlen = srv_recv(ibuf);
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1531 if (rlen == -1) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1532 return 0;
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1533 } else {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1534 if (strlen(ibuf)) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1535 if (strcmp(ibuf, (char *)".") == 0) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1536
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1537 srv_send((char *)"219 Accepted Profile steps");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1538 return 1;
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1539 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1540 sstep = strtok(ibuf, ",\0");
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1541 rest = strtok(NULL, ",\0");
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1542 tlarg = strtok(NULL, ",\0");
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1543 tharg = strtok(NULL, ",\0");
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1544 frarg = strtok(NULL, "\0");
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1545
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1546 if ((sscanf(sstep, "%d", &istep) == 1) &&
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1547 (sscanf(rest, "%d", &irest) == 1) &&
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1548 (sscanf(tlarg, "%f", &ftlarg) == 1) &&
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1549 (sscanf(tharg, "%f", &ftharg) == 1) &&
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1550 (sscanf(frarg, "%d", &ifrarg) == 1)) {
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1551
280
de3dc781ba65 PROFILE PUTS command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 279
diff changeset
1552 j++;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1553 syslog(LOG_NOTICE, "PROFILE PUTS %s add step %d: steptime=%d resttime=%d target=%.1f..%.1f fridge_mode=%d",
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1554 profile->uuid, j, istep, irest, ftlarg, ftharg, ifrarg);
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1555 step = (prof_step *)malloc(sizeof(prof_step));
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1556 step->next = NULL;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1557 step->version = 1;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1558 step->steptime = istep;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1559 step->resttime = irest;
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1560 step->target_lo = ftlarg;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1561 step->target_hi = ftharg;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
1562 step->fridge_mode = ifrarg;
140
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1563
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1564 if (profile->steps == NULL) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1565 profile->steps = step;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1566 } else {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1567 for (olds = profile->steps; olds; olds = olds->next) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1568 if (olds->next == NULL) {
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1569 olds->next = step;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1570 break;
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1571 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1572 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1573 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1574 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1575 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1576 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1577 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1578 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1579 }
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1580
1b001de37945 Implemented PROFILE PUTS command
Michiel Broek <mbroek@mbse.eu>
parents: 138
diff changeset
1581 srv_send((char *)"440 No such profile");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1582 return 0;
88
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
1583 }
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
1584
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
1585 srv_send((char *)"504 Subcommand error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1586 return 0;
88
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
1587 }
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
1588
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
1589
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
1590
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1591 #ifdef USE_SIMULATOR
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1592 int delete_Simulator(char *uuid)
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1593 {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1594 simulator_list *current = Config.simulators;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1595 simulator_list *previous = NULL;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1596
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1597 while (current) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1598 if (strcmp(current->uuid, uuid) == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1599 if (previous == NULL) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1600 Config.simulators = current->next;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1601 free(current->uuid);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1602 current->uuid = NULL;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1603 free(current->name);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1604 current->name = NULL;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1605 free(current);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1606 return 1;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1607 } else {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1608 free(current->uuid);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1609 current->uuid = NULL;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1610 free(current->name);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1611 current->name = NULL;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1612 previous->next = current->next;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1613 free(current);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1614 current = previous->next;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1615 return 1;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1616 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1617 } else {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1618 previous = current;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1619 current = current->next;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1620 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1621 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1622 return 0;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1623 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1624
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1625
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1626
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1627 /*
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1628 * SIMULATOR ADD name
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1629 * SIMULATOR DEL uuid
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1630 * SIMULATOR LIST
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1631 * SIMULATOR GET uuid
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1632 * SIMULATOR PUT uuid
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1633 */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1634 int cmd_simulator(char *buf)
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1635 {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1636 char *opt, *param, *kwd, *val, ibuf[SS_BUFSIZE];
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1637 simulator_list *simulator, *tmps;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1638 int rc, rlen, ival;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1639 float fval;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1640 uuid_t uu;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1641
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1642 opt = strtok(buf, " \0");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1643 opt = strtok(NULL, " \0");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1644
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1645 if (opt == NULL) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1646 srv_send((char *)"501 Subcommand missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1647 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1648 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1649 param = strtok(NULL, "\0");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1650
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1651 if (strcmp(opt, (char *)"HELP") == 0) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1652 srv_send((char *)"100 Help text follows:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1653 srv_send((char *)"Recognized commands:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1654 srv_send((char *)"SIMULATOR ADD name Add a new Simulator with name");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1655 srv_send((char *)"SIMULATOR DEL uuid Delete Simulator by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1656 srv_send((char *)"SIMULATOR LIST List all Simulators");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1657 srv_send((char *)"SIMULATOR GET uuid Get Simulator record by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1658 srv_send((char *)"SIMULATOR PUT uuid Put Simulator record by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1659 srv_send((char *)".");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1660 return 0;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1661 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
1662
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1663 if (strcmp(opt, (char *)"LIST") == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1664 srv_send((char *)"212 Simulators list follows:");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1665 for (simulator = Config.simulators; simulator; simulator = simulator->next) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1666 srv_send((char *)"%s,%s", simulator->uuid, simulator->name);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1667 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1668 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1669 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1670 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1671
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1672 if (param == NULL) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1673 srv_send((char *)"502 Parameter missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1674 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1675 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1676
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1677 if (strcmp(opt, (char *)"ADD") == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1678
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1679 /*
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1680 * For now, only one simulator is allowed.
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1681 */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1682 if (Config.simulators) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1683 srv_send((char *)"441 Maximum simulators reached");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1684 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1685 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1686
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1687 simulator = (simulator_list *)malloc(sizeof(simulator_list));
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1688 simulator->next = NULL;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1689 simulator->version = 1;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1690 simulator->uuid = malloc(37);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1691 uuid_generate(uu);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1692 uuid_unparse(uu, simulator->uuid);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1693 simulator->name = xstrcpy(param);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1694 simulator->volume_air = 150;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1695 simulator->volume_beer = 50;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1696 simulator->room_temperature = simulator->air_temperature = simulator->beer_temperature = simulator->s_cool_temp = simulator->s_heat_temp = 20.0;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1697 simulator->cooler_temp = -3.0; /* Cooling temperature */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1698 simulator->cooler_time = 720; /* About 12 minutes for the cooler plate */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1699 simulator->cooler_size = 0.8; /* 0.8 square meter cooler plate */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1700 simulator->heater_temp = 150.0; /* Heating temperature */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1701 simulator->heater_time = 3; /* 3 seconds to heat-up */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1702 simulator->heater_size = 0.01; /* 0.01 square meter heater plate */
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1703 simulator->heater_state = simulator->cooler_state = 0;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1704 simulator->frigo_isolation = 0.002;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1705 simulator->s_yeast_heat = 0.0;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1706 simulator->s_yeast_started = simulator->s_cool_changed = simulator->s_heat_changed = (int)0;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1707
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1708 if (Config.simulators == NULL) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1709 Config.simulators = simulator;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1710 } else {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1711 for (tmps = Config.simulators; tmps; tmps = tmps->next) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1712 if (tmps->next == NULL) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1713 tmps->next = simulator;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1714 break;
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1715 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1716 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1717 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1718
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1719 syslog(LOG_NOTICE, "Simulator %s added", simulator->uuid);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1720 srv_send((char *)"211 Simulator %s added", simulator->uuid);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1721 return 1;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1722 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1723
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1724 if (strcmp(opt, (char *)"DEL") == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1725 rc = delete_Simulator(param);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1726 if (rc) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1727 syslog(LOG_NOTICE, "Simulator %s deleted", param);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1728 srv_send((char *)"211 Simulator %s deleted", param);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1729 return 1;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1730 } else {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1731 srv_send((char *)"440 No such simulator");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1732 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1733 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1734 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1735
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1736 if (strcmp(opt, (char *)"GET") == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1737 for (simulator = Config.simulators; simulator; simulator = simulator->next) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1738 if (strcmp(simulator->uuid, param) == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1739 srv_send((char *)"213 Simulator record follows:");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1740 srv_send((char *)"NAME,%s", simulator->name);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1741 srv_send((char *)"VOLUME_AIR,%d", simulator->volume_air);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1742 srv_send((char *)"VOLUME_BEER,%d", simulator->volume_beer);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1743 srv_send((char *)"ROOM_TEMPERATURE,%.1f", simulator->room_temperature);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1744 srv_send((char *)"AIR_TEMPERATURE,%.3f", simulator->air_temperature);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1745 srv_send((char *)"BEER_TEMPERATURE,%.3f", simulator->beer_temperature);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1746 srv_send((char *)"COOLER_TEMP,%.1f", simulator->cooler_temp);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1747 srv_send((char *)"COOLER_TIME,%d", simulator->cooler_time);
261
e4341cfbc2a8 Fixed cooler_size bug
Michiel Broek <mbroek@mbse.eu>
parents: 259
diff changeset
1748 srv_send((char *)"COOLER_SIZE,%.3f", simulator->cooler_size);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1749 srv_send((char *)"HEATER_TEMP,%.1f", simulator->heater_temp);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1750 srv_send((char *)"HEATER_TIME,%d", simulator->heater_time);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1751 srv_send((char *)"HEATER_SIZE,%.3f", simulator->heater_size);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1752 srv_send((char *)"HEATER_STATE,%d", simulator->heater_state);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1753 srv_send((char *)"COOLER_STATE,%d", simulator->cooler_state);
261
e4341cfbc2a8 Fixed cooler_size bug
Michiel Broek <mbroek@mbse.eu>
parents: 259
diff changeset
1754 srv_send((char *)"FRIGO_ISOLATION,%.3f", simulator->frigo_isolation);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1755 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1756 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1757 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1758 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1759 srv_send((char *)"440 No such simulator");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1760 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1761 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1762
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1763 if (strcmp(opt, (char *)"PUT") == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1764 for (simulator = Config.simulators; simulator; simulator = simulator->next) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1765 if (strcmp(simulator->uuid, param) == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1766 while (1) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1767 rlen = srv_recv(ibuf);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1768 if (rlen == -1) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1769 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1770 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1771 if (strlen(ibuf)) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1772 if (strcmp(ibuf, (char *)".") == 0) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1773 srv_send((char *)"219 Accepted Simulator record");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1774 return 1;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1775 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1776 kwd = strtok(ibuf, ",\0");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1777 val = strtok(NULL, "\0");
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1778 if (kwd && val) {
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1779
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1780 if (strcmp(kwd, (char *)"NAME") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1781 if (simulator->name) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1782 if (strcmp(simulator->name, val))
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1783 syslog(LOG_NOTICE, "Simulator %s name `%s' to `%s'", simulator->uuid, simulator->name, val);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1784 free(simulator->name);
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1785 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1786 simulator->name = xstrcpy(val);
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1787
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1788 } else if (strcmp(kwd, (char *)"VOLUME_AIR") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1789 if (sscanf(val, "%d", &ival) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1790 if (simulator->volume_air != ival)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1791 syslog(LOG_NOTICE, "Simulator %s volume air %d to %d", simulator->uuid, simulator->volume_air, ival);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1792 simulator->volume_air = ival;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1793 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1794
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1795 } else if (strcmp(kwd, (char *)"VOLUME_BEER") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1796 if (sscanf(val, "%d", &ival) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1797 if (simulator->volume_beer != ival)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1798 syslog(LOG_NOTICE, "Simulator %s volume beer %d to %d", simulator->uuid, simulator->volume_beer, ival);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1799 simulator->volume_beer = ival;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1800 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1801
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1802 } else if (strcmp(kwd, (char *)"ROOM_TEMPERATURE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1803 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1804 if (simulator->room_temperature != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1805 syslog(LOG_NOTICE, "Simulator %s room temperature %.1f to %.1f", simulator->uuid, simulator->room_temperature, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1806 simulator->room_temperature = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1807 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1808
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1809 } else if (strcmp(kwd, (char *)"AIR_TEMPERATURE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1810 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1811 if (simulator->air_temperature != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1812 syslog(LOG_NOTICE, "Simulator %s air temperature %.1f to %.1f", simulator->uuid, simulator->air_temperature, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1813 simulator->air_temperature = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1814 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1815
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1816 } else if (strcmp(kwd, (char *)"BEER_TEMPERATURE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1817 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1818 if (simulator->beer_temperature != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1819 syslog(LOG_NOTICE, "Simulator %s beer temperature %.1f to %.1f", simulator->uuid, simulator->beer_temperature, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1820 simulator->beer_temperature = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1821 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1822
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1823 } else if (strcmp(kwd, (char *)"COOLER_TEMP") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1824 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1825 if (simulator->cooler_temp != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1826 syslog(LOG_NOTICE, "Simulator %s cooler temperature %.1f to %.1f", simulator->uuid, simulator->cooler_temp, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1827 simulator->cooler_temp = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1828 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1829
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1830 } else if (strcmp(kwd, (char *)"COOLER_TIME") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1831 if (sscanf(val, "%d", &ival) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1832 if (simulator->cooler_time != ival)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1833 syslog(LOG_NOTICE, "Simulator %s cooler time %d to %d", simulator->uuid, simulator->cooler_time, ival);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1834 simulator->cooler_time = ival;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1835 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1836
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1837 } else if (strcmp(kwd, (char *)"COOLER_SIZE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1838 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1839 if (simulator->cooler_size != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1840 syslog(LOG_NOTICE, "Simulator %s cooler size %.1f to %.1f", simulator->uuid, simulator->cooler_size, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1841 simulator->cooler_size = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1842 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1843
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1844 } else if (strcmp(kwd, (char *)"HEATER_TEMP") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1845 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1846 if (simulator->heater_temp != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1847 syslog(LOG_NOTICE, "Simulator %s heater temperature %.1f to %.1f", simulator->uuid, simulator->heater_temp, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1848 simulator->heater_temp = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1849 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1850
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1851 } else if (strcmp(kwd, (char *)"HEATER_TIME") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1852 if (sscanf(val, "%d", &ival) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1853 if (simulator->heater_time != ival)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1854 syslog(LOG_NOTICE, "Simulator %s heater time %d to %d", simulator->uuid, simulator->heater_time, ival);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1855 simulator->heater_time = ival;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1856 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1857
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1858 } else if (strcmp(kwd, (char *)"HEATER_SIZE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1859 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1860 if (simulator->heater_size != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1861 syslog(LOG_NOTICE, "Simulator %s heater size %.1f to %.1f", simulator->uuid, simulator->heater_size, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1862 simulator->heater_size = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1863 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1864
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1865 } else if (strcmp(kwd, (char *)"HEATER_STATE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1866 if (sscanf(val, "%d", &ival) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1867 if (simulator->heater_state != ival)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1868 syslog(LOG_NOTICE, "Simulator %s heater state %d to %d", simulator->uuid, simulator->heater_state, ival);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1869 simulator->heater_state = ival;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1870 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1871
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1872 } else if (strcmp(kwd, (char *)"COOLER_STATE") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1873 if (sscanf(val, "%d", &ival) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1874 if (simulator->cooler_state != ival)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1875 syslog(LOG_NOTICE, "Simulator %s cooler state %d to %d", simulator->uuid, simulator->cooler_state, ival);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1876 simulator->cooler_state = ival;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1877 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1878
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1879 } else if (strcmp(kwd, (char *)"FRIGO_ISOLATION") == 0) {
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1880 if (sscanf(val, "%f", &fval) == 1) {
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1881 if (simulator->frigo_isolation != fval)
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1882 syslog(LOG_NOTICE, "Simulator %s frigo isolation %.1f to %.1f", simulator->uuid, simulator->frigo_isolation, fval);
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1883 simulator->frigo_isolation = fval;
281
12a5dbbfd0e3 SIMULATOR PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 280
diff changeset
1884 }
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1885
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1886 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1887 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1888 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1889 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1890 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1891 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1892 srv_send((char *)"440 No such simulator");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1893 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1894 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1895
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1896 srv_send((char *)"504 Subcommand error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
1897 return 0;
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1898 }
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1899 #endif
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1900
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1901
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
1902
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1903 int delete_Unit(char *uuid)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1904 {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1905 units_list *current = Config.units;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1906 units_list *previous = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1907
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1908 while (current) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1909 if (strcmp(current->uuid, uuid) == 0) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1910 if (previous == NULL) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1911 Config.units = current->next;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1912 free(current->uuid);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1913 current->uuid = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1914 free(current->name);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1915 current->name = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1916 if (current->air_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1917 free(current->air_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1918 current->air_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1919 if (current->beer_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1920 free(current->beer_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1921 current->beer_address = NULL;
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
1922 if (current->chiller_address)
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
1923 free(current->chiller_address);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
1924 current->chiller_address = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1925 if (current->heater_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1926 free(current->heater_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1927 current->heater_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1928 if (current->cooler_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1929 free(current->cooler_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1930 current->cooler_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1931 if (current->fan_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1932 free(current->fan_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1933 current->fan_address = NULL;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1934 if (current->light_address)
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1935 free(current->light_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1936 current->light_address = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1937 if (current->door_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1938 free(current->door_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1939 current->door_address = NULL;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1940 if (current->psu_address)
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1941 free(current->psu_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1942 current->psu_address = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1943 if (current->profile)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1944 free(current->profile);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1945 current->profile = NULL;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1946 if (current->PID_cool)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1947 free(current->PID_cool);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1948 current->PID_cool = NULL;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1949 if (current->PID_heat)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1950 free(current->PID_heat);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1951 current->PID_heat = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1952 free(current);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1953 return 1;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1954 } else {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1955 free(current->uuid);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1956 current->uuid = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1957 free(current->name);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1958 current->name = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1959 if (current->air_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1960 free(current->air_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1961 current->air_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1962 if (current->beer_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1963 free(current->beer_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1964 current->beer_address = NULL;
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
1965 if (current->chiller_address)
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
1966 free(current->chiller_address);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
1967 current->chiller_address = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1968 if (current->heater_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1969 free(current->heater_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1970 current->heater_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1971 if (current->cooler_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1972 free(current->cooler_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1973 current->cooler_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1974 if (current->fan_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1975 free(current->fan_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1976 current->fan_address = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1977 if (current->door_address)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1978 free(current->door_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1979 current->door_address = NULL;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1980 if (current->light_address)
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1981 free(current->light_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1982 current->light_address = NULL;
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1983 if (current->psu_address)
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1984 free(current->psu_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
1985 current->psu_address = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1986 if (current->profile)
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1987 free(current->profile);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1988 current->profile = NULL;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1989 if (current->PID_cool)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1990 free(current->PID_cool);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1991 current->PID_cool = NULL;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1992 if (current->PID_heat)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1993 free(current->PID_heat);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
1994 current->PID_heat = NULL;
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
1995 previous->next = current->next;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1996 free(current);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1997 current = previous->next;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1998 return 1;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
1999 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2000 } else {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2001 previous = current;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2002 current = current->next;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2003 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2004 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2005 return 0;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2006 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2007
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2008
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2009
88
12259362595b Added SET commands
Michiel Broek <mbroek@mbse.eu>
parents: 87
diff changeset
2010 /*
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2011 * UNIT ADD name
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2012 * UNIT DEL uuid
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2013 * UNIT LIST
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2014 * UNIT GET uuid
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2015 * UNIT PUT uuid
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2016 */
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2017 int cmd_unit(char *buf)
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2018 {
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2019 char *opt, *param = NULL, *kwd, *val, ibuf[SS_BUFSIZE];
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2020 units_list *unit, *tmpu;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2021 uuid_t uu;
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2022 int ival, i, rc, rlen;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2023 float fval;
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2024
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2025 opt = strtok(buf, " \0");
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2026 opt = strtok(NULL, " \0");
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2027
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2028 if (opt == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2029 srv_send((char *)"501 Subcommand missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2030 return 0;
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2031 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2032 param = strtok(NULL, "\0");
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2033
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2034 if (strcmp(opt, (char *)"HELP") == 0) {
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2035 srv_send((char *)"100 Help text follows:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2036 srv_send((char *)"Recognized commands:");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2037 srv_send((char *)"UNIT ADD name Add a new Unit with name");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2038 srv_send((char *)"UNIT DEL uuid Delete Unit by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2039 srv_send((char *)"UNIT LIST List all Units");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2040 srv_send((char *)"UNIT GET uuid Get Unit record by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2041 srv_send((char *)"UNIT PUT uuid Put Unit record by uuid");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2042 srv_send((char *)".");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2043 return 0;
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2044 }
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2045
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2046 if ((strcmp(opt, (char *)"LIST") == 0) && (param == NULL)) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2047 srv_send((char *)"212 Fermenter list follows:");
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2048 for (unit = Config.units; unit; unit = unit->next) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2049 srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2050 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2051 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2052 return 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2053 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2054
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2055 if (param == NULL) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2056 srv_send((char *)"502 Parameter missing");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2057 return 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2058 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2059
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2060 if (strcmp(opt, (char *)"ADD") == 0) {
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
2061 char an[128];
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
2062
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
2063 sprintf(an, "unit%d", Config.next_unit);
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
2064 Config.next_unit++;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2065 unit = (units_list *)malloc(sizeof(units_list));
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2066 unit->next = NULL;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2067 unit->version = 1;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2068 unit->uuid = malloc(37);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2069 uuid_generate(uu);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2070 uuid_unparse(uu, unit->uuid);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2071 unit->name = xstrcpy(param);
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
2072 unit->alias = xstrcpy(an);
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2073 unit->air_address = unit->beer_address = unit->chiller_address = unit->heater_address = unit->cooler_address = \
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2074 unit->fan_address = unit->door_address = unit->light_address = \
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2075 unit->psu_address = unit->profile = NULL;
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2076 unit->air_idx = unit->beer_idx = unit->chiller_idx = unit->heater_idx = unit->cooler_idx = unit->fan_idx = \
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2077 unit->door_idx = unit->light_idx = unit->psu_idx = 0;
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2078 unit->volume = unit->prof_peak_abs = unit->prof_peak_rel = 0.0;
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2079 unit->air_state = unit->beer_state = unit->chiller_state = 1;
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2080 unit->air_temperature = unit->beer_temperature = unit->chiller_temperature = 20000;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2081 unit->beer_set = unit->fridge_set = 20.0;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2082 unit->heater_state = unit->cooler_state = unit->fan_state = unit->door_state = unit->mode = \
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2083 unit->light_state = unit->psu_state = unit->prof_state = 0;
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2084 unit->heater_delay = unit->cooler_delay = unit->fan_delay = 20; /* 5 minutes delay */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2085 unit->light_delay = 1; /* 15 seconds delay */
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2086 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2087 unit->heater_usage = unit->cooler_usage = unit->fan_usage = unit->light_usage = 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2088 unit->temp_set_min = 1.0;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2089 unit->temp_set_max = 30.0;
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2090 unit->prof_started = unit->prof_paused = unit->prof_primary_done = (time_t)0;
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 282
diff changeset
2091 unit->prof_percent = 0;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2092 unit->PID_cool = (pid_var *)malloc(sizeof(pid_var));
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2093 unit->PID_heat = (pid_var *)malloc(sizeof(pid_var));
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2094 InitPID(unit->PID_cool, PID_TYPE_COOL);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2095 InitPID(unit->PID_heat, PID_TYPE_HEAT);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2096
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2097 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2098 * Block main process
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2099 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2100 run_pause = TRUE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2101 for (;;) {
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2102 usleep(100000);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2103 if (run_hold)
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2104 break;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2105 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2106
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2107 if (Config.units == NULL) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2108 Config.units = unit;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2109 } else {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2110 for (tmpu = Config.units; tmpu; tmpu = tmpu->next) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2111 if (tmpu->next == NULL) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2112 tmpu->next = unit;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2113 break;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2114 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2115 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2116 }
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2117 lcd_buf_reset();
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2118 run_pause = FALSE;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2119
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2120 syslog(LOG_NOTICE, "Unit %s added", unit->uuid);
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2121 srv_send((char *)"211 Unit %s added", unit->uuid);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2122 return 1;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2123 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2124
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2125 if (strcmp(opt, (char *)"DEL") == 0) {
245
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2126 /*
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2127 * Block main process.
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2128 */
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2129 run_pause = TRUE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2130 for (;;) {
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2131 usleep(100000);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2132 if (run_hold)
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2133 break;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2134 }
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2135
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2136 rc = delete_Unit(param);
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2137 lcd_buf_reset();
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2138 run_pause = FALSE;
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2139
b01b6238eb67 You can now safely add and remove units on a running system.
Michiel Broek <mbroek@mbse.eu>
parents: 240
diff changeset
2140 if (rc) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2141 syslog(LOG_NOTICE, "Unit %s deleted", param);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2142 srv_send((char *)"211 Unit %s deleted", param);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2143 return 1;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2144 } else {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2145 srv_send((char *)"440 No such unit");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2146 return 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2147 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2148 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2149
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2150 if (strcmp(opt, (char *)"GET") == 0) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2151 for (unit = Config.units; unit; unit = unit->next) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2152 if (strcmp(param, unit->uuid) == 0) {
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2153 srv_send((char *)"213 Unit listing follows:");
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2154 srv_send((char *)"NAME,%s", unit->name);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2155 srv_send((char *)"UUID,%s", unit->uuid);
500
5aa914eb644e Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents: 499
diff changeset
2156 srv_send((char *)"ALIAS,%s", unit->alias);
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: 529
diff changeset
2157 srv_send((char *)"MODE,%s", UNITMODE[unit->mode]);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2158 srv_send((char *)"VOLUME,%2f", unit->volume);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2159 srv_send((char *)"AIR_ADDRESS,%s", unit->air_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2160 srv_send((char *)"AIR_STATE,%s", TEMPSTATE[unit->air_state]);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2161 srv_send((char *)"AIR_TEMPERATURE,%.3f", unit->air_temperature / 1000.0);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2162 srv_send((char *)"AIR_IDX,%d", unit->air_idx);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2163 srv_send((char *)"BEER_ADDRESS,%s", MBSE_SS(unit->beer_address));
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2164 srv_send((char *)"BEER_STATE,%s", TEMPSTATE[unit->beer_state]);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2165 srv_send((char *)"BEER_TEMPERATURE,%.3f", unit->beer_temperature / 1000.0);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2166 srv_send((char *)"BEER_IDX,%d", unit->beer_idx);
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2167 srv_send((char *)"CHILLER_ADDRESS,%s", MBSE_SS(unit->chiller_address));
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2168 srv_send((char *)"CHILLER_STATE,%s", TEMPSTATE[unit->chiller_state]);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2169 srv_send((char *)"CHILLER_TEMPERATURE,%.3f", unit->chiller_temperature / 1000.0);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2170 srv_send((char *)"CHILLER_IDX,%d", unit->chiller_idx);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2171 srv_send((char *)"HEATER_ADDRESS,%s", unit->heater_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2172 srv_send((char *)"HEATER_STATE,%d", unit->heater_state);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2173 srv_send((char *)"HEATER_DELAY,%d", unit->heater_delay);
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
2174 srv_send((char *)"HEATER_USAGE,%d", unit->heater_usage);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2175 srv_send((char *)"HEATER_IDX,%d", unit->heater_idx);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2176 if (unit->PID_heat) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2177 srv_send((char *)"PIDH_IMAX,%.1f", unit->PID_heat->iMax);
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
2178 srv_send((char *)"PIDH_IDLERANGE,%.2f", unit->PID_heat->idleRange);
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2179 srv_send((char *)"PIDH_PGAIN,%.3f", unit->PID_heat->pGain);
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2180 srv_send((char *)"PIDH_IGAIN,%.3f", unit->PID_heat->iGain);
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2181 srv_send((char *)"PIDH_DGAIN,%.3f", unit->PID_heat->dGain);
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2182 srv_send((char *)"PIDH_SV,%.2f", unit->PID_heat->SetP);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2183 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2184 srv_send((char *)"COOLER_ADDRESS,%s", unit->cooler_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2185 srv_send((char *)"COOLER_STATE,%d", unit->cooler_state);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2186 srv_send((char *)"COOLER_DELAY,%d", unit->cooler_delay);
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
2187 srv_send((char *)"COOLER_USAGE,%d", unit->cooler_usage);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2188 srv_send((char *)"COOLER_IDX,%d", unit->cooler_idx);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2189 if (unit->PID_cool) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2190 srv_send((char *)"PIDC_IMAX,%.1f", unit->PID_cool->iMax);
364
2f9bbbcd2407 Tuning PID code. Samll changes on the unit web page.
Michiel Broek <mbroek@mbse.eu>
parents: 362
diff changeset
2191 srv_send((char *)"PIDC_IDLERANGE,%.2f", unit->PID_cool->idleRange);
492
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2192 srv_send((char *)"PIDC_PGAIN,%.3f", unit->PID_cool->pGain);
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2193 srv_send((char *)"PIDC_IGAIN,%.3f", unit->PID_cool->iGain);
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2194 srv_send((char *)"PIDC_DGAIN,%.3f", unit->PID_cool->dGain);
750f2468dec5 Changed PID code. PID parameters are now stored 3 digits instead of 2 behind the decimal point. Prevent extreme heating or cooling in Beer mode. Heat and Cool lockdown now allows the lagest value to win instead of zero them both. PID output treshold from 2% to 50%.
Michiel Broek <mbroek@mbse.eu>
parents: 418
diff changeset
2195 srv_send((char *)"PIDC_SV,%.2f", unit->PID_cool->SetP);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2196 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2197 srv_send((char *)"FAN_ADDRESS,%s", unit->fan_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2198 srv_send((char *)"FAN_STATE,%d", unit->fan_state);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2199 srv_send((char *)"FAN_DELAY,%d", unit->fan_delay);
293
881b1ae75468 Added usage counters
Michiel Broek <mbroek@mbse.eu>
parents: 289
diff changeset
2200 srv_send((char *)"FAN_USAGE,%d", unit->fan_usage);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2201 srv_send((char *)"FAN_IDX,%d", unit->fan_idx);
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2202 srv_send((char *)"LIGHT_ADDRESS,%s", unit->light_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2203 srv_send((char *)"LIGHT_STATE,%d", unit->light_state);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2204 srv_send((char *)"LIGHT_DELAY,%d", unit->light_delay);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2205 srv_send((char *)"LIGHT_USAGE,%d", unit->light_usage);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2206 srv_send((char *)"LIGHT_IDX,%d", unit->light_idx);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2207 srv_send((char *)"DOOR_ADDRESS,%s", unit->door_address);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2208 srv_send((char *)"DOOR_STATE,%d", unit->door_state);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2209 srv_send((char *)"DOOR_IDX,%d", unit->door_idx);
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2210 srv_send((char *)"PSU_ADDRESS,%s", unit->psu_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2211 srv_send((char *)"PSU_STATE,%d", unit->psu_state);
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2212 srv_send((char *)"PSU_IDX,%d", unit->psu_idx);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2213 srv_send((char *)"FRIDGE_SET,%.1f", unit->fridge_set);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2214 srv_send((char *)"BEER_SET,%.1f", unit->beer_set);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2215 srv_send((char *)"PROFILE,%s", unit->profile);
217
2922d439ff63 Added profile state ABORT
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
2216 srv_send((char *)"PROF_STARTED,%d", (int)unit->prof_started);
284
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 282
diff changeset
2217 if (unit->prof_state == PROFILE_RUN) {
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 282
diff changeset
2218 srv_send((char *)"PROF_STATE,%s %d%%", PROFSTATE[unit->prof_state], unit->prof_percent);
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 282
diff changeset
2219 } else {
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 282
diff changeset
2220 srv_send((char *)"PROF_STATE,%s", PROFSTATE[unit->prof_state]);
9e6fb5aed618 Profile progress is visible in the web interface
Michiel Broek <mbroek@mbse.eu>
parents: 282
diff changeset
2221 }
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
2222 srv_send((char *)"PROF_TARGET_LO,%.3f", unit->prof_target_lo);
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
2223 srv_send((char *)"PROF_TARGET_HI,%.3f", unit->prof_target_hi);
398
efdfef1677d1 Fixed crash after profile is finished. Fixed error in UNIT GET output.
Michiel Broek <mbroek@mbse.eu>
parents: 397
diff changeset
2224 srv_send((char *)"PROF_FRIDGE_MODE,%d", unit->prof_fridge_mode);
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2225 srv_send((char *)"PROF_PEAK_ABS,%.3f", unit->prof_peak_abs);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2226 srv_send((char *)"PROF_PEAK_REL,%.3f", unit->prof_peak_rel);
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2227 srv_send((char *)"PROF_PRIMARY_DONE,%d", (int)unit->prof_primary_done);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2228 srv_send((char *)"TEMP_SET_MIN,%.1f", unit->temp_set_min);
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2229 srv_send((char *)"TEMP_SET_MAX,%.1f", unit->temp_set_max);
529
00b45f2aaac3 Added alarm LED
Michiel Broek <mbroek@mbse.eu>
parents: 520
diff changeset
2230 srv_send((char *)"ALARM,%d", unit->alarm_flag);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2231 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2232 return 0;
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2233 }
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2234 }
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2235 srv_send((char *)"440 No such unit");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2236 return 0;
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2237 }
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2238
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2239 if (strcmp(opt, (char *)"PUT") == 0) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2240 /*
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2241 * Block main process
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2242 */
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2243 run_pause = TRUE;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2244 for (;;) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2245 usleep(100000);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2246 if (run_hold)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2247 break;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2248 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2249
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2250 for (unit = Config.units ; unit; unit = unit->next) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2251 if (strcmp(unit->uuid, param) == 0) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2252 while (1) {
506
cdcd07bbee30 New MQTT protocol
Michiel Broek <mbroek@mbse.eu>
parents: 504
diff changeset
2253 unit->mqtt_flag = 0;
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2254 rlen = srv_recv(ibuf);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2255 if (rlen == -1) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2256 run_pause = FALSE;
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2257 return 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2258 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2259 if (strlen(ibuf)) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2260 if (strcmp(ibuf, (char *)".") == 0) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2261 srv_send((char *)"219 Accepted Unit record");
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2262 run_pause = FALSE;
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2263 return 1;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2264 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2265 kwd = strtok(ibuf, ",\0");
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2266 val = strtok(NULL, "\0");
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2267 if (kwd) {
506
cdcd07bbee30 New MQTT protocol
Michiel Broek <mbroek@mbse.eu>
parents: 504
diff changeset
2268 unit->mqtt_flag = 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2269 /*
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2270 * Accept writable data. The client can sent just one line,
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2271 * but may also sent everything. Simply ignore things we
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2272 * don't understand.
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2273 */
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2274 if (val && (strcmp(kwd, (char *)"NAME") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2275 if (unit->name) {
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: 493
diff changeset
2276 if (strcmp(unit->name, val)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2277 syslog(LOG_NOTICE, "Fermenter unit %s name `%s' to `%s'", unit->uuid, unit->name, val);
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: 493
diff changeset
2278 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2279 free(unit->name);
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2280 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2281 unit->name = xstrcpy(val);
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: 506
diff changeset
2282 unit->mqtt_flag |= MQTT_FLAG_DATA;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2283
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2284 } else if (val && (strcmp(kwd, (char *)"VOLUME") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2285 if (sscanf(val, "%f", &fval) == 1) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2286 if (unit->volume != fval)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2287 syslog(LOG_NOTICE, "Fermenter unit %s volume %.3f to %.3f", unit->uuid, unit->volume, fval);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2288 unit->volume = fval;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2289 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2290
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2291 } else if (strcmp(kwd, (char *)"AIR_ADDRESS") == 0) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2292 if (val && unit->air_address && (strcmp(val, unit->air_address)))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2293 syslog(LOG_NOTICE, "Fermenter unit %s air address `%s' to `%s'", unit->uuid, unit->air_address, val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2294 if (unit->air_address) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2295 device_count(FALSE, unit->air_address);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2296 free(unit->air_address);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2297 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2298 if (val) {
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2299 unit->air_address = xstrcpy(val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2300 device_count(TRUE, unit->air_address);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2301 } else
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2302 unit->air_address = NULL;
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: 506
diff changeset
2303 unit->mqtt_flag |= MQTT_FLAG_DATA;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2304
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2305 } else if (val && (strcmp(kwd, (char *)"AIR_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2306 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2307 if (unit->air_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2308 syslog(LOG_NOTICE, "Fermenter unit %s air idx %d to %d", unit->uuid, unit->air_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2309 unit->air_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2310 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2311
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2312 } else if (strcmp(kwd, (char *)"BEER_ADDRESS") == 0) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2313 if (val && unit->beer_address && (strcmp(val, unit->beer_address)))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2314 syslog(LOG_NOTICE, "Fermenter unit %s beer address `%s' to `%s'", unit->uuid, unit->beer_address, val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2315 if (unit->beer_address) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2316 device_count(FALSE, unit->beer_address);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2317 free(unit->beer_address);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2318 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2319 if (val) {
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2320 unit->beer_address = xstrcpy(val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2321 device_count(TRUE, unit->beer_address);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2322 } else
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2323 unit->beer_address = NULL;
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: 506
diff changeset
2324 unit->mqtt_flag |= MQTT_FLAG_DATA;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2325
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2326 } else if (val && (strcmp(kwd, (char *)"BEER_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2327 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2328 if (unit->beer_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2329 syslog(LOG_NOTICE, "Fermenter unit %s beer idx %d to %d", unit->uuid, unit->beer_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2330 unit->beer_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2331 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2332
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2333 } else if (strcmp(kwd, (char *)"CHILLER_ADDRESS") == 0) {
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2334 if (val && unit->chiller_address && (strcmp(val, unit->chiller_address)))
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2335 syslog(LOG_NOTICE, "Fermenter unit %s chiller address `%s' to `%s'", unit->uuid, unit->chiller_address, val);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2336 if (unit->chiller_address) {
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2337 device_count(FALSE, unit->chiller_address);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2338 free(unit->chiller_address);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2339 }
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2340 if (val) {
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2341 unit->chiller_address = xstrcpy(val);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2342 device_count(TRUE, unit->chiller_address);
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2343 } else
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2344 unit->chiller_address = NULL;
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2345 unit->mqtt_flag |= MQTT_FLAG_DATA;
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2346
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2347 } else if (val && (strcmp(kwd, (char *)"CHILLER_IDX") == 0)) {
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2348 if (sscanf(val, "%d", &ival) == 1) {
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2349 if (unit->chiller_idx != ival)
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2350 syslog(LOG_NOTICE, "Fermenter unit %s chiller idx %d to %d", unit->uuid, unit->chiller_idx, ival);
520
32bf084df5af Fix storing beer_idx value
Michiel Broek <mbroek@mbse.eu>
parents: 518
diff changeset
2351 unit->chiller_idx = ival;
518
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2352 }
fd36bedab944 Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents: 513
diff changeset
2353
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2354 } else if (strcmp(kwd, (char *)"HEATER_ADDRESS") == 0) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2355 if (val && unit->heater_address && (strcmp(val, unit->heater_address)))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2356 syslog(LOG_NOTICE, "Fermenter unit %s heater address `%s' to `%s'", unit->uuid, unit->heater_address, val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2357 if (unit->heater_address) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2358 device_count(FALSE, unit->heater_address);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2359 free(unit->heater_address);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2360 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2361 if (val) {
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2362 unit->heater_address = xstrcpy(val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2363 device_count(TRUE, unit->heater_address);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2364 } else
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2365 unit->heater_address = NULL;
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: 506
diff changeset
2366 unit->mqtt_flag |= MQTT_FLAG_DATA;
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2367
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2368 } else if (val && (strcmp(kwd, (char *)"HEATER_STATE") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2369 if ((sscanf(val, "%d", &ival) == 1) && ((ival == 0) || (ival == 100))) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2370 if (unit->heater_state != ival)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2371 syslog(LOG_NOTICE, "Fermenter unit %s heater state %d to %d", unit->uuid, unit->heater_state, ival);
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2372 unit->heater_state = ival;
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: 506
diff changeset
2373 unit->mqtt_flag |= MQTT_FLAG_DATA;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2374 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2375
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2376 } else if (val && (strcmp(kwd, (char *)"HEATER_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2377 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2378 if (unit->heater_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2379 syslog(LOG_NOTICE, "Fermenter unit %s heater idx %d to %d", unit->uuid, unit->heater_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2380 unit->heater_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2381 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2382
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2383 } else if (val && (strcmp(kwd, (char *)"HEATER_DELAY") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2384 if (sscanf(val, "%d", &ival) == 1) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2385 if (unit->heater_delay != ival)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2386 syslog(LOG_NOTICE, "Fermenter unit %s heater delay %d to %d", unit->uuid, unit->heater_delay, ival);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2387 unit->heater_delay = ival;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2388 }
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2389
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2390 } else if (strcmp(kwd, (char *)"COOLER_ADDRESS") == 0) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2391 if (val && unit->cooler_address && (strcmp(val, unit->cooler_address)))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2392 syslog(LOG_NOTICE, "Fermenter unit %s cooler address `%s' to `%s'", unit->uuid, unit->cooler_address, val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2393 if (unit->cooler_address) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2394 device_count(FALSE, unit->cooler_address);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2395 free(unit->cooler_address);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2396 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2397 if (val) {
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2398 unit->cooler_address = xstrcpy(val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2399 device_count(TRUE, unit->cooler_address);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2400 } else
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2401 unit->cooler_address = NULL;
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: 506
diff changeset
2402 unit->mqtt_flag |= MQTT_FLAG_DATA;
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2403
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2404 } else if (val && (strcmp(kwd, (char *)"COOLER_STATE") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2405 if ((sscanf(val, "%d", &ival) == 1) && ((ival == 0) || (ival == 100))) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2406 if (unit->cooler_state != ival)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2407 syslog(LOG_NOTICE, "Fermenter unit %s cooler state %d to %d", unit->uuid, unit->cooler_state, ival);
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2408 unit->cooler_state = ival;
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: 506
diff changeset
2409 unit->mqtt_flag |= MQTT_FLAG_DATA;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2410 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2411
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2412 } else if (val && (strcmp(kwd, (char *)"COOLER_DELAY") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2413 if (sscanf(val, "%d", &ival) == 1) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2414 if (unit->cooler_delay != ival)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2415 syslog(LOG_NOTICE, "Fermenter unit %s cooler delay %d to %d", unit->uuid, unit->cooler_delay, ival);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2416 unit->cooler_delay = ival;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2417 }
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2418
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2419 } else if (val && (strcmp(kwd, (char *)"COOLER_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2420 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2421 if (unit->cooler_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2422 syslog(LOG_NOTICE, "Fermenter unit %s cooler idx %d to %d", unit->uuid, unit->cooler_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2423 unit->cooler_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2424 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2425
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2426 } else if (strcmp(kwd, (char *)"FAN_ADDRESS") == 0) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2427 if (val && unit->fan_address && (strcmp(val, unit->fan_address)))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2428 syslog(LOG_NOTICE, "Fermenter unit %s fan address `%s' to `%s'", unit->uuid, unit->fan_address, val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2429 if (unit->fan_address) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2430 device_count(FALSE, unit->fan_address);
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2431 free(unit->fan_address);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2432 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2433 if (val) {
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2434 unit->fan_address = xstrcpy(val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2435 device_count(TRUE, unit->fan_address);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2436 } else
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2437 unit->fan_address = NULL;
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: 506
diff changeset
2438 unit->mqtt_flag |= MQTT_FLAG_DATA;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2439
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2440 } else if (val && (strcmp(kwd, (char *)"FAN_STATE") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2441 if ((sscanf(val, "%d", &ival) == 1) && ((ival == 0) || (ival == 100))) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2442 if (unit->fan_state != ival)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2443 syslog(LOG_NOTICE, "Fermenter unit %s fan state %d to %d", unit->uuid, unit->fan_state, ival);
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2444 unit->fan_state = ival;
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: 506
diff changeset
2445 unit->mqtt_flag |= MQTT_FLAG_DATA;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2446 }
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2447
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2448 } else if (val && (strcmp(kwd, (char *)"FAN_DELAY") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2449 if (sscanf(val, "%d", &ival) == 1) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2450 if (unit->fan_delay != ival)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2451 syslog(LOG_NOTICE, "Fermenter unit %s fan delay %d to %d", unit->uuid, unit->fan_delay, ival);
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2452 unit->fan_delay = ival;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2453 }
270
df81d583c2c3 The PID commands have an adjustable delay, default 5 minutes
Michiel Broek <mbroek@mbse.eu>
parents: 269
diff changeset
2454
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2455 } else if (val && (strcmp(kwd, (char *)"FAN_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2456 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2457 if (unit->fan_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2458 syslog(LOG_NOTICE, "Fermenter unit %s fan idx %d to %d", unit->uuid, unit->fan_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2459 unit->fan_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2460 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2461
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2462 } else if (strcmp(kwd, (char *)"LIGHT_ADDRESS") == 0) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2463 if (val && unit->light_address && (strcmp(val, unit->light_address)))
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2464 syslog(LOG_NOTICE, "Fermenter unit %s light address `%s' to `%s'", unit->uuid, unit->light_address, val);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2465 if (unit->light_address) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2466 device_count(FALSE, unit->light_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2467 free(unit->light_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2468 }
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2469 if (val) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2470 unit->light_address = xstrcpy(val);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2471 device_count(TRUE, unit->light_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2472 } else
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2473 unit->light_address = NULL;
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: 506
diff changeset
2474 unit->mqtt_flag |= MQTT_FLAG_DATA;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2475
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2476 } else if (val && (strcmp(kwd, (char *)"LIGHT_STATE") == 0)) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2477 if ((sscanf(val, "%d", &ival) == 1) && ((ival == 0) || (ival == 100))) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2478 if (unit->light_state != ival)
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2479 syslog(LOG_NOTICE, "Fermenter unit %s light state %d to %d", unit->uuid, unit->light_state, ival);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2480 unit->light_state = ival;
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: 506
diff changeset
2481 unit->mqtt_flag |= MQTT_FLAG_DATA;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2482 }
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2483
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2484 } else if (val && (strcmp(kwd, (char *)"LIGHT_DELAY") == 0)) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2485 if (sscanf(val, "%d", &ival) == 1) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2486 if (unit->light_delay != ival)
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2487 syslog(LOG_NOTICE, "Fermenter unit %s light delay %d to %d", unit->uuid, unit->light_delay, ival);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2488 unit->light_delay = ival;
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2489 }
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2490
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2491 } else if (val && (strcmp(kwd, (char *)"LIGHT_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2492 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2493 if (unit->light_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2494 syslog(LOG_NOTICE, "Fermenter unit %s light idx %d to %d", unit->uuid, unit->light_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2495 unit->light_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2496 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2497
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2498 } else if (strcmp(kwd, (char *)"DOOR_ADDRESS") == 0) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2499 if (val && unit->door_address && (strcmp(val, unit->door_address)))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2500 syslog(LOG_NOTICE, "Fermenter unit %s door address `%s' to `%s'", unit->uuid, unit->door_address, val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2501 if (unit->door_address) {
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2502 device_count(FALSE, unit->door_address);
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2503 free(unit->door_address);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2504 }
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2505 if (val) {
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2506 unit->door_address = xstrcpy(val);
179
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2507 device_count(TRUE, unit->door_address);
417ee898fb02 Added PID implementation and 433 MHz radio control switches. Not reliable yet.
Michiel Broek <mbroek@mbse.eu>
parents: 178
diff changeset
2508 } else
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2509 unit->door_address = NULL;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2510
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2511 } else if (val && (strcmp(kwd, (char *)"DOOR_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2512 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2513 if (unit->door_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2514 syslog(LOG_NOTICE, "Fermenter unit %s door idx %d to %d", unit->uuid, unit->door_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2515 unit->door_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2516 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2517
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2518 } else if (strcmp(kwd, (char *)"PSU_ADDRESS") == 0) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2519 if (val && unit->psu_address && (strcmp(val, unit->psu_address)))
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2520 syslog(LOG_NOTICE, "Fermenter unit %s psu address `%s' to `%s'", unit->uuid, unit->psu_address, val);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2521 if (unit->psu_address) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2522 device_count(FALSE, unit->psu_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2523 free(unit->psu_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2524 }
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2525 if (val) {
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2526 unit->psu_address = xstrcpy(val);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2527 device_count(TRUE, unit->psu_address);
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2528 } else
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2529 unit->psu_address = NULL;
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: 506
diff changeset
2530 unit->mqtt_flag |= MQTT_FLAG_DATA;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2531
513
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2532 } else if (val && (strcmp(kwd, (char *)"PSU_IDX") == 0)) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2533 if (sscanf(val, "%d", &ival) == 1) {
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2534 if (unit->psu_idx != ival)
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2535 syslog(LOG_NOTICE, "Fermenter unit %s psu idx %d to %d", unit->uuid, unit->psu_idx, ival);
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2536 unit->psu_idx = ival;
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2537 }
a2732027afb3 Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents: 510
diff changeset
2538
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2539 } else if (val && (strcmp(kwd, (char *)"MODE") == 0)) {
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2540 for (i = 0; i < 5; i++) {
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2541 if (strcmp(val, UNITMODE[i]) == 0) {
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: 529
diff changeset
2542 unit->mqtt_flag |= MQTT_FLAG_DATA;
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
2543 /* Initialize log if the unit is turned on */
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: 529
diff changeset
2544 if ((unit->mode == UNITMODE_OFF) && (i != UNITMODE_OFF)) {
189
cc2b04d4db99 Init logfile when a unit is turned on. Added comments for profile processing.
Michiel Broek <mbroek@mbse.eu>
parents: 185
diff changeset
2545 initlog(unit->name);
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: 529
diff changeset
2546 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: 529
diff changeset
2547 } else if ((unit->mode != UNITMODE_OFF) && (i == 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: 529
diff changeset
2548 unit->mqtt_flag |= MQTT_FLAG_DEATH;
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: 529
diff changeset
2549 }
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2550 syslog(LOG_NOTICE, "Fermenter unit %s mode %s to %s", unit->uuid, UNITMODE[unit->mode], UNITMODE[i]);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2551 unit->mode = i;
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2552 /* Allways turn everything off after a mode change */
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2553 unit->PID_cool->OutP = unit->PID_heat->OutP = 0.0;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2554 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_NONE;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2555 unit->heater_state = unit->cooler_state = unit->fan_state = unit->light_state = 0;
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2556 unit->heater_wait = unit->cooler_wait = unit->fan_wait = unit->light_wait = 0;
184
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2557 device_out(unit->heater_address, unit->heater_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2558 device_out(unit->cooler_address, unit->cooler_state);
db997a04fde3 Fixed switching problems
Michiel Broek <mbroek@mbse.eu>
parents: 179
diff changeset
2559 device_out(unit->fan_address, unit->fan_state);
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2560 device_out(unit->light_address, unit->light_state);
237
51a294d683cd Add a sane default for profile precessing.
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
2561 if (unit->mode == UNITMODE_PROFILE) {
51a294d683cd Add a sane default for profile precessing.
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
2562 /*
51a294d683cd Add a sane default for profile precessing.
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
2563 * Set a sane default until it will be overruled by the
51a294d683cd Add a sane default for profile precessing.
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
2564 * main processing loop.
51a294d683cd Add a sane default for profile precessing.
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
2565 */
397
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
2566 unit->prof_target_lo = unit->prof_target_hi = 20.0;
00ca08f5a6f8 Fermentation profiles now have a low and high temperature setting so that you can use a temperture window. Each profile step can now set for beer or air temperature reference. The logfiles have an extra temperature field for this. Bumped to version 0.4.2.
Michiel Broek <mbroek@mbse.eu>
parents: 390
diff changeset
2567 unit->prof_fridge_mode = 0;
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: 493
diff changeset
2568 if (unit->profile) {
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: 506
diff changeset
2569 unit->mqtt_flag |= MQTT_FLAG_DATA;
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: 493
diff changeset
2570 }
237
51a294d683cd Add a sane default for profile precessing.
Michiel Broek <mbroek@mbse.eu>
parents: 235
diff changeset
2571 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2572 break;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2573 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2574 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2575
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2576 } else if (val && (strcmp(kwd, (char *)"FRIDGE_SET") == 0)) {
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
2577 if ((sscanf(val, "%f", &fval) == 1) && (fval >= unit->temp_set_min) && (fval <= unit->temp_set_max)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2578 if (unit->fridge_set != fval)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2579 syslog(LOG_NOTICE, "Fermenter unit %s fridge temperature %.1f to %.1f", unit->uuid, unit->fridge_set, fval);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2580 unit->fridge_set = fval;
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: 506
diff changeset
2581 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
2582 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2583
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2584 } else if (val && (strcmp(kwd, (char *)"BEER_SET") == 0)) {
246
6df404da3537 Setting fridge and beer temperature from the panel implemented
Michiel Broek <mbroek@mbse.eu>
parents: 245
diff changeset
2585 if ((sscanf(val, "%f", &fval) == 1) && (fval >= unit->temp_set_min) && (fval <= unit->temp_set_max)) {
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2586 if (unit->beer_set != fval)
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2587 syslog(LOG_NOTICE, "Fermenter unit %s beer temperature %.1f to %.1f", unit->uuid, unit->beer_set, fval);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2588 unit->beer_set = fval;
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: 506
diff changeset
2589 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
2590 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2591
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2592 } else if (val && (strcmp(kwd, (char *)"PIDC_IMAX") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2593 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2594 if (unit->PID_cool->iMax != fval)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2595 syslog(LOG_NOTICE, "Fermenter unit %s PID_cool iGain %.1f to %.1f", unit->uuid, unit->PID_cool->iMax, fval);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2596 unit->PID_cool->iMax = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2597 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2598
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2599 } else if (val && (strcmp(kwd, (char *)"PIDC_PGAIN") == 0)) {
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2600 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2601 if (unit->PID_cool->pGain != fval)
493
04d726035afe Fixed server log when changed PID parameters from the web interface.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
2602 syslog(LOG_NOTICE, "Fermenter unit %s PID_cool pGain %.3f to %.3f", unit->uuid, unit->PID_cool->pGain, fval);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2603 unit->PID_cool->pGain = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2604 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2605
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2606 } else if (val && (strcmp(kwd, (char *)"PIDC_DGAIN") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2607 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2608 if (unit->PID_cool->dGain != fval)
493
04d726035afe Fixed server log when changed PID parameters from the web interface.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
2609 syslog(LOG_NOTICE, "Fermenter unit %s PID_cool dGain %.3f to %.3f", unit->uuid, unit->PID_cool->dGain, fval);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2610 unit->PID_cool->dGain = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2611 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2612
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2613 } else if (val && (strcmp(kwd, (char *)"PIDC_IGAIN") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2614 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2615 if (unit->PID_cool->iGain != fval)
493
04d726035afe Fixed server log when changed PID parameters from the web interface.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
2616 syslog(LOG_NOTICE, "Fermenter unit %s PID_cool iGain %.3f to %.3f", unit->uuid, unit->PID_cool->iGain, fval);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2617 unit->PID_cool->iGain = fval;
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2618 }
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2619
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2620 } else if (val && (strcmp(kwd, (char *)"PIDC_IDLERANGE") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2621 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2622 if (unit->PID_cool->idleRange != fval)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2623 syslog(LOG_NOTICE, "Fermenter unit %s PID_cool idleRange %.2f to %.2f", unit->uuid, unit->PID_cool->idleRange, fval);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2624 unit->PID_cool->idleRange = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2625 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2626
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2627 } else if (val && (strcmp(kwd, (char *)"PIDH_IMAX") == 0)) {
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2628 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2629 if (unit->PID_heat->iMax != fval)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2630 syslog(LOG_NOTICE, "Fermenter unit %s PID_heat iGain %.1f to %.1f", unit->uuid, unit->PID_heat->iMax, fval);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2631 unit->PID_heat->iMax = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2632 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2633
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2634 } else if (val && (strcmp(kwd, (char *)"PIDH_PGAIN") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2635 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2636 if (unit->PID_heat->pGain != fval)
493
04d726035afe Fixed server log when changed PID parameters from the web interface.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
2637 syslog(LOG_NOTICE, "Fermenter unit %s PID_heat pGain %.3f to %.3f", unit->uuid, unit->PID_heat->pGain, fval);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2638 unit->PID_heat->pGain = fval;
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2639 }
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2640
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2641 } else if (val && (strcmp(kwd, (char *)"PIDH_DGAIN") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2642 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2643 if (unit->PID_heat->dGain != fval)
493
04d726035afe Fixed server log when changed PID parameters from the web interface.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
2644 syslog(LOG_NOTICE, "Fermenter unit %s PID_heat dGain %.3f to %.3f", unit->uuid, unit->PID_heat->dGain, fval);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2645 unit->PID_heat->dGain = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2646 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2647
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2648 } else if (val && (strcmp(kwd, (char *)"PIDH_IGAIN") == 0)) {
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2649 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2650 if (unit->PID_heat->iGain != fval)
493
04d726035afe Fixed server log when changed PID parameters from the web interface.
Michiel Broek <mbroek@mbse.eu>
parents: 492
diff changeset
2651 syslog(LOG_NOTICE, "Fermenter unit %s PIH_heat iGain %.3f to %.3f", unit->uuid, unit->PID_heat->iGain, fval);
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2652 unit->PID_heat->iGain = fval;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2653 }
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2654
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2655 } else if (val && (strcmp(kwd, (char *)"PIDH_IDLERANGE") == 0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2656 if ((sscanf(val, "%f", &fval) == 1) && (fval >= 0.0)) {
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2657 if (unit->PID_heat->idleRange != fval)
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2658 syslog(LOG_NOTICE, "Fermenter unit %s PID_heat idleRange %.2f to %.2f", unit->uuid, unit->PID_heat->idleRange, fval);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2659 unit->PID_heat->idleRange = fval;
310
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2660 }
53774295e14a Added Kp, Kd and Ki settings to the units. Bumped to version 0.2.9
Michiel Broek <mbroek@mbse.eu>
parents: 306
diff changeset
2661
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2662 } else if (strcmp(kwd, (char *)"PROFILE") == 0) {
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2663 if (unit->prof_state == PROFILE_OFF) {
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2664 /*
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2665 * Only change profile if it is not active, else drop this one.
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2666 */
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2667 if (unit->profile && val && strcmp(unit->profile, val))
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2668 syslog(LOG_NOTICE, "Fermenter unit %s profile name `%s' to `%s'", unit->uuid, unit->profile, val);
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2669 if (unit->profile)
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2670 free(unit->profile);
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2671
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2672 if (val)
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2673 unit->profile = xstrcpy(val);
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2674 else
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2675 unit->profile = NULL;
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
2676 /*
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
2677 * Reset all output devices
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
2678 */
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2679 unit->PID_cool->OutP = unit->PID_heat->OutP = 0.0;
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2680 unit->PID_cool->Mode = unit->PID_heat->Mode = PID_MODE_NONE;
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2681 unit->heater_state = unit->cooler_state = unit->fan_state = unit->light_state = 0;
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2682 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
2683 device_out(unit->heater_address, unit->heater_state);
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
2684 device_out(unit->cooler_address, unit->cooler_state);
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
2685 device_out(unit->fan_address, unit->fan_state);
306
97602274eb58 Updated to add support for lights in a fermenter unit and a Power Supply status.
Michiel Broek <mbroek@mbse.eu>
parents: 303
diff changeset
2686 device_out(unit->light_address, unit->light_state);
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: 506
diff changeset
2687 unit->mqtt_flag |= MQTT_FLAG_DATA;
191
c74bbc24a1c8 Client/Server communication is now almost final
Michiel Broek <mbroek@mbse.eu>
parents: 189
diff changeset
2688 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2689
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2690 } else if (val && (strcmp(kwd, (char *)"PROF_STATE") == 0)) {
217
2922d439ff63 Added profile state ABORT
Michiel Broek <mbroek@mbse.eu>
parents: 213
diff changeset
2691 for (i = 0; i < 5; i++) {
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2692 if (strcmp(val, PROFSTATE[i]) == 0) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2693 switch (i) {
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
2694 case PROFILE_OFF: if (unit->prof_state == PROFILE_DONE) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2695 unit->prof_state = PROFILE_OFF;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2696 syslog(LOG_NOTICE, "Fermenter unit %s profile to OFF", unit->uuid);
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
2697 }
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2698 break;
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
2699 case PROFILE_PAUSE: if (unit->prof_state == PROFILE_RUN) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2700 unit->prof_state = PROFILE_PAUSE;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2701 syslog(LOG_NOTICE, "Fermenter unit %s profile PAUSE", unit->uuid);
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
2702 } else if (unit->prof_state == PROFILE_PAUSE) {
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2703 unit->prof_state = PROFILE_RUN;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2704 syslog(LOG_NOTICE, "Fermenter unit %s profile RESUME", unit->uuid);
274
111b0e9663dc Added logging if profile state is changed via the web interface. Log profile progress each half hour in syslog. Profile resttime steps 0 hours is allowed, meaning resttime or steptime must be set for a valid step. Updated the helptext on the web page.
Michiel Broek <mbroek@mbse.eu>
parents: 273
diff changeset
2705 }
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2706 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2707 case PROFILE_RUN: if (unit->prof_state == PROFILE_OFF) {
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2708 unit->prof_state = PROFILE_RUN;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2709 unit->prof_started = time(NULL);
289
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2710 unit->prof_paused = unit->prof_primary_done = 0;
d810df0df36a Added code to detect primary fermentation
Michiel Broek <mbroek@mbse.eu>
parents: 285
diff changeset
2711 unit->prof_peak_abs = unit->prof_peak_rel = 0.0;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2712 syslog(LOG_NOTICE, "Fermenter unit %s profile to RUN", unit->uuid);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2713 }
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2714 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2715 case PROFILE_DONE: break; /* Command is illegal */
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2716 case PROFILE_ABORT: if ((unit->prof_state == PROFILE_RUN) || (unit->prof_state == PROFILE_PAUSE)) {
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2717 unit->prof_state = PROFILE_OFF;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2718 unit->prof_started = 0;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2719 syslog(LOG_NOTICE, "Fermenter unit %s profile ABORT", unit->uuid);
219
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2720 }
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2721 break;
ae720212accc Added profile running and steps handling.
Michiel Broek <mbroek@mbse.eu>
parents: 217
diff changeset
2722 }
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: 506
diff changeset
2723 unit->mqtt_flag |= MQTT_FLAG_DATA;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2724 break;
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2725 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2726 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2727
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2728 } else if (val && (strcmp(kwd, (char *)"TEMP_SET_MIN") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2729 if (sscanf(val, "%f", &fval) == 1) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2730 if (unit->temp_set_min != fval)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2731 syslog(LOG_NOTICE, "Fermenter unit %s temperature set minimum %.1f to %.1f", unit->uuid, unit->temp_set_min, fval);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2732 unit->temp_set_min = fval;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2733 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2734
178
988a898974f3 Web - server communication for switches improved.
Michiel Broek <mbroek@mbse.eu>
parents: 176
diff changeset
2735 } else if (val && (strcmp(kwd, (char *)"TEMP_SET_MAX") == 0)) {
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2736 if (sscanf(val, "%f", &fval) == 1) {
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2737 if (unit->temp_set_max != fval)
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2738 syslog(LOG_NOTICE, "Fermenter unit %s temperature set maximum %.1f to %.1f", unit->uuid, unit->temp_set_max, fval);
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2739 unit->temp_set_max = fval;
282
885e5243bb50 UNIT PUT command logging added.
Michiel Broek <mbroek@mbse.eu>
parents: 281
diff changeset
2740 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2741
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2742 }
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: 529
diff changeset
2743 if (unit->mqtt_flag) {
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: 529
diff changeset
2744 if (debug)
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: 529
diff changeset
2745 fprintf(stdout, "flag value %d\n", unit->mqtt_flag);
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: 529
diff changeset
2746 if (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: 529
diff changeset
2747 publishDBirth(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: 529
diff changeset
2748 } else {
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: 529
diff changeset
2749 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: 529
diff changeset
2750 }
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: 529
diff changeset
2751 if (unit->mqtt_flag & MQTT_FLAG_DEATH) {
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: 529
diff changeset
2752 publishDDeath(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: 529
diff changeset
2753 }
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: 529
diff changeset
2754 }
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2755 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2756 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2757 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2758 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2759 }
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2760 srv_send((char *)"440 No such unit");
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2761 run_pause = FALSE;
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2762 return 0;
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2763 }
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2764
213
2317b8d644fa Code cleanup, streamlined error messages.
Michiel Broek <mbroek@mbse.eu>
parents: 209
diff changeset
2765 srv_send((char *)"504 Subcommand error");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2766 return 0;
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2767 }
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2768
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2769
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2770
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2771 void cmd_server(void)
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2772 {
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
2773 char buf[SS_BUFSIZE];
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2774 int rlen;
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2775
362
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2776 rlen = srv_recv(buf);
c92651a54969 Made the client-server protocol more robust. When a change to a unit is made using the web interface, the main process is stopped during the update. Splitted the PID in two PID's, one for heating and one for cooling. Adjusted the web edit scrreen for this, but there are still rough edges. Replaced the PID code, maybe this one works better for our purpose. The simulator air temperature changes on the simulator heater and cooler, but it is not realistic at all. This is a development version, do not use in production. The version is 0.3.0
Michiel Broek <mbroek@mbse.eu>
parents: 358
diff changeset
2777 if (rlen != -1) {
48
d8c64f81b192 Single client server works
Michiel Broek <mbroek@mbse.eu>
parents: 46
diff changeset
2778 if (strlen(buf)) {
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2779 /*
48
d8c64f81b192 Single client server works
Michiel Broek <mbroek@mbse.eu>
parents: 46
diff changeset
2780 * Process commands from the client
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2781 */
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
2782 if (strncmp(buf, "ARCHIVE", 7) == 0) {
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
2783 cmd_archive(buf);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2784
329
517e1719006a Added ARCHIVE commands
Michiel Broek <mbroek@mbse.eu>
parents: 325
diff changeset
2785 } else if (strncmp(buf, "DEVICE", 6) == 0) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2786 if (cmd_device(buf))
174
244de612c572 Added device configuration
Michiel Broek <mbroek@mbse.eu>
parents: 170
diff changeset
2787 wrconfig();
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2788
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
2789 } else if (strncmp(buf, "GLOBAL", 6) == 0) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2790 if (cmd_global(buf))
206
78fb6f99e473 Added GLOBAL GET and GLOBAL PUT commands.
Michiel Broek <mbroek@mbse.eu>
parents: 195
diff changeset
2791 wrconfig();
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2792
80
81bf78a7618e Switched to xml configuration
Michiel Broek <mbroek@mbse.eu>
parents: 79
diff changeset
2793 } else if (strncmp(buf, "HELP", 4) == 0) {
68
6dba71439cd8 Added first part of out own protocol
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
2794 srv_send((char *)"100 Help text follows");
6dba71439cd8 Added first part of out own protocol
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
2795 srv_send((char *)"Recognized commands:");
6dba71439cd8 Added first part of out own protocol
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
2796 srv_send((char *)"");
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
2797 // 12345678901234567890123456789012345678901234567890123456789012345678901234567890
331
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
2798 srv_send((char *)"ARCHIVE <CMD> [parameters] Archive commands");
e4a9172437bf Added ARCHIVE LOG command
Michiel Broek <mbroek@mbse.eu>
parents: 330
diff changeset
2799 srv_send((char *)"ARCHIVE HELP Archive help screen");
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2800 srv_send((char *)"DEVICE <CMD> [parameters] Device commands");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2801 srv_send((char *)"DEVICE HELP Device help screen");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2802 srv_send((char *)"GLOBAL <CMD> [parameters] Global commands");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2803 srv_send((char *)"GLOBAL HELP Global help screen");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2804 srv_send((char *)"LIST <CMD> [parameters] List commands");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2805 srv_send((char *)"LIST HELP List help screen");
330
79001a992f4f Improved help screen
Michiel Broek <mbroek@mbse.eu>
parents: 329
diff changeset
2806 srv_send((char *)"PING Check if server is alive");
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2807 srv_send((char *)"PROFILE <CMD> [parameters] Profile commands");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2808 srv_send((char *)"PROFILE HELP Profile help screen");
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
2809 #ifdef USE_SIMULATOR
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2810 srv_send((char *)"SIMULATOR <CMD> [parameters] Simulator commands");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2811 srv_send((char *)"SIMULATOR HELP Simulator help screen");
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
2812 #endif
380
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2813 srv_send((char *)"UNIT <CMD> [parameters] Unit commands");
75afd21885f2 Help screens for the commands are moved into the commands.
Michiel Broek <mbroek@mbse.eu>
parents: 369
diff changeset
2814 srv_send((char *)"UNIT HELP Unit help screen");
68
6dba71439cd8 Added first part of out own protocol
Michiel Broek <mbroek@mbse.eu>
parents: 66
diff changeset
2815 srv_send((char *)".");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2816
81
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
2817 } else if (strncmp(buf, "LIST", 4) == 0) {
547bbe344886 Added list command
Michiel Broek <mbroek@mbse.eu>
parents: 80
diff changeset
2818 cmd_list(buf);
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2819
303
19a9a3912d03 Added PING/PONG command to the server. Bumped to version 0.2.7
Michiel Broek <mbroek@mbse.eu>
parents: 300
diff changeset
2820 } else if (strncmp(buf, "PING", 4) == 0) {
19a9a3912d03 Added PING/PONG command to the server. Bumped to version 0.2.7
Michiel Broek <mbroek@mbse.eu>
parents: 300
diff changeset
2821 srv_send((char *)"101 PONG");
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2822
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
2823 } else if (strncmp(buf, "PROFILE", 7) == 0) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2824 if (cmd_profile(buf))
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
2825 wrconfig();
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2826
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
2827 #ifdef USE_SIMULATOR
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
2828 } else if (strncmp(buf, "SIMULATOR", 9) == 0) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2829 if (cmd_simulator(buf))
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
2830 wrconfig();
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2831
259
b7c967359771 Added framework for a simulation of a fridge with heater to use as controlled fermentor
Michiel Broek <mbroek@mbse.eu>
parents: 258
diff changeset
2832 #endif
87
55f1315c94f1 Added unit command and list unit command
Michiel Broek <mbroek@mbse.eu>
parents: 86
diff changeset
2833 } else if (strncmp(buf, "UNIT", 4) == 0) {
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2834 if (cmd_unit(buf))
175
b73490398368 Units editing is more or less complete. Changed structures for heating, cooling, fan and door. Updated the web interface to confuigure all these things.
Michiel Broek <mbroek@mbse.eu>
parents: 174
diff changeset
2835 wrconfig();
381
b22f8bf63b17 Only write configuration if something changed.
Michiel Broek <mbroek@mbse.eu>
parents: 380
diff changeset
2836
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2837 } else {
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
2838 srv_send((char *)"500 Unknown command");
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2839 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2840 }
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2841 }
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2842
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2843 close(s);
42
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2844 }
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2845
01b96a24ae7c Corrected missing and obsolete files
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2846
132
8bd209d1c020 Added some profile commands to the server. Profile names can be changed from the web interface. Removed obsolete commands.
Michiel Broek <mbroek@mbse.eu>
parents: 131
diff changeset
2847
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 62
diff changeset
2848 #ifdef HAVE_WIRINGPI_H
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2849 PI_THREAD (my_server_loop)
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 62
diff changeset
2850 #else
74
879bd09e2b96 Reinstalled threads
Michiel Broek <mbroek@mbse.eu>
parents: 71
diff changeset
2851 void *my_server_loop(void *threadid)
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 62
diff changeset
2852 #endif
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2853 {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2854 socklen_t addrlen;
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2855 int optval = 1;
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2856
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2857 syslog(LOG_NOTICE, "Thread my_server_loop started");
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2858 if (debug)
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2859 fprintf(stdout, "Thread my_server_loop started\n");
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2860
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2861 memset((char *)&myaddr_in, 0, sizeof(struct sockaddr_in));
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2862 memset((char *)&peeraddr_in, 0, sizeof(struct sockaddr_in));
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2863 myaddr_in.sin_family = AF_INET;
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2864 myaddr_in.sin_addr.s_addr = INADDR_ANY;
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2865 myaddr_in.sin_port = htons(Config.my_port);
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2866
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2867 ls = socket(AF_INET, SOCK_STREAM, 0);
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2868 if (ls == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
2869 syslog(LOG_NOTICE, "Can't create listen socket: %s", strerror(errno));
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2870 fprintf(stderr, "Can't create listen socket: %s\n", strerror(errno));
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2871 return 0;
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2872 }
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2873
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2874 if (setsockopt(ls, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
2875 syslog(LOG_NOTICE, "Can't setsockopt SO_KEEPALIVE socket: %s", strerror(errno));
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2876 close(ls);
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2877 return 0;
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2878 }
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2879
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2880 if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
2881 syslog(LOG_NOTICE, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno));
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2882 close(ls);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 62
diff changeset
2883 return 0;
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2884 }
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2885
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2886 if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
2887 syslog(LOG_NOTICE, "Can't bind to listen socket: %s", strerror(errno));
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2888 close(ls);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 62
diff changeset
2889 return 0;
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2890 }
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2891
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2892 if (listen(ls, 5) == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
2893 syslog(LOG_NOTICE, "Can't listen on listen socket: %s", strerror(errno));
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2894 close(ls);
66
805f1d285acd Compiles with 1-wire bus on PC hardware
Michiel Broek <mbroek@mbse.eu>
parents: 62
diff changeset
2895 return 0;
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2896 }
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2897
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2898 syslog(LOG_NOTICE, "listen socket created %d", ls);
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2899
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2900
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2901 /*
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2902 * Loop forever until the external shutdown variable is set.
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2903 */
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2904 for (;;) {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2905
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2906 addrlen = sizeof(struct sockaddr_in);
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2907 /*
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2908 * This call will block until a new connection
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2909 * arrives. Then it will return the address of
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2910 * the connecting peer, and a new socket
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2911 * descriptor, s, for that connection.
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2912 */
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2913 s = accept(ls, (struct sockaddr *)&peeraddr_in, &addrlen);
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2914 if (s == -1) {
268
dda91dfa4aa8 All syslog logging only to LOG_NOTICE
Michiel Broek <mbroek@mbse.eu>
parents: 266
diff changeset
2915 syslog(LOG_NOTICE, "my_server_loop accept failed %s", strerror(errno));
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2916 if (debug)
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2917 fprintf(stdout, "my_server_loop accept failed %s\n", strerror(errno));
44
f37d73940699 Server communication works
Michiel Broek <mbroek@mbse.eu>
parents: 43
diff changeset
2918 return 0;
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2919 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2920
48
d8c64f81b192 Single client server works
Michiel Broek <mbroek@mbse.eu>
parents: 46
diff changeset
2921 cmd_server();
43
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2922
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2923 if (my_shutdown) {
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2924 syslog(LOG_NOTICE, "Thread my_server_loop stopped");
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2925 if (debug)
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2926 fprintf(stdout, "Thread my_server_loop stopped\n");
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2927 return 0;
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2928 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2929
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2930 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2931 }
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2932
24e731bb2e08 Initial server code added
Michiel Broek <mbroek@mbse.eu>
parents: 42
diff changeset
2933

mercurial