www/dbdevices.php

Tue, 30 Apr 2024 17:26:41 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 30 Apr 2024 17:26:41 +0200
changeset 714
24749c296a50
parent 701
www/getdevices.php@e50a5003c7ac
permissions
-rw-r--r--

Version 0.9.19b2. Simulator redesign and it is now possible to run more then one simulator. All simulated devices have address names that include the simulator number. Added the setup screen for the most part. Not compatible with previous versions if a simulator was used, delete all simulators and simulated devices during stop and start.

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