www/dbfermenters.php

changeset 703
344470c6bb1c
child 721
0e758ba3c2fa
equal deleted inserted replaced
702:d77891f8915d 703:344470c6bb1c
1 <?php
2
3
4 function open_socket()
5 {
6 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
7
8 if (!($sock === false)) {
9 if (socket_connect($sock, "localhost", 6554)) {
10 socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0));
11 } else {
12 socket_close($sock);
13 }
14 }
15 return $sock;
16 }
17
18
19 /**
20 * @param string $command to send to the server.
21 * @return string with the complete reply from the
22 * server. This can be a multiline reply.
23 */
24 function send_cmd($command)
25 {
26 $sock = open_socket();
27 if ($sock == false) {
28 return "";
29 }
30 socket_write($sock, $command . "\r\n", 4096);
31
32 $answer = "";
33 while (1) {
34 $line = socket_read($sock, 4096);
35 if ($line === '')
36 break;
37 $answer .= $line;
38 }
39 socket_close($sock);
40
41 return $answer;
42 }
43
44
45 function startsWith($haystack, $needle)
46 {
47 return !strncmp($haystack, $needle, strlen($needle));
48 }
49
50
51 $response = array(
52 'error' => false,
53 'msg' => 'Ok',
54 );
55
56
57 if (isset($_POST['update'])) {
58
59 $cmd = "UNIT PUT " . $_POST['uuid'] . "\r\n";
60 if (isset($_POST['air_address'])) {
61 $cmd .= "AIR_ADDRESS," . $_POST['air_address'] . "\r\n";
62 $cmd .= "AIR_IDX," . $_POST['air_idx'] . "\r\n";
63 }
64 if (isset($_POST['beer_address'])) {
65 $cmd .= "BEER_ADDRESS," . $_POST['beer_address'] . "\r\n";
66 if (isset($_POST['beer_address2']))
67 $cmd .= "BEER_ADDRESS2," . $_POST['beer_address2'] . "\r\n";
68 $cmd .= "BEER_IDX," . $_POST['beer_idx'] . "\r\n";
69 }
70 if (isset($_POST['chiller_address'])) {
71 $cmd .= "CHILLER_ADDRESS," . $_POST['chiller_address'] . "\r\n";
72 $cmd .= "CHILLER_IDX," . $_POST['chiller_idx'] . "\r\n";
73 }
74 if (isset($_POST['heater_address'])) {
75 $cmd .= "HEATER_ADDRESS," . $_POST['heater_address'] . "\r\n";
76 $cmd .= "HEATER_STATE," . $_POST['heater_state'] . "\r\n";
77 $cmd .= "HEATER_DELAY," . $_POST['heater_delay'] . "\r\n";
78 $cmd .= "HEATER_IDX," . $_POST['heater_idx'] . "\r\n";
79 }
80 if (isset($_POST['cooler_address'])) {
81 $cmd .= "COOLER_ADDRESS," . $_POST['cooler_address'] . "\r\n";
82 $cmd .= "COOLER_STATE," . $_POST['cooler_state'] . "\r\n";
83 $cmd .= "COOLER_DELAY," . $_POST['cooler_delay'] . "\r\n";
84 $cmd .= "COOLER_IDX," . $_POST['cooler_idx'] . "\r\n";
85 }
86 if (isset($_POST['fan_address'])) {
87 $cmd .= "FAN_ADDRESS," . $_POST['fan_address'] . "\r\n";
88 $cmd .= "FAN_STATE," . $_POST['fan_state'] . "\r\n";
89 $cmd .= "FAN_DELAY," . $_POST['fan_delay'] . "\r\n";
90 $cmd .= "FAN_IDX," . $_POST['fan_idx'] . "\r\n";
91 }
92 if (isset($_POST['light_address'])) {
93 $cmd .= "LIGHT_ADDRESS," . $_POST['light_address'] . "\r\n";
94 $cmd .= "LIGHT_STATE," . $_POST['light_state'] . "\r\n";
95 $cmd .= "LIGHT_DELAY," . $_POST['light_delay'] . "\r\n";
96 $cmd .= "LIGHT_IDX," . $_POST['light_idx'] . "\r\n";
97 }
98 if (isset($_POST['door_address'])) {
99 $cmd .= "DOOR_ADDRESS," . $_POST['door_address'] . "\r\n";
100 $cmd .= "DOOR_IDX," . $_POST['door_idx'] . "\r\n";
101 }
102 if (isset($_POST['psu_address'])) {
103 $cmd .= "PSU_ADDRESS," . $_POST['psu_address'] . "\r\n";
104 $cmd .= "PSU_IDX," . $_POST['psu_idx'] . "\r\n";
105 }
106 $cmd .= "STAGE," . $_POST['stage'] . "\r\n";
107 $cmd .= "MODE," . $_POST['mode'] . "\r\n";
108 $cmd .= "PIDC_IMAX," . $_POST['pidc_imax'] . "\r\n";
109 $cmd .= "PIDC_PGAIN," . $_POST['pidc_pgain'] . "\r\n";
110 $cmd .= "PIDC_IGAIN," . $_POST['pidc_igain'] . "\r\n";
111 $cmd .= "PIDC_DGAIN," . $_POST['pidc_dgain'] . "\r\n";
112 $cmd .= "PIDC_IDLERANGE," . $_POST['pidc_idlerange'] . "\r\n";
113 $cmd .= "PIDH_IMAX," . $_POST['pidh_imax'] . "\r\n";
114 $cmd .= "PIDH_PGAIN," . $_POST['pidh_pgain'] . "\r\n";
115 $cmd .= "PIDH_IGAIN," . $_POST['pidh_igain'] . "\r\n";
116 $cmd .= "PIDH_DGAIN," . $_POST['pidh_dgain'] . "\r\n";
117 $cmd .= "PIDH_IDLERANGE," . $_POST['pidh_idlerange'] . "\r\n";
118 $cmd .= "TEMP_SET_MIN," . $_POST['temp_set_min'] . "\r\n";
119 $cmd .= "TEMP_SET_MAX," . $_POST['temp_set_max'] . "\r\n";
120 $cmd .= ".";
121 $answer = send_cmd($cmd);
122 $arr = explode("\r\n", $answer);
123 if (! startsWith($arr[0], "219")) {
124 $response['error'] = true;
125 $response['msg'] = $arr[0];
126 }
127 exit(json_encode($response));
128
129 } else if (isset($_POST['add'])) {
130
131 // Name is not used and is generated.
132 $answer = send_cmd("UNIT ADD " . $_POST['name']);
133 $arr = explode("\r\n", $answer);
134 if (! startsWith($arr[0], "211")) {
135 $response['error'] = true;
136 $response['msg'] = $arr[0];
137 }
138 exit(json_encode($response));
139
140 } else if (isset($_POST['del'])) {
141
142 $answer = send_cmd("UNIT DEL " . $_POST['uuid']);
143 $arr = explode("\r\n", $answer);
144 if (! startsWith($arr[0], "211")) {
145 $response['error'] = true;
146 $response['msg'] = $arr[0];
147 }
148 exit(json_encode($response));
149
150 } else {
151
152 $answer = send_cmd("UNIT JSON");
153 header("Content-type: application/json");
154
155 $arr = explode("\r\n", $answer);
156 if (startsWith($arr[0], "212")) {
157 echo $arr[1];
158 } else {
159 echo '{}';
160 }
161 }
162
163 ?>

mercurial