智能房屋。开发和实施经验

在本文中,我们将回顾在两室公寓中开发和实施智能家居的经验。在这里,将介绍作者对智能家居设计和开发方法的观点,以及已经成功使用了四年的交钥匙解决方案。


欢迎那些想让自己的家变得聪明的人。

什么是智能家居?我们将摆脱官方的定义,并从消费者的角度来看待它。当作者第一次与他的朋友分享他对智能家居的想法时,他说:“你不可以自己动手打开灯吗?”以他自己的方式,他是对的-作者很懒惰(一个玩笑)。智能家居的想法恰恰在于,他本人将为我们进行操纵,以控制照明,电源供应,同时节省资源并确保安全。因此,智能家居是旨在改善房屋中人们生活质量的软件和硬件解决方案的综合体。是的,没错,应该将智能家居视为让您的生活更舒适的因素,而不是一个大而昂贵的玩具。在这种概念下,文章的作者认为智能家居的语音控制是不必要的,并认为智能家居应实现的功能以及将来还会预见的典型人类行为。

行为模式


当您想到智能家居时,从何处开始?随着技术的选择,中央控制器?不,不再。首先,问问自己一个问题-为什么我需要一个智能家居?他会为我做什么?根据本文的作者,智能家居可以提供四组功能:

  • 行为模式-支持使用电器和照明设备的典型居住行为。
  • 舒适的环境-根据条件(例如白天,晚上,客人,浪漫之夜等)创造舒适感。
  • 信息支持-有关居住在公寓中的人们的各种提示,包括天气,交通堵塞,时事,例如朋友的生日等。
  • 安全回家-紧急预防,快速关闭电器,安全功能。

应该仔细考虑所有这些功能组,并与居住在公寓中的所有人员进行协调,然后才可以讨论设计智能家居系统。我们使用本文作者的智能家居功能示例来展示这种设计的示例。

因此,让我们从行为模式开始。要看到他们,您需要一段时间观察自己和家人。在观察的框架中,我们记录:一个人几点起床,他总是在同一时间或一定间隔内进食,从他醒来离开房屋的那一刻起,沿着公寓的路线,从他回家到结束的时间沿着公寓的路线。结果,我们得到了一张对我们很重要的图片:一个人使用什么样的光源,一个舒适的生存环境需要什么-在浴室里铺上温暖的地板,柔和的灯光,晚上昏暗的灯光等。必须为每个家庭成员找到这种模式并获得介于两者之间的东西不会破坏他人的舒适感。假设丈夫每天起床早于妻子。

为了不叫醒您的妻子,您可以打开天花板上的绿色弱光五分钟,而不要使用头顶上的灯,然后再将其关闭(根据作者的经验,绿色弱光不会干扰其他人的睡眠)。结果,实现了两种模式-周末早晨和一周中的早晨。在这些模式的框架内,智能家居本身会在正确的时间打开照明,收音机会自动关闭,并借助各种颜色的吸顶灯告诉您剩下多少时间才能开始工作。模式本身是由智能家居根据Google日历中事件开始之前早上程序所需时间的计算而启动的。为此,开发了一种特殊的智能闹钟,用于分析有关即将发生的事件的数据。

为了创造一个舒适的环境,当我们晚上去厨房时,还必须观察哪种照明对我们来说是舒适的?我们是每天早晨还是仅在周末打开温暖的地板?在看电视时我们应该设置哪种照明?通过这样的观察,作者实现了房间内的绿色背光,在公共场所,头顶灯是标称值的10%,由运动传感器命令打开和关闭。当客人到达时,您可以实现背光颜色的平滑变化,在电视上用壁炉将视频“扭曲”,并从音频列中播放悦耳的音乐。而所有这些都可以通过控制面板或电报发出一个命令。在这组功能的框架中,除了实现夜间模式外,作者还意识到在打开电视的同时打开明亮的白色背光,来宾模式,背光颜色平滑变化。

信息支持是可选的,但很愉快。毕竟,这很好,当您上班时,充满人声的充满爱心的智能家居提醒您需要带雨伞,因为外面正在下雨。在晚上,回到家后,经过漫长的工作一天,静静的听音乐总是很愉快的,而相同的智能家居会自动为您提供音乐。

最后,是一个安全的家。任何智能家居的基本功能都是在人们离开家时关闭照明和电器。但是,如果您家里有一个好奇的学生,他可以在父母工作时做事呢?智能家居将关闭所有插座,几乎不会造成麻烦。当父母来时,系统会识别到这一点,并打开整个公寓的电源。这篇文章的作者有一个案例,他忘了关掉电炉去上班了。并且仅由于智能房屋自动关闭所有设备这一事实并没有导致不幸。

建筑


完成所有愿望后,您就可以开始开发智能家居的体系结构。在此,重要的是要考虑系统将管理的房间的规模。您必须事先确定电气和控制线的拓扑。理想的选择是星形拓扑,其中每个用户都有自己的电源线,并且所有控制电子设备都组装在一个面板中,紧随安装面板开关的经典面板之后。一种更经济的选择是在俄罗斯建筑中将“公共总线”布线用作建筑商时,并且将控制继电器直接连接到设备前面的电路。这种方法的缺点是继电器后续维护的复杂性,因为继而可以通过拉伸天花板,瓷砖或墙纸将其关闭。迄今为止,有一些继电器可以与电气设备一起直接安装在安装盒中,但要比安装在俄罗斯城市新建筑物中的继电器更深。

