Casa inteligente a partir de um smartphone antigo ou antipadrão da automação residencial

Olá queridos leitores! Outra história sobre como o gerente do elo do meio, soprando poeira das glândulas obsoletas da prateleira, faz isso, o que faz com que profissionais de todas as faixas tenham dor nos olhos. ¡Mas funciona, amigo!



Eu admito, desta vez eu queria fazer tudo certo. Tomou o Raspbery Pi da prateleira. A torta é a mesma que eu já usei no meu cortador de grama robótico: um link para uma postagem e um link para outra postagem . Ele pegou mosquito, tudo deveria ter funcionado no mqtt, mas você não corre em lugar nenhum. Sob o corte, um mar de ancinhos, bicicletas, pouca solda, puro inferno para um perfeccionista.

imagem

Tudo começou com o desejo de complementar meu projeto Noorik , que eu coloquei no meu portão. Em resumo - esta é uma solução DIY para o bloco GSM que abre o portão.
Para abrir o portão, basta fechar determinados contatos no quadro.

imagem

Substituiu o arduino pelo esp8266 e criou uma interface da web com um botão aberto. Acabou sendo interessante, mas eu queria uma interface única para abrir portões de correr, portas seccionais de garagem e portões.

Quando comecei a pintar toda a minha lista de desejos, acabei precisando do mesmo:

  1. sistema de controle de caldeira
  2. sistema de segurança
  3. interface móvel para câmeras de vigilância
  4. dados de temperatura em casa e na rua

Backend


Malinka funcionou bem, mas na próxima vez em que foi ligada, apenas parou de ligar. O LED de energia acende primeiro e depois apaga-se suavemente em 3-5 segundos, o elemento (polyfuse T075) próximo à tomada está muito quente. E aqui já estão ansiosos para aplicar mqtt, blackger, para convidar cortesãs e outras delícias.



Não importa, o benefício de seu destino estava esperando por outro paciente. Pi laranja zero para o estúdio. O quanto eu não sofri com esse milagre do pensamento chinês - dar vida a uma torta tão pequena acabou sendo uma questão além da minha força. Baixei o firmware nos sites oficiais e esquerdos, comprei o firmware das minhas mãos e troquei por criptomoeda. Acho que me deparei com uma amostra defeituosa.



Percebi que o próprio destino estava me empurrando para os braços da construção de bicicletas e, para esconder minha alegria, mergulhei nessa atividade com a cabeça.



Antes de tudo, decidi usar um telefone inteligente como unidade principal (corretor, servidor). Você sabe que essas coisas antigas simplesmente não desaparecem. Usei-o, minha esposa, filha, depois controlei meu robô com um soprador de neve deste smartphone, tentei afogá-lo no rio (nunca cheguei ao rio Moscou, mas esse cano fez um farfalhar em meu Pakhra natal). E aqui está ela - uma nova vida para o Samsung Galaxy S3.

Instalou o Palapa Web Server e o servidor FTP no smartphone. A idéia é simples em um banco de dados MySQL com apenas três tabelas: valores, logs, regras.

  • Na tabela de valores, pares chave / valor.
  • A tabela de logs mostra o histórico de alterações nos valores.
  • Na tabela de regras, as regras para alterar algumas células, dependendo do valor em outras.

Todo esse farm serve um script php, que grava ou gera dados do banco de dados por uma solicitação http e também serve regras agendadas.
Eu nem entendo qual deve ser o nível de programação para uma pessoa querer vê-lo, mas estou pronto para mostrar o código - escreva para a LAN.

Frontend




Não jogue pedras em mim, eu me confesso. Eu usei o Bootstrap. Sim, pecador.
O pensamento inicial era agrupar tudo no Phonegap e obter um aplicativo completo. Vou dizer mais, fiz exatamente isso, mas no final a versão online acabou sendo mais eficiente. Eu e minha esposa no telefone fizemos um atalho na área de trabalho para abrir a página desejada no ip interno.

Cada elemento responde a um evento de clique + o estado do ajax é verificado por solicitações ao servidor e alterado, se necessário. É muito conveniente, porque você vê todas as alterações que entraram em vigor pela regra ou feitas por outro usuário.
Na verdade, o código sob demanda sem problemas.

ESP-8266




Eu tentei módulos diferentes e puro ESP-8266. Como resultado, o módulo LOLIN V3 acabou sendo a opção mais conveniente.



Fonte de alimentação usando fontes de alimentação comutadas.



Os módulos do portão exigiam um relé e eu tinha preocupações de que os relés de contato fossem acionados. Como resultado, tanto os de estado sólido quanto os de contato funcionam. O problema é que um grande número de módulos, mesmo sem rotulá-lo, é acionado com pouca frequência.



Quando o módulo é ligado, ocorre uma abertura de curto prazo, que leva à abertura involuntária quando a energia é ligada. É resolvido puxando para zero e declarando o estado antes de declarar o tipo de saída.

digitalWrite(rele, 1); digitalWrite(rele2, 1); pinMode(rele, OUTPUT); pinMode(rele2, OUTPUT); 

Como resultado, o módulo para a montagem da garagem fica assim. O sensor PIR para detectar movimento é delicadamente mordiscado na pele nativa.



Na sala da caldeira, minha caldeira é muito simples e não há dúvida de qualquer automação complexa.



Além disso, cada circuito serve uma bomba separada.



Em série com as máquinas, os relés para controle das bombas e da caldeira foram ligados.



Empurra delicadamente toda a economia para o escudo.



Firmware


Decidi usar o IDE do Arduino para firmware, para não mexer com nodemcu e lua. Na Internet e no GT em particular, uma enorme quantidade de informações para iniciantes.
Do interessante, me parece, a função de conectar ao wifi. O fato é que na minha casa existem 4 redes wifi e podem ser adicionadas. Para não definir rigidamente o nome da rede, primeiro examinamos as redes disponíveis.

Código SetupWiFi ()
 void setupWiFi() { WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); while(WiFi.status() != WL_CONNECTED) { int n = WiFi.scanNetworks(); Serial.println("scan done"); if (n == 0) Serial.println("no networks found"); else { Serial.print(n); Serial.println(" networks found"); for (int i = 0; i < n; ++i) { Serial.println(""); Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); j=0; ssid=WiFi.SSID(i); Serial.print("Connecting"); ssid.toCharArray(charBuf, 50); WiFi.begin(charBuf,WIFI_PASS); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); j++; if(j>20){ break; } } if((WiFi.status() == WL_CONNECTED)){ break; } } } } Serial.println("Connected"); Serial.println(WiFi.localIP()); } 


Quando o modo automático da sala da caldeira está ativado, a temperatura externa e a temperatura do líquido de refrigeração são verificadas de acordo com o cronograma.

  • Em temperaturas abaixo de 14 * C, o piso quente do primeiro andar é ligado.
  • Em temperaturas abaixo de 4 * C, todos os circuitos estão ligados.

A temperatura do líquido de refrigeração é selecionada de acordo com a tabela, dependendo da seção transversal dos tubos e da temperatura externa. Quando a temperatura ambiente necessária é atingida, a caldeira desliga. A todos aplicou uma certa histerese para suavizar os valores de transição.

O sistema de segurança funciona ainda mais fácil. Existe uma regra na tabela que, quando o sistema de segurança está ativado, se for detectado movimento em um dos sensores PIR, o SMS é enviado por meio da API de um dos serviços.

Planos


  • Criação de uma versão online em um servidor remoto e sincronização de alterações para a possibilidade de controle remoto.
  • Exibir dados de sinalizadores GSM / GPS no carro;
  • Abrir os portões quando nossos carros aparecerem em uma determinada área;
  • Conexão ao sistema de controle remoto;

Votação por foto. Qual projeto fazer em seguida?


Conclua a impressora Delta 3D nos pinos de construção


Estabilizador para câmera SLR


Obrigado pela atenção. Com você estava SlavaGik.

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


All Articles