关于智能系统开发者宣言的思考

几天前,我读了一篇很棒的文章, “智能系统开发人员宣言:15条原则”


我决定分享我对下面这一层的想法,即体系结构的基本原理,该原理基本上与所提出的原理相对应。


由于禁食的性质,它将比宣言更为主观。


首先,让我们处理几个术语,例如,智能系统的开发人员和用户。 这是谁?分离发生在哪里?


有两个明显的极端:购买的智能开关的制造商和我的妻子,他们打开灯。 但是,我应该带我或我的儿子去找谁,他们偶尔拿并拿来一个ESP32来焊接一对传感器,按钮和其他LED灯条,然后它们也与同一开关相互作用?


但是,即使我们将目光投向了供应商,也并不十分清楚。 我会解释。 显而易见的极端:同一制造商的所有设备,集线器也是他的,他的智能手机中的应用程序是一个智能系统的开发商。 但是,如果多个供应商在同一网络上怎么办? 但是,如果一个人的中央集线器,另一个人的设备以及我与之交互的云(例如Siri)怎么办? 宣言针对的对象是谁,同一位开发人员是谁? 我认为,要略低于宣言的全局抽象水平,顺便说一句,我几乎完全同意,应该引入更深层次的功能分离,否则对用户体验的集体责任将导致我们现在正在某种程度上观察到的集体不负责任,还是在一个严格的生态系统环境中,并在用户级别进行了集成:你们中的哪个人拥有多个用于管理手机智能家居的应用程序?


我提出以下对象分离:终端设备,集线器,网关,数据云,集成服务,用户界面。


这些对象的上下文中存在主题(如角色),例如用户,定制器,开发人员,制造商或供应商。


它们共同创建并构成一个系统,该系统通过交换数据来提供其功能。


在这篇文章中,我将只关注对象。


终端设备


是的,这是一个很有趣的问题。 什么是终端设备,即物联网的真正“物”?


有了智能的吸尘器,一切都变得清晰了:他们从盒子里拔出并将其底座插入电源插座,他摆脱了它,去将白色地毯与您的宠物的自由创造力叠加在一起,然后开始充电。 但是已经有了一个灯泡,奇怪的是,它并不是那么简单。


现在,我用几盏灯看着我的吊灯,我用3个不同的开关(分别地,并且不像激活核弹头)将其打开,实际上,面板中DIN导轨上的调光器可以工作。 在这里,“事物”似乎是指最终的执行器,但有趣的是,该调光器是多通道的,我什至不记得它也可以控制其他哪个吊灯,所以这里是设备,但不是全部,而是一部分。 但与此同时,妻子的短语“开灯”很直观。


我建议读者在另一个捆绑中找到“物”:一个房间控制器(恒温器),它通过8通道PWM的1个通道控制散热器头(加热),并通过0-10V执行器的4个通道中的1个进行冷却,这已经设置了恒定快门的设置。管道中的空气流动。


我曾想到要碰到一个残酷的文职办公室,并在这种情况下介绍“事物”的确切定义,但让我们从终端设备功能 ,它们的数量以及它们之间的交互方式等方面来讨论一下。


那么直观的“变暖”或“我们离开时打开经济模式”就很明显了。


集线器


考虑到以前关于事物是什么的想法,集线器本质上是甚至更多虚拟事物的工厂。 当散热器上已经有温度传感器和喷头时,它就是可以创建恒温器的枢纽。 他可以创建“全世界”的设备,可以将其关闭。 这很有趣,但是集线器可以是绝对虚拟的,例如在EIB或KNX中,基本概念是组地址:传感器向其发送数据,执行器为每个功能接收一个或多个组地址。 因此,如果在公寓的出口处有一个开关发送至1/1/1状态0,并且在每个负责光的执行器中都存在(还有更多的个体,例如1/0 / 11、1 / 0/12等),您将拥有无需关闭其他物理设备即可“关闭整个世界”的设备。


在此示例中,集线器是网络本身,在其他情况下,集线器通常作为单独的物理设备存在于物理世界中,但是您可以举一个“不是很物理”集线器的另一个很好的例子-这是Node-RED。


我请您特别注意以下事实:我故意不说来自现有设备的数据流如何进入此集线器以及它们如何从该流传输到系统的其他部分。 其他系统对象(网关)负责此功能。


网关


