Loading

使用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

posted @ 2025-07-11 17:26  azureology  阅读(34)  评论(0)    收藏  举报