利特科联合

前段时间我们给你介绍过 智能恒温器。 本文最初是为了演示其固件和控制系统。 但为了解释恒温器的逻辑以及我们实现的内容,有必要概述整个概念。

利特科联合

关于自动化

按照惯例,所有自动化可以分为三类:
第1类 — 单独的“智能”设备。 您从不同的制造商购买灯泡、茶壶等。 优点:每种设备都扩展了功能并提高了舒适度。 缺点:每个新制造商都需要自己的应用程序。 不同制造商的设备的协议通常彼此不兼容。

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

第3类 - 最硬核的选择。 在修复阶段,所有通信均已铺设,所有系统均已复制。 优点:一切都变得完美,然后房子变得真正智能。 缺点:与1类和2类相比极其昂贵,需要提前考虑所有事情并考虑到每一个小细节。

大多数用户选择选项一,然后顺利地转向选项二。 然后最坚持的人会选择选项 3。

但有一个选项可以称为分布式系统:每个单独的设备都将既是服务器又是客户端。 本质上,这是一种尝试将选项1和选项2结合起来。取其优点,消除缺点,达到中庸之道。

也许有人会说,这样的选择已经开发出来了。 但此类决策的针对性有限; 对于精通编程的人来说。 我们的目标是降低进入此类分布式系统的门槛,无论是通过终端设备还是将现有设备集成到我们的系统中。 对于恒温器,用户只需拆下旧的恒温器,安装智能恒温器,然后将现有的传感器连接到它即可。 无需任何额外步骤。

让我们通过一个例子来看看如何集成到我们的系统中。

假设我们的网络上有 8 个 Sonoff 模块。 对于某些用户来说,通过 Sonoff 云(类别 1)进行控制就足够了。 有些将开始使用第三方固件,并顺利进入类别 2。大部分第三方固件的工作原理相同:将数据传输到 MQTT 服务器。 OpenHub、Majordomo 或任何其他服务都有一个目的 - 将不同的设备整合到位于互联网或本地网络上的单个信息空间中。 因此,服务器的存在是强制性的。 这就是主要问题出现的地方——如果服务器出现故障,整个系统就会停止自主工作。 为了防止这种情况,系统变得更加复杂,添加了手动控制方法,以在服务器发生故障时重复自动化。

我们走了一条不同的道路,每台设备都是自给自足的。 由此可见,Server并不起决定性的作用,只是扩展了功能。

让我们回到思想实验。 让我们再次使用相同的 8 个 Sonoff 模块并在其中安装 Lytko 固件。 所有Lytko固件都有该功能 固态硬盘。 SSDP是一种基于互联网协议族的网络协议,用于网络服务的广告和发现。 对请求的响应可以是标准的,也可以是扩展的。 除了标准功能之外,我们还在此答案中包括创建网络上的设备列表。 因此,设备本身会找到彼此,并且每个设备都会有这样一个列表。 SSDP 表示例:

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

正如您从示例中看到的,该列表包括设备 ID、网络上的 IP 地址、设备类型(在我们的示例中为基于 Sonoff 的恒温器)。 该列表每两分钟更新一次(这个时间足以响应网络上设备数量的动态变化)。 这样,我们就可以跟踪添加、更改和禁用的设备,而无需任何用户操作。 该列表被发送到浏览器或移动应用程序,并且脚本本身生成具有给定数量的块的页面。 每个块对应一个设备/传感器/控制器。 从视觉上看,该列表如下所示:

利特科联合

但是,如果其他无线电传感器通过 cc8266 (ZigBee) 或 nrf32 (MySensors) 连接到 esp2530/esp24 会怎样?

关于项目

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

以下项目试图以某种方式改变不同制造商之间不兼容的情况。 例如,这是 SLS网关, 我的传感器 или 泽普32. ZigBee2MQTT 与 MQTT 服务器绑定,因此不适合该示例。

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

让我们再做一个思想实验。 我们有 ZESP32 网关或 SLS 网关,或 MySensors。 如何将它们组合在一个信息空间中? 我们将把SSDP协议库添加到这些网关的标准功能中。 当通过 SSDP 访问该控制器时,它会将与其连接的设备列表添加到标准响应中。 根据此信息,浏览器将生成一个页面。 一般来说,它看起来像这样:

利特科联合
网页界面

利特科联合
渐进式应用程序

"ssdpList": 
{
   "id": 94967291, // уникальный идентификатор устройства
   "ip": "192.168.x.x", // ip адрес в сети
   "type": "thermostat" // тип устройства
},
{
   "id": 94967292,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{
   "id": 94967293,
   "ip": "192.168.x.x",
   "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. 配置设备连接的网络。

利特科联合

除了通过网络界面进行控制之外,我们还提供了经典的控制方式 - 通过单击显示屏。 板上有一台 Nextion NX3224T024 2.4 英寸显示器。 由于该设备易于使用,他做出了选择。 但我们正在开发自己的基于STM32的监视器。 它的功能并不比Nextion差,但成本会更低,这将对设备的最终价格产生积极影响。

利特科联合

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

  • 设置用户所需的温度(使用右侧的按钮);
  • 打开和关闭预定运行模式(按钮 H);
  • 显示继电器动作(左侧箭头);
  • 具有儿童保护功能(在解锁之前,物理点击会被阻止);
  • 显示 WiFi 信号强度。

此外,使用显示器您可以:

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

利特科联合

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

利特科联合

使用显示器的演示:

利特科联合

我们开发了 演示页面 具有三个连接的恒温器。

您可能会问:“您的恒温器有什么特别之处?” 现在市场上有很多带有Wi-Fi功能、定时运行、触摸控制功能的温控器。 爱好者们编写了与最流行的智能家居系统(Majordomo、HomeAssistant 等)交互的模块。

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

和可扩展性。 任何人都可以用我们的恒温器替换现有的传统恒温器。 用最小的努力。 我们选择了市场上最流行的 5 种传感器,并增加了对它们的支持。 但即使传感器具有专有特性,用户也可以将其连接到我们的恒温器。 为此,您需要校准恒温器以与特定传感器配合使用。 我们将提供说明。

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

我们的系统不需要服务器,如果服务器出现故障,它也不会变成南瓜。 即使其中一个组件发生故障,系统也不会在紧急情况下开始运行。 控制器、传感器、设备——每个元素既是服务器又是客户端,因此完全自主。

对于那些感兴趣的人,我们的社交网络: Telegram, Instagram, 电报新闻, VK, Facebook.

电子信箱: [电子邮件保护]

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

来源: habr.com

添加评论