Files
control/touch_panel/control_touch_bridge.php
T

59 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
define('CONTROL_API_LIBRARY', true);
require_once __DIR__ . '/../public/api.php';
function touch_panel_json(array $payload, int $code = 0): never
{
fwrite(STDOUT, json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL);
exit($code);
}
try {
$command = (string)($argv[1] ?? 'status');
if ($command === 'status') {
touch_panel_json([
'ok' => true,
'data' => collect_snapshot(false),
]);
}
if ($command === 'fan') {
$mode = (string)($argv[2] ?? 'auto');
$pwm = max(0, min(255, (int)($argv[3] ?? 120)));
if (!in_array($mode, ['auto', 'manual', 'off'], true)) {
touch_panel_json([
'ok' => false,
'error' => 'bad_mode',
], 2);
}
set_control_state($mode, $pwm);
add_fan_action(
'touch_panel_fan_set',
$mode,
$pwm,
'qt touch panel fan control',
true
);
touch_panel_json([
'ok' => true,
'data' => collect_snapshot(false),
]);
}
touch_panel_json([
'ok' => false,
'error' => 'unknown_command',
], 2);
} catch (Throwable $e) {
touch_panel_json([
'ok' => false,
'error' => 'exception',
'message' => $e->getMessage(),
], 1);
}