利特科团结

前一段时间,我们向您介绍了智能恒温器 。 本文最初被认为是其固件和控制系统的演示。 但是,为了说明恒温器的逻辑以及我们已实现的功能,有必要概述整个概念。



关于自动化


按照惯例,所有自动化可以分为三类:
类别1-单独的“智能”设备。 您可以从不同的制造商处获得灯泡,茶壶等。 优点:每种设备都会扩大商机并增加舒适度。 缺点:每个新制造商都需要自己的应用程序。 来自不同制造商的设备的协议通常彼此不兼容。

类别2-安装单板PC或与x86兼容。 这消除了对计算能力的限制,并且在此计算机上安装了MajorDoMo或用于管理智能家居的任何其他服务器分发。 因此,大多数制造商的设备都连接在单个信息空间中。 即 出现您的智能家居服务器。 优点:在单个中心下的兼容性,可提供高级管理功能。 缺点:万一服务器发生故障/故障,整个系统将返回到阶段1,即 变得支离破碎,或变得无用。

类别3是最核心的版本。 在维修阶段,所有通信都已铺设好,所有系统都已重复。 优点:一切都达到理想,然后房子变得真正聪明。 缺点:与类别1和类别2相比,成本极高,需要事前思考并考虑每件事。

大多数用户选择选项一,然后无缝切换到选项二。 并在将来提供最持久的覆盖率选项3。

但是有一个选项可以称为分布式系统:每个单独的设备既是服务器又是客户端。 实际上,这是一种尝试,将选项1和选项2结合起来。发挥所有优点,消除缺点,占据中间位置。

也许有人会说这样的选择已经被开发出来了。 但是,这些决定的目标很狭窄; 对于精通编程的人。 我们的目标是以终端设备的形式以及将现有设备集成到我们的系统中的形式来降低进入此类分布式系统的门槛。 对于恒温器,用户只需卸下旧的恒温器,安装一个智能恒温器,然后将其传感器连接到该恒温器即可。 无需任何其他操作。

让我们通过一个示例考虑将其集成到我们的系统中。

想象一下,我们的网络中有8个Sonoff模块。 一些用户可能对Sonoff云具有足够的控制权(类别1)。 一些第三方固件将使用第三方固件并平稳地移至类别2。大量第三方固件均以相同的原理工作:将数据传输到MQTT服务器。 OpenHub,Majordomo或任何其他目的均达到相同的目的-将不同的设备组合到位于Internet或本地网络上的单个信息空间中。 因此,必须存在服务器。 从这里开始,出现了主要问题-服务器故障时,整个系统将自动停止工作。 为了避免这种情况,系统变得更加复杂,添加了手动控制方法,这些方法在服务器发生故障时可以重复执行自动化操作。

我们走了一条不同的道路,每个设备都是自给自足的。 因此,服务器不发挥决定性作用,而只是扩展功能。

回到思想实验。 同样,采用相同的8个Sonoff模块并在其中安装Lytko固件。 在所有Lytko固件中,均实现了SSDP功能。 SSDP是基于一组用于通告和发现网络服务的Internet协议的网络协议。 对请求的响应可以是标准响应,也可以是高级响应。 除了标准功能外,我们在此答案中还包括在网络上创建设备列表的过程。 因此,设备本身相互查找,并且每个设备都有这样的列表。 SSDP工作表示例:

"ssdpList": { "id": 94967291, "ip": "192.168.xx", "type": "thermostat" }, { "id": 94967282, "ip": "192.168.xx", "type": "thermostat" } 

从示例中可以看到,该列表包括设备ID,网络IP地址,块类型(在我们的示例中为基于Sonoff的恒温器)。 该列表每两分钟更新一次(此间隔足以响应网络上设备数量的动态变化)。 因此,我们无需用户采取任何行动即可跟踪设备的添加,修改和断开连接。 该列表发送到浏览器或移动应用程序,脚本本身形成具有给定数量的块的页面。 每个块对应一个设备/传感器/控制器。 从视觉上看,列表如下所示:



但是,是否其他其他无线电传感器通过cc2530(ZigBee)或nrf24(MySensors)连接到esp8266 / esp32?

关于项目


市场上有各种分布式系统。 我们的系统允许您与最流行的集成。

以下是一些项目,它们试图通过不同制造商之间的不兼容来改变这种状况。 例如,这是SLS GatewayMySensorsZESP32ZigBee2MQTT绑定到MQTT服务器,因此例如不适合。

MySensors的一个实现选项是基于ESP8266的网关。 其他示例在ESP32上。 在其中,您可以实施我们检测和创建设备列表的原理。

让我们做另一个思想实验。 我们有一个网关ZESP32或SLS网关,或MySensors。 如何将它们组合在单个信息空间中? 我们将SSDP协议库添加到这些网关的标准功能中。 通过SSDP访问此控制器时,它将在标准答案中添加与其连接的设备列表。 基于此信息,浏览器将形成一个页面。 一般而言,它将如下所示:


网页界面


