59 lines
1.4 KiB
PHP
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);
|
|
}
|