Innholdsfortegnelse:
- Trinn 1: Configurando O Ambiente
- Trinn 2: WebSocket
- Trinn 3: Escrevendo O Servidor
- Trinn 4: Testando O Servidor
- Trinn 5: En Aplicação -mobil
Video: Pequeno Projeto De Uma Casa Inteligente: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · De monitoramento de iluminação and temperaturena dos cômodos.
· Overvåkingslisten for alimentos og nye filtre for geladeira.
Não escreveremos os firmwares dos dispositivos IoT da geladeira nem dos cômodos; porém assumiremos que os dispositivos fazem o seguinte:
- En geladeira possui um dispositivo com touchscreen em que é possível entrar com dados de alimentos: o nome de um alimento e sua quantidade;
- En 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;
- Som lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Krav:
- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos no shell
- Ter installasjon: nodejs, python
- Instalado (valgfritt): docker, emulador for dispositivo mobile, seren for SDK for Android (tilgjengelig for Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Det er nødvendig å tilpasse alle vinduer.
Trinn 1: Configurando O Ambiente
Vamos konfigurer o ambiente de desenvolvimento em 2 parts: servidor e mobile. O servidor será escrito em python e o mobile em javascript ou typescript, sendo utilizado React Native para or 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 adequateado 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 SERVEROR
Podemos utilizar um ambiente conteinerizado com Docker ou ambiente virtual python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos and imagem segundo o dockerfile:
$ cd $ PROJECT_DIR
$ touch dockerfil
Veja kan lage en dockerfil.
Caso prefira utilizar ambiente virtual do python, siga as instruções em
Vamos então criar or arquivo que persistirá a list de dependências do servidor e colocar as dependências needsárias:
$ touch krav. tekst
Veja kan gjøre krav.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, construa a imagem e entre no container:
$ docker -bygg. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash
For mer informasjon om dockerfil og 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:
Du kan velge mellom en konfigurasjon og en pasta som kan brukes til å utføre en kommando for en mobilapplikasjon:
$ npx create-react-native-app-klient
Trinn 2: WebSocket
En interessant que o leitor conheça pelo menos um pouco og 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 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. Du kan også bruke tempoet til å studere som bibliotecas utilizados no cliente e no servidor:
Kunde:
Servidor:
Trinn 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 kan forestille seg socketconnection.py
KONTROLLER E BRUK
O kontrollador 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 kan forestille seg 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 system. 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 módulo responsável pela persistência de dados como se fosse essa a "regra de negócio".
Veja imagem do do usecases.py
Merk: presistamos 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. Ingen projeto desenvolvido como eksemplo foi persistido em um arquivo json ingen diretório database. Ingen lagringsplass for projeto og mulig bekreftelse av en pastaserver/database som kan brukes for å kunne fungere som en modell/server-database.
Trinn 4: Testando O Servidor
Podemos criar um script para conectar ao servidor e enviar eventsos conforme a estrutura esperada pelos controladores para fins de testes manuais. Vamos criar esse script e rodá-lo com o servidor*.
Veja kan forestille seg serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele execute:
$ python app.py
For beholder, ingen diretório $ PROJECT_DIR/server utfører:
$ python3 serverclient.py
Ingen melding ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e/ou novos valores. For eksempel:
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.
Merk: 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.
Trinn 5: En Aplicação -mobil
Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Não será explicitado aqui cada importação no módulo principal criado pelo React Native nem possíveis detalhes de configuração. For å få tilgang til $ PROJECT_DIR/client og en avhengighet som kan presiseres for et prosjekt:
$ npm i 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 componentes de GUI.
⚠ Merk at du kan bruke den til å bruke Effect ainda não foi escrita! Também não foram escritos os reducers setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e nem escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL_ INODIAL_MODAL
Também ainda não foram escritas as funçõeses 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.
Du kan bruke App.js til å bruke GUI
Por fim vamos escrever as funções necessárias para fazer a comunicação com o servidor e para utlização do mesmo pelos componentes de GUI.
Veja bildene for App.js som kan brukes på en annen måte/operasjonell
Anbefalt:
Projeto IoT - Sistema Detector De Fumaça: 5 trinn
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça består av en løsning for IoT som gir en tillatelse til å overvåke alarmene for gjenoppretting av applikasjoner på Android. Du kan også bruke den til å kontrollere mikrokontrollen som nå
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 trinn
Projeto CoCoa: Um Colete De Comunicação Alternativa: CoCoA-prosjektet er en bærbar vest koblet til internett som gjør det mulig å koble sammen taktile symboler for alternativ kommunikasjon for å hjelpe mennesker med tale eller ikke-verbale funksjonshemminger. O Colete de Comunicação Alternativa (CoCoA) consi
Projeto Lumos: 8 trinn
Prosjektet Lumos: Vi har en konstruksjon som kan brukes til å styre og dele en smarttelefon for å koble til eller bruke WiFi. Para controlar and luminária foi desenvolvido um aplicativo for Android, que permite apagar and acender and luz utilizando além
Projeto Fila Fácil: 7 trinn
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é nødvendig á ria uma gest ã o de senhas de clientses para organizar e agilizar atendimentos. Em alguns estabelecimentos podemos demorar alguns minutos ou at é mesmo horas esp
Casa Inteligente Com Arduino: 6 trinn
Casa Inteligente Com Arduino: Esse projeto é uma junção de vários pequenos projetos 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, alarme, acendimento de