www/drop_switches.php

Tue, 07 May 2024 14:11:31 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 07 May 2024 14:11:31 +0200
changeset 732
b0e99e30a008
parent 708
13555c27b592
permissions
-rw-r--r--

Save one devices loop when handling a 2413 device.

703
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 <?php
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 function open_socket()
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 if (!($sock === false)) {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 if (socket_connect($sock, "localhost", 6554)) {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0));
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 } else {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 socket_close($sock);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 return $sock;
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 /**
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 * @param string $command to send to the server.
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * @return string with the complete reply from the
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * server. This can be a multiline reply.
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 */
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 function send_cmd($command)
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 $sock = open_socket();
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 if ($sock == false) {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 return "";
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 socket_write($sock, $command . "\r\n", 4096);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 $answer = "";
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 while (1) {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 $line = socket_read($sock, 4096);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 if ($line === '')
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 break;
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 $answer .= $line;
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 socket_close($sock);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 return $answer;
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 function startsWith($haystack, $needle)
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 return !strncmp($haystack, $needle, strlen($needle));
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 $answer = send_cmd("DEVICES JSON");
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 $arr = explode("\r\n", $answer);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 if (startsWith($arr[0], "212")) {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 /*
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 * Build reply with only temperature sensors.
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 */
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 $sensors[] = array(
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 'uuid' => '',
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 'name' => 'Not Assigned'
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 );
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 $rows = json_decode($arr[1], true);
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 foreach($rows as $item) {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 if ($item['direction'] == "OUT_BIN") {
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 $sensors[] = array(
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 'uuid' => $item['uuid'],
708
13555c27b592 Version 0.9.19a6. Fixes after a short trial on the production controller. Fixed json for alternate beer termperature sensor. Fixed division by 1000 for the room temperature and humidity values. The dropdown list for devices shows the address instead of description in the list.
Michiel Broek <mbroek@mbse.eu>
parents: 703
diff changeset
68 'name' => $item['address']." ".$item['comment']
703
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 );
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 header("Content-type: application/json");
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 exit(json_encode($sensors));
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 }
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 header("Content-type: application/json");
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 echo '{}';
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78
344470c6bb1c Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 ?>

mercurial