47 lines
1.2 KiB
PHP
47 lines
1.2 KiB
PHP
|
|
<?php
|
||
|
|
declare(strict_types=1);
|
||
|
|
header('Content-Type: application/json');
|
||
|
|
|
||
|
|
require_once __DIR__ . '/protecao.php';
|
||
|
|
require __DIR__ . '/../vendor/autoload.php';
|
||
|
|
|
||
|
|
use PhpMqtt\Client\MqttClient;
|
||
|
|
use PhpMqtt\Client\ConnectionSettings;
|
||
|
|
|
||
|
|
$uid = trim($_POST['uid'] ?? '');
|
||
|
|
$payload = trim($_POST['payload'] ?? '');
|
||
|
|
|
||
|
|
if ($uid === '' || $payload === '') {
|
||
|
|
http_response_code(400);
|
||
|
|
echo json_encode(['ok' => false, 'error' => 'parametros invalidos']);
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Validar JSON
|
||
|
|
if (json_decode($payload) === null) {
|
||
|
|
http_response_code(400);
|
||
|
|
echo json_encode(['ok' => false, 'error' => 'payload invalido']);
|
||
|
|
exit;
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
$settings = (new ConnectionSettings())
|
||
|
|
->setUsername('xupa')
|
||
|
|
->setPassword('xupa')
|
||
|
|
->setUseTls(true)
|
||
|
|
->setTlsSelfSignedAllowed(true)
|
||
|
|
->setConnectTimeout(5)
|
||
|
|
->setSocketTimeout(3);
|
||
|
|
|
||
|
|
$mqtt = new MqttClient('mqtt.xupas.mywire.org', 8883, 'web-pub-' . getmypid());
|
||
|
|
$mqtt->connect($settings, false);
|
||
|
|
$mqtt->publish("esp/$uid/cmd", $payload, 1, false);
|
||
|
|
$mqtt->disconnect();
|
||
|
|
|
||
|
|
echo json_encode(['ok' => true, 'uid' => $uid]);
|
||
|
|
|
||
|
|
} catch (Throwable $e) {
|
||
|
|
http_response_code(500);
|
||
|
|
echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
|
||
|
|
}
|