随着智能音箱的热卖,各种各样的智能家庭解决方案也如雨后春笋,但大多数都需要专业人员和熟练工作人员来安装/部署这些解决方案。此外,这些解决方案大多无法顺利融入已有的家庭环境(所谓的后装市场)。为了弥合消费者和专家之间的差距,并允许在不对建筑物进行实际改动的情况下融入任何现有的家庭环境,需要一个具有无缝集成潜力的模块化智能家居方案。
本文的尝试是使用开源软件和硬件,使开发能够在现有的开源社区内继续进行。基于模块化设计和灵活性,这种系统可以在没有专业技能或环境改变的情况下安装和配置。
简单定义一下,智能家居系统是电子设备的集成(包括驱动非电子装置,例如百叶窗)并通过智能系统或用户通过蓝牙或Wi-Fi等通信媒介对家庭环境进行监测和控制,并由计算机进行协调工作。
在这种相互关联的环境中,任务可以变得更加直观和有效。家庭网络处理所有的通信,用户可以通过个人电脑、智能手机或平板电脑在家中或远程地点通过互联网访问该系统。信息技术与家庭环境的融合使得系统和设备能够在便捷、能源效率和安全方面发挥作用。因此,智能家居的整体架构包括与家庭网络、用户和行业服务提供商相连的家庭设备。
现有的智能家居系统是一种特殊的设计,以适应特定的消费者家庭环境和需求。这些系统在设计上很复杂,不够灵活,无法满足习惯要求,而且往往嵌入家庭的物理结构。它们也很贵,阻碍了普通消费者的采用,并限制了重新配置和扩大的可能性,以满足消费者不断变化的需求。此外,开源软件被排除开外也阻碍了智能家居系统的发展和扩展。
为了解决这些问题,这里提出了一种基于无缝集成、开源软件、可重构和可扩展的智能家居系统。为了作为一个可以继续进行研究的平台,它应该最大限度地利用开放源码的硬件和软件,还应该允许传感器和执行器的多种配置,并且易于修改,从而形成模块化设计。这将使第三方社区和每一个客户能够重新配置系统,使之符合每个独特家庭的要求。
根据这些考虑,可以尝试在树莓派2代开发板上运行(图1)。许多不同的操作系统可以被加载到树莓派2代上,其中包括Linux 和 Android,这两个系统都是开源操作系统。
图1 | 一个树莓派2代开发板
系统的其余部分是围绕个树莓派2代设计的,它使用了模块化的主/从系统设计。主节点和所有从节点通过家庭 Wi-Fi 路由器连接和通信。用户可以通过 wifi 在本地访问该系统,或者通过互联网进行远程访问。 在这里,某些环境传感器和电子执行器与每个从节点保含在一起。用户界面是作为本地托管的网络服务器开发的,或者时安装在智能手机上的某些应用程序,使得系统可以在几乎所有装有浏览器的设备中进行控制。
图2中可以看到一个简单的对角线表示。红色箭头表示只在主节点和用户设备之间传输通信,而蓝色箭头表示的是只在主节点和从节点之间传输通信。
图2 | 整个系统布局示意图
开源尝试分为以下几个方面:
- 系统架构
- 系统网络
- 系统硬件和软件
- 硬件和用户接口
系统架构
系统架构只使用两种类型的模块: 主管引擎(SE)和控制引擎(CE) ,这两种模块通过通信网络相互连接。
图3 | 系统架构
如图3所示,该系统具有分布式的特性,并且是在两个层次的组织结构中。 SE是上层模块,它们基本上执行监督任务。 CE是通过输入和输出设备与物理世界互动的底层模块。
系统网络
架构的一个关键要素是连接各种系统模块的通信网络。这个网络是至关重要的,因为它可能会影响系统的几个特性,例如性能、灵活性和成本。这里使用 MQTT,一个 m2m/IoT的连接协议。
我们希望网络能够简单地实现在CE上的实现,而不需要添加任何特定的硬件或大大增加这些模块的处理和内存需求。 如果没有这种关注,它们的成本就会大幅增加,整个系统也会发生同样的情况,因为CE数量很多。
系统硬件和软件
CE非常简单,每个都执行一个专门的任务(照明控制,数字输入 / 输出,红外遥控等)。 基本上,他们是有着基本的微控制器(PIC)和 I/O的硬件。这与之前的原型形成了鲜明对比,在这个版本中,所有的智能都是在SE中建立起来的,而CE只不过是 I/O相关硬件。这节省了微控制器,但在SE中的软件非常复杂(因为有几个任务是实时的,因此排除了操作系统内核的使用,并迫使任务调度通过严格的中断时间来完成)。 这个新的结果通过将软件的基本功能从SE解耦到CE中,使软件开发变得相对简单。
SE拥有一个更复杂更强大的控制器(80x86,ARM 兼容微处理器)。它们的功能是实现系统的智能,正如在PC界面中编程的那样,这里使用树莓派作为SE,它是一个小巧而且价格实惠的计算机,其特点是在芯片上的Broadcom 系统(SOC)中包括了一个ARM-compatible 的 CPU。
对于CE来说,可以使用ESP8266,这是一个低成本的 Wi-Fi 芯片,具有完整的TCP/IP堆栈和微控制器功能,可以通过输入和输出设备来控制与物理世界互动的底层模块。
此外,一个专门的开源 Arduino 软件IDE使得编写代码并上传到CE会很容易。它运行在 Windows、 Mac OS x 和 Linux上。 环境是用Java 编写的,基于 Processing 和其他开源软件。
硬件和用户接口
这里所尝试的系统硬件包括了具有Wi-Fi功能的树莓派2代和ESP8266、连接到数字输出以供切换的继电器和一部能够使用Wi-Fi的电话。这些硬件易于使用和实现,并且也很容易获得。
这个系统使用一个树莓派2代作为一个专门构建的主节点,以及专门构建的从节点与家中的电器整合。树莓派2代作为数据库、接口和web服务器。 它控制着从节点。每个从节点连接到一个或多个类似类型的设备,并将根据主节点的命令对这些设备进行控制。 主从之间的通信是无线通信。
由于网络中的设备、传感器和执行器种类繁多,家庭自动化基础设施通常相当复杂。 在用户和系统之间设计一个界面的挑战之一是如何使用户能够很容易地将其家庭中的物理设备与用户界面中的适用元素联系起来。
智能手机的崛起为思考如何与互联网互动开创了一个新的移动先例,但是专门设计的物联网用户界面可以为用户提供最好的体验。
小结
本文尝试的系统具有灵活性,有可能整合所有家用设备。基于开源软件和模块化设计,这种设计能够无缝地集成到任何家庭环境中。 然而,这个解决方案中仍然有许多领域需要评估,比如安全性,更多的连接选项,更具可扩展性,对CE模块的电源管理,稳定性,以及一个自适应的用户界面等等。
【本文来自51CTO专栏作者“老曹”的原创文章,作者微信公众号:喔家ArchiSelf,id:wrieless-com】