定义智能家居架构的下一个重点是控制通信。管理通信有两种类型:

  • 到每个开关或继电器的单独通信线,或由一条通信线控制的继电器组,例如MegaD-2561(https://ab-log.ru/)。优势-可靠性,劣势-附加通信线路的高成本
  • 无线电控制。每个继电器都由通过空中传输的命令控制。该方法的优点包括易于安装和无需附加控制线。缺点是无线电信号会由于外部干扰而衰减,因此命令可能无法到达继电器。作为此类继电器的示例,我们可以引用本文作者使用的Noolite系统(http://noolite.by/)。

基于经济考虑,本文的作者针对智能家居选择了一个无线电频道。为了增加系统的灵活性,每个“消费者”都有自己的电线。

智能家居架构中最重要的决定是控制方案-分散式或集中式。我们将详细分析它们中的每一个
在分散控制方案中,所有设备都是互连的,并且系统中没有单个决策中心。此处实现了“每个彼此”的连接。实际上,这与通常的照明控制电路没有什么不同,不同之处在于开关和继电器本身具有一点“智能”,例如能够通过超时关闭灯,或者通过单个开关立即打开由不同控制的多个光源。中继。在这种方案中,允许存在智能家居控制器,该控制器还接收有关光源状态的通知,并可以根据嵌入式逻辑将控制命令发送到继电器。



该图显示了来自按钮(Button)的命令被直接发送到与其关联的继电器,但是,该命令也被发送到控制器,只需将按下的事实通知给控制器。同时,继电器在更改其状态时也会将此情况通知控制器。这样的方案是绝对可靠的,因为在控制器发生故障的情况下,照明仍然可以工作,但是不会有其他功能。另一方面,这种方案的灵活性较差,因为例如根据一天中的时间来实现具有不同继电器的一个开关的操作逻辑的改变将更加困难。对于这样的任务,集中方案是合适的。



从该图中可以清楚地看到,所有命令都被发送到智能家居控制器,并且所有控制也都由该控制器执行。这种方案的主要缺点是单点故障。当控制器发生故障时,整个系统将无法运行,但是,这种解决方案的一个重要优点是设备管理的灵活性很高,可以根据居民的喜好完全改变工作逻辑。基于这样的事实,即控制器出现故障的可能性很小(在系统的四年运行期间,只有一个严重的故障是由于存储卡引起的),因此作者为智能家居选择了集中式架构方案。

实作


为了实现智能家居,除了本文不打算对其进行综述的硬件解决方案之外,您还需要选择一个软件平台。现在市场上有很多基于自由软件的解决方案。根据作者的说法,以下项目值得考虑(包括作者直接使用的系统):

  • Majordomo-系统是用PHP编写的。对于编程,使用对象的概念,它们的属性和方法。它支持大量设备,并拥有庞大的俄罗斯社区。快速入门非常有用,但是,此系统使用MySQL DBMS和经典Web应用程序的体系结构是其明显的缺点。作者在智能家居的第一个版本中使用了该系统。您可以将PHP或Google Blockly用作逻辑编程工具。
  • OpenHAB — , Java. , . Google Blockly
  • Node-red — , , (rest, mqtt . .). , , , . .
  • ioBroker — JavaScript (Node JS). , . — . JavaScript, Google Blockly Node-red, ioBroker . , 2019 .

当前,智能家居本身是基于Rapsberry PI 3和Rapsberrian操作系统实现的。如前所述,ioBroker系统用作控制系统。照明和电源管理基于Noolite技术。作为硬件附件,使用了GSM模块,该模块用于在没有Internet的情况下进行紧急通知,并且还用作来自受信任电话的SMS的附加系统控制通道。

设备之间的交互逻辑是基于JavaScript,Google Blockly和Node-red脚本实现的。

JavaScript是NodeJS的常规程序。例如,编钟的钟声是在作者的智能家居中实现的,如下所示:

schedule('0 0,8-23 * * *',() =>
	{
	 let currentTime = new Date();
	 let hour = currentTime.getHours();
	 if(hour > 12)
		hour -= 12;
	 let file = hour.toString() + 'h.mp3';
            playSound('audio/' + file); 
           });

此处,ioBroker代码每小时在8:00-23:00间隔内调用一个函数,该函数生成文件名,在该文件中记录了相应小时的提示音,并在外部设备上播放所需的音频文件。

Google Blockly允许您使用可视化编程语言编写代码,而无需深入了解JavaScript。例如,这就是使用运动传感器在走廊上打开灯的方式:太阳落山后,在夜间模式下以100%的亮度打开-以10%的亮度打开:



在这里我们看到运动传感器的状态发生变化。状态更改时将调用此代码,并且该代码包含“ true”。

使用Node-red,我们可以实现简单的控制方案。例如,在浴室中,我们可以使用一个简单的代码来控制运动传感器发出的光:



当运动传感器更改其状态时,将自动执行Node-red脚本块。当运动传感器发送“关闭”命令时,脚本会给出5分钟的延迟,此后它将关闭灯。如果运动传感器在5分钟内发送“打开”命令,则延迟将被重置并且指示灯将保持点亮。对Node-red块的实现细节的讨论超出了本文的范围。

因此,得益于采用智能家居作为改善生活质量的系统的方法,该项目的作者得以实现自己的智能家居梦想,而无需承受可观的经济成本。在该项目启动时,一个两居室公寓的费用约为50,000卢布(811美元)。

All Articles