~ SMAK ~ - controladores programables para hogares inteligentes que usan la biblioteca asyncio en MicroPython



Preámbulo


El uso de Internet de las cosas en las zonas rurales es mucho más amplio que la automatización del hogar, aunque esto, por supuesto, es una cuestión de terminología, lo que se entiende por esto. Sin embargo, concebí el concepto de Smart Homestead como un proyecto de automatización racional de procesos que ocurren en objetos ubicados en el territorio de mi propiedad, y a veces a una distancia decente de donde estoy en un momento u otro, pero al mismo tiempo quiero estar al menos lo suficientemente seguro de que lo que está sucediendo en estos objetos no irá más allá de los límites de lo permitido, que puedo, si es necesario, tener una idea rápida de la situación en el estado como un todo y en cada objeto controlado en particular, así como En su ensayo, intervenir en los procesos no se precipita precipitadamente hacia el objeto que causó mi preocupación,porque en este momento estoy ocupado con algo importante, o simplemente banalmente frío y demasiado vago para salir de casa.

Al mismo tiempo, la implementación de este concepto me permitirá profundizar en mi comprensión del uso de microcontroladores utilizando las capacidades de MicroPython, que me gusta con su ilusión de ligereza en comparación con C ++, en el que realicé heroicamente proyectos de diversa complejidad en vidas pasadas, así como implementar algoritmos, hasta que o no llegaron a las manos, o aún no se han incorporado a las bibliotecas en idiomas de alto nivel. Esto, de hecho, determinó mi interés precisamente en mi propia implementación, sin recurrir a soluciones generalizadas que van desde fabricantes conocidos del mismo Xiaomy hasta aplicaciones especializadas como EspHome o frameworks. Aunque no excluyo la posibilidad de que, habiendo atravesado un círculo grande y espinoso de mi propio diseño, lleno de conos y callos, bastante arrancado pero, por supuesto, no derrotado, exhalaré,Gastaré el dinero que tanto me costó ganar en dispositivos bellamente empaquetados y diseñados de producción extranjera y rusa a un precio muy de mercado e implementaré la experiencia obtenida en monstruos nublados existentes y no tan monstruos como MiHime, Domoticz, IFTT u otra cosa.

Resumiendo: quería disfrutar de la invención de la bicicleta, cuando para esto hubo, finalmente, un tiempo antes del sufrimiento del verano, cuando ya no era fácil de hacer, pero no había tiempo para pensar, mientras reparaba mi propiedad. Escribí esto para comprender por mí mismo exactamente lo que quiero, pero para darme el derecho de antemano de no responder a los comentarios que puedan sugerir soluciones existentes y, obviamente, más completas. Aunque los algoritmos para resolver un problema particular relacionado con la implementación del plan son muy bienvenidos.



Enfoque general


Los procesos que ocurren en los objetos son controlados por controladores programables, que son convenientes de desarrollar para resolver problemas locales, combinándolos luego en una jerarquía, si es necesario, formando conexiones inalámbricas. Las tareas locales se resuelven cuando es posible proporcionar una conexión por cable o conexiones de radio cortas con sensores y actuadores, utilizando los protocolos más simples para intercambiar información. La solución espacial consiste en el hecho de que la carga máxima de toma de decisiones recae en el controlador que controla las hojas del gráfico orientado en forma de sensores y dispositivos, que, al mismo tiempo, tiene la capacidad de enviar información resumida en forma de paquete al nodo de este gráfico inalámbrico que solicitó dicha información.En Internet, en un teléfono u otro dispositivo, es suficiente para mí ver una pantalla en blanco, lo que significa que todo funciona como de costumbre, pero la capacidad de solicitar detalles y, en una emergencia, intervenir en las acciones del controlador final debería pertenecer a mí como el Creador de este espacio. Los problemas de seguridad y la protección contra influencias externas se posponen hasta más tarde.

El controlador en sí mismo puede tener canales de comunicación más potentes y utilizar protocolos más avanzados como MQTT o ZigBee para organizar un gráfico de red de malla estable con acceso posterior a Internet.

Actualmente, el concepto está limitado por la lógica del controlador programable, teniendo en cuenta la posibilidad de su inclusión en un enjambre o, en otras palabras, en un grupo conectado por conexiones inalámbricas. El alcance del controlador es un objeto sujeto a control y gestión, de ninguna manera una lista completa de lo que doy a continuación:

  • Invernadero: temperatura, iluminación, suelo y humedad del aire
  • Jardín - riego, humedad del suelo
  • Incubadora - temperatura, humedad, rotación de la bandeja, sonido
  • Bruder - temperatura, humedad e iluminación
  • Coop - temperatura, iluminación
  • Colmena - temperatura, humedad, peso y sonido (enjambre)
  • – , ,
  • – ,
  • – ,
  • – ,
  • – ,
  • – ( ) (, )

Para describir, estudiar y resolver el problema, se ha desarrollado un metalenguaje que nos permite describir brevemente los controladores de dispositivos utilizados como fuentes y consumidores, retrasos asociados con el procesamiento de información, canales de comunicación a través de los cuales pasa esta información, horarios y temporizadores para generar acciones cíclicas, variables, que contiene información esencial para el control y la gestión de los procesos que ocurren en la instalación.

En esta parte, el metalenguaje le permite leer la descripción del proyecto en una forma legible, que será útil para generar documentación, así como una lista de dispositivos de hardware y lógica expresada en placas de circuito impreso en las cuales estos dispositivos de hardware deben estar conectados.

En la segunda parte, el metalenguaje presenta las primitivas mediante las cuales se controla el proceso y que se utilizan en la inicialización y el análisis posterior del estado de los procesos controlados por el controlador. Si hay suficientes recursos para los microcontroladores utilizados, esta parte se puede implementar como un intérprete, cuya entrada se alimenta con archivos de texto que describen la inicialización de los controladores, los canales de comunicación, las variables y el script en sí, que describe la lógica del controlador y no requiere cambiar la costura si se aclara el escenario.

Como se llama una idea, así es como flotará, por lo tanto, Smart Manor es una granja inteligente, el lugar de nacimiento de una idea es Altai, sin embargo, la automatización también es adecuada, aunque es una especie de tautología en este contexto para la definición de Smart y, por supuesto, mediante el uso de un controlador programable . Combinando las letras mayúsculas y mezclando las palabras en inglés y ruso, resultó - ~ SMAK ~ , pero el Meta Language de la Descripción del Sistema, respectivamente, ~ MEAT ~ . Este concepto culinario salió a la luz: la aplicación ~ SMAK ~ usando ~ MEAT ~ . Por cierto, el protocolo inalámbrico primitivo para la interacción del controlador y los dispositivos que no están dotados de sus propios protocolos de antemano, lo llamé ~ JuJu ~ .

La implementación del hardware se concibe utilizando las capacidades de ESP8266 y Arduino con RF24 + u otro, más moderno, pero no menos barato, para sensores y actuadores: relés, válvulas, interruptores, etc., si no pueden conectarse directamente por alguna razón, la lógica misma intente colocar el controlador en ESP32 y, si falla, en STM32. El objetivo es minimizar los costos de hierro. Admito el uso de la implementación de hardware de una serie de procesos, como controladores de temperatura con histéresis o instrumentos de medición de la calidad del aire, pero como no soy un ingeniero electrónico, desarrollar un circuito usando condensadores, resistencias y transistores es doloroso para mí y esto determina un equilibrio razonable entre la implementación de hardware y software, y También un deseo de participación directa,o al menos la contemplación de lo que está sucediendo en el controlador.

La implementación del software se basa en la sintaxis del metalenguaje ~ MEAT ~ , la biblioteca de asincio y algoritmos relacionados, la lógica general ~ SMAK ~ que se describe a continuación. La tarea de controlar los procesos que ocurren en la instalación está dirigida a mantener ciertas condiciones de operación, así como a restaurar estas condiciones en caso de desviaciones, además, con una desviación más fuerte, se pueden usar acciones más enérgicas, así como una respuesta a situaciones de emergencia.

