Tue, 23 Apr 2024 19:50:05 +0200
Added device delete
697
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1 | <?php |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
2 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
3 | function open_socket() |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
4 | { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | if (!($sock === false)) { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
8 | if (socket_connect($sock, "localhost", 6554)) { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
9 | socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0)); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
10 | } else { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
11 | socket_close($sock); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
12 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
13 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
14 | return $sock; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
15 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
16 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
17 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
18 | /** |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
19 | * @param string $command to send to the server. |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
20 | * @return string with the complete reply from the |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
21 | * server. This can be a multiline reply. |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
22 | */ |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
23 | function send_cmd($command) |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
24 | { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
25 | $sock = open_socket(); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
26 | if ($sock == false) { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
27 | return ""; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
28 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
29 | socket_write($sock, $command . "\r\n", 4096); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
30 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
31 | $answer = ""; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
32 | while (1) { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
33 | $line = socket_read($sock, 4096); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
34 | if ($line === '') |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
35 | break; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
36 | $answer .= $line; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
37 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
38 | socket_close($sock); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
39 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
40 | return $answer; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
41 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
42 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
43 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
44 | function startsWith($haystack, $needle) |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
45 | { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
46 | return !strncmp($haystack, $needle, strlen($needle)); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
47 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
48 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
49 | $answer = send_cmd("DEVICES JSON"); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
50 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
51 | $arr = explode("\r\n", $answer); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
52 | if (startsWith($arr[0], "212")) { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
53 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
54 | /* |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
55 | * Build reply with only temperature sensors. |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
56 | */ |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
57 | $sensors[] = array( |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
58 | 'uuid' => '', |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
59 | 'name' => 'Not Assigned' |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
60 | ); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
61 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
62 | $rows = json_decode($arr[1], true); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
63 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
64 | foreach($rows as $item) { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
65 | if ($item['direction'] == "IN_ANALOG") { |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
66 | $sensors[] = array( |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
67 | 'uuid' => $item['uuid'], |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
68 | 'name' => $item['description']." ".$item['comment'] |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
69 | ); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
70 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
71 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
72 | header("Content-type: application/json"); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
73 | exit(json_encode($sensors)); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
74 | } |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
75 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
76 | header("Content-type: application/json"); |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
77 | echo '{}'; |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
78 | |
685f20ad87ed
The global settings screen added. No Save function yet.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
79 | ?> |