监视郊区家庭系统的运行:迈向智能家居的第一步


上一篇文章引起了激烈的讨论,这种情况使我确信需要继续我们所谓的“分享经验”。 因此,我们解决了以下事实:在房屋中出现替代能源(主要是太阳能收集器)之后,我想测量伴随其工作的参数。 例如,为了查看太阳能冷却剂的温度如何变化,锅炉中的水是否过热等。 显然,对某物的测量本身,甚至将该信息传输到消费场所(遥测)都不会增加舒适性或安全性,因此,将各种执行器的遥控器上的一项立即添加到“ TK”中。 在本文中,我不会列出代码,而是将所有技术解决方案的细节都保留到最小的细节。 我的目标是展示思路和采用的技术解决方案及其结果。 任何想走类似道路的人仍然必须自己解决许多问题。


轻微的抒情偏离。

在2010年,连同逆变器/电池一起,俄罗斯公司RADS Electronics的通用GSM控制器-警报系统出现在室内。 除了具有GSM警报的警报功能之外,还使用了这种出色的通用设备,还可以控制客厅中的灯光,最重要的是,还可以控制电锅炉。 因此,我学习了如何控制温度,保持温度并在很久以前到达之前预先给房子加温。 这样的系统的便利性非常明显。 但是,控制器的功能是有限的,因此新的“ TK”最初为创建并行系统奠定了基础,即使具有部分重复的功能,当然也可以通过互联网访问传感器的信息和进行控制。


因此,最初的需求迫在眉睫:


  1. 测量所有8个锅炉喷嘴和2个锅炉喷嘴的温度。
  2. 测量设备所在锅炉房的温度和湿度。
  3. 测量室外空气的温度和湿度。 总有一天要实施取决于天气的加热控制。
  4. 在维护旧系统的同时驱动电锅炉。 锅炉为三级锅炉,可调节加热温度并提供冷却液温度反馈。 但是,出于远程控制的目的,打开/关闭加热步骤就足够了。
  5. 管理锅炉加热器。
  6. 铺设最少的电线。 与其说不打扰,不如说是因为房屋的装修已经完成。
  7. 具有方便的界面,用于管理和处理传感器读数。 该接口必须在移动设备上可访问。

还有一个小题外话。

在照片中-带有电启动器的发电机。 对于冬季启动,我不得不放置汽车电池和充电器。 并使用合成油。


在同一年的2010年,一台汽油发电机安放在了车库里。 不久,它就添加了一个自动启动控制器,它是基于Arduino微控制器独立制造的。 控制器不仅查看220V网络的存在,而且查看来自逆变器的有关电池放电的信号,并且逆变器本身提供发电机的自动输入。 总之,有可能实现一种相当智能的发电机控制算法。 通常,无论是在连接外围设备还是在编程方面,都不必担心使用微控制器。 过去,我使用C / C ++编写了大量程序。


通常,这些要求很简单,即使不是很琐碎的。 有成千上万种不同的方法来实现它们。 这就是为什么基石是选择体系结构和将在其上构建新系统的技术堆栈的原因。 在这里,系统的方法才是重要的,了解各个技术解决方案必须相互联系,以及系统肯定会进一步扩展的理解,就像家用电源系统已经发生的那样。 了解自己的能力也很重要。 因此,我不得不在Google上搜索,“获得听众的帮助”并“打电话给朋友”。


在照片中,Arduino Nano和带有天线的nRF24L01 +
我开始从基于广泛使用的Z-Wave标准的系统中查看,这极大地影响了进一步的决策,尽管Z-Wave最初是被丢弃的。 由于Z-Wave是接近我的要求的显而易见的选择,因此了解为什么放弃它很重要。 首先,当然是一个传感器的成本。 而且我只需要在8个点上测量锅炉的温度,每个点就得出3000卢布以上。 其次,标准传感器的外形尺寸不允许在锅炉喷嘴上使用。 第三,控制系统和远程访问的选择有限,它们也是专有的(您应阅读:“ limited”)并付费。 然而,具有传感器致动器的对等通信(关联)和集中式服务器-客户端管理的可能性的自组织网络的构想非常吸引人。 在朋友的建议下,他进行了一个有趣的项目 ,该项目最初看起来像是基于Vera控制器的Z-Wave系统功能的扩展,但是使用了DIY方法。 该项目使用Arduino,2.4GHz nRF24L01 +无线收发器和相应的库。 所有这些正是我的需求所需要的。 使用Arduino可以为金钱带来几乎无限的家庭自动化可能性,比Z-Wave小一个数量级(!)。 Arduino是一个非常稳定的平台也很重要。 发电机自动启动控制器,一旦安装在Arduino上,已经正常工作了7年。 鉴于开发,焊接和编程的经验,我停止了这个项目。


甚至继续。 在代码中,我完全拒绝绑定到Vera。 相反,他选择了mysensors库的作者推荐的软件控制器之一。 在研究了制造商的论坛和站点之后,他成为了开源项目openHAB 。 除了开放性,跨平台,内置强大的规则语言,移动客户端的存在以外,决定性因素还包括以下已声明的属性:“与供应商和技术无关”。 这正是具有系统意识的IT专家所需要的:将来使用来自不同制造商和标准的组件,同时最适合特定用途的扩展系统的可能性。 即 从一开始就有一种认识,那就是并不是所有的事情都需要在Arduino 完成,并且并非在Z-Wave的范围内一切皆有可能 。 同时,我决定坚持集中管理逻辑,这从一开始就是很自然的。 即 在Arduino上组装的终端设备上,将有最小的业务逻辑:打开/关闭仅用作传感器的老式传统机械开关的光,从物理参数的传感器读取和转换信息,将数据传输到服务器,从服务器接收并执行命令。 我不打算在设备网络节点之间进行任何直接交互。 所有实际的业务管理逻辑均基于openHAB规则。 现在剩下的事情很少-为openHAB选择服务器部分的硬件平台和操作系统。


openHAB下的许多DIY爱好者都选择Raspberry Pi。 这是一个经济,紧凑,安静的好解决方案。 但是,在我看来限制自己的计算能力似乎是错误的,因为我立即决定将未来的服务器用作多功能设备,例如,我想在其上部署Kodi媒体中心,并可能在将来部署其他东西,例如软件录像机。 展望未来,我要说的是,最后,Kodi集成了一个智能家居,当视频开始播放时,灯光熄灭,停止时点亮。 DVR也出现了并且已经集成。 同时,我对多媒体组件没有特殊要求,只要服务器具有HDMI和S / PDIF就足够了。 一般而言,在2015年秋天,该选择落在Hystou的无风扇台式机上(请参见AliExpress):Intel Core i7、8GB,256GB SSD,8个USB端口,包括4个3.0、2个LAN,WiFi,2个HDMI,S / PDIF,读卡器一般来说,您需要拥有DIY盒的一切所需。 然后,他花费了大约24 tr。 我从来没有后悔过这个选择,尽管我必须说WiFi对他来说不是很稳定。 但是,所有这一切之后的经历都充满信心地表明:无论您可以在哪里铺设电线,都可以铺设电线。 无论标准和频率如何,无线信道(WiFi,Z-Wave,433 MHz,869 MHz,2.4 GHz等)总是比电线差。 因此,最终将上网本连接到家庭局域网电缆。 并建立了更多不同的系统。
至于服务器的操作系统,我建议稳定性和可预测性。 具有大型社区的Linux发行版具有此属性。 我对Ubuntu更加熟悉。 尽管,由于有了跨平台,所有事情都可以在Windows上完成。


因此,选择了体系结构和堆栈。 我们在行动。


任务1.选择传感器和执行器。 冷却液和水的温度将在锅炉和锅炉的喷嘴上测量。 为此,我们将1-wire DS18B20传感器放在金属密封的外壳中,将它们方便地从外部直接安装在喷嘴上。 顶部带有传感器的管道本身被泡沫绝缘层覆盖。 当有许多类似的传感器时,1线总线非常方便。 为了测量锅炉房和街道上的空气温度和湿度,我们选择DHT22,仅因为这是标准的DIY选择。 分步管理锅炉-使用传统的五伏机械继电器,这也是DIY配电盘所熟悉的。 重要的是要注意,这些继电器与锅炉上的级开关并联连接,而不是由锅炉自动化控制的TEN继电器并联。 所有选定的外围设备都可以直接进行无干扰的编程(例如,像继电器一样),或者具有适合Arduino的库,例如1-wire / DS18B20 / DHT22。 没有并发症。


图中为一台300升锅炉。 可以看出,末端带有传感器的黑线接近每条支管,它们被合并在一个白盒中,并且一条通用的1线白线进入控制器。


任务2.与openHAB交换数据和命令。 我不得不稍作修改,因为使用openHAB时,我还不是“在你身上”。 mysensor的体系结构意味着存在用于连接到中央控制器/服务器的网关(网关),即 打开HAB。 网关本身是Arduino / nRF24L01 +上物理上独立的控制器,可以通过LAN / WiFi或串行端口连接到服务器。 由于我位于路径的开头,因此我选择“串行”并将网关放置在服务器旁边。 网关用于路由通过网关发送到mysensors网络的消息,并直接与中央控制器openHAB通信。 Mysensors消息是固定格式,易于解析。 我们在openHAB绑定序列中添加了用于通过USB连接网关的Serial,并编写了一条规则,用于解析通过USB从网关接收的mysensors网络上设备的消息。 解析消息的openHAB规则基于mysensors论坛上找到的代码。 接下来,我们编写执行器的规则-锅炉控制继电器,锅炉加热器,照明灯等。


图中显示了一个网关,一个棕色的小盒子,在扬声器中带有天线。


关于openHAB

openHAB-一个开放的解决方案,在社区的帮助下通过为将与openHAB交互的特定设备开发绑定来进行扩展。 例如,要通过USB与设备交互,必须有一个绑定串行。 类似地,对于其他设备或协议,例如Modbus,NTP,HTTP,Squeezebox,Kodi / XBMC,Z-Wave,ZigBee,Nest等。 我本人是作为活跃的Modbus绑定测试仪参与开发的。


当我忙于将网关连接到openHAB服务器时,我决定完成网关代码(以及网关本身),该代码取自mysensors.org,并向其中添加了DHT22温湿度传感器和BMP180大气压传感器,同时找到了用于大气动力学天气预报的源代码。压力。 所有这些测量和预测都传递给openHAB。
在照片中,网关在内部。 白线是DHT22,带空引脚的板子是Arduino,右下角是nRF24L01 +和BMP180。


任务3.界面和远程访问。 openHAB是一个完全可定制的系统,包括界面布局。 此标记是统一的,无论是通过浏览器还是通过移动应用程序进行的普通访问。 当然,通用标记可能并不理想,但是在智能手机上看起来不错,这很重要。 如何访问本地网络之外的openHAB服务器还有待确定。 首先,您可以(并且最重要的是,可选地)使用myopenhab.org云。 openHAB服务器使用特殊绑定直接连接到云。 该解决方案是最简单的,并且提供了完整的系统管理功能,除了从IP摄像机传输视频之外。 其次,对于那些不喜欢云的人,而我属于其中,有通常的远程访问方式,例如VPN + VNC的组合等。 由于明显的原因,我将不透露详细信息,尤其是因为此问题与本文的主题没有直接关系。 我只注意到openHAB移动客户端具有两个地址的配置。 如果在该地址看到一个openHAB服务器,则转到第一个;否则,转到第二个。 这是界面的一个非常方便的功能。 例如,您可以将云指定为第二个地址,然后openHAB始终可用,而无需使用VPN连接进行其他操作。 或指定使用任何VPN解决方案获得的虚拟地址。 或其他。


界面主屏幕向下滚动开始屏幕打开的菜单项“ Light”

标记允许您进行条件格式化,例如,当温度超过标记中指定的值时,以红色突出显示温度。 按下时会显示一些项目,例如“加热”,“轻”,“警笛”等。


仅此而已。 我们先拿起烙铁,然后依次拿起键盘。 该系统的第一个版本逐渐成形。 如您所知,食欲伴随着进食。 结果,例如,新传感器甚至新控制器被添加到系统的第一个版本中,例如,以实现宾馆自动化。 结果,在第一阶段,引入了一个系统,该系统:


  1. 在16点测量温度。
  2. 在4个点测量湿度。
  3. 测量房屋入口处至稳定器的220V网络的电压。
  4. 测量环境光。 照明用于自动打开灯。
  5. 测量大气压力并根据压力动态预测天气。
  6. 检测多个点的运动。
  7. 在一家旅馆中控制整个世界。 开关变成传感器。
  8. 驱动警报器。
  9. 单独控制电锅炉的3个阶段,保留了旧系统的功能。 它控制锅炉加热器。
  10. 检查锅炉和锅炉加热元件上是否存在电压,并读取包含锅炉加热元件的事实。 这很重要,因为首先,锅炉对冷却液的温度有反馈并可以关闭加热元件本身,其次,面板上安装了一个两级负载限制继电器,如果超过了房屋消耗阈值,它将串联断开锅炉和锅炉的连接。 该数据将进一步用于智能家居算法中。 但是在这个阶段,我不知道具体如何,只是觉得它们是必需的。
  11. 读取打开和关闭太阳能回路泵的事实。
  12. 建立每周,每天和每小时的温度图。
  13. 发送有关各种事件的推送通知。 事件几乎可以是任何事件,例如,门廊上的移动,温度超过预定阈值,电的丢失/出现等。 还发出了SMS警报。
  14. 旧的系统在物理上和逻辑上都与新系统分开,尽管相同的传感器在新系统中已部分重用。 旧系统保留了安全功能和备用监视/控制系统。

图为宾馆的电气设备。 带天线的盒子是控制器,圆形的“垫圈”是警笛,它们之间是DHT22传感器,在屏蔽罩下方是运动传感器,在左侧是12V不间断电源单元。


系统操作示例

控制器每30秒轮询一次温度传感器。 如果读数发生变化或应服务器的请求,则将每个传感器的数据分别发送到网关。 网关接收数据,并通过USB将其发送到openHAB。 在openHAB中,将触发一个规则,对消息进行解析,并将相应的温度值分配给相应的项(openHAB的基本概念)。 生成一个配置为更改该项目的规则。 如果逻辑提供了任何反应,例如“如果温度已降至某个特定水平以下”,则执行操作,例如“打开锅炉加热器”。 该命令通过USB发送到网关。 网关通过无线电向控制器发送命令,控制器接收命令并打开相应的继电器。 返回确认已收到命令。 这样的事情看起来像系统组件交互的一般方案。


结果。 最初的目标已经实现,甚至更多。 测量温度并在图形和界面中显示。 根据观察结果,很明显热水的温度永远不会升高到55度以上,并且太阳能回路中的冷却剂-60,您不必担心过热。 可以看出锅炉房的空气温度有时超过30度,您需要安装空调。 只需触摸智能手机屏幕上的虚拟开关,即可轻松控制加热。 下一个 . , , . , . . «», .
. , 24.. , Raspberry Pi 2500. Arduino AliExpress 200, (nRF24L01+, ) . – . - , . 即 .


, .

, . — 11.05.2018. , 49 . 38, 35 . . . .


. , , . , , C++, Arduino, . , openHAB. , – . . - , , . «». , , . . – . .

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


All Articles