4880| 2
|
用行空板做一个智能家居控制器 |
本帖最后由 NciJlUN1qMan 于 2022-7-22 13:52 编辑 用行空板做一个智能家居控制器 浙江省温州中学 胡潇桓 功能实现过程指导教师:邱奕盛 如今智能家居产品越来越多,大家通常会使用手机App控制它们。行空板的出现,给我带了灵感。我使用它制作了一款操作界面简洁的智能家居控制器,实现任意改变灯光颜色与亮度的功能。那具体是怎么实现的呢?读完这篇文章,你就了解了。 制作智能家居控制器所需的材料如附表所示。 相关知识与工作原理 1. HASS HASS 的全称为 Home Assitant,是一款开源智能家居管理平台。强大的插件和集成使得它可以方便地连接各个品牌的智能家居设备。HASS 网关独立于企业网关,可以实现统一管理多个智能家居设备——查询设备状态和控制设备的功能。 2. MQTT MQTT 协议是物联网常用的通信协议,因为它对通信带宽要求低,所以绝大多数的智能传感器和智能家居设备支持MQTT 协议。 MQTT 服 务 器 是 统 一 管 理 和 转 发MQTT 协 议 消 息 的 服 务 器。 向 MQTT服务器发送消息和订阅消息,可以实现设备之间的通信。各大云计算平台提供了免 费 的 MQTT 服 务。 我 们 可 以 使 用EasyIoT、SIoT 搭 建 MQTT 服 务 器。 HASS 支持连接各种 MQTT 服务器。 3. 行空板 行空板是一款新型国产教学用开源硬件,集成 LCD 彩色触摸屏、Wi-Fi 通信模块、蓝牙通信模块、多种常用传感器和丰富的扩展接口。同时,其自带 Linux 操作系统和 Python 编译环境,并预装了常用的 Python 库,让使用者只需两步就能开始学习 Python。 4. 工作原理 由于行空板等开源硬件不能直接 接 入 HASS,需 要 利 用 MQTT平 台 做 中 转, 我们将行空板与MQTT 服务器连接。这样有一个好处,就是传递消息不再受限于局域网,而是在任何有网络的地方都可以传递。然后,行空板通过 MQTT 服务器接入 HASS 网关,从而控制智能家居设备。智能家居设备与行空板的交互流程如图 1 所示。 图 1 智能家居设备与行空板的交互流程 第一步:将Yeelight智能灯接入HASS 首先 给 Yeelight 智 能 灯 上 电, 然 后根 据 Yeelight App 的 网 络 连 接 引 导 将Yeelight 智 能 灯 接 入 自 己 家 的 Wi-Fi。在浏览器中输入“你自己的树莓派的地址:8123”访问 HASS,如图 2 所示,单击界面左侧下方的“配置”,再选择界面右侧的“设备与服务”,在新的界面中依次单击“集成”和“添加集成”,然后在搜索框中输入“Yeelight”并按下键盘上的回车键,此时,HASS 会搜索周围已连入网络的 Yeelight 设备,在自动搜索到我们的 Yeelight 智能灯后,选择“提交”。如果我们在集成看到了新出现的 Yeelight设备或 Yeelight 设备中出现了新的设备编号,如图 3 所示,就代表我们已经成功把Yeelight 智能灯接入 HASS 了。 图 2 访问 HASS 平台 图 3 将 Yeelight 智能灯接入 HASS 第二步:配置行空板 使用数据线将行空板连接到计算机上,长按行空板左侧的确定按键打开菜单,选择“应用开关”(见图 4),在新弹出的界面中启用 Jupyter 和 SIoT(见图 5),操方法为通过行空板右侧的按键移动光标,当光标移动至 Jupyter 和 SIoT 上时,按下行空板左侧的确定按键。 设定好后,退出“应用开关”,再选择“查看网络信息”,在出的界面中查看USB 网口(见图 6)。将 USB 网口地址输入浏览器中,选择“网络设置”,扫描附近 Wi-Fi,并在扫描结果中选择自己家的 Wi-Fi,然后按照提示,输入 Wi-Fi 密码并选择“连接”(见图 7),当界面显示连接成功时,行空板就连接至自己家的Wi-Fi 了。此后,行空板只要上电,就会自动连接上家中的 Wi-Fi 了。 图 7 输入 Wi-Fi 密码并选择“连接” 第三步:将SIoT接入HASS 通过浏览器访问“你自己的行空板的无线连接地址:8080”,就可以进入SIoT,登录 SIoT 的用户名和密码分别为siot 和 dfrobot。在 HASS 中,依次选择“配置”“设备与服务”“集成”“添加集成”,然后搜索“MQTT”,在图 8 所示的服务器选项界面中输入行空板的无线连接地址、端口、SIoT 的用户名和密码,单击“下一步”,按提示完成连接。如果 HASS 界面出现了 MQTT 就代表连接成功了,如图 9所示。 图 8 服务器选项界面 图 9 成功将 MQTT 连接至 HASS 第四步:编写程序实现用滑条控制灯光颜色及亮度的功能 通过浏览器访问“你自己的行空板的无线连接地址:8888”,进入行空板内置 的 jupyter notebook, 在 这 里 编 写 的Python 文件会自动存入行空板中,并在行空板中运行,如图 10 所示。 图 10 进入行空板内置的 jupyter notebook 我们新建一个文本文件,然后开始编写程序。 导入库和利用 tk 库创建交互 UI 窗口的程序如下所示。
生成代表不同功能(发出红色光、发出绿色光、发出蓝色光、调整亮度)的滑条的程序如下所示。其中,label 后的字符串为滑条上显示的标签,from_ 与 to 后面的数字表示滑条的数字区间,width 与length 分别控制滑条的长与宽。
设置按钮响应函数,用于获取颜色值并调用发送函数,程序如下所示。这里一定要注意 rgb 与 bright 的两端使用的必须是半角的双引号,否则会导致程序无法正常运行。
消 息 发 送 函 数, 向 SIoT 中 指 定 的Topic 发送指定的信息,程序如下所示。在 SERVER 后方填入行空板的无线连接地 址, 在 IOT_pubTopic 中 输 入 设 定 的Topic 名称(前后必须要用“/”隔开),如果 SIoT 中尚没有对应的 Topic 也不要紧,在发送一次消息后,SIoT 会自动创建Topic。
设置按钮 UI 和响应函数,程序如下所示。text 后的内容为按钮上要显示的文字,command 后面的内容为按钮的响应函数名。
如下所示,运行窗口程序。
UI 窗口可以根据个人喜好进行个性化设计。我们在图 11 蓝框所示的地方修改文件名,修改时要记住后缀一定要为 .py。修改好后,保存文件,我们就可以退回行空板内置的 jupyter notebook 的初始界面了。在初始界面找到刚刚保存的文件并打开。如果生成了操作界面,就单击界面下方的按钮,再到 SIoT 中查看是否可以收到对应的 Topic(见图 12),如果可以收到,此步就完成了。 图 11 修改文件名称 图 12 在 SIoT 中查看 Topic 第五步:在HASS中编写自动化接 收SIoT中对应的Topic的程序在 HASS 中,依次选择“配置”“场景自动化”“添加自动化”,在弹出的窗口中选择“从空的自动化开始”,如图 13所示。在新的界面中,将名称填写为“灯光颜色”,将触达条件类型选为“MQTT”,将主题填写为对应的 Topic,即上文程序中 IOT_pubTopic 后填写的 Topic,如图14 所示。 图 13 选择“从空的自动化开始” 图 14 配置自动化 下 滑 界 面 至“ 动 作”( 见 图 15),将动作类型选为“调用服务”,服务选为“ 灯 光:Turn on”, 单 击“ 选 择 设备”选择 Yeelight 智能灯(设备名称可在HASS 的设备与服务处选项下查看),勾选“Brightness”,再拖动“Brightness”后的圆点至任意位置。然后单击界面右上角的 3 个点,选择 “以 YAML 编辑”,此 时 会 出 现 如 图 16 所 示 的 内 容。 除 了device_id 会随不同设备变化,其余内容均需要参考图 17 进行修改。 图 15 配置动作 图 16 选择 “以 YAML 编辑” 图 17 参考程序 修改后,拿起行空板,滑动滑条并按下确定按键,如果 Yeelinght 智能灯会发生相应的变化,则表示配置成功。智能家居控制器的成品如图 18 所示。 大家还可以参考本文的方法使用行空板控制其他智能家居,快来试试吧! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed