~ SMAK ~ - controladores programáveis ​​para propriedades inteligentes usando a biblioteca assíncrona no MicroPython



Preâmbulo


O uso da Internet das coisas nas áreas rurais é muito mais amplo que a automação residencial, embora isso, obviamente, seja uma questão de terminologia - o que isso significa. No entanto, concebi o conceito de Smart Homestead como um projeto de automação racional de processos que ocorrem em objetos localizados no território da minha propriedade e, às vezes, a uma distância decente de onde estou, uma vez ou outra, mas ao mesmo tempo quero pelo menos estar suficientemente confiante de que o que está acontecendo nesses objetos não vai além dos limites do que é permitido, que eu posso, se necessário, ter uma idéia rápida da situação na propriedade como um todo e em cada objeto controlado em particular, bem como Em seu ensaio, intervir nos processos não é precipitado, para o objeto que causou minha preocupação,porque neste momento estou ocupado com algo importante, ou simplesmente banalmente frio e com preguiça de sair de casa.

Ao mesmo tempo, a implementação desse conceito permitirá aprofundar meu entendimento sobre o uso de microcontroladores usando os recursos do MicroPython, que eu gosto da ilusão de leveza em comparação com o C ++, nos quais heroicamente realizei projetos de complexidade variada em vidas passadas, além de implementar algoritmos, até que não chegaram às mãos ou ainda não foram incorporadas em bibliotecas em idiomas de alto nível. Isso, de fato, determinou meu interesse precisamente em minha própria implementação, sem recorrer a soluções difundidas que variam de fabricantes conhecidos da mesma Xiaomy a aplicativos especializados, como EspHome ou frameworks. Embora eu não exclua a possibilidade de que, tendo percorrido um círculo grande e espinhoso de meu próprio design, recheado de saliências e calos, bem arrancado, mas certamente não derrotado, exalarei,Vou gastar meu dinheiro suado em dispositivos lindamente embalados e projetados de produção estrangeira e russa a um preço muito de mercado e implementarei a experiência adquirida em monstros nublados existentes e não em monstros como MiHime, Domoticz, IFTT ou qualquer outra coisa.

Resumindo - eu queria ter prazer na invenção da bicicleta, quando para isso havia, finalmente, um tempo antes do sofrimento do verão, quando não era mais fácil de fazer, mas não havia tempo para pensar enquanto atendia minha propriedade. Escrevi isso para entender por mim mesmo exatamente o que quero, mas para me dar o direito de não responder a comentários que possam sugerir soluções existentes e obviamente mais abrangentes. Embora algoritmos para resolver um problema específico relacionado à implementação do plano sejam muito bem-vindos.



Abordagem geral


Os processos que ocorrem nos objetos são controlados por controladores programáveis, que são fáceis de desenvolver para resolver problemas locais, combinando-os posteriormente em uma hierarquia, se necessário, formando conexões sem fio. As tarefas locais são resolvidas onde é possível fornecer uma conexão com fio ou conexões curtas de rádio com sensores e atuadores, usando os protocolos mais simples para a troca de informações. A solução espacial consiste no fato de que a carga máxima de tomada de decisão recai sobre o controlador que controla as folhas do gráfico orientado na forma de sensores e dispositivos, os quais, ao mesmo tempo, têm a capacidade de enviar informações resumidas em forma de pacote para o nó deste gráfico sem fio que solicitou essas informações.Na Internet, em um telefone ou outro dispositivo, basta ver uma tela em branco, o que significa que tudo está funcionando normalmente, mas a capacidade de solicitar detalhes e, em caso de emergência, intervir nas ações do controlador final deve me pertencer como o Criador deste espaço. Por enquanto, adiarei a segurança e a proteção contra influências externas para mais tarde.

O próprio controlador já pode ter canais de comunicação mais poderosos e usar protocolos mais avançados, como MQTT ou ZigBee, para organizar um gráfico de rede de malha estável com acesso subsequente à Internet.