PWA申请

 "ssdpList": { "id": 94967291, //    "ip": "192.168.xx", // ip    "type": "thermostat" //   }, { "id": 94967292, "ip": "192.168.xx", "type": "thermostat" }, { "id": 94967293, "ip": "192.168.xx", "type": "thermostat" }, { "id": 13587532, "type": "switch" }, { "id": 98412557, "type": "smoke" }, { "id": 57995113, "type": "contact_sensor" }, { "id": 74123668, "type": "temperature_humidity_pressure_sensor" }, { "id": 74621883, "type": "temperature_humidity_sensor" } 

该示例表明,设备是相互独立添加的。 连接了3个具有自己的IP地址的恒温器和5个具有唯一ID的不同传感器。 如果传感器连接到Wi-Fi网络,则它将具有自己的IP;如果传感器连接到网关,则设备的IP地址将是网关的IP地址。

为了与设备通信,我们使用WebSocket。 与获取请求相比,这使您可以最大程度地减少资源成本,并在连接或更改时动态地接收信息。

绕过服务器直接从本机所属的设备中获取数据。 因此,如果任何设备出现故障,系统将继续工作。 Web界面不仅显示列表中缺少的设备。 但是,如果有必要,丢失的信号将以通知的形式出现在用户的应用程序中。

实现此方法的首次尝试是PWA应用程序。 这使您可以将块的基础存储在用户设备上,并仅请求必要的数据。 但是由于结构的特殊性,这种选择较差。 唯一的出路-用于Android和IOS的本机应用程序,目前正在积极开发中。 默认情况下,该应用程序将仅在内部网络上运行。 如有必要,您可以将所有内容转移给外部控制。 因此,当用户离开本地网络时,应用程序会自动切换到云。

外部管理-页面的完全重复。 激活页面后,用户可以登录服务器并通过个人帐户管理设备。 因此,服务器扩展了功能,使您可以在家庭外管理设备,而不必绑定端口转发或专用IP。

因此,以上选择没有服务器方法的缺点,并且还具有连接新设备的灵活性形式的多个优点。

关于恒温器


考虑以我们的恒温器为例的控制系统。

提供者:

  1. 每个恒温器的温度控制(显示为单独的单元);
  2. 设置恒温器的时间表(早晨,白天,晚上,晚上);
  3. 选择Wi-Fi网络并连接设备;
  4. “无线”更新设备;
  5. 配置MQTT;
  6. 配置设备连接的网络。



除了通过Web界面进行管理之外,他们还提供了经典的一种-通过点击显示屏。 板载的是Nextion NX3224T024 2.4英寸显示器。 由于使用该设备的简便性,选择落在了他身上。 但是正在开发中的是基于STM32的自己的监视器。 它的功能并不比Nextion差,但价格会更低,这将对设备的最终价格产生积极影响。



像任何自重的恒温器屏幕一样,我们的Nextion可以:

  • 设置用户所需的温度(使用右侧的按钮);
  • 打开和关闭计划的操作模式(按钮H);
  • 显示继电器操作(左侧箭头);
  • 具有保护儿童免受伤害的功能(在锁定被移除之前,物理咔嗒声被阻止);
  • 显示WiFi信号强度。

另外,使用监视器,您可以:

  • 选择用户安装的传感器类型;
  • 管理儿童保护功能;
  • 更新固件。



通过单击WiFi栏,用户将找到有关所连接网络的信息。 QR码用于配对HomeKit固件中的设备。



显示器的工作演示:



我们开发了一个演示页面,其中包含三个连接的恒温器。

您会问:“您的恒温器有什么特点?”现在市场上有许多带有Wi-Fi功能,定时工作和触摸控制的恒温器。 发烧友已经编写了用于与最流行的智能家居系统(Majordomo,HomeAssistant等)进行交互的模块。

我们的恒温器与此类系统兼容,并具有上述所有功能。 但是其独特之处在于,由于系统的灵活性,恒温器正在不断改进。 每次更新时,功能都会扩展。 对于标准的系统管理方式(根据计划),我们将添加一种自适应方式。 该应用程序允许您获取用户的地理位置。 因此,系统将根据其位置动态更改操作模式。 天气模块将使您能够适应天气条件。

和可扩展性。 任何人都可以用我们的温控器代替通常安装的温控器。 用最少的精力。 我们选择了市场上最流行的5种传感器,并增加了它们的支持。 但是即使在传感器具有独有特性的情况下,用户也可以将其连接到我们的恒温器。 为此,您需要校准恒温器以与特定传感器配合使用。 我们将提供说明。

连接恒温器或任何其他设备时,它同时出现在任何地方:在Web界面和PWA应用程序中。 自动添加设备:只需将其连接到Wi-Fi网络即可。

我们的系统不需要服务器,万一发生故障,它也不会变成南瓜。 即使组件之一发生故障,系统也不会根据紧急情况启动。 控制器,传感器,设备-每个元素都是服务器和客户端,因此是完全自治的。

对于那些感兴趣的人,我们的社交网络: TelegramInstagramTelegram NewsVKFacebook

电子邮件:shop@lytko.com

PS,我们不敦促放弃服务器。 我们还支持MQTT服务器,并拥有自己的云。 我们的目标是将系统的稳定性和可靠性提高到一个全新的水平。 这样服务器就不是弱点,而是对功能的补充,使系统更加方便。

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


All Articles