Orodha ya maudhui:

Pequeno Projeto De Uma Casa Inteligente: 5 Hatua
Pequeno Projeto De Uma Casa Inteligente: 5 Hatua

Video: Pequeno Projeto De Uma Casa Inteligente: 5 Hatua

Video: Pequeno Projeto De Uma Casa Inteligente: 5 Hatua
Video: ROTINAS COM SENSORES NA ALEXA! Kit MIBO HOME de Casa Inteligente | Review Completo 2024, Julai
Anonim
Pequeno Projeto De Uma Casa Inteligente
Pequeno Projeto De Uma Casa Inteligente

Onyesha pesa za kufanya kama uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · De Monitoramento de iluminação na temperatura dos cômodos.

· De Monitoramente de lista de alimentos na nível de água filtrada na geladeira.

Não escreveremos os firmwares dos dispositivos IoT da geladeira nem dos cômodos; fikiria zaidi ikiwa utaftaji kumbukumbu ni kama:

- A geladeira possui um dispositivo com touchscreen em que é possível entar com dados de alimentos: o nome de um alimento e sua quantidade;

- A geladeira possui um sensor de nível em um pequeno tanque de água embutido na geladeira;

- Os cômodos têm termômetros na sensores de iluminância;

- Os cômodos têm ar condicionado que se comunicam pela rede wifi;

- Kama mafundisho ya kawaida yanayotokana na maoni yako juu ya njia inayopatikana kwa sababu ya utaftaji wa huduma ya wifi;

Mahitaji:

- Conhecimento básico em chatu, javascript, uso do sistema operacional, comandos básicos no shell

- Ter instalado: nodejs, chatu

- Ter instalado (opcional): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (haitoi Studio ya Android)

O desenvolvimento desse projeto foi feito no Linux. Podem ser necessaryárias adaptações for que seja feito no Windows.

Hatua ya 1: Configurando O Ambiente

Configurando O Ambiente
Configurando O Ambiente
Configurando O Ambiente
Configurando O Ambiente

Vamos configurar o ambiente de desenvolvimento em 2 partes: servidor e mobile. O servidor será escrito em python e o mobile em javascript ou typescript, sendo utilizado React Native para o projeto.

reactnative.dev/

Vamos inicialmente hupiga kelele uma estrutura de pastas. Em em diretório escolhido (ikiwa ni pamoja na sehemu ya agora sercr escrito semper como $ PROJECT_DIR placeholder holder - crie com no local que achar mais adequado e com o nome de sua preferência), vamos criar uma pasta "servidor":

$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR

$ mkdir mtumishi

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR

Podemos utilizar um ambiente conteinerizado com Docker ou ambiente virtual chatu (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:

$ cd $ PROJECT_DIR

$ gusa dockerfile

Picha ya Veja hufanya dockerfile.

Caso preira utilizar ambiente virtual do chython, siga as instruções em

Vamos então criar o arquivo que persirá a lista de dependências do servidor e colocar as dependências needárias:

$ kugusa mahitaji.txt

Picha ya Veja hufanya mahitaji.txt.

Caso tenha optado por utilizar um ambiente conteinerizado, Construa a imagem e entre no container:

$ docker kujenga. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd): / programu smarthouse bash

Para mais informações sobre o dockerfile na a do do docker: https://docs.docker.com/engine/reference/builder/…

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE

Um passo a como configurar o ambiente de desenvolvimento mobile com React Native pode ser visto no link:

Kwa mfano, unasanidi programu, na tambi zinastahili kutekelezwa kwa njia inayofaa kwa kutumia simu ya rununu:

$ npx kujenga-react-native-app mteja

Hatua ya 2: WebSocket

É interessante que o leitor conheça pelo menos um pouco a respeito de websocket antes de prosseguir. Caso o leitor nunca tenha lido, trabalhado ou ouvido falar nada a respeito, separe alguns minutos para entender como funciona o websocket através da documentação:

developer.mozilla.org/pt-BR/docs/WebSocket…

Usaremos uma biblioteca no cliente na no servidor que abstrai o protocolo de maneira que não precisemos pensar em detalhes de chamada na de armazenamento of identificadores e rotas. Tenga sehemu kwa muda mfupi kama bibliotecas utilizados no cliente and no servidor:

Cliente:

Mtumishi:

Hatua ya 3: Escrevendo O Servidor

Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor

Vamos hulalamika kama utafta kazi rasmi na unapeana kiolesura cha huduma hii ya utumiaji wa como ya huduma:

$ mkdir src

$ touch app.py src / {mtawala, unganisho la soketi}.py

Primeiramente vamos escrever um módulo de inicalização do servidor:

Picha ya Veja hufanya programu.py

Depois vamos escrever o módulo que establishing as conexões via websocket na redirecionam para um controlador.

Picha ya Veja hufanya socketconnection.py

MDHIBITI E ANATUMIA

O kudhibiti kipokezi kwa kufanya kazi kwa njia ya mwongozo kwa kuanzisha mfumo wa matumizi kama viunganishi; Sera ya kujibu hufanya kazi ya kudhibiti kazi kwa sababu ya uso wa uso kwa sababu ya kupokea pesa, ikiwa ni pamoja na sehemu ya kazi inayoweza kutekelezwa kwa nafasi ya uso kwa chumba cha sala cha utaftaji wa mambo kwa atualização das informações.

Picha ya Veja hufanya control.py.

Mafunzo ya mwisho ni kasino za uso wa hali ya juu ya hali ya juu ya utaftaji wa shughuli zote ambazo zinatokana na upokeaji wa simu na sehemu ya kufanya vipokezi vya baba kwa sababu ya udhibiti wa hali ya juu. Hakuna caso desse sistema há somente atualização de valores (sejam numéricos, texto ou booleanos - no caso de ligar / desligar dispositivos de ambientação). Então não é de surpreender que os casos de uso tão somente chame funções do módulo Respável pela pelaencencia de dados como se fosse essa a "regra de negócio".

Picha ya Veja hufanya matumizi.py

Nota: precisamos persir os dados de alguma forma. Fanya orodha inayofuata ya kupendelea armazenar os dados e portanto, kutekeleza kama funções do src / repository.py. Hakuna projeto desenvolvido como mfano wa kuendelea kwa mfumo wa json no database ya diretório. Hakuna kumbukumbu inayoweza kutumika ikiwa ni seva ya tambi / hifadhidata inayoweza kupatikana ikiwa ni pamoja na orodha ya mfumo wa seva / hifadhidata ya mfano. Json de como deve ser o json para a nossa aplicação funcionar.

Hatua ya 4: Testando O Servidor

Testando O Servidor
Testando O Servidor

Podemos criar um script for conectar ao servidor and enviar eventos conforme a estrutura esperada pelos controladores for the fins de testes manuais. Vamos criar esse script and rodá-lo com o servidor *.

Veja imagem kufanya serverclient.py

Com o arquivo criado, verifique se o container está rodando, na dentro dele kutekeleza:

$ python app.py

Chombo cha fora, hakuna pesa $ PROJECT_DIR / seva kutekeleza:

$ python3 serverclient.py

Hakuna haraka ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e / ou novos valores. Mfano:

UPDATE_FRIDGE_WATER_LEVEL; 80

UPDATE_ROOM_TEMPERATURE; 1, 22.0

UPDATE_ROOM_TEMPERATURE_SETPOINT; 1, 17.5

UPDATE_ROOM_LUMINOSITY; 100

UPDATE_ROOM_LUMINOSITY_SETPOINT; 0

TOGGLE_ROOM_TEMPERATURE; 1

TOGGLE_ROOM_LIGHT; 1

E para cada evento enviado verifique se foi persistido no banco de dados escolhido.

Noti: hakikisha kuwa ni kweli tutaona huduma hii kwa njia inayofaa, bandari ya nje haifanyi docker inayoendesha hati ya maandishi ya mtihani wa ujumbe.

Hatua ya 5: Aplicação Mobile

Simu ya Aplicação
Simu ya Aplicação
Simu ya Aplicação
Simu ya Aplicação

Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Não será clearado aqui cada importação no módulo principal criado pelo React Native nem possíveis detalhes de configuração. Kuingia, navegue kwa $ PROJECT_DIR / mteja na msaada kwa msaada wa programu hii:

$ npm mimi soketi.io

Wataalam wanaosimamia sehemu za kazi na huduma kama sehemu ya matumizi ya huduma.

ESCREVENDO A TELA

Em App.js, vamos escrever os componentes de GUI.

⚠ Kumbuka kuwa utafurahi kutumia matumizi ya AthariKuathiriwa! Também não foram escritos os reducers setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e nemcrosos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, INITIAL_TEMPERATURE_MODAL, INITIAL_TEMPERATURE_MODAL, Também ainda não foram escritas as funções utilizadas pelos elementos de inteface gráfica para fazer chamadas para escrita no servidor: saveNewFoodValue, saveNewTemperature, saveNewLuminosity, toggleTemperatureForRoom, toggleLightForRoom

Portanto, se desejar testar os elementos com dados falsos, escreva cada objeto e função dito acima.

Picha nyingi hufanya App.js com código da parte GUI

Kwa sababu ya kusindikiza kama funçes za lazima kwa fazer comunicação com o servidor na para utlização do mesmo pelos componentes de GUI.

Picha nyingi hufanya App.js com código da parte lógica / operacional

Ilipendekeza: