本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Amazon Alexa的电视电源控制系统

发布时间:2022-07-25
分享到:

基于Amazon Alexa的电视电源控制系统

发布时间:2022-07-25
分享到:

电视可以通过 HDMI 唤醒。该项目向您展示如何从 Amazon Alexa 控制您的电视。

此功能具有控制电视的命令。这意味着你可以通过避过遥控而直接使用 Raspberry Pi 控制电视。为了完成这个项目,我创建了一个 Alexa 智能家居来控制我的电视。

图表

第 1 步 - 设置树莓派
安装 ces-utils:

$ sudo apt-get install cec-utils 

打开电视:

$ echo 'on 0' | cec-client -s
opening a connection to the CEC adapter...
DEBUG:   [             125] Broadcast (F): osd name set to 'Broadcast'
DEBUG:   [             126] Open - vc_cec initialised
DEBUG:   [             126] logical address changed to Free use (e)
NOTICE:  [             126] connection opened
DEBUG:   [             127] processor thread started
DEBUG:   [             127] << Broadcast (F) -> TV (0): POLL
DEBUG:   [             127] initiator 'Broadcast' is not supported by the CEC adapter. using 'Free use' instead
TRAFFIC: [             127] << e0
DEBUG:   [             187] >> POLL sent
DEBUG:   [             187] TV (0): device status changed into 'present'
DEBUG:   [             187] << requesting vendor ID of 'TV' (0)
TRAFFIC: [             187] << e0:8c
TRAFFIC: [             382] >> 0f:87:08:00:46
DEBUG:   [             382] TV (0): vendor = Sony (080046)
DEBUG:   [             383] >> TV (0) -> Broadcast (F): device vendor id (87) 
....

关闭电视:

$ echo 'standby 0' | cec-client -s
opening a connection to the CEC adapter...
DEBUG:   [             145] Broadcast (F): osd name set to 'Broadcast'
DEBUG:   [             146] Open - vc_cec initialised
DEBUG:   [             146] logical address changed to Free use (e)
NOTICE:  [             146] connection opened
DEBUG:   [             147] processor thread started
DEBUG:   [             147] << Broadcast (F) -> TV (0): POLL
....

现在您可以打开/关闭电视了。

第 2 步 - 设置 AWS IoT
此示例仅使用 AWS IoT 设备镜像。只需设置 Thing 和证书。按照 AWS 文档中的步骤添加 Thing 和证书。

https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html

不要忘记下载证书。创建 Thing 后,添加设备状态。

{
  "desired": {
    "command": "tv_off",
    "counter": 0
  }
}

第 3 步 - 设置树莓派
将 HDIM 电缆连接到电视。克隆样本源。

$ cd /home/pi
$ git clone https://github.com/sparkgene/alexa-tv-controller.git
$ cd alexa-tv-controller/raspberrypi

将下载证书复制到 Raspberry Pi 并将其存储在 /home/pi/alexa-tv-controller/raspberrypi/certs 中。

将 shadow.js重写 到您的 AWS IoT 终端节点。

var shadowName = "tv-controller"
var thingShadows = awsIot.thingShadow({
  keyPath: "/home/pi/alexa-tv-controller/raspberrypi/certs/private.pem.key",
 certPath: "/home/pi/alexa-tv-controller/raspberrypi/certs/certificate.pem.crt",
   caPath: "/home/pi/alexa-tv-controller/raspberrypi/certs/ca.pem",
 clientId: "tv-controller",
   region: "ap-northeast-1",
   host: "your-endpoint.iot.ap-northeast-1.amazonaws.com"
});

安装客户端库:

$ cd /home/pi/alexa-tv-controller/raspberrypi
$ sh setup.sh

运行客户端:

$ /usr/bin/node shadow_client.js
connected
registered
received accepted on tv-controller: {"state":{"desired":{"command":"tv_off","counter":1517043288},"reported":{"counter":1517043288,"command":"tv_off"}},"metadata":{"desired":{"command":{"timestamp":1517043289},"counter":{"timestamp":1517043289}},"reported":{"counter":{"timestamp":1517043293},"command":{"timestamp":1517043293}}},"version":26,"timestamp":1517046963}
counter:1517043288
no change do nothing

测试运行良好。您可以在 AWS IoT 镜像控制台手动更改状态。

"command": "tv_on" turn on TV.
"command": "tv_off" turn off. 

第 4 步 - 创建智能家居技能
智能家居技能使用 v3 有效载荷:https ://developer.amazon.com/docs/smarthome/steps-to-build-a-smart-home-skill.html

使用示例 lambda 函数:https ://github.com/sparkgene/alexa-tv-controller/blob/master/lambda_function/lambda_function.py

将friendlyName 更改为“living TV”。

"friendlyName": "living TV",

Lambda 需要获得使用 AWS IoT 的权限。创建职能如下:

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "logs:CreateLogGroup",
               "logs:CreateLogStream",
               "logs:PutLogEvents"
           ],
           "Resource": "arn:aws:logs:*:*:*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "iot:GetThingShadow",
               "iot:UpdateThingShadow"
           ],
           "Resource": "*"
       }
   ]
}

第 5 步 - 从 Echo 使用它
现在您可以使用 Echo 的智能家居技能了。启用该技能并说“Alexa,打开客厅电视”。

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Jun Ichikawa,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论