www/drop_switches.php

Wed, 24 Apr 2024 16:46:45 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 24 Apr 2024 16:46:45 +0200
changeset 703
344470c6bb1c
child 708
13555c27b592
permissions
-rw-r--r--

Fermenter editor layout is ready. Load record done. Add and Delete a new fermenter is done.

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'],
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
68 'name' => $item['description']." ".$item['comment']
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