建立一个DIY智能门铃

2021-06-29 23:07:16

在我关于DIY智能家电的最后一篇文章中,我写了关于恒温器。 Chipotherm现在已经在街机一年多运行,它仍然很棒!对我的DIY智能恒温器武装热情,刚搬进了一个带有戒指门铃的新房子里,我以为我可能会尝试构建自己的DIY门铃来取代它。

我对这个项目的动机只是希望建立新的和乐趣。环形门铃现在由广告Megacorp亚马逊拥有,遭受了关于巢恒温器的帖子中描述的所有相同隐私问题,但更糟糕的是。像巢恒温器一样,客户端软件是一个总“竞争到底”一尺寸适合 - 所有垃圾IOS应用程序,不仅看起来很糟糕,而且充满了错误。也喜欢巢,所有数据都托管在“云”中,并且在您(“客户”)之前需要每月赎金(“客户”)。然而,比巢更糟糕的是,戒指门铃实际上拥有相机和麦克风内置,所以视频和音频源也在“云”中赎金,并与任何兴趣的州共享,有时甚至共享未经您的许可。

就像许多其他物质产品一样,戒指也受到多种灾难性的数据泄露,这意味着除执法机构和广告合作伙伴之外,许多戒指客户的私人数据现在也在恶意黑客手中,可能在未来提供比亚马逊提供的更难拒绝的赎金。来自ARS Technica的这篇文章似乎表明,问题也即将变得更加差,在作品中自动车牌检测和更多的警察伙伴关系。

