Sisukord:

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

Video: Pequeno Projeto De Uma Casa Inteligente: 5 sammu

Video: Pequeno Projeto De Uma Casa Inteligente: 5 sammu
Video: ПЛОСКИЙ ДОМ С ИНТЕЛЛЕКТУАЛЬНОЙ ПЛАНИРОВКОЙ С 3 ВАННЫМИ КОМНАТАМИ И ПЛОЩАДЬЮ ДЛЯ ГУРМАНОВ 161 М² 2024, Juuli
Anonim
Pequeno Projeto De Uma Casa Inteligente
Pequeno Projeto De Uma Casa Inteligente

O projeto que faremos é de uma casa inteligente. Põhilised funktsionaalsed rühmad: · Monitoramento de illuminação e temperatura dos cômodos.

· Monitoramente list of alimentos e nível de água filterrada na geladeira.

Não escreveremos os firmwares dos dispositivos IoT da geladeira nem dos cômodos; porém assumiremos que os dispositivos fazem o seguinte:

- A geladeira possui um dispositivo com touchscreen em que é possível entrar 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 e sensores de iluminância;

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

- As lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;

Nõuded:

- Conhecimento básico em python, javascript, uso do system operacional, comandos básicos no shell

- Installige: nodejs, python

- Inst instalado (valikuline): dokkija, mobiilseadmete emulaator, gediador de sdk do Android (pole Android Studio -d)

O desenvolvimento desse projeto foi feito no Linux. Podem ser vajadused adaptações para que seja feito no Windows.

Samm: konfigureerige 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 seria escrito em python e o mobile em javascript ou typecrip, sendo utilizado React Native para o projeto.

reactnative.dev/

Vamos inicialmente criar uma estrutura de pastas. Em um diretório escolhido (que a partir de agora será escrito semper como $ PROJECT_DIR como placeholder - crie com no local que achar mais adekvaati e com o nome de sua preferência), vamos criar uma pasta "servidor":

$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR

$ mkdir servidor

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR

Kasutage rakendusi Docker või virtuaalne python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos ja imagem segundo o dockerfile:

$ cd $ PROJECT_DIR

$ touch dockerfile

Veja imagem do dockerfile.

Caso prefira utilizar ambiente virtual do python, siga as instrucsões em

Vamos então criar o arquivo que persistirá a list de dependências do servidor e colocar as dependências requiredárias:

$ touch nõuded.txt

Veja imagem do nõuded.txt.

Caso tenha optado por utilizar um ambiente conteinerizado, konstrueerige kujutis ja sisestage konteiner:

$ doki ehitamine. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash

Lisateavet sobivate või dockerfile'i ja klikkide kohta:

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE

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

Após ter o ambiente configurado, ja pasta do projeto deve ser possível executar or comando para criar a aplicação mobile:

$ npx create-reag-native-app klient

2. samm: WebSocket

Interessante que o leitor conheça pelo menos um pouco and respeito de websocket antes de prosseguir. Caso või leitor nunca tenha lido, trabalhado ou ouvido falar nada a respeito, separate alguns minutites para Entender como funciona o websocket através da documentação:

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

Usaremos uma biblioteca no cliente e no servidor que abstrai or protocolo de maneira que não precisemos pensar em detailhes de chamada e de armazenamento de identifadores e rotas. Eraldage também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:

Klient:

Servidor:

3. samm: 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 criar uma estrutura inicial do do projekt ja ecrever a interface que será utilizada como comunicação com o servidor:

$ mkdir src

$ touch app.py src/{controller, socketconnection}.py

Primeiramente vamos escrever um methodulo de inicalização do servidor:

Veja imagem teha app.py

Depois vamos escrever o methodulo que estabelece as conexões via websocket e as redirecionam para um controlador.

Veja imagem do socketconnection.py

KONTROLLIRE KASUTAMINE

O controlador receberá um pacote do methodulo responseável por estabelecer e gerenciar as conexões; Seria Respabilidade do controlador saber qual função de caso de uso chamar para cada envento recebido, bem como a partir da resposta do caso de uso enviar um pacote de resposta para a sala room de dispositivos conectados para atualização das informationções.

Veja imagem do controller.py.

Lõplik teema os casos de uso que devem gerenciar como deve ser tratado os dados do evento recebido and criar os novos dados a partir do dados recebidos para que o controlador atualize o estado do system. No caso desse süsteem 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 methodulo responseável pela persência de dados como se fosse essa a "regra de negócio".

Veja imagem do usecases.py

Märkus: täpsed püsivad osados de alguma forma. Fica ja escolha do leitor como prefere armazenar os dados and portanto, implementary as funções do src/repository.py. No projeto desenvolvido como examplelo foi persistido em um arquivo json no directtório database. No repositório do projeto é possível verificar uma pastaserver/andmebaas com um arquivo com os dados persistidos bem como um arquivo de modelo em server/database-model.json de como deve ser o json para a nossa aplicação funcionar.

Samm 4: Testando O Servidor

Testando O Servidor
Testando O Servidor

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

Veja imagem teha serverclient.py

Com o arquivo criado, verifique se o container está rodando, and dentro dele execute:

$ python app.py

Esialgu konteiner, pole otsest $ PROJECT_DIR/serveri käivitamist:

$ python3 serverclient.py

No prompt ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identifação e/ou novos valores. Näiteks:

80. 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.

Märkus: verifique que a porta que está sendo servido a aplicação, a porta exposta no docker run e a porta do script de teste devem ser a mesma.

5. samm: Aplicação Mobile

Mobiilirakendus
Mobiilirakendus
Mobiilirakendus
Mobiilirakendus

Não será demonstrado com muitos details cada parte do desenvolvimento do cliente mobile. Não será explicitado aqui cada importação no modeulo princip criado pelo React Native nem possíveis detailshes de configuração. Parameeter, navigeerimisvahend $ PROJECT_DIR/klient ja eelisprojekti sõltuvus:

$ npm i socket.io

Em seguida vamos escrever os komponendid gráficos e as funções que irão se comunicar com o servidor.

ESCREVENDO A TELA

Em App.js, vc escrever os komponendid de GUI.

⚠ Märkus que a função chamada pelo useEffect ainda não foi escrita! Também não foram escritos os reducers setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, Também ainda não foram escritas as funções utilizadas pelos elementos de interface 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.

Veja imagem teha App.js com GOD kasutajaliides

Por fim vamos escrever as funções vajadus para fazer a comunicação com o servidor e para utlização do mesmo pelos komponendid de GUI.

Veja imagem do App.js com código da parte lógica/operacional

Soovitan: