2026-05-08 magic4pc-webos: correct deploy flow, version docs, remove wrong killall
This commit is contained in:
@@ -37,12 +37,20 @@
|
||||
## Панель настроек (синяя кнопка)
|
||||
|
||||
- **Статус** — Connected to IP:port / Waiting / Service disabled
|
||||
- **v1.1.0** — версия справа от статуса
|
||||
- **v1.1.0 (YYYY-MM-DD HH:MM)** — версия + дата сборки справа от статуса
|
||||
- **Input source** — выбор HDMI входа
|
||||
- **Enable / Disable** — старт/стоп сервиса
|
||||
- **Autostart** — регистрация в EIM (запуск при переключении на HDMI)
|
||||
- **Default app on exit** — приложение которое запускается при выходе из magic4pc (None / Last used / конкретное)
|
||||
- **Show Log / Hide Log** — лог событий и ошибок поверх видео
|
||||
|
||||
## Версия сборки
|
||||
|
||||
Версия отображается как `1.1.0 (YYYY-MM-DD HH:MM)` — дата инжектируется webpack автоматически при каждой сборке:
|
||||
```js
|
||||
// config/webpack.config.js
|
||||
'process.env.BUILD_DATE': JSON.stringify(new Date().toISOString().slice(0, 16).replace('T', ' '))
|
||||
```
|
||||
|
||||
## Сборка WebOS app
|
||||
|
||||
```bash
|
||||
@@ -52,61 +60,51 @@ NODE_OPTIONS=--openssl-legacy-provider npm run build
|
||||
|
||||
Требует `--openssl-legacy-provider` — старый webpack несовместим с Node 25.
|
||||
|
||||
## Сборка IPK
|
||||
|
||||
```bash
|
||||
cd ~/Developer/magic4pc/webos
|
||||
NODE_OPTIONS=--openssl-legacy-provider npm run build
|
||||
/Users/admin/webOS_TV_SDK/CLI/bin/ares-package dist/ service/ --outdir .
|
||||
# Создаёт me.wouterdek.magic4pc_1.1.0_all.ipk
|
||||
```
|
||||
|
||||
> ⚠️ `ares-package dist/ service/` — оба аргумента обязательны, иначе сервис не попадёт в IPK.
|
||||
> `npm run package` = `ares-package -n` (без подписи) — **не использовать**, TV отклоняет IPK.
|
||||
|
||||
## Деплой на TV (192.168.1.75)
|
||||
|
||||
TV рутован, SSH без пароля: `ssh root@192.168.1.75`
|
||||
|
||||
### Деплой через IPK (стандартный способ)
|
||||
> ⚠️ `luna-send` через SSH не выводит ответ в stdout — нужен PTY через `script`:
|
||||
> `ssh root@192.168.1.75 "script -q -c \"luna-send -n 1 -f luna://...\" /tmp/o.txt; cat /tmp/o.txt"`
|
||||
|
||||
```bash
|
||||
# Сборка
|
||||
cd ~/Developer/magic4pc/webos
|
||||
NODE_OPTIONS=--openssl-legacy-provider npm run build
|
||||
/Users/admin/webOS_TV_SDK/CLI/bin/ares-package dist/ service/ --outdir .
|
||||
|
||||
# Деплой на TV
|
||||
# 1. Скопировать IPK на TV
|
||||
scp me.wouterdek.magic4pc_1.1.0_all.ipk root@192.168.1.75:/tmp/magic4pc.ipk
|
||||
ssh root@192.168.1.75 "
|
||||
luna-send -n 1 'luna://com.webos.applicationManager/closeApp' '{\"id\":\"me.wouterdek.magic4pc\"}'; sleep 1
|
||||
killall -9 node 2>/dev/null; sleep 1
|
||||
mkdir -p /tmp/m4p_deploy && cd /tmp/m4p_deploy
|
||||
ar x /tmp/magic4pc.ipk
|
||||
mkdir -p data && tar xf data.tar.gz -C data
|
||||
cp data/usr/palm/applications/me.wouterdek.magic4pc/main.js /media/developer/apps/usr/palm/applications/me.wouterdek.magic4pc/
|
||||
cp data/usr/palm/applications/me.wouterdek.magic4pc/main.css /media/developer/apps/usr/palm/applications/me.wouterdek.magic4pc/
|
||||
cp data/usr/palm/services/me.wouterdek.magic4pc.service/m4p_service.js /media/developer/apps/usr/palm/services/me.wouterdek.magic4pc.service/
|
||||
luna-send -n 1 'luna://com.webos.applicationManager/launch' '{\"id\":\"me.wouterdek.magic4pc\"}'
|
||||
echo deployed ok
|
||||
"
|
||||
|
||||
# 2. Закрыть приложение
|
||||
ssh root@192.168.1.75 "script -q -c \"luna-send -n 1 -f luna://com.webos.service.applicationmanager/closeByAppId '{\\\"id\\\":\\\"me.wouterdek.magic4pc\\\"}'\" /tmp/o.txt; cat /tmp/o.txt"
|
||||
|
||||
# 3. Удалить старую версию
|
||||
ssh root@192.168.1.75 "script -q -c \"luna-send -n 1 -f luna://com.webos.appInstallService/dev/remove '{\\\"id\\\":\\\"me.wouterdek.magic4pc\\\"}'\" /tmp/o.txt; cat /tmp/o.txt"
|
||||
|
||||
# 4. Установить новую (подписанный IPK от ares-package SDK)
|
||||
ssh root@192.168.1.75 "luna-send -i -f luna://com.webos.appInstallService/dev/install '{\"id\":\"me.wouterdek.magic4pc\",\"ipkUrl\":\"/tmp/magic4pc.ipk\",\"subscribe\":true}' > /tmp/install.txt 2>&1"
|
||||
sleep 10 && ssh root@192.168.1.75 "cat /tmp/install.txt"
|
||||
# Ждать state: "installed" в выводе
|
||||
|
||||
# 5. Запустить
|
||||
ssh root@192.168.1.75 "script -q -c \"luna-send -n 1 -f luna://com.webos.applicationManager/launch '{\\\"id\\\":\\\"me.wouterdek.magic4pc\\\"}'\" /tmp/o.txt; cat /tmp/o.txt"
|
||||
```
|
||||
|
||||
> ⚠️ `ares-package dist/ service/` — оба аргумента обязательны, иначе сервис не попадёт в IPK.
|
||||
> `killall -9 node` обязателен — WebOS кэширует Node.js сервис в памяти.
|
||||
> Распаковывать IPK в отдельную папку (`/tmp/m4p_deploy`) — иначе `ar x` конфликтует с существующим `debian-binary` в `/tmp`.
|
||||
|
||||
### Полная переустановка через ipk (если нужны новые ресурсы/appinfo)
|
||||
### Проверка логов сервиса
|
||||
|
||||
```bash
|
||||
cd ~/Developer/magic4pc/webos
|
||||
/Users/admin/webOS_TV_SDK/CLI/bin/ares-package dist/ --outdir .
|
||||
scp me.wouterdek.magic4pc_1.0.0_all.ipk root@192.168.1.75:/tmp/
|
||||
ssh root@192.168.1.75 "
|
||||
cd /tmp && ar x me.wouterdek.magic4pc_1.0.0_all.ipk
|
||||
mkdir -p /tmp/ipk_data
|
||||
tar xf data.tar.gz -C /tmp/ipk_data 2>/dev/null || tar xf data.tar.xz -C /tmp/ipk_data
|
||||
cp /tmp/ipk_data/usr/palm/applications/me.wouterdek.magic4pc/main.js \
|
||||
/media/developer/apps/usr/palm/applications/me.wouterdek.magic4pc/
|
||||
cp /tmp/ipk_data/usr/palm/services/me.wouterdek.magic4pc.service/m4p_service.js \
|
||||
/media/developer/apps/usr/palm/services/me.wouterdek.magic4pc.service/
|
||||
"
|
||||
ssh root@192.168.1.75 "script -q -c \"luna-send -n 1 -f luna://me.wouterdek.magic4pc.service/query '{}'\" /tmp/o.txt; cat /tmp/o.txt"
|
||||
```
|
||||
|
||||
> ⚠️ `luna://com.webos.appInstallService/dev/install` требует Developer Mode.
|
||||
> TV рутован → прямая копия файлов надёжнее.
|
||||
|
||||
### Если изменения не видны (кэш WebOS)
|
||||
|
||||
WebAppMgr кэширует JS. Помогает: закрыть+открыть через luna. Если нет — перезагрузка TV.
|
||||
Ожидаемый результат: `serviceActive: true`, `broadcastAdsActive: true` (или `isConnected: true` если HTPC подключён), в логах — `listApps: returned N apps`.
|
||||
|
||||
## Деплой Go-клиента на HTPC
|
||||
|
||||
@@ -133,4 +131,4 @@ ssh bazzite@192.168.1.86 "systemctl --user restart magic4pc"
|
||||
## Известные проблемы
|
||||
|
||||
- **Guide (458)** — перехватывается WebOS системно, EIM-регистрация не помогает. Нет решения.
|
||||
- **WebOS кэш** — после scp деплоя иногда нужна перезагрузка TV
|
||||
- **listApps** — `applicationManager/dev/listApps` недоступен без dev mode. Используется `applicationManager/listApps`.
|
||||
|
||||
Reference in New Issue
Block a user