我的家庭自动化系统

哈Ha!

本文(周期)的目的是Habra效应,这是有关我的家庭自动化系统介绍性故事,当然,我并不是从零开始发明并创建所有内容的,而是仅收集了我认为最适合此目的的技术和项目,并从自己身上添加了一些东西。 业余级别,但结果一切正常,人们使用它,并且没有在俱乐部追赶我。 我自己做了一切。 我们欢迎建设性的批评,知道任何观点都会很有趣。

该系统包括设备和一组程序:直接用于设备通信和可视化的自动化系统,用于远程监视和更新的通信和遥测,Yandex的语音助手。 所有内容(几乎所有内容) 均已打开并发布在Github上

设备水平


主要和必要的部分是基于Raspberry Pi的服务器,但是它可以在装有Debian或Ubuntu的PC上正常工作。 Raspbian操作系统。 系统应该可以在24/7/365正常工作,因此您需要高质量的电源,例如,理想的iPad电源。



对于远程管理,我还具有语音助手Yandex的技能,它需要一台具有“白色” IP和域的服务器。 MQTT服务器正在服务器上运行; SSL / TLS用于安全性。

通过BAOS 771-774网关提供KNX支持。 BAOS是KNX总线和LAN之间的接口。 允许通过Web服务以JSON格式访问总线上的地址。

我的设备:

Arduino IDE的项目

基于Wemos D1 mini的Wifi控制器



通过230伏网络供电,也可以不使用公共5伏总线上的电源来为Wemos或它控制的设备(例如窗帘驱动器)供电。 可以将其安装在足够深的安装和接线盒中,例如在开关后面。

可以用来代替各种窗帘驱动器的无线电控制。

方案


受控输出的引脚排列:
L1,L2-来自BT-137S三端双向可控硅开关的功率输出,由wemos输出D0,D5通过MOC 3063S光耦合器控制,相位转换控制为零。 打开和关闭负载不会对网络造成干扰。
p1,p2-调光器或电动窗帘驱动器或其他按钮的pwm输出,具体取决于设置。 对应于Wemos'a D6,D7的结论。
A0模拟输入,用于连接各种传感器,例如灯光或附加按钮。
ds-DS18B20温度传感器的连接对应于引脚D1。
DHT-连接温度传感器DHT22对应于引脚D2。
b1,b2-短按和长按的按钮,具有点击计数器的功能,可以连接到电表,水表等的脉冲输出。

工作示范


在Arduino IDE中创建的控制器程序。 适用于所有基于ESP-8266的主板。 控制器的网络设置,控制和操作由MQTT进行。 为了方便查看设置,这里有一个Web界面,以前可以通过http进行控制,但是后来我认为它是多余的并删除了它。

网页界面


可以禁用Web界面。 为了方便初始配置,提供了winit.sh脚本和说明。 要将控制器重置为默认设置,必须输入命令“ default 1”或同时按下按钮b1,b2 20秒钟。 该程序还有一个简化版,用于托管的Sonoff网点。

基于Arduino Mega的控制器



它由mega本身和W5100网卡的屏蔽组成,该板具有用于调光器的单独输出以及用于传感器和按钮的输入,继电器输出必须使用电缆分别连接到mega板上位于电源和USB端口相反一侧的2行连接器。 该控制器是为D6MG机箱设计的。

引脚排列:

D2-9,D11-13-调光器的PWM输出,PWM频率比标准频率增加。
D14-21-DS18B20和DHT22温度传感器。
D22-49-继电器输出,D22-29输出可配置用于百叶窗,门,窗帘驱动器。
D 10.50-53-使用W5100网卡。
A0-16-按键输入,短按和长按。 可以将A0-A6配置为模拟传感器。

mega的网络设置在闪烁之前已在程序中设置。 IP地址是固定的。

网页界面


双向可控硅BT137-600E上的调光器



输入220伏,PWM控制0-5 / 3.3伏,通过设置跳线进行设置。 在Arduino Mega上工作时为0-5伏,在wemos情况下为0-3.3伏。 PWM信号被馈送到Arduino Pro的模拟输入A0,在此它被转换为打开三端双向可控硅开关的延迟,并提供了一个连接器,用于将arduino闪光。 散热器的指定空间。 在arduino的侧面上,有arduino的控制和电源连接器(PWM,-,+),在smimstor的侧面上有一个4针电源连接器-电源和输出到负载,如有必要,还可以配备压敏电阻或缓冲器。 调光板专为D2MG机箱而设计。

调光器项目:

PCBWay的PCB

工作示范


D9MG封装中还有一个28通道双向可控硅单元

我为图片质量表示歉意


设备通过局域网连接,这是MQTT通信的协议。 我正在使用MQTT Mosquitto服务器。

软件部分


为了方便起见,首先您需要使用所有必需的程序准备操作系统的映像,我使用Raspbian Stretch Lite。 您将需要安装nodejs,python-pip,python3-pip,supervisor,mosquitto,mosquitto-clients和sqlite3。 和pip包:paho-mqtt和psutil。 您还可以安装Node-red,非常适合各种实验。

在2016年发布Apple Homekit之后,事实证明,与homkit相比,就整个智能家居系统而言,所有制造商和开发人员在便利性和功能性上都做不了任何事情,这与第一款iPhone的发布情况相似,当时整个动物园手机,智能手机,通讯器变成了一堆垃圾。 无论如何,使用高质量的成品总是令人愉快的。

我选择了homekit2mqtt项目作为主要的可视化系统。 当然,您可以使用OpenHUB或Homeassistant,这些系统也可以与MQTT一起使用。

hjmqtt
Homekit2mqtt创建Homekit Bridge,可以在Apple设备上的Home程序中找到它。 附件(照明,传感器,温度控制器等)必须以JSON格式注册在特殊文件中。 脚本filegen.sh和install.sh负责创建此文件。 您需要在filegen.sh中注册附件,install.sh将homekit2mqtt添加到自动加载并启动。 最主要的事情发生在hjmqtt.py文件中-附件与设备的连接,也手动在文件中,您需要注册附件和设备参数,KNX地址。
附件的功能已在文件annex.py和annexknx.py中注册。 设备状态存储在sqlite数据库中; statdb.py库用于数据库操作。

hjconnect
远程遥测需要下一个项目。 这是对内存,磁盘,负载和温度的使用,为此使用psutil软件包。 现在,开放访问仅适用于hjconnect版本,仅用于监视且没有加密,并且作为单独的项目,用于链接文件的程序也是MQTT file-transfer-via-mqtt 。 设置直接在主hjconnect.py文件中。 如果使用-l选项运行它,则可以在本地MQTT服务器上对其进行测试,远程服务器的设置位于第160行

rclient.connect("test.mosquitto.org", 1883, 60) 

服务器test.mosquitto.org可以替换为您的域或IP。 为了识别Raspberry Pi,该主题中包含了处理器的序列号,如果该程序在另一台计算机上运行,​​则将使用字符串“ SN”代替该序列号。 消息间隔在第96行设置。

 th = threading.Timer(9, my_stat) # interval 

其中9是秒。

监视效果的示例


西马
现在只有Yandex拥有唯一的俄语专栏。 为爱丽丝创建技能很容易。 与Siri不同,它具有完全的行动自由。 并在任何设备上访问。 不幸的是,虽然没有健全的方法来发动一项技能,但不断地运行一项技能并不方便。

演示版


这是一个工作技能的例子。 要开始这项技能,您需要一个SSL证书;可以使用openssl生成它。 在第14行的sima.py行中​​,有一个证书生成的示例

 openssl req -new -keyout crt.pem -out crt.pem -x509 -days 365 -nodes -subj '/CN=site.com/O=user/C=RU' 

site.com和用户需要替换为其数据。

在新设备上启动技能时,会记录其标识符。 为了链接标识符和自动化系统,首先需要基于示例my.csv文件在客户目录中创建一个新的csv文件。 序列号根据模板写入文件中,与hjconnect程序中的序列号相同,并且写入了控制对象:名称,类型,主题。 主题是homekit2mqtt的JSON文件中MQTT附件主题的重要组成部分。 然后,需要使用sn.py将序列号转换为密码,并在要管理的设备上命名该密码。 hjconnect程序提供通信,并且MQTT监视服务器与运行该技能的计算机相同。

谢谢再见

Source: https://habr.com/ru/post/zh-CN442600/


All Articles