前言
随着物联网时代的到来,智能家居的需求越来越多。在智能家居的应用中,遥控器是不可缺少的一部分。而 node-red-contrib-skyremote 这个 npm 包就提供了让我们通过 Node-RED 控制红外设备的功能。在本文中,我们将详细介绍如何通过 node-red-contrib-skyremote 这个 npm 包来实现遥控器的控制。
什么是 node-red-contrib-skyremote
node-red-contrib-skyremote 是一个 Node-RED 的扩展包,它提供了一些可以通过 Node-RED 控制红外设备的节点。它基于 sky-remote 这个 npm 包开发而来,可以支持许多不同品牌的红外遥控器。你可以在 GitHub 中查看 sky-remote 包的源代码。
安装
在使用 node-red-contrib-skyremote 之前,我们需要安装 Node-RED。首先,我们需要在命令行中输入以下命令:
sudo npm install -g node-red
安装完成后,我们启动 Node-RED。在命令行中输入以下命令:
node-red
这时候,你可以通过在浏览器中输入 http://localhost:1880 来访问 Node-RED 的界面。
接下来,我们需要在 Node-RED 界面中安装 node-red-contrib-skyremote 这个包。点击左边的菜单栏,选择“管理面板”,然后点击“安装”。在搜索栏中输入“node-red-contrib-skyremote”,就会出现这个扩展包。点击“安装”即可完成安装。
使用
1.学习遥控器
在使用 node-red-contrib-skyremote 之前,我们需要先了解一下遥控器的编码。我们需要知道我们所用的遥控器的编码,才能将这些编码输入到 Node-RED 中。在命令行中输入以下命令:
node_modules/.bin/sky-ctl --learn
这时候,你需要将你的遥控器对准电脑的红外接收器,按下需要学习的按钮。接着,你可以看到类似下面这样的输出:
-------------------------------------------------------------------------------- Pressed button: VolumeUp Pulse distances are: [ 574, 1740, 968, 1692, 9882, 5608, 844, 1544, 864, 876, 868, 874, 860, 1664 ] --------------------------------------------------------------------------------
这时候,我们就得到了按下 VolumeUp 按钮的编码。把这些编码记下来,我们稍后需要在 Node-RED 中使用它们。
2.创建流程
在 Node-RED 界面中,我们可以通过拖拽节点来创建一个流程。我们需要拖拽一个 sky-remote-send 节点来实现遥控器的发送。拖拽 sky-remote-receive 节点来实现接收来自红外传感器的信号。如下图所示:
在这个例子中,我们需要先将 sky-remote-send 和 sky-remote-receive 两个节点连线。这样,我们就可以从红外传感器上接收到编码,然后将编码发送出去来控制设备。如下图所示:
接下来,我们需要设置 sky-remote-send 节点的参数。我们可以双击 sky-remote-send 节点,并输入学习到的遥控器编码。如下图所示:
3.发送信号
我们可以通过 sky-remote-send 节点来发送信号。为了测试,我们可以拖拽一个 inject 节点,设置它发送一个字符串类型的“message”消息。接着,将它连接到 sky-remote-send 节点里。这样,当我们点击 inject 节点时,就会发送学习到的编码,并控制红外设备。如下图所示:
示例代码
[{"id":"7f52b9fe.7d03dc","type":"tab","label":"Sky Remote","disabled":false,"info":""},{"id":"f28c2f04.233768","type":"debug","z":"7f52b9fe.7d03dc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":700,"y":140,"wires":[]},{"id":"d9d4f023.49a1b","type":"inject","z":"7f52b9fe.7d03dc","name":"Send On","topic":"","payload":"on","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":40,"wires":[["f95607bd.55655"]]},{"id":"f95607bd.55655","type":"sky-remote send","z":"7f52b9fe.7d03dc","name":"Sky","code":"0000","x":390,"y":140,"wires":[["f28c2f04.233768"]]},{"id":"b0bc86b7.74d9f8","type":"comment","z":"7f52b9fe.7d03dc","name":"Use sky-remote-send to turn a device on and off","info":"","x":370,"y":60,"wires":[]},{"id":"45c06df.c2132c8","type":"comment","z":"7f52b9fe.7d03dc","name":"The 4 digit code is specific to your remote/device","info":"","x":410,"y":200,"wires":[]}]
总结
node-red-contrib-skyremote 这个 npm 包提供了一种简单的方法,让我们通过 Node-RED 来控制红外设备。我们可以通过学习遥控器的编码,然后将它们输入到 Node-RED 中来控制设备。在实际使用中,我们可以将它应用到智能家居等场景中,让我们的生活更加方便和智能化。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600556de81e8991b448d3ba3