En el futuro, se utilizará la siguiente terminología en todo el texto:

Fuente: sensores, canales de comunicación entrantes
Consumidores: dispositivos ejecutivos, canales de comunicación salientes

La interacción de las fuentes y los consumidores se describe en el escenario analizando los valores recibidos de las fuentes; estado de los temporizadores y consumidores; valores de variables; horarios, en función de los cuales se emiten comandos de control a los consumidores.

El registro de fuente se utiliza para almacenar los últimos datos obtenidos como resultado de una encuesta de fuentes, cada una de las cuales puede ser interrogada con su propia frecuencia. Después de actualizar los datos de al menos una de las fuentes, se lanza una unidad de análisis para aclarar los modos de funcionamiento de los consumidores.

El registro del consumidor se utiliza para separar el programa y los datos físicos con el fin de implementar el mecanismo de lógica de prioridad para la ejecución del script, que consiste en el hecho de que en el proceso de análisis de las condiciones descritas en el script, se pueden emitir comandos en conflicto para el mismo dispositivo y se considerará el comando final que fue grabado por último en el guión. Por lo tanto, al formar una secuencia de verificaciones de condición en el escenario de la operación de dispositivos, se puede formar su prioridad. Físicamente, los comandos se ejecutarán solo después del final de la unidad de análisis.

La interrogación de las fuentes y la ejecución de los comandos por parte de los consumidores se realiza en modo asíncrono, es decir, sus controladores transfieren el control al planificador del sistema en anticipación al momento de la consulta o el comando, así como en caso de inercia de la operación, durante la cual la fuente o el consumidor está en un estado ocupado y luego se colocan las solicitudes posteriores. giro.

Dependiendo del tipo de dispositivo, el controlador puede usar más de un canal de información, por ejemplo, un sensor de temperatura y humedad DHT usa 2 canales para transmitir temperatura y humedad, y dispositivos DS18B20 conectados a un bus común para controlar el colector del piso cálido, incluso más, o un servoaccionamiento integrado, controlando varios motores o válvulas al mismo tiempo.

Las características del controlador incluyen un conjunto de solicitudes y comandos específicos del dispositivo, el tiempo de retraso para su ejecución, así como el tipo de comunicación a través del cual se transmite una señal, que puede ser hardware (1Wire, I2C, SPI, UART, etc.) y inalámbrico (WiFi, radio RF, BT, etc.), que complementa los métodos para transmitir solicitudes y comandos. Además, el controlador proporciona modos de autodiagnóstico cuando está cargado, acciones cuando está apagado y diagnósticos de condiciones imprevistas durante el funcionamiento normal en modo asíncrono. El controlador puede ejecutar varias tareas asincrónicas, por ejemplo, si se requiere retroalimentación sobre el estado del dispositivo.

Desde la unidad de análisis, puede acceder a los registros de fuentes, consumidores, temporizadores y variables, a las constantes del sistema, así como a la programación. Idealmente, la unidad de análisis es vista como un intérprete de un lenguaje de descripción de script simple, representado por un archivo de texto, pero en las primeras versiones, al escribir un script en el código del firmware, me adheriré a las primitivas básicas de este lenguaje para generar una presentación más concisa del mismo. Actualmente, el lenguaje de descripción del script se utiliza para simular el funcionamiento de los objetos (incubadora, criadora, gallinero, colmenar, invernadero, jardín, sala de calderas, habitación de hotel), determinar el número requerido de dispositivos y sus características, lo que ya ha demostrado ser muy útil.

Además en los planes está la publicación de ya acumulados y creados:

  • ~ SMAK ~ - descripción de algoritmos generales de funcionamiento
  • ~ SMAK ~ - descripción del metalenguaje ~ CARNE ~
  • ~ SMAK ~ - descripción del protocolo ~ JuJu ~
  • ~ SMAK ~: descripción de los requisitos para crear controladores de dispositivo en ~ SMAK ~
  • ~ SMAK ~ - práctica de aplicación

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


All Articles