Atualmente, o conceito é limitado pela lógica do controlador programável, levando em consideração a possibilidade de sua inclusão em um enxame ou, em outras palavras, em um grupo conectado por conexões sem fio. O escopo do controlador é um objeto sujeito a controle e gerenciamento, de modo algum uma lista completa da qual dou abaixo:

  • Estufa - temperatura, iluminação, umidade do solo e do ar
  • Jardim - rega, umidade do solo
  • Incubadora - temperatura, umidade, rotação da bandeja, som
  • Bruder - temperatura, umidade e iluminação
  • Coop - temperatura, iluminação
  • Colméia - temperatura, umidade, peso e som (enxame)
  • – , ,
  • – ,
  • – ,
  • – ,
  • – ,
  • – ( ) (, )

Para descrever, estudar e resolver o problema, foi desenvolvida uma metalinguagem que nos permite descrever brevemente os drivers de dispositivos usados ​​como fontes e consumidores, atrasos associados ao processamento de informações, canais de comunicação pelos quais essas informações passam, cronogramas e cronômetros para gerar ações cíclicas, variáveis, que contém informações essenciais para o controle e gerenciamento dos processos que ocorrem na instalação.

Nesta parte, a metalinguagem permite que você leia a descrição do projeto de forma legível, o que será útil para gerar documentação, bem como uma lista de dispositivos de hardware e lógica expressa em placas de circuito impresso nas quais ou às quais esses dispositivos de hardware devem estar conectados.

Na segunda parte, a metalinguagem apresenta as primitivas pelas quais o processo é controlado e que são usadas na inicialização e na análise subsequente do estado dos processos controlados pelo controlador. Se houver recursos suficientes dos microcontroladores usados, esta parte poderá ser implementada como intérprete, cuja entrada é alimentada com arquivos de texto que descrevem a inicialização de drivers, canais de comunicação, variáveis ​​e o próprio script, que descreve a lógica do controlador e não requer alteração da costura se o cenário for esclarecido.

Como você chama uma ideia, é assim que ela flutua; portanto, o Smart Manor é um Homestead inteligente, o local de nascimento de uma idéia é Altai; no entanto, a automação também é adequada, embora seja um tipo de tautologia nesse contexto para a definição de Smart e, é claro, por meio da qual o uso de um controlador programável . Combinando as letras maiúsculas e misturando as palavras em inglês e russo, resultou - ~ SMAK ~ , mas a Meta Idioma da Descrição do Sistema, respectivamente, ~ MEAT ~ . Este conceito culinário surgiu - o aplicativo ~ SMAK ~ usando ~ MEAT ~ . A propósito, o protocolo sem fio primitivo para a interação do controlador e dispositivos que não são dotados de seus próprios protocolos com antecedência, chamei ~ JuJu ~ .

A implementação do hardware é concebida usando os recursos do ESP8266 e do Arduino com RF24 + ou outro, mais moderno, mas não menos barato - para sensores e atuadores - relés, válvulas, interruptores, etc., se não puderem ser conectados diretamente por qualquer motivo, a própria lógica tente colocar o controlador no ESP32 e, se falhar, no STM32. O objetivo é minimizar os custos de ferro. Admito que o uso da implementação de hardware de vários processos, como controladores de temperatura com histerese ou instrumentos de medição da qualidade do ar, mas como não sou engenheiro eletrônico, o desenvolvimento de um circuito usando capacitores, resistências e transistores é doloroso para mim e isso determina um equilíbrio razoável entre a implementação de hardware e software, e também um desejo de participação direta,ou pelo menos a contemplação do que está acontecendo no controlador.

A implementação do software é baseada na sintaxe da metalinguagem ~ MEAT ~ , a biblioteca assíncrona e algoritmos relacionados, a lógica geral ~ SMAK ~ descrita abaixo. A tarefa de controlar os processos que ocorrem na instalação visa manter certas condições operacionais, além de restaurar essas condições em caso de desvios; além disso, com um desvio mais forte, podem ser usadas ações mais energéticas, bem como uma resposta a situações de emergência.

No futuro, a seguinte terminologia será usada no texto:

Fontes (Fonte) - sensores, canais de comunicação recebidos
Consumidores - dispositivos executivos, canais de comunicação de saída

A interação de fontes e consumidores é descrita no cenário, analisando os valores recebidos das fontes; status de temporizadores e consumidores; valores de variáveis; cronogramas, com base nos quais comandos de controle são emitidos para os consumidores.

O registro de origem é usado para armazenar os dados mais recentes obtidos como resultado de um levantamento de fontes, cada um dos quais pode ser interrogado com sua própria frequência. Após atualizar os dados de pelo menos uma das fontes, é lançada uma unidade de análise para esclarecer os modos de operação dos consumidores.

O registro do consumidor é usado para separar os dados físicos e do programa, a fim de implementar o mecanismo da lógica prioritária para a execução do script, que consiste no fato de que, no processo de análise das condições descritas no script, podem ser emitidos comandos conflitantes para o mesmo dispositivo e o comando final será considerado que foi gravado pela última vez no script. Assim, formando uma sequência de verificações de condições no cenário de operação de dispositivos, sua prioridade pode ser formada. Fisicamente, os comandos serão executados somente após o final da unidade de análise.

O interrogatório de fontes e a execução de comandos pelos consumidores ocorrem no modo assíncrono, ou seja, seus drivers transferem o controle para o planejador do sistema em antecipação ao momento da consulta ou comando, bem como no caso de inércia da operação, durante a qual a fonte ou o consumidor está em um estado ocupado e, em seguida, são feitas solicitações subsequentes virar.

Dependendo do tipo de dispositivo, o driver pode usar mais de um canal de informações, por exemplo, um sensor de temperatura e umidade DHT usa 2 canais para transmitir temperatura e umidade e dispositivos DS18B20 conectados a um barramento comum para controlar o coletor do piso quente - ainda mais, ou um servoconversor integrado. controlar vários motores ou válvulas ao mesmo tempo.

As características do driver incluem um conjunto de solicitações e comandos específicos para o dispositivo, o tempo de atraso para sua execução, bem como o tipo de comunicação através da qual um sinal é transmitido, que pode ser hardware (1Wire, I2C, SPI, UART, etc.) e sem fio (WiFi, rádio RF, BT, etc.), que complementa os métodos de transmissão de solicitações e comandos. Além disso, o driver fornece modos de autodiagnóstico quando carregado, ações quando desligado e diagnóstico de condições imprevistas durante a operação normal no modo assíncrono. O driver pode executar várias tarefas assíncronas, por exemplo, se for necessário feedback sobre o status do dispositivo.

Na unidade de análise, você pode acessar os registros de fontes, consumidores, temporizadores e variáveis, constantes do sistema e a programação. Idealmente, a unidade de análise é vista como um intérprete de uma linguagem simples de descrição de script, representada por um arquivo de texto, mas nas primeiras versões, ao escrever um script no código do firmware, aderirei às primitivas básicas dessa linguagem para gerar uma apresentação mais concisa. Atualmente, a linguagem de descrição do script é usada para simular a operação de objetos (incubadora, chocadeira, galinheiro, apiário, estufa, jardim, caldeira, quarto de hotel), determinar o número necessário de dispositivos e suas características, o que já provou ser muito útil.

Mais adiante nos planos está a publicação de já acumulados e criados:

  • ~ SMAK ~ - descrição de algoritmos de funcionamento geral
  • ~ SMAK ~ - descrição de metalanguage ~ MEAT ~
  • ~ SMAK ~ - descrição do protocolo ~ JuJu ~
  • ~ SMAK ~ - descrição dos requisitos para a criação de drivers de dispositivo no ~ SMAK ~
  • ~ SMAK ~ - prática de aplicação

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


All Articles