结合树莓派和Javascript的家庭自动设计
链接到视频
https://youtu.be/wh0OoLUTeM8 墙内的同学看不了
介绍
自从我还是个一个孩子以来,就一直热衷于电子化和不同种类的电子DIY。以前我用arduino做了一些其他的小型项目,像我的游戏方向盘,还有我给我的车定制的LED转速表,语音控制LED等。最近我买了Raspberry PI 3和一些物联网开发的套件,于是我决定开始自动化我的家。
技术栈
由于我非常熟悉javascript及其生态系统,所以决定通过自己的手机应用程序创建自己的手机应用程序react native,并将其连接websockets到NodeJS后台。我使用ImmutableJS的记录来保持数据结构的一致性和应用程序的性能。数据通过JSON字符串在客户端和服务器之间发送,当双方收到时,它们将被转换回到不可变记录。我将共享模块(客户端和服务器之间)分离到单独的本地npm软件包 - home记录和home-config。对于GPIO的控制(树莓派的引脚),我结合pi-blaster并一起使用了wiringPi的库。由于我找不到我的AC代码,于是我自己记录之后,并将它们添加到lirc配置文件中。Duckdnscron被用作动态dns,因为我的IP地址定期更改,我不需要每次重新编译整个应用程序或更改配置。服务器实时向所有连接的用户广播(应当译为发送)更改。手机应用程序位于/ phone-app文件夹中,服务器位于/ server中。
https://github.com/deepsyx/home-automation
这里是项目地址
硬件
Raspberry Pi 3
是控制单元。大功率器件(如LED条)通过外部12V 5A power supply(与PI共享接地)供电。AC通过950nm红外LED控制。加热系统通过继电器(开和关)连接,舵机用于恒温器。两个白色LED和所述RGB经由连接IRLZ34N逻辑晶体管的PI。还有IR接收器,以防万一我想记录任何其他东西。温度通过DS18B20温度传感器测量。布线如下:
新想法
我开放了关于不同模块的各种想法。如果您有一些想法,如果您将其添加到问题跟踪器并将其标记为,我将非常欣赏
你的Idea。
软件依赖
Node&Npm
Pi-Blaster
WiringPi库
LIRC