使用restAPI控制SONY电视开关机切换输入源
需求
在客厅玩游戏希望打开台式机后自动打开电视并切换到制定输入源
思路
经查Nvidia并不支持HDMI-CEC控制,无法获得类似机顶盒游戏主机的原生电源联动。
退而求其次,考虑通过网络唤醒电视并切换输入源。
实现
根据说明 | BRAVIA Professional Displays Knowledge Center设定固定ip地址并开启IP控制验证,注意设置预共享密钥后面请求需要填入header的X-Auth-PSK。
开启电源
请求
#!/bin/bash
curl --location --request POST 'http://<tv_ip_addr>/sony/system' \
--header 'X-Auth-PSK: ******' \
--header 'Content-Type: application/json' \
--data-raw '{"method":"setPowerStatus","params":[{"status":true}],"id":1,"version":"1.0"}'
返回
{
"result": [],
"id": 1
}
选择输入源
先确定当前输入源编号
curl --location --request POST 'http://<tv_ip_addr>/sony/avContent' \
--header 'Content-Type: application/json' \
--header 'X-Auth-PSK: ******' \
--data-raw '{
"method": "getCurrentExternalInputsStatus",
"id": 1,
"params": [],
"version": "1.0"
}'
返回
{
"result": [
[
{
"uri": "extInput:cec?type=player&port=4&logicalAddr=4",
"title": "Apple TV",
"connection": true,
"label": "",
"icon": "meta:playbackdevice"
},
{
"uri": "extInput:hdmi?port=1",
"title": "HDMI 1",
"connection": false,
"label": "PC",
"icon": "meta:hdmi"
},
{
"uri": "extInput:hdmi?port=2",
"title": "HDMI 2",
"connection": true,
"label": "",
"icon": "meta:hdmi"
},
{
"uri": "extInput:hdmi?port=3",
"title": "HDMI 3 (eARC/ARC)",
"connection": false,
"label": "PS5",
"icon": "meta:hdmi"
},
{
"uri": "extInput:hdmi?port=4",
"title": "HDMI 4",
"connection": true,
"label": "Apple TV",
"icon": "meta:hdmi"
},
{
"uri": "extInput:composite?port=1",
"title": "视频信号",
"connection": false,
"label": "",
"icon": "meta:composite"
}
]
],
"id": 1
}
选择PC对应的extInput:hdmi?port=1
输入源,切换请求是
curl --location --request POST 'http://<tv_ip_addr>/sony/avContent' \
--header 'Content-Type: application/json' \
--header 'X-Auth-PSK: ******' \
--data-raw '{
"method": "setPlayContent",
"params": [{
"uri": "extInput:hdmi?port=1"
}],
"id": 1,
"version": "1.0"
}'
参考
概述 | BRAVIA Professional Displays Knowledge Center
Introduction | BRAVIA Professional Displays Knowledge Center