在今天的企业监控世界中,建立自己的DIY智能家电是一个真正的超级大国 - 也很有趣!我最初计划只有一个简单的按钮,也许附加到ESP8266,这是一个美妙的新WiFi微控制器,这些天气随着家庭自动化爱好者而变得非常流行。当我决定加上一个很酷的LED和相机(其饲料完全在托管时,该项目迅速增长了范围。

对于硬件,所致思想的第一件事显然是按钮。我决定先购买一个酷的“发动机启动器”汽车按钮1,并在此处设计其余的门铃。围绕按钮的LED也通过12VDC供电,因此如果我希望能够通过软件控制它,我还需要获得MOSFET并构建一个小电路。

为了控制一切,我决定使用覆盆子PI零点,因为它具有足够的GPIO引脚,用于检测开关压力机,一个用于调制按钮内部的LED的PWM引脚,以及特殊的相机总线。覆盆子PI Zero的超小尺寸也意味着我可能会将其融合在几乎任何内容中,这非常不太可能要求非常多的电力或冷却资源。

对于接线来说,幸运的是,我的家园的前一位拥有者已经在以太网上有线(其中要安装的位置),可能是某种呼叫框或安全系统。这意味着使用over-over-okernet(PoE),我可以从车库运行电源和网络,其中我的路由器/服务器位于要安装门铃的门口。这需要一个基本的PoE分离器/接收器,以及用于覆盆子PI零的以太网适配器(因为它没有像全尺寸覆盆子PI这样的船上以太网)。

最后,案件将一切都放入。我以为这将很容易3D打印,因为它只是一个带有前方和背部洞的套件,但事实证明它结果很难建立。我拥有的3D打印机是第一代Makerbot Replicator,无法打印适合在一起的零件。最终结果是三个独立的塑料件,不吻合在一起,最终成为真正脆弱的。

我的一位朋友有一个更昂贵的立体声光刻3D打印机,所以我试着尝试打印我最初提出的相同设计。这导致了更准确的打印,碎片非常好地适合在一起。然而,也许由于所用树脂的类型,也最终成为极脆弱的。

我最终购买了来自Digikey的一个真正的注塑成型机箱约9美元。它最终只是在批量生产的外壳中钻孔而不是钻孔,而不是3D打印定制设计。质量也比任何打印更好。

为了复制戒指功能最重要的部分,需要在Raspberry PI上运行一些软件,该软件在按钮按下轮询,然后在我的网络上与一些计算机联系,以通知我关于门铃事件。我叫这些“叮当”2.刚才,我刚才了解到这项伟大的协议,被DIY IOT爱好者所令人钦佩,或者是MQTT的DIY IOT爱好者,或消息排队和遥测传输协议。它的主旨是它是任何类型的消息的Pubsub(发布者)协议。它是一种像NSNotificeCenter一样,但对于您的本地网络。有主题和消息,这就是关于它的。主题通常以域/子域/主题的格式,但它真的可以是您想要的任何东西,只要它在实现中一致。

在我的门铃的情况下,我选择的话题是丁事件的门铃/ ding。该按钮在覆盆子PI上物理连接到GPIO引脚,因此有一点代码对此引脚进行调用高,而且在它所的情况下,将在MQTT上发布到门铃/ ding主题的消息。

现在,门铃本身就是通知我的网络关于丁事件,我只需要一些关于这些事件的东西,以某种方式向我通知我。刚才,我已经建立了一个小GNU / Linux PC和一个接收器,将与起居室的扬声器连接到我的客厅里作为MPD服务器进行音乐。每当发布到Ding MQTT主题时,就让这台电脑播放门铃声音非常容易!我所要做的就是写一个在循环中运行的小shell脚本。

所有此shell脚本都使用mosquitto_sub订阅hassio.nor上的门铃/ ding主题(即我的MQTT服务器,只能在我的LAN上访问),每当消息发送到该主题时播放门铃。 -c 1选项表示等待一条消息,然后退出。这是永远在循环中执行的。到目前为止,这一直很棒。我真的很喜欢MQTT的简单性。

自从我在电视上运行Kodi Media Center以来,在我的电视上看这些通知也非常容易!

我不得不做的下一件事是弄清楚某种方式来通知我的iPhone了解丁事件,以防有人在离家出走的时候敲响我的门铃。我以为这可能是非常困难的,因为为了做推送通知,我可能需要编写一个iOS应用程序,也运行一个服务器来签名并发布到Apple的推送通知服务,以及一堆其他Hooey。幸运的是,我最近在家为我正在努力的其他项目设置家庭助理服务器。 Home Assistant iOS应用程序支持推送通知,可用于由MQTT事件触发的自动化。所有我所要做的就是在家庭助理中设立自动化,该自动化将订阅门铃/丁主题,并且当一个发表在该主题的消息时,家庭助手将称自己的“通知”服务将通知推送给手机通知(并做任何其他事情)。延伸和黑客家庭助手的看似无限数量是我喜欢使用它的原因,为DIY IOT项目使用它。总而言之,我最终写了这个项目的服务器端的代码,这很整洁。

这个项目的最重要部分是为了让我的是按钮,以便以完全由我控制的方式通知我的门铃叮当,并仅在我的本地网络上运行。二次,我认为将相机附加到它也很高兴,所以我可以看到谁在外面迎接他们之前在门口。再次,由于所有这一切都是本地的并由我控制,我对添加相机的隐私问题很少。

我为覆盆子Pi购买的鱼眼相机非常好,但它实际上缺少前面的红外线过滤器,所以所有的图像都对它们有一个真正的紫色ish tint。虽然不是非常美观,但它至少要完成工作,并且成本非常低。显然这是商业级安全摄像机上最昂贵的零件之一,其中许多具有机械红外滤波器,可以在夜间移动传感器的方式,以便在低光场景中的最佳图片在白天。

通过家庭助理界面可以访问现场摄像头,或者我可以订阅另一个MQTT主题,其中张贴了按下门铃的人的照片。 Raspberry PI通过视频4Llinux抽象层从相机获取这些图像,这在我的程序中非常易于使用。然后,帧当前被编码为JPEG并发布到MQTT。在不久的将来,我希望覆盆子PI编码RTSP流,因为PI专门设计用于编码视频的SOC中的视频核心,因此它将使用很少的电力/资源。

以上是最终产品,钻孔,拧紧,并安装在我家前面的栅极上。在白天期间,LED环并不是那么明显,但相信我,晚上非常明亮!当怠速时,它确实晴间脉冲效应,并在按下时闪烁以确认压力机并通知某人即将到来的访客。

由于我完全控制了硬件,因此将来会有很多有趣的东西。一些我拥有的想法是自动面部检测(以隐私为中心的前途路线方式),秘密按钮代码做事,也许甚至可以是一个内置麦克风和扬声器,所以我可以与访问者进行对话。不幸的是,这盒子很狭窄!至少软件真的很容易改变。

谈到软件,门铃的代码是免费和开放的。 您可以在Sourcehut页面上找到它。 是的,我意识到解剖戒指/亚马逊的认知不起作用,并从亚马逊订购部分。 处理它! ↩