Tue, 23 Apr 2024 16:52:13 +0200
Added Add new device.
679 | 1 | <?php |
2 | ||
3 | ||
4 | function open_socket() | |
5 | { | |
6 | $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); | |
7 | ||
8 | if (!($sock === false)) { | |
9 | if (socket_connect($sock, "localhost", 6554)) { | |
10 | socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 15, 'usec' => 0)); | |
11 | } else { | |
12 | socket_close($sock); | |
13 | } | |
14 | } | |
15 | return $sock; | |
16 | } | |
17 | ||
18 | ||
19 | /** | |
20 | * @param string $command to send to the server. | |
21 | * @return string with the complete reply from the | |
22 | * server. This can be a multiline reply. | |
23 | */ | |
24 | function send_cmd($command) | |
25 | { | |
26 | $sock = open_socket(); | |
27 | if ($sock == false) { | |
28 | return ""; | |
29 | } | |
30 | socket_write($sock, $command . "\r\n", 4096); | |
31 | ||
32 | $answer = ""; | |
33 | while (1) { | |
34 | $line = socket_read($sock, 4096); | |
35 | if ($line === '') | |
36 | break; | |
37 | $answer .= $line; | |
38 | } | |
39 | socket_close($sock); | |
40 | ||
41 | return $answer; | |
42 | } | |
43 | ||
44 | ||
45 | function startsWith($haystack, $needle) | |
46 | { | |
47 | return !strncmp($haystack, $needle, strlen($needle)); | |
48 | } | |
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 | 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 | 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 | 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 | 92 | } |
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 | ?> |