〜SMAK〜-使用MicroPython上的asyncio库的智能家居可编程控制器



前言


农村地区物联网的使用范围比家庭自动化要广得多,尽管这当然是术语问题,这是什么意思。尽管如此,我还是将智能家居理念概念化为一个合理的项目自动化过程,该过程发生在位于我的房地产区域内的对象上,有时距我一次或多次的距离还不错,但同时我至少想成为有足够的信心确保这些对象上发生的事情不会超出允许的范围,如果有必要,我可以快速了解整个遗产的情况,尤其是每个受控对象的情况,以及在您的论文中,要介入的过程并不急于要引起我关注的对象,因为此时此刻我正忙于一些重要的事情,或者只是平时很冷而且懒得离开屋子。

同时,该概念的实现将使我加深对使用MicroPython功能的微控制器使用的理解,就像与C ++相比,它具有轻巧的幻觉,我英勇地开展了过去生活中各种复杂性的项目,并实现了算法。要么没有动手,要么还没有以高级语言体现在图书馆中。实际上,这恰恰确定了我对自己的实现的兴趣,而没有诉诸广泛的解决方案,从同一个Xiaomy的知名制造商到EspHome或框架等专业应用。尽管我不排除自己经过自己设计的大而棘手的圆圈,塞满颠簸和玉米,非常采摘但肯定没有失败的可能性,但我会呼气,我将用血汗的钱以非常高的市场价格购买精美设计和设计的国外和俄罗斯产品,并运用现有阴天获得的经验,而不是MiHime,Domoticz,IFTT等怪物。

总结-我想对自行车的发明感到高兴,因为为此,终于在夏天来临之前的那段日子,不再难做,但是却没有时间思考,为我的屋子服务。我写这篇文章是为了让我自己确切地了解我想要什么,但是为了让自己提前拥有不对可能提出现有且显然是更全面解决方案的评论做出回应的权利。尽管非常欢迎用于解决与计划实施相关的特定问题的算法。



一般的做法


在对象上发生的过程由可编程控制器控制,可编程控制器有利于开发以解决局部问题,如果需要的话,稍后通过形成无线连接将它们组合在层次结构中。使用最简单的信息交换协议,解决了可能与传感器和执行器提供有线连接或短无线电连接的本地任务。空间解决方案在于,最大的决策负担落在以传感器和设备的形式控制有向图的叶子的控制器上,该控制器同时具有以打包形式向该无线图的请求此信息的节点发送摘要信息的能力。在互联网上,在电话或其他设备上,足以让我看到一个空白屏幕,这意味着一切都照常进行,但是要求提供详细信息以及在紧急情况下干预最终控制者的行为的能力应该属于我这个空间的创建者。安全问题和不受外部影响的保护措施被推迟到以后。

控制器本身可能已经具有更强大的通信通道,并使用更高级的协议(例如MQTT或ZigBee)来组织稳定的网状网络图,并随后访问Internet。

当前,考虑到将其包含在群中或换句话说在通过无线连接连接的组中的可能性,该概念受到可编程控制器逻辑的限制。控制器的范围是受控制和管理的对象,我绝不会在下面给出其完整列表:

  • 温室-温度,光照,土壤和空气湿度
  • 花园-浇水,土壤湿度
  • 保温箱-温度,湿度,托盘旋转,声音
  • 布鲁德-温度,湿度和照明
  • 鸡舍-温度,照明
  • 蜂箱-温度,湿度,重量和声音(温暖)
  • – , ,
  • – ,
  • – ,
  • – ,
  • – ,
  • – ( ) (, )

为了描述,研究和解决问题,已经开发了一种元语言,使我们能够简要描述用作源和消费者的设备驱动程序,与信息处理相关的延迟,该信息通过的通信通道,用于生成循环动作的时间表和计时器,变量,其中包含对于控制和管理设施中发生的过程必不可少的信息。

在本部分中,元语言允许您以可读的形式阅读项目的描述,这对于生成文档以及必须在其上或必须连接这些硬件设备的印刷电路板中表达的硬件设备和逻辑列表非常有用。

在第二部分中,元语言介绍了控制过程的原语,这些原语用于初始化和随后分析控制器控制的过程状态。如果有足够的资源供所使用的微控制器使用,则可以将该部分实现为解释器,该解释器的输入将包含描述驱动程序,通信通道,变量和脚本本身的初始化的文本文件,该文本文件描述了控制器的逻辑,并且如果情况已明确,则无需更改缝纫。

就像您所说的那样,它就是如何浮动的,因此Smart Manor是一个智能家居,一个想法的发源地是Altai,但是,Automation也很合适,尽管在这种情况下,它对于Smart的定义是一种重言式,当然也可以通过可编程控制器来实现。 。结合大写字母并混合英语和俄语单词,结果变成〜SMAK〜,但是系统描述的元语言分别是〜MEAT〜。这个烹饪概念出现了-应用〜SMAK〜使用〜MEAT〜。顺便说一句,用于控制器和不具有自己协议的设备的交互的原始无线协议,我称为〜JuJu〜

硬件实现是通过ESP8266和Arduino的功能与RF24 +或其他更现代的但不便宜的-传感器和执行器-继电器,阀门,开关等来实现的,如果它们由于某种原因无法直接连接,则逻辑本身尝试将控制器放在ESP32上,如果出现故障,则将其放在STM32上。目标是最大程度地降低铁成本。我承认使用硬件实现许多过程,例如带有迟滞的温度控制器或空气质量测量仪器,但是由于我不是电子工程师,因此使用电容器,电阻和晶体管开发电路对我来说很痛苦,这决定了硬件和软件实现之间的合理平衡,并且也渴望直接参与,或至少是对控制器中正在发生的事情的思考。

该软件实现是基于元语言的语法〜MEAT〜 所述ASYNCIO库和相关的算法,一般逻辑〜SMAK〜如下所述。控制设施中发生的过程的任务旨在维护某些操作条件,并在发生偏差时恢复这些条件,此外,偏差较大时,可以使用更积极的措施,以及对紧急情况的响应。

将来,在文本中将使用以下术语:

源(Source)-传感器,传入通信通道
消费者-执行设备,传出通信通道

通过分析从来源接收到的值,在方案中描述了来源和消费者的交互;计时器和消费者的状态;变量值;时间表,根据这些时间表向消费者发出控制命令。

源寄存器用于存储对源进行调查后获得的最新数据,每个源都可以以自己的频率进行查询。在更新了至少一个来源的数据之后,启动一个分析单元以阐明消费者的操作模式。

消费者寄存器用于分离软件和物理数据,以实现脚本执行的优先级逻辑机制,这包括以下事实:在分析脚本中描述的条件的过程中,可以将冲突命令发送到同一设备,并考虑最终命令最后记录在脚本中。因此,通过在设备操作的情况下形成一系列条件检查,可以形成它们的优先级。在物理上,仅在分析单元结束后才执行命令。

使用者对源的询问和命令的执行以异步模式进行,也就是说,它们的驱动程序在查询或发出命令的那一刻将控制权转移给系统计划者,并且在操作惯性的情况下,在此期间,源或使用者处于繁忙状态,然后放置后续请求转。

根据设备类型的不同,驱动程序可以使用多个信息通道,例如,DHT温湿度传感器使用2条通道来传输温度和湿度,而DS18B20设备连接到公共总线以控制暖地板的集热器-甚至更多,或者集成伺服驱动器,同时控制多个电动机或阀门。

驱动程序特征包括一组特定于该设备的请求和命令,执行它们的延迟时间以及传输信号的通信类型,可以是硬件(1Wire,I2C,SPI,UART等)和无线(WiFi,RF无线电,BT等),它补充了传输请求和命令的方法。此外,驱动程序在加载时提供自诊断模式,在关闭时提供动作,并在异步模式下的正常操作过程中诊断不可预见的状况。例如,如果需要有关设备状态的反馈,则驱动程序可以运行多个异步任务。

您可以从分析单元访问源,使用者,计时器和变量,系统常数以及时间表的寄存器。理想情况下,分析单元被视为一种简单的脚本描述语言的解释器,以文本文件表示,但是在第一个版本中,当以固件代码编写脚本时,我将坚持使用该语言的基本原语来生成更简洁的表示形式。当前,脚本描述语言用于模拟对象(孵化器,育雏器,鸡舍,养蜂场,温室,花园,锅炉房,旅馆房间)的操作,确定所需的设备数量及其特性,这已被证明非常有用。

计划中的进一步内容是已经积累和创建的出版物:

  • 〜SMAK〜-通用算法的描述
  • 〜SMAK〜-金属语言的描述〜肉〜
  • 〜SMAK〜-协议描述〜JuJu〜
  • 〜SMAK〜-在〜SMAK中创建设备驱动程序的要求说明
  • 〜SMAK〜-应用实践

Source: https://habr.com/ru/post/undefined/


All Articles