HomeBridge 教程:Raspberry Pi + 红外控制自动化风扇

我一直想参与一个硬件项目。 我喜欢家庭自动化。所以自动化我的风扇,似乎是一个完美的项目开始。

我为我的门锁和灯使用了 HomeKit。当我离开时,HomeKit 会锁住我的门,关掉所有的灯。但我总是要搜索我的风扇遥控,然后手动关闭。这不是我想象中的我的智能家庭应该做的事情。

步骤1:设置 Raspberry Pi

在没有硬件的经验的情况下,直接开始我的第一个项目相当可怕。我做了一些我需要的研究,然后购买了 Raspberry Pi 入门套件和一对 433Mhz 接收器/发射器。

设置 Raspberry Pi 3 比我想象的要容易得多。Canakit Ultimate Kit 随操作系统预装在 microSD 卡中。它还配有跳线|面包板、通向面包板接口板的 GPIO、LED和电阻器。

接下来,我做了一个 LED 教程,并想出了如何使用面包板。如果没有正确连接,我不确定是否会烧了我的树莓派,所以我在安装过程中关闭了设备,完成后打开了它。 当错误连接时,设备根本无法启动。我很幸运,LED测试进展顺利。这相当于软件编程的 “Hello World”。

读取红外射频(RF)信号

我怀疑我的风扇遥控器使用射频,因为它可以在不同的房间工作,但我不确定购买的一个 433Mhz 接收器/发射器是否是正确的选择。 这只是一个猜测,但它为我解决了问题。

Raspberry Pi 红外连线图

我的第一个任务是用 RF 接收器读取信号。我遵循这个指南,紧接着安装了 wiringPi 和 433Utils,将 RF 接收器的数据(data)引脚连接到 GPIO27,GND 到 GND,VCC 到 5V,运行 RFSniffer 并按下我的遥控器。 有效!

发送红外射频(RF)信号

接下来,我按照这里的说明连接了 433Mhz 射频发射器。我能够测试发射器工作正常,使用 codesend 发送一个号码,并由运行 RFSniffer 的 RF 接收器接收。

发送 RF 信号模拟风扇遥控

一切都很顺利,直到这一点。然而,使用 RFSniffer 从我的远程接收到的信号,在用 codesend 重新传输时无法控制我的风扇。我一定是误解了 RF 遥控器的工作原理中的某些内容。看起来硬件是容易的部分。

然后我遇到这个使用 pilight 的帖子。

射频发射器连接到引脚 17,射频接收器连接到引脚 27

安装 pilight 之后,我将其配置为使用我的设置。上图显示射频发射器连接到引脚 17,射频接收器连接到引脚 27。

Raspberry Pi 引脚

config.json 文件中的发送者和接收者值,可以通过引用上面的 GPIO 表来确定。引脚 17 的发送器值应为 0,引脚 27 的接收器值应为 2。

{
    "devices": {},
    "rules": {},
    "gui": {},
    "settings": {
        "log-level": 6,
        "pid-file": "/var/run/pilight.pid",
        "log-file": "/var/log/pilight.log",
        "webserver-enable": 1,
        "webserver-root": "/usr/local/share/pilight/",
        "webserver-http-port": 5001,
        "webserver-cache": 1
    },
    "hardware": {
        "433gpio": {
            "sender": 0,
            "receiver": 2
        }
    },
    "registry": {
        "pilight": {
            "firmware": {
                "version": 8328,
                "lpf": 488080,
                "hpf": 614350
            },
            "version": {
                "current": "7.0"
            }
        }
    }
}

然后,我使用 pilight-debug 从远程读取并输出原始信息。 记得在执行 pilight-debug 之前先杀死 pilight-daemon 进程。

pi@raspberrypi:~/ $ sudo killall pilight-daemon
pi@raspberrypi:~/ $ pilight-debug

运行 pilight-debug 并按下遥控器上的按钮来捕捉信号

pilight-debug 中的原始代码是一系列数字,每个数字都测量一个 HIGH-LOWLOW-HIGH 转换之间的时间差。还有很多其他噪音信号,所以我必须手动过滤来自遥控器的正确信号。看来诀窍是寻找一系列只包含三个唯一数字的数字。 这些 “更清洁” 的号码只为我工作的。我不得不一直按下我的遥控器,直到我得到一个看起来像这样 “干净” 的代码。

209 627 627 209 209 627 209 627 209 627 209 627 209 627 627 209 209 627 209 627 209 627 209 627 209 627 209 627 209 627 209 627 627 209 627 209 209 627 209 627 209 627 209 627 209 627 209 627 209 7106

然后我使用 pilight-send 来发送原始代码(如果你之前曾经杀死 pilight-daemon 进程,记得再次启动 sudo pilight-daemon )。

有效了。 我重复了遥控器上的所有按钮,以获得关闭和改变速度的不同代码。当然,信号对于不同的遥控器也是不同的,所以我必须在卧室里重复同样的步骤,尽管它是相同的型号。

pi@raspberrypi:~/ $ sudo pilight-daemon
pi@raspberrypi:~/ $ pilight-send -p raw -c “209 627 627 209 209 627 209 627 209 627 209 627 209 627 627 209 209 627 209 627 209 627 209 627 209 627 209 627 209 627 209 627 627 209 627 209 209 627 209 627 209 627 209 627 209 627 209 627 209 7106”

与 HomeBridge 集成的 Apple HomeKit

现在,我已经设法通过命令行来控制我的风扇,下一步就是让它和 HomeKit 一起工作。HomeBridge 是一个开源的 NodeJS 服务器来模拟 iOS HomeKit API。您可以在这里找到在 Raspberry Pi 中安装 HomeBridge 的说明

pilight 有一个 HomeBridge 插件。 不过,我不得不创建一个自定义插件,因为我不知道如何设置 pilight 来做到这一点。 我发现了一个开源的 HomeBridge 插件,通过 API 调用来控制 3档的 TOSR0x 风扇,homebridge-tosr0x-fan。 我用它作为我的插件的模板。

我使用 Python/Flask 创建了一个 REST API,用命令行执行 pilight-send:rfremote-fan-api

我使用下面的命令来安装插件,虽然它比设置一个开发文件夹要慢一些:

pi@raspberrypi:~/ $ npm install -g homebridge

安装插件后,我通过编辑 〜/.homebridge/config.json 中的配置文件,将我的风扇添加到 HomeBridge。accessories 键必须与插件中声明的名称相同。

{
        "bridge": {
                "name": "Homebridge",
                "username": "CC:22:3D:E3:CE:30",
                "port": 51826,
                "pin": "031-45-154"    
        },      
        "platforms": [{
                "platform": "Orvibo"
        }],
        "accessories":[
                {
                        "accessory":"RF-Remote Fan",
                        "name": "Fan in Living Room",
                        "host": "localhost:80",
                        "id": 1
                },
                {
                        "accessory":"RF-Remote Fan",
                        "name": "Fan in Bedroom",
                        "host": "localhost:80",
                        "id": 2
                } 

        ]
}

重新启动 HomeBridge 以使更改生效。

pi@raspberrypi:~/ $ sudo killall homebridge
pi@raspberrypi:~/ $ homebridge

iPhone 家庭套件控制风扇

不错,我的第一个硬件黑客,在周末完成。

如果您正在尝试复制 RF 遥控风扇的相同设置,则必须再次识别信号,因为它与我的不同。 祝你好运!

原文链接:https://hackernoon.com/diy-home-automation-fan-control-with-raspberry-pi-3-rf-transmitter-and-homebridge-59ad24845770

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.