如何构建智能家居而不是疯狂

图片

智能家具本身可以处理房子中的订单,几乎是所有未来派图片的必备品。实际上,可自动调节气候,自动打开和关闭照明灯以及家用电器的语音控制-所有这些现在都可以配置。但这需要一点经验,技术领域的基础知识(有时需要编程)以及一整套幻想。就我而言,这样做是为了只有幻想是足够的,但首先要做的是...

大约五年前,我对``智能家居''的想法产生了兴趣。首先,我制作了最简单的系统。她通过运动传感器控制了走廊和浴室的光线,通过湿度传感器控制了引擎盖,还通过了气象站-当时每个人都为之疯狂。每个自重的DIY盒都必须制作一个气象站。

首先,我为公寓配备了可控制的继电器,以自动打开走廊和浴室的灯。看起来像这样:一个传感器站在走廊上,第二个传感器站在浴室中。

如果有人要去洗手间,那么走廊传感器会检测到他的动作,并立即打开走廊和洗手间的灯。同时,如果没有人进入洗手间,那么这已经被位于洗手间内的传感器固定了。 15秒后,灯在那里熄灭。如果有人进入洗手间,则走廊上的灯会在一分钟后熄灭。 

我也想到了这样的情况,如果有人坐在浴室的“白人朋友”上时想得太多(我有一个组合浴室)。为此,浴室的灯分为两组。在浴室中的传感器停止检测运动3分钟后,一个关闭,另一个在5分钟后关闭。因此,超过五分钟无法在光亮的浴室中保持一动不动。很有纪律。但是,您总是可以动动手,继续思考要点。

湿度传感器也在浴室内工作,如果湿度超过50%,它将自动启动抽油烟机。将房间通风到45%湿度后,通风橱就关闭了。 

管理人员通过Arduino平台进行了-或更确切地说是尝试。 


制造商的网站拍摄的照片

几乎立即,很明显,这个平台并不完全是关于创建智能家居的。使用Arduino的主要缺点是该平台无法在没有网络的情况下工作,没有它,就无法获得真正的统一生态系统。当然,我可以重做Arduino并添加网络支持,但是为什么呢?我选择了一条更简单的路径,然后将此平台更改为另一个平台。 

在玩完Arduino之后,我将房子重新连接到ESP-8266开发板。实际上,这是相同的Arduino,但是有了Wi-Fi +,它的尺寸更加紧凑。该模块在智能家居产品制造商中仍然很受欢迎。 


互联网上拍摄的照片

同时,我试图使智能家居更加智能。例如,解决全天候地板采暖或始终打开空调的问题。为此,我购买了Beok中文WiFi温控器。他们允许远程关闭地暖,但必须通过电话中的特殊应用程序来完成。 

我使用Broadlink RM Pro红外信号仿真器解决了空调的远程控制问题。没什么复杂的:您可以记录从空调控制面板到仿真器的信号(可以使用遥控器控制任何技术),然后在电话上按应用程序中的一个按钮,仿真器将播放先前记录的信号。对于空调,我有机会打开和关闭空调,设置操作模式并远程设置其他参数。  

还安装了Livolo开关。在他们的帮助下,我还可以通过空气打开和关闭灯光。 



缺点:为了控制,我不得不再次安装一个单独的应用程序,并且没有反馈,也就是说,如果有人使用常规开关手动打开或关闭该灯,则无法看到该灯亮着。 

房子中还出现了各种受控的WiFi继电器,例如Sonoff或Tuya,甚至是昂贵的Danalock,用于锁定公寓,这也需要单独的应用程序。我几乎在中国的速卖通网站上购买了所有这些小东西(达纳洛克除外),在那儿它们花了一分钱,让我无需大量投资就能进行实验。 

Tion通气机是最早购买的比较认真的产品之一。通过自动CO2控制,他或多或少地适应了问题,但是冬天必须不断地手动调节空气加热的温度。同样,要进行管理,有必要安装一个单独的应用程序。 


这张照片是从制造商的网站上拍摄的,当时

我尝试过的所有传感器和控制器我都不记得了。我的智能手机无法使用应用程序进行管理。这是一个整个动物园,必须不断跟随。我试图通过各种聚合器(例如HomeBridge / MajorDomo等)来组合这些应用程序的管理。但是每个人都表现出明显的缺点:

  • 不友好的界面,有时只是糟糕的界面
  • 缺乏对所有使用过的应用程序的支持
  • 复杂的连接

寻找用于集中管理这种数量的传感器,控制器和其他控制系统的应用程序并没有成功。然后,我试图独立地想到一种“智能”设备-非常Tion呼吸器。我编写了一个脚本,可以根据室温自动控制加热温度。事实是通风系统没有自动调节空气加热温度。原来,这个房间要么很热,要么很冷。没有办法取得中间立场。在这里,借助书面脚本和文字帮助解决了这个问题。 

