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

基于Amazon Echo的智能家居控制系统

发布时间:2022-08-03
分享到:

基于Amazon Echo的智能家居控制系统

发布时间:2022-08-03
分享到:

如果你有红外线遥控灯(或其他类似),这个项目就能够将这些设备带到智能家居设备上。

如何工作

  • 与 Amazon Echo 交谈“Alexa,告诉 pi 家的灯亮着”
  • Alexa Voice Service 调用 Amazon Lambda 函数
  • Lambda 函数更新 AWS IoT 设备影子
  • Raspberry Pi 接收影子更新
  • 向红外遥控设备发送信号

构建
Step1 -连接 IR LED 电路

将 IR 接收器 LED 信号连接到 GPIO 18,将 IR LED 连接到 GPIO 17。

Step2 - 安装和配置 lirc 包

sudo apt-get install lirc

编辑 /boot/config.txt

# Uncomment this to enable the lirc-rpi module 
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17 

重启

sudo shutdown -r now

检查设备文件是否已创建

ls  -l /dev/lirc*
crw-rw---- 1 root video 244, 0 Aug 22 23:17 /dev/lirc0

测试接收红外遥控器

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0 

指向您的遥控器并按下任何按钮。如果您看到如下输出,则表示设置良好。

space 1385566
pulse 770
space 876
pulse 1590
space 874
pulse 1589
space 1681
pulse 783

Step3 - 创建远程控制命令
克隆样本源

cd /opt
git clone https://github.com/sparkgene/alexa_home_control.git 
cd alexa_home_control/raspberrypi 

捕捉遥控信号。

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0 | tee lights_on.txt
(enter Ctrl + C to stop capture)

解析信号文件:

python parse.py lights_on.txt
770 876 1590 874 1589 1681 783 1683 782 1680 784 1683 780 ....

对要在 Raspberry Pi 上使用的按钮重复此步骤。

创建 /etc/lirc/lircd.conf 并粘贴解析的信号。如果信号长度超过 80 个字符,则将其写入下一行。

begin remote 
name living_light 
flags RAW_CODES 
eps            30 
aeps          100 
gap          200000  
toggle_bit_mask 0x0 
   begin raw_codes 
 name light_all 
770 876 1590 874 1589 1681 783 1683 782 1680 784  
1683 780 .... 
 name light_off 
778 875 1592 866 1600 1683 779 1713 751 865 1599  
865 1601 .... 
   end raw_codes 
end remote   

“Living_light”是遥控器的名称。如果您更改了此名称,请重写 `raspberrypi/iot_shadow.js `。

sudo /etc/init.d/lirc start  
# list remote controllers  
$ irsend LIST '' ''  
irsend: living_light  
# list commands  
$ irsend LIST living_light ''  
irsend: 0000000000000001 light_all   
irsend: 0000000000000002 light_off  
# send signal  
$ irsend SEND_ONCE living_light light_all  

“light_all”和“light_off”是解析信号的名称。在示例源代码中,这些名称与 lambda 函数相关联。

测试命令

如果您的配置正确,Raspberry Pi 将成为遥控器。

Step4 - 设置 AWS IoT
此示例仅使用 AWS IoT 设备影子。只需设置事物和证书。按照 AWS 文档中的步骤添加事物和证书。

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

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


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

Step5 - 设置 Amazon Lambda 函数
此 Lambda 函数更新 AWS IoT 设备影子。所以附加一个具有正确权限的角色,如下所示:

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

创建 lambda 函数。

Step6 - 在 Raspberry Pi 上设置 AWS IoT 客户端
再次通过 SSH 连接到 Raspberry Pi。将步骤 4 中下载的证书文件复制到/opt/alexa_home_control/raspberrypi/certs/certificate.pem.crt 私钥到/opt/alexa_home_control/raspberrypi/certs/private.pem.key

运行安装程序:

cd /opt/alexa_home_control/raspberrypi
sh ./setup.sh

您可以在 /var/log/daemon.log 中查看日志

Step7 - 创建 Alexa Skill
使用以下示例添加新技能。

Skill类型:

自定义交互模型

自定义插槽类型

类型:LIST_OF_FAN_ACTION

值:https ://github.com/sparkgene/alexa_home_control/blob/master/alexa_skill/slot_LIST_OF_FAN_ACTION

端点

添加您的 Lambda 函数 ARN。

现在你可以测试你的项目了。在测试之前使用您的技能应用程序 ID 修复 Lambda 函数 APP_ID 变量。

本文中所用到的一些代码

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

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

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论