Sommario:
- Fase 1: Configurare O Ambiente
- Passaggio 2: WebSocket
- Passaggio 3: Escrevendo O Servidor
- Passaggio 4: Testando O Servidor
- Passaggio 5: applicazione mobile
Video: Pequeno Projeto De Uma Casa Inteligente: 5 Passi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades:· De monitoramento de iluminação e temperatura dos comodos.
· De monitoramente de lista de alimentos e nível de água filtrada na geladeira.
Não escreveremos os firmwares dos devices IoT da geladeira nem dos cômodos; prima di prendere in considerazione i dispositivi che seguono:
- 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 come têm termômetros e sensori di iluminância;
- Non è possibile modificare il wifi;
- Come lâmpadas dos comodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Requisiti:
- Conhecimento básico in python, javascript, uso do sistema operacional, comandos básicos no shell
- Ter instalado: nodejs, python
- Installazione (opzionale): docker, emulatore dispositivo mobile, gestore SDK per Android (disponibile su Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Podem ser necessárias Adaptaçes para que seja feito no Windows.
Fase 1: Configurare O Ambiente
Vamos configurar o ambiente de desenvolvimento in 2 parti: servidor e mobile. O servidor será escrito em python e o mobile em javascript o typescript, sendo utilizado React Native para o projeto.
reactnative.dev/
Vamos inizialmente criar uma estrutura de pastas. Em um diretório escolhido (que a partir de agora será escrito sempre como $PROJECT_DIR como placeholder - crie com no local que achar mais adequado e com o nome de sua preferência), vamos criar uma pasta "servidor":
$ mkdir $DIR_PROGETTO && cd $DIR_PROGETTO
$ mkdir servidor
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Podemos utilizar um ambiente conteinerizado com Docker ou ambiente virtual python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$ cd $PROJECT_DIR
$ touch dockerfile
Veja imagem dockerfile.
Caso prefira utilizar ambiente virtual do python, siga as instruções em
Vamos então criar o arquivo que persistirá a list de dependências do servidor e colocar as dependências necessárias:
$ touch requisiti.txt
Veja imagem do require.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, construa a imagem e entre no container:
$ docker build. -t smarthouse $ docker run -it -p 3000:3000 -v $(pwd):/app smarthouse bash
Per maggiori informazioni su dockerfile e cli do docker:
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, na pasta do projeto deve ser possível executar o comando para criar a aplicação mobile:
$ npx client create-react-native-app
Passaggio 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…
Usemos uma biblioteca no cliente e no servidor que abstrai o protocolo de maneira que não precisemos pensar em detalhes de chamada e de armazenamento de identificatodores e rotas. Separe também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Cliente:
Servitore:
Passaggio 3: Escrevendo O Servidor
Vamos criar uma estrutura inicial do projeto e escrever a interface que será utilizada como comunicação com o servidor:
$ mkdir src
$ touch app.py src/{controller, socketconnection}.py
Primeiramente vamos escrever um módulo de inicalização do servidor:
Veja imagem do app.py
Depois vamos escrever o módulo que estabelece as conexões via websocket e as redirecionam para um controlador.
Veja imagem do socketconnection.py
CONTROLLER E CASI D'USO
O controlador receberá um pacote do módulo responsável por estabelecer e gerenciar as conexões; será responsabilidade do controlador saber qual função de caso de uso chamar para cada envento recebido, bem como a partir da resposta do caso de use enviar um pacote de resposta per a sala room de dispositivi collegati per aggiornare le informazioni.
Veja imagem do controller.py.
Finalmente temos os casos de uso que devem gerenciar como deve ser tratado os dados do evento recebido e criar os novos dados a partir do dados recebidos para que o controlador atualize o estado do sistema. Nessun caso di sistema è stato aggiornato di recente (sejam numéricos, texto o booleanos - no case de ligar/desligar devices de ambientação). Então não é de surpreender que os casos de use tão somente chame funções do módulo responsável pela persistência de dados come se fosse essa a "regra de negócio".
Veja imagem do usecases.py
Nota: precisamos persistir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto, implementar as funções do src/repository.py. No projeto desenvolvido como exemplo foi persistido em um arquivo json no diretório database. Nessun repository per il progetto può essere verificato su un server/database di pasta con un archivio con altri dati persistenti che possono essere archiviati nel modello del server/database-model.
Passaggio 4: 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 do serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele execute:
$ python app.py
Per un contenitore, non eseguire alcuna directory $PROJECT_DIR/server:
$ python3 serverclient.py
Nessun prompt "> " digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e/ou novos valores. Per esempio:
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.
Nota: verifique que a porta que está sendo servido a aplicação, a port exposta no docker run e a port do script de teste must ser a mesma.
Passaggio 5: applicazione mobile
Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Non è specificato se non importa il modulo principale non importa React Native non è possibile configurare i dettagli. Para começar, navegue até $PROJECT_DIR/client e adicione a dependência que precisaremos para o projeto:
$ npm i socket.io
Seguendo vamos escrever os componenti grafici e come funções che irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vamos escrever o componenti della GUI.
⚠ Nota que a função chamada pelo useEffect ainda não foi escrita! Aggiungi il modulo di scrittura os reducers setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e nem scritto os oggetti con stati iniziali INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, INITIAL_LIGHT_
Também ainda não foram escritas as funções utilizadas pelos 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.
Veja imagem do App.js con codice da parte GUI
Per vamos escrever come funzioni necessarie per fazer una comunicazione con il server e per l'utilizzo del mesmo con i componenti della GUI.
Veja imagem do App.js com codice da parte lógica/operacional
Consigliato:
LUCE DECORATIVA PER LA CASA: 6 Passi
LUCE DECORATIVA PER LA CASA: è una luce decorativa fatta in casa. È costituito dall'utilizzo di lampade di scarto. Le lampade vengono utilizzate ovunque e quando non devono essere utilizzate le gettiamo nella pattumiera. Ma possiamo usarlo per molti modi migliori. In questo modo è la luce decorativa fatta in casa per lo spettacolo
Casa di Cristallo: 5 Passi
Crystal House: le coppie e le famiglie che sono separate a causa della lunga distanza spesso sentono il desiderio di connessione. Crystal House è costruita per le coppie e le famiglie per connettersi tra loro attraverso le luci. Le Crystal Houses sono collegate con segnali wifi. Quando pre
La casa del ricco: 5 passi
La casa dell'uomo ricco: Hey ragazzi! Bentornato !!Oggi vorrei presentarvi un modello di una casa che può essere posseduta solo dai più ricchi tra i ricchi.Questo modello 3D è stato realizzato con l'aiuto di TINKERCADlink:https://www.tinkercad. com/Queste sono le presentazioni cl
Projeto Fila Fácil: 7 passi
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é necessária uma gestão de senhas de clientes para organizar e agilizar atendimentos. Em alguns stabelecimentos podemos demorar alguns minutos ou até mesmo horas esp
IL MODO PI SEMPLICE PER FARE UNA LUCE COMPATTA!! 3 SEMPLICI PASSI!!: 3 Passi
IL MODO PI SEMPLICE PER FARE UNA LUCE COMPATTA!! 3 SEMPLICI PASSI!!: Cosa ti servirà - foglio di stagnola 1 batteria AA (alcune batterie AAA funzioneranno) 1 mini lampadina (lampadine utilizzate per la maggior parte delle torce elettriche; fare riferimento all'immagine) Righello (se necessario)