www/dbglobal.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 717
22dd7ab614e5
permissions
-rw-r--r--

Save one devices loop when handling a 2413 device.

679
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 <?php
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 function open_socket()
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 if (!($sock === false)) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 if (socket_connect($sock, "localhost", 6554)) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0));
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 } else {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 socket_close($sock);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 return $sock;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 /**
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * @param string $command to send to the server.
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 * @return string with the complete reply from the
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 * server. This can be a multiline reply.
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 */
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 function send_cmd($command)
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 $sock = open_socket();
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 if ($sock == false) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 return "";
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 socket_write($sock, $command . "\r\n", 4096);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 $answer = "";
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 while (1) {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 $line = socket_read($sock, 4096);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 if ($line === '')
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 break;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 $answer .= $line;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 socket_close($sock);
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 return $answer;
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 function startsWith($haystack, $needle)
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 {
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 return !strncmp($haystack, $needle, strlen($needle));
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
698
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
50 $response = array(
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
51 'error' => false,
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
52 'msg' => 'Ok',
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
53 );
679
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54
698
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
55
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
56 if (isset($_POST['update'])) {
679
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57
698
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
58 /* Changing ports does not yet work in the web scripts, disabled. */
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
59 $cmd = "GLOBAL PUT\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
60 $cmd .= "NAME," . $_POST['name'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
61 // $cmd .= "PORT," . $_POST['port'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
62 $cmd .= "TEMP_UUID," . $_POST['temp_uuid'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
63 $cmd .= "HUM_UUID," . $_POST['hum_uuid'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
64 $cmd .= "TEMP_HUM_IDX," . $_POST['temp_hum_idx'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
65 $cmd .= "LCD_ADDRESS," . $_POST['lcd_address'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
66 $cmd .= "LCD_COLS," . $_POST['lcd_cols'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
67 $cmd .= "LCD_ROWS," . $_POST['lcd_rows'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
68 $cmd .= "MQTT_HOST," . $_POST['mqtt_host'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
69 $cmd .= "MQTT_PORT," . $_POST['mqtt_port'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
70 $cmd .= "MQTT_USER," . $_POST['mqtt_user'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
71 $cmd .= "MQTT_PASS," . $_POST['mqtt_pass'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
72 // $cmd .= "WEBSOCKET_PORT," . $_POST['websocket_port'] . "\r\n";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
73 $cmd .= ".";
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
74 $answer = send_cmd($cmd);
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
75 $arr = explode("\r\n", $answer);
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
76 if (! startsWith($arr[0], "219")) {
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
77 $response['error'] = true;
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
78 }
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
79 exit(json_encode($response));
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
80
679
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 } else {
698
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
82
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
83 $answer = send_cmd("GLOBAL JSON");
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
84 header("Content-type: application/json");
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
85
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
86 $arr = explode("\r\n", $answer);
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
87 if (startsWith($arr[0], "213")) {
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
88 echo $arr[1];
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
89 } else {
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
90 echo '{}';
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
91 }
679
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 }
ecfcb1104b54 Added getglobal.php script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93
698
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
94
92a080c1a5d5 Finished global setup including Save.
Michiel Broek <mbroek@mbse.eu>
parents: 679
diff changeset
95 ?>

mercurial