www/getdevices.php

Tue, 23 Apr 2024 20:45:29 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 23 Apr 2024 20:45:29 +0200
changeset 701
e50a5003c7ac
parent 700
942af738157c
permissions
-rw-r--r--

Device Save implemented.

681
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 <?php
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 function open_socket()
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 if (!($sock === false)) {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 if (socket_connect($sock, "localhost", 6554)) {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0));
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 } else {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 socket_close($sock);
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 return $sock;
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 /**
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * @param string $command to send to the server.
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * @return string with the complete reply from the
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 * server. This can be a multiline reply.
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 */
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 function send_cmd($command)
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 $sock = open_socket();
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 if ($sock == false) {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 return "";
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 socket_write($sock, $command . "\r\n", 4096);
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 $answer = "";
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 while (1) {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 $line = socket_read($sock, 4096);
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 if ($line === '')
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 break;
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 $answer .= $line;
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 socket_close($sock);
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 return $answer;
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 function startsWith($haystack, $needle)
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 {
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 return !strncmp($haystack, $needle, strlen($needle));
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50
699
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
51 $response = array(
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
52 'error' => false,
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
53 'msg' => 'Ok',
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
54 );
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
55
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
56
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
57 if (isset($_POST['update'])) {
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
58
701
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
59 $cmd = "DEVICE PUT " . $_POST['uuid'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
60 $cmd .= "TYPE," . $_POST['type'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
61 $cmd .= "DIRECTION," . $_POST['direction'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
62 $cmd .= "VALUE," . $_POST['value'] . "\r\n"; // Only for outputs
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
63 $cmd .= "OFFSET," . $_POST['offset'] . "\r\n"; // Only analog
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
64 $cmd .= "PRESENT," . $_POST['present'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
65 $cmd .= "ADDRESS," . $_POST['address'] . "\r\n"; // Not for auto detected
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
66 $cmd .= "SUBDEVICE," . $_POST['subdevice'] . "\r\n"; // Not for auto detected
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
67 $cmd .= "GPIOPIN," . $_POST['gpiopin'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
68 $cmd .= "DESCRIPTION," . $_POST['description'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
69 $cmd .= "COMMENT," . $_POST['comment'] . "\r\n";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
70 $cmd .= ".";
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
71 $answer = send_cmd($cmd);
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
72 $arr = explode("\r\n", $answer);
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
73 if (! startsWith($arr[0], "219")) {
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
74 $response['error'] = true;
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
75 $response['msg'] = $arr[0];
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
76 }
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
77 exit(json_encode($response));
e50a5003c7ac Device Save implemented.
Michiel Broek <mbroek@mbse.eu>
parents: 700
diff changeset
78
699
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
79 } else if (isset($_POST['add'])) {
681
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80
699
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
81 $answer = send_cmd("DEVICE ADD " . $_POST['type']);
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
82 $arr = explode("\r\n", $answer);
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
83 if (! startsWith($arr[0], "211")) {
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
84 $response['error'] = true;
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
85 $response['msg'] = $arr[0];
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
86 }
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
87 exit(json_encode($response));
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
88
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
89 } else if (isset($_POST['del'])) {
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
90
700
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
91 $answer = send_cmd("DEVICE DEL " . $_POST['uuid']);
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
92 $arr = explode("\r\n", $answer);
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
93 if (! startsWith($arr[0], "211")) {
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
94 $response['error'] = true;
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
95 $response['msg'] = $arr[0];
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
96 }
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
97 exit(json_encode($response));
942af738157c Added device delete
Michiel Broek <mbroek@mbse.eu>
parents: 699
diff changeset
98
681
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 } else {
699
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
100
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
101 $answer = send_cmd("DEVICE JSON");
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
102 header("Content-type: application/json");
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
103
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
104 $arr = explode("\r\n", $answer);
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
105 if (startsWith($arr[0], "212")) {
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
106 echo $arr[1];
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
107 } else {
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
108 echo '{}';
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
109 }
681
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 }
1f81e52c5abf Minor details for server DEVICE commands. Added getdevice<s> php scripts.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111
699
35382668a140 Added Add new device.
Michiel Broek <mbroek@mbse.eu>
parents: 681
diff changeset
112 ?>

mercurial