На сайте производителя https://www.lg.com/ru/televisions/lg-oled77c4rla естьrom77 писал(а):LG OLED77C4RLA
идет ли в комплекте бластер или нет?
luna-send -n 1 luna://com.webos.service.irdbmanager/sendIrCommand '{ "buttonState": "single", "deviceType": "audio", "keyCode": "IR_KEY_POWER"}'
ls-monitor -f com.webos.service.irdbmanager
mkdir -p ~/scripts
touch ~/scripts/av-ir-ctrl.js
vi ~/scripts/av-ir-ctrl.js
const { spawn } = require ('node:child_process') ;
const ls = spawn ('luna-send', ['-i', 'luna://com.webos.service.tvpower/power2/getPowerState', '{ "subscribe": true }']) ;
function irTogglePower () {
spawn ('luna-send', ['-n', '1', 'luna://com.webos.service.irdbmanager/sendIrCommand', '{ "buttonState": "single", "deviceType": "audio", "keyCode": "IR_KEY_POWER"}']) ;
}
ls.stdout.on ('data', stdout => {
/**
* @param {string} jsonString
* @return {Stdout | null}
*/
const saveJsonParse = jsonString => {
if (! jsonString) return ''
try {
const json = JSON.parse (jsonString)
return json
} catch (error) {
console.error (error) ;
return null
}
}
const messages = `${stdout}`.split ('\n').map (saveJsonParse).filter (Boolean)
messages.forEach (message => {
if (
(message['sub processing'] === 'screen on' && message.reason === 'remoteKey') ||
(message['sub processing'] === 'screen on' && message.reason === 'wakeOnWiFi') ||
(message['sub processing'] === 'screen on' && message.reason === 'onAoDByBT') ||
(message['sub processing'] === 'screen on' && message.reason === 'wakeOnLan') ||
(message['sub processing'] === 'prepare power off' && message.reason === 'remoteKey') ||
(message['sub processing'] === 'prepare power off' && message.reason === 'aod30sec') ||
(message['sub processing'] === 'prepare power off' && message.reason === 'nosignal')
) {
irTogglePower ()
}
})
}) ;
ls.stderr.on ('data', (data) => {
console.error (`stderr: ${data}`) ;
}) ;
ls.on ('close', (code) => {
console.log (`child process exited with code ${code}`) ;
}) ;
touch /var/lib/webosbrew/init.d/av-ir-ctrl
chmod gu+rwx /var/lib/webosbrew/init.d/av-ir-ctrl
vi /var/lib/webosbrew/init.d/av-ir-ctrl
#! /bin/sh
node ~/scripts/av-ir-ctrl.js
# 1. Сразу возвращает текущее состояние
{ "state": "POWER OFF", "sub state": "always ready", "lifeOnScreenMode": "allEnabled", "subscribed": true, "returnValue": true }
# 2. Нажал кнопку питания на magic remote первый раз, дисплей включился
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "sub processing": "prepare power on", "onOff": "on", "reason": "remoteKey", "next sub state": "active", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "lastinput ready", "onOff": "on", "reason": "remoteKey", "next sub state": "active", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "screen on", "onOff": "on", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "active", "lifeOnScreenMode": "allEnabled" }
# 3. Нажал кнопку питания на magic remote второй раз, дисплей перешел в режим "постоянная готовность"
{ "returnValue": true, "state": "ACTIVE", "sub state": "active", "sub processing": "request always on display", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always on display", "lifeOnScreenMode": "allEnabled" }
# 4. Нажал кнопку питания на magic remote третий раз, дисплей показал лого лыжи, погас и щелкнуло реле = выключился
{ "returnValue": true, "state": "ACTIVE", "sub state": "always on display", "sub processing": "request power off", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "request power off logo", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "request active standby", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "prepare power off", "onOff": "off", "reason": "remoteKey", "next sub state": "active standby", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "sub processing": "request always ready", "onOff": "off", "reason": "oslbSaving", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "sub processing": "prepare power off", "onOff": "off", "reason": "oslbSaving", "next sub state": "always ready", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "lifeOnScreenMode": "allEnabled" }
# 5. Подключил телефон по bluetooth при выключенном дисплее - включился AoD
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "sub processing": "prepare power on", "onOff": "on", "reason": "onAoDByBT", "next sub state": "always on display", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "lastinput ready", "onOff": "on", "reason": "onAoDByBT", "next sub state": "always on display", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "screen on", "onOff": "on", "reason": "onAoDByBT", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always on display", "lifeOnScreenMode": "allEnabled" }
# 6. Отключил телефон от bluetooth, спустя 30 секунд автоматически AoD выключился
{ "returnValue": true, "state": "ACTIVE", "sub state": "always on display", "sub processing": "request power off", "onOff": "off", "reason": "aod30sec", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "request active standby", "onOff": "off", "reason": "aod30sec", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "prepare power off", "onOff": "off", "reason": "aod30sec", "next sub state": "active standby", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "sub processing": "request always ready", "onOff": "off", "reason": "oslbSaving", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "sub processing": "prepare power off", "onOff": "off", "reason": "oslbSaving", "next sub state": "always ready", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "lifeOnScreenMode": "allEnabled" }
# 7. Отправил Wake-On-Lan magic packet
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "sub processing": "prepare power on", "onOff": "on", "reason": "wakeOnLan", "next sub state": "active", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "lastinput ready", "onOff": "on", "reason": "wakeOnLan", "next sub state": "active", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "screen on", "onOff": "on", "reason": "wakeOnLan", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "active", "lifeOnScreenMode": "allEnabled" }
# 8. Выключил дисплей через приложение LG ThinQ. Идентично выключению с пульта.
{ "returnValue": true, "state": "ACTIVE", "sub state": "always on display", "sub processing": "request power off", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "request power off logo", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "request active standby", "onOff": "off", "reason": "remoteKey", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always on display", "sub processing": "prepare power off", "onOff": "off", "reason": "remoteKey", "next sub state": "active standby", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "sub processing": "request always ready", "onOff": "off", "reason": "oslbSaving", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "active standby", "sub processing": "prepare power off", "onOff": "off", "reason": "oslbSaving", "next sub state": "always ready", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "lifeOnScreenMode": "allEnabled" }
# 9. Включил дисплей через приложение LG ThinQ. А тут уже разница имеется. Поле/свойство reason имеет значение wakeOnWiFi вместо remoteKey
{ "returnValue": true, "state": "POWER OFF", "sub state": "always ready", "sub processing": "prepare power on", "onOff": "on", "reason": "wakeOnWiFi", "next sub state": "active", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "lastinput ready", "onOff": "on", "reason": "wakeOnWiFi", "next sub state": "active", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always ready", "sub processing": "screen on", "onOff": "on", "reason": "wakeOnWiFi", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "active", "lifeOnScreenMode": "allEnabled" }
# 10. Подключил телефон по bluetooth при включенном дисплее
{ "returnValue": true, "state": "ACTIVE", "sub state": "active", "sub processing": "request always on display", "onOff": "off", "reason": "onAoDByBTPlayer", "lifeOnScreenMode": "allEnabled" }
{ "returnValue": true, "state": "ACTIVE", "sub state": "always on display", "lifeOnScreenMode": "allEnabled" }
При открывании приложения "постоянная готовность" из приложения LG ThinQ ничего не происходит, но происходит, если оно открыто при нажатии кнопки выключения на Magic Remote (см. пункт 3. в логе выше). В режиме "постоянная готовность" при подключении телефона по bluetooth к монитору так же не происходит ничего, но происходит при подключении по bluetooth (см. пункты 5. и 10.).
Вернуться в Аксессуары и внешние устройства
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0