呼吸脚本的成功使我创建了自己的应用程序来管理智能家居。主要目标是创建一个程序,该程序可以方便地集成智能设备,多级自动化条件以及管理房屋中所有设备的能力。 

我自己从事后端和前端应用程序开发大约一年了。 

服务器端是用NodeJS编写的。之所以选择NodeJS,是因为社区发达,在市场上几乎所有设备上都实现了协议。客户端部分以Angular(Ionic)编写,并在Android / iOS上运行。通常,经典的客户端-服务器体系结构。

在注释上:在处理应用程序的过程中,我获得了有关编写设备驱动程序时使用杂质的技术见解。我不知道,也许对某些人来说是初级的,但呼吸确实变得更容易了。

我多次重写设备驱动程序,直到出现类似以下情况:

设备之一的示例代码
import {XiaomiSubdeviceV2} from '../xiaomi.subdevice.v2';
import {load_power} from '../capabilities/load_power';
import {power_plug} from '../capabilities/power_plug';
import {PowerPurpose} from '../../base/PowerPurpose';
import {Relay} from '../../base/types/Relay';
import {HomeKitAccessory} from '../../hap/HomeKitAccessory';
import {Lightbulb2Accessory} from '../../hap/Lightbulb2Accessory';
import {Yandex} from '../../yandex/Yandex';
import {YandexLightOrSwitch} from '../../yandex/YandexLightOrSwitch';

export class LumiPlug extends XiaomiSubdeviceV2.with(Relay, power_plug, load_power, PowerPurpose,
  HomeKitAccessory, Lightbulb2Accessory,
  Yandex, YandexLightOrSwitch) {

  onCreate() {
    super.onCreate();
    this.model = 'Mi Smart Plug';
    this.class_name = 'lumi.plug';
    this.driver_name = 'Mi Smart Plug';
    this.driver_type = 3;
    this.parent_class_name = 'lumi.gateway';
  }

  getIcon() {
    return 'socket';
  }
}


最重要的是,尽管有很多不同的设备,但它们都做大致相同的事情并提供大致相同的信息。因此,设备的所有功能都放置在单独的杂质中,最终的驱动程序最终由杂质组成。例如,应用程序支持许多具有开/关功能的设备。它是由单独的杂质制成的,所有设备均相同使用。小学,沃森!

这样做的结果是:新设备的任何驱动程序都可以非常快速,轻松地编写,因为一切都是标准化的,因此无需担心所接收信息的进一步存储。对于全新的协议(我还没有),还会写入基于现有协议的杂质。他们已经接收到设备信息,并将其沿链进一步传输。这种方法使我们可以减少数十倍的代码量(最初,每个驱动程序都是类似驱动程序的副本)。

所以渐渐地,我经历了地狱的各个方面,完成了后盾和前线。当应用程序具有相当宽容的外观时,我想:为什么不与公​​众共享您的开发?找到了该项目的合作伙伴,并找到了助手来提醒该应用程序。 

首先,有必要记住应用程序的设计。为此,我不得不求助于专业设计师。我天真地相信这将需要3-4个月的时间,但最终该过程继续进行。尽管应用程序的结构与原始来源相比并没有太大变化,但实际上所有内容都必须重做。

同时,我(不是一个人,而是与一群项目合作伙伴一起)为智能家居购买了最受欢迎的设备,并在不支持这些小工具的情况下添加了一个应用程序。然而,很快,人们发现所有智能设备都没有足够的资金,因此我们决定与市场上现有的厂商进行对话,并同意免费获得设备的免费测试样品。我们并没有被拒绝,Wirenboard和MiMiSmart成为了第一批重要的供应商。

因此,我与其他人一起使用经典的客户端-服务器架构创建了一个用于智能家庭自动化的新应用程序,该应用程序可在任何平台上使用,并具有便捷的现代设计。认识BARY *。

*这个名字不是巴里·阿里巴索夫(Bari Alibasov)的名字,而是巴里摩尔的男管家阿瑟·道尔(Arthur C. Doyle)所著的《巴斯克维尔的猎犬》一书中的人物-您的个人“智能男管家”。 

发生了什么:用美丽的图画和猫描述应用程序


主屏幕是一个方便的仪表板,能够查看和管理自动化房间的参数。方便-这是关键词,因为我尝试自己使用的那些应用程序中的仪表板必须手动配置。这不是最令人愉快的消遣,



房屋可以分为多个区域,也可以分为多个房间。每个房间都有各种参数:温度,湿度,当前耗电量等,以及选定的动作。如果单击该房间,我们将进入连接到它的设备列表:



在这里,您可以打开/关闭设备,还可以看到它的主要参数。切换到设备时,将提供具有完整功能列表的更详细的控制。 

使用相同的设置连接所有设备。对于许多设备,都有一个连接向导。没有配置供那些喜欢热点的人使用!基本上,归结为指定设备的IP地址(对于许多设备,会自动搜索)。如果IP地址突然更改,则可以,服务器将自动在新地址处找到它。



与Apple HomeKit集成,用于通过Siri进行语音控制。 BARY支持的所有设备都只需单击一下即可与Apple HomeKit集成(向HomeBridge风扇问好)。并非没有Yandex Alice的支持。在界面命令方面,她更加友好。例如,Siri不想使用“关闭窗帘”命令关闭窗帘,无法在电视上设置特定的音量级别,等等。 Yandex.Alice没有这种新奇的东西。 

为了方便管理智能土地,已实现了自动化:满足一组条件时执行任何动作的规则。自动化是逻辑的,多层次的,即您可以执行以下操作:“条件1和(条件2或条件3)。”全部都在一个漂亮的逻辑自动化编辑器中:



就我个人而言,我已经有一百个自动化程序,并且其中任何一个都可以很快找到,因为一切都按房间和设备分组:



该应用程序还支持脚本。场景是在自动化的某些条件下执行的复杂操作。对于我的智能家居,我仅使用标准设备:



我已经离开家/通过Apple TV返回家-当每个人离开家或有人回家时,它会自动打开/关闭。您回家了,来自第1频道的播音员满怀悲伤的目光已经在那里与您会面。好,很好吗?

那么,什么样的智能家居却无法看猫呢?



您可以连接任何能够传送RTSP流的摄像机。 

另外,我想谈一谈统计数据块。事实证明是很有启发性的:



在图例中,红色横条是最近六个月与平均值的偏差,灰色横条是平均值内的流量。

在图中,我9月份的统计数据。天很冷,还没有加热,所以在通风处不断加热。

您还可以查看任何已连接设备的统计信息:



顺便说一下,自动化和统计信息的可用性已将电力成本降低了2倍以上。

所有发生的事件都可以存储并可以查看:



在主页上,还有一个特殊的选项卡,该选项卡收集用户选择的所有主要指标:



顺便说一句,通过小米门/窗打开传感器实现水计量。为此,将脉冲计数器的输出焊接到特殊触点上,而不是簧片开关,然后在BARY中创建一个虚拟计数器,您可以在其中将该传感器指定为脉冲源。

架构与安全


客户端-服务器交换使用AES技术进行加密,并且服务器直接位于自动机房内部。我认为,这可以最大程度地保护系统免受第三方不必要的干预。

如果没有白色IP地址,则可以连接云。它将充当中介,而无法解密命令,因为 密钥在服务器上。 

去哪儿


服务器端几乎可以在任何现有平台上运行-感谢NodeJS。对于最常见的平台,我们准备了可以自动完成所有工作的脚本。

对于基于Debian Stretch的Raspberry Pi:

wget -qO- "http://bary.io/install?target=pi" | sudo bash

目标参数负责目标平台,可以具有以下值:
树莓派(Debian Stretch)
pi
树莓派(Debian Buster)
pi_buster
修补匠板(Debian Stretch)
待定
有线板(Debian Stretch)
b

如果有人想在另一个平台上安装,请写信给我们,我们将更新脚本。如果遇到任何困难-也要写。我们确实需要反馈。 

该应用程序可在Google PlayApp Store上免费获得也许到今年年底,申请将被支付。

结论


我为什么写这篇文章?主要目标是获得您的反馈。

目前,该项目正在快速发展,我们的整个团队都在努力使市场上可用的受支持设备的清单最大化。尽管我不是一个人从事这个项目,但是任务仍然是一样的-创建最方便的应用程序,该应用程序考虑到用户的意愿并解决参与独立安装家庭智能解决方案的每个人的问题。

我们愿意就可能的集成进行对话,并准备尽快对有兴趣的公司实施设备支持。您将获得现成的应用程序,而不会浪费时间开发软件。我们为每种口味和颜色提供了广泛支持的设备。一切都很好。 

近期计划和彩虹愿望清单


目前,我和我的团队正在积极参与视频存储单元的开发。可以将视频放置在家庭存储或云服务中。我认为明年年初将有可能谈论新版本。是否有可能在主人不在家的时候复习一只逗猫的最好的珍珠? 

明年,我们计划与各种服务进行更多集成:购买和待办事项清单,日历等。他站起来,看着一个屏幕-一切都在全景中。几个交钥匙项目显示此任务是相关的。

我们还计划开始使用预安装的软件生产控制器,以用于智能家居的批处理解决方案(当前,批处理解决方案“软件+硬件”已与我们的合作伙伴一起提供)有线委员会

并支持Google Home和Amazon Alexa。好吧,当然可以扩大支持设备的范围。

顺便说一下,谁在乎,您可以在我们的网站上查看支持的设备列表(不完整),如果列表中未找到任何内容,请在电报组中进行询问

如果您分享现有应用程序中缺少的内容以及将在我们的位置中添加的功能,我们将不胜感激。

谢谢大家的阅读。让我们共同打造更智能的家园!

All Articles