Table des matières:
- Étape 1: Configurando O Ambiente
- Étape 2: WebSocket
- Étape 3: Escrevendo O Servidor
- Étape 4: Testando O Servidor
- Étape 5: Une application mobile
Vidéo: Pequeno Projeto De Uma Casa Inteligente : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · De monitoramento de illuminação e temperatura dos cômodos.
· De monitoramente de lista de alimentos et nível de água filtrada 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:
- Une geladeira possui um dispositivo com touchscreen em que é possível entrar com dados de alimentos: o nome de um alimento e sua quantidade;
- Un capteur de geladeira possui um de nível em um pequeno tanque de água embutido na geladeira;
- Os cômodos têm termômetros e sensores de illuminâ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;
Conditions requises:
- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos no shell
- Ter instalado: nodejs, python
- Ter instalado (opcional): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (disponível no Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Podem ser necessárias adaptações para que seja feito no Windows.
Étape 1: Configurando O Ambiente
Vamos configurar o ambiente de desenvolvimento em 2 parts: servidor e mobile. O servidor escrito em python e o mobile em javascript ou tapscript, 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 adequado e com o nome de sua preferência), vamos criar uma pasta "servidor":
$ mkdir $PROJECT_DIR && cd $PROJECT_DIR
$ mkdir serveur
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Podemos utilizar um ambiente conteinerizado avec Docker ou ambiente python virtuel (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$ cd $PROJET_DIR
$ touch dockerfile
Veja imagem do dockerfile.
Caso prefira utilizar ambiente virtual do python, siga as instruções em
Vamos então criar o arquivo que persistirá a lista de dependências do servidor e colocar as dependências necessárias:
$ touch requirements.txt
Veja imagem do requirements.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
Pour plus d'informations sur dockerfile e a 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 commando para criar a aplicação mobile:
$ npx client create-react-native-app
Étape 2: WebSocket
É interessant 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 atraves da documentação:
developer.mozilla.org/pt-BR/docs/WebSocket…
Usaremos 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 identificadores e rotas. Separe também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Cliente:
Serviteur:
Étape 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
UTILISATION DU CONTRLEUR E
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 uso enviar um pacote de resposta para a sala room de dispositivos conectados para atualização das informações.
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. No 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 modulo responsável pela persistência de dados como 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. Pas de projet desenvolvido como exemplo foi persistido em um arquivo json no diretório base de données. Aucun dépôt de projet é possível verificar uma pasta server/database com um arquivo com os dados persistidos bem como um arquivo de modelo em server/database-model.json of como deve ser o json para a nossa aplicação funcionar.
Étape 4: Testando O Servidor
Podemos criar um script para conectar ao servidor e enviar eventos conforma a estrutura esperada pelos controladores para fin 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
Fora do container, no diretório $PROJECT_DIR/server execute:
$ python3 serveurclient.py
Aucune invite "> " digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e/ou novos valores. Par exemple:
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 qu'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.
Étape 5: Une application mobile
Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Não será explicitado aqui cada importação no modulo principal criado pelo React Native nem possíveis detalhes de configuração. Pour venir, navegue até $PROJECT_DIR/client e adicione a dependência que precisaremos para o projeto:
$ npm je socket.io
Em seguida vamos escrever os componentes gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vamos escrever os composants de GUI.
⚠ Note que a função chamada pelo useEffect ainda não foi escrita! També não foram escritos os reducers setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer et nem escritos os objets com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, INITIAL_LIGHT_MODAL
Também ainda não foram escritas as funções utilizadas pelos elements of inteface gráfica para fazer chamadas para escrita no servidor: saveNewFoodValue, saveNewTemperature, saveNewLuminosity, toggleTemperatureForRoom, toggleLightForRoom
Portanto, se desejar testar os elementos com dados falses, escreva cada objeto e função dito acima.
Veja imagem do App.js com code da parte GUI
Par fim vamos escrever comme funções necessárias para fazer a comunicação com o servidor e para utlização do mesmo pelos componentes de GUI.
Veja imagem do App.js com código da parte lógica/operacional
Conseillé:
Projeto IoT - Sistema Detector De Fumaça : 5 étapes
Projet IoT - Sistema Detector De Fumaça : IntroductionO Sistema Detector de Fumaça consiste en une solution IoT com o objetivo de permitir o monitoramento de alarmes of incêndio de residências atraves de um aplicativo Android. O projeto é baseado em um microcontrolador que se comunica com a nu
Projeto Fila Fácil : 7 étapes
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 estabelecimentos podemos demorar alguns minutos ou até mesmo horas esp
Tutoriel Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017 : 4 étapes (avec photos)
Tutorial Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017: No desenvolvimento desse projeto foi utilizada uma plataforma hibrida, sem a necessidade de acessar os recursos de plateformas nativas do Android ou do IOS. Foi utilizado um computador tipo notebook avec windows 10. Essa plataforma chama-se Ionic, q
Démarrer une maison intelligente - Projeto Final : 6 étapes
Démarrer une maison intelligente - Projet final : Projeto apresentado é parte do projeto final do curso de IoT aplicado a Smart Home.O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT aplicada a Smart Home, que consist de sensores e atuadores conec
Casa Inteligente Com Arduino : 6 étapes
Casa Inteligente Com Arduino: Esse projeto é uma junção de vários pequenos projectos que podem ser feitos com Arduino. É um ótimo projeto para quem está começando no mundo do Arduino.Você vai aprender a fazer um sistema com medição de temperatura e umidade, alarm, acendimento de