碰巧的是,在过去的40至50年中,已经创建了许多具有不同拓扑和抽象级别(具有自己的协议)的网络,它们可以以某种方式成为物联网系统的一部分。 为了连接2个网络,会创建一个流量交换节点,如果这样的节点将一个协议的所有数据打包到另一个协议中,通常将其称为隧道,因为另一方面,如果发生替换,则可以完全像对待本地一样使用整个流。抽象,那么这样的节点称为网关。


由于本文中我们的术语非常流利,因此让我们使用术语网关,并花更多的时间从实际存在的设备和网关实际位置解析。 每个使用过程控制系统的人迟早都会通过附加的网络来扩展“中央”网络,例如,许多仪表已连接到Modbus上的Profibus。


这都是一个很好的解决方案,您不能停得太多,但是小米Mijia多功能网关在哪里锁定? 我想说的是从ZigBee到Wi-Fi,但这并非完全正确。 是的,在网关的一侧有一个ZigBee网络,但是即使您连接了第三方设备,也无法通过此网关访问它。 网关的另一端有Wi-Fi,但网关不仅使用协议(黑客将其称为miIO协议)提供局域网通信,还使用小米云提供了通信,该小米云可确保离开本地网络时Mi Home应用程序的运行。 另一个非常有趣的网关是Samsung SmartThings,但存在一些困难。


如果以前有一个问题,为什么Groovy具有所有多样性,那么现在我将称其为难以解决的难题。


我将解释我的立场,希望我弄错了。 当创建与Samsung SmartThings生态系统兼容的新设备时,您可以选择2个选项:连接到集线器,或者直接连接到云,如果要创建自动化,我上面命名为集线器生成的设备的设备将移动到云中。 重点。 也就是说,违反了宣言。 如果Internet无法为您服务,则不会通过应用程序打开电源(根据IoT和Tizen IoT文章的图表,本地显然没有更多希望),也无法通过另一个网络的运动传感器在本地打开希望,因为您需要集成设备而不是网络-否则通过云计算。


那些设法使用Tizen IoT的人,请纠正我。


Logitech Harmony的情况与此类似,该更新后破坏了本地自动化。


如果我们丢弃“自动化网络-自动化网络”类型的网关,则网关操作中最重要的是目标抽象,目标抽象将其转换为来自核心网络的设备表示,并且已经由数据云确定。


数据云


同时,这是系统中最明显和最不明显的对象。 它的功能和对它的需求是显而易见的,但是如何准确地实现此组件只是最不明显的,并不取决于最终用户的需求。


因此,我宁愿填写我的个人愿望清单和想法的这一部分。


如果有一个易于理解的API,那就太好了;当该API开放并且易于连接时,那就更好了。


在这里,我将保留关于简单性的意见。 如果不讲数学,简单原则上是主观的。 我的个人意见基于我的经验和欲望。 当然,对于将要发布数十万种简单产品的公司而言,完全不同。


我希望我能够将自己的爱好编织到我周围的世界中。 为此需要什么?


主要的限制资源是时间,第二是知识,第三是金钱。 如果我无法在一天内通过某种方式在云中运行某个设备,那么只要它是“ Mayy Chumorrow”和“ Magnyana”的代名词,它将“稍后”完成。 现在,如果它能以某种方式起作用,那么在休息几天后,也许它将按预期运行。 物联网本质上是跨学科的,在这里您需要提升一些OAuth2服务器,向其中添加证书,实现API,所有这些都将使我的小型家用微控制器带有语音助手,我将在下一部分中进行介绍。


先前的想法更多地是关于“如何?”,但是同样重要的问题(这不是挑战,即问题)在于“什么?”。


我将可用于IoT的所有主要数据云分为两类:数据点和功能。


数据点云 。 这要么是与SCADA世界的并行演变,要么是其直接后代。


在这里,您可以获得温度传感器的读数-好吧,让我们将其写入云中某个需要读取它的地方。 温度传感器位于电池上,这意味着您仍然需要保持电量水平-没关系,请参见上文。 整类的云使您可以做到这一点。 如果协议是MQTT(但可以是CoAP和STOMP),则可以轻松识别它们。 一件奇妙的事情-我自己不仅在物联网中使用它,还称其为“自由超越常识”。 只是协议如此灵活,以至于每个人都以自己的方式解决相同的问题。


机遇形式的数据云 。 我承认,大约在8到9年前,当我编写家庭平台的下一个版本时,我想对系统中的对象进行分类。 这样系统就可以知道这是一个灯泡,这是一个开关,这是一个阀门。 显而易见的第一次迭代:类型列表(但实际上是类,因为OOP相同)。 然后出现了一个开关,但是OOP的电源在电池上起作用-因此我们继承并得到了一个新的开关。 然后事实证明电池可以是任何东西。 然后有必要切入设备类的树中,而不是切入设备的“功能”中,结合起来,我们得到一个转换。


这就是Apple HomeKit,Alexa,Google和其他智能家居云生态系统的工作方式。 似乎是幸福。


但是,正如我上面所说,我在8到9年前就使用了这种方法。 我自己确定了这些功能,我想添加IP摄像机还是Asterisk PBX? 太好了 我完成工作了。


但是,不幸的是,上面列出的智能家居的云生态系统实际上不是物联网的生态系统,而是语音助手的生态系统,其功能应该对全世界和所有设备通用。 在流程中添加新功能与我的“附加和有效”功能大不相同。 我们所有人都记得这些生态系统在黎明时必须“打开大门”。 SmartThings的情况与此类似。


没有制造商可以提供清晰,详尽的设备功能列表,这些功能可以发布并成为物联网生态系统的一部分。 这就是为什么诸如内脏脂肪,血糖或丙酮百分比之类的系统无法知道什么的原因? 当一切安好时,房子为什么不能以快乐的幻想来支持您,或者在出现问题时不能引起您的注意?


另一方面,如何在不了解设备功能的情况下创建用户界面? SCADA中的数据点方法可以方便地隐藏拓扑和协议功能。 获取具有一些其他属性的数据(水平列表),例如,可靠性(沿途是否断开连接)或访问级别,但它们的主要表示形式是助记符图。


但是物联网用户生活在后PC时代,助记符电路在电话屏幕上不方便,而且设置时间长得令人无法原谅。


我认为应该有某种杂交。 首先,系统必须知道设备是什么,并且必须具有数据点。 但是,同样重要的是,还应该将其他元信息传递到专门的云中,例如,您最喜欢的语音助手。 这样的信息尤其可以包括在了解外部云时的设备配置文件(功能集)及其标识符。


设备制造商的职能将是描述该产品在视觉界面和其他类型(语音交互,AR / VR等)上的理想性能。 但是,即使制造商没有这样做,也不愿被懒惰所淹没,用户仍然可以选择此Google设备从现在起称为“智能家居水壶”的功能,并且它具有以下功能:TemperatureControl,OnOff,Modes和切换 是的,为了简洁起见,我删除了action.devices.traits。


那是为了确保互操作性应该已经集成了服务。


整合服务


这是同一个网关,但是在云之间。 一些抽象应该被其他抽象代替。


交互的基础是事件。 有查询模型和发布。 主题如此之大,以至于您在描述它时都会陷入宝莱坞陷阱。 如您所知,每年制作的电影数量超过人们实际观看的数量,
因此,到本文的结尾,我将比描述开始时更加远离现实。


我已经提到过许多家用系统,您可以回想起LoRaWAN(和TheThingsNetwork),IFTTT,OpenStreetMap,AWS IoT,Azure IoT,天气服务,是的,实际上,几乎任何Internet或Intranet服务(是否还有其他术语?),如果设备数据必须进入公司系统。


用户界面


我不会对此部分进行深入描述,但是我想对家庭物联网系统,台式机绕过这件事感到遗憾。 只有在Mojave HomeKit中终于问世-对我来说这很令人困惑。 为什么水壶比我可以计算某家公司现金流量的电子表格要复杂得多? 毕竟,借助Numbers,我可以在浏览器中工作,但就苹果的理解而言,我不必关闭被遗忘的铁杆。 简而言之,请提供PWA!


用户界面主要是方便的物理交换机,但是数量很少。


AR,VR,混合现实,语音助手,智能电视,智能手机和平板电脑的应用程序,EEG神经接口是蛋糕上的樱桃,我们的极客非常喜欢玩。


后记


看来,Docker和微服务与它有什么关系? 如果对读者来说很有趣,我将很高兴在基于此对象分类的物联网系统架构的实现中分享我的想法和发展。


我自己用。

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


All Articles