Sisällysluettelo:
- Vaihe 1: Configurando O Ambiente
- Vaihe 2: WebSocket
- Vaihe 3: Escrevendo O Servidor
- Vaihe 4: Testando O Servidor
- Vaihe 5: Aplicação Mobile
Video: Pequeno Projeto De Uma Casa Inteligente: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · Monitoramento de illuminação e Temperatura dos cômodos.
· Monitoramente de list de 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 or 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;
Edellytykset:
- Conhecimento básico em python, javascript, uso do system operacional, comandos básicos no shell
- Asennus: nodejs, python
- Ter instalado (valinnainen): telakointiasema, emulador de dispositivo mobile, gerenciador de sdk do Android (ei Android Studiota)
O desenvolvimento desse projeto fori feito no Linux. Podem ser välttämättömät sovitukset para que seja feito no Windows.
Vaihe 1: Configurando O Ambiente
Vamos configurar o ambiente de desenvolvimento em 2 partes: servidor e mobile.
reactnative.dev/
Vamos inicialmente criar uma estrutura de pastas. Em um directtório escolhido (que a partir de agora será escrito semper como $ PROJECT_DIR como placeholder - crie com no local que achar mais riittävästi 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
Podemos hyödyntää ambiente conteinerizado com Docker tai ambiente virtuaalinen 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 kuten ohjeet
Vamos então criar o arquivo que persistirá a list de dependências do servidor e colocar as dependências requiredárias:
$ kosketusvaatimukset.txt
Veja imagem do vaatimukset.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, rakenna kuva ja syötä kontti:
$ docker rakentaa. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash
Tietoa sopivasta tai dockerfilestä ja cli do dockerista:
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 applicação mobile:
$ npx create-reagoi-natiivisovellusasiakas
Vaihe 2: WebSocket
Interessante que o leitor conheça pelo menos um pouco and respeito de websocket antes de prosseguir. Caso o leitor nunca tenha lido, trabalhado ou ouvido falar nada a respeito, erilliset aloitusmuutokset minuutteihin ja tulokkaille como funciona o websocket através da documentação:
developer.mozilla.org/pt-BR/docs/WebSocket…
Voit käyttää bibliotecaa ilman asiakaspalvelua ja palveluntarjoajaa tai pöytäkirjan maneira que não precisemos pensar yksityiskohtaisia tietoja chamada e de armazenamento de identifadores e rotas. Erottele também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Asiakas:
Servidor:
Vaihe 3: Escrevendo O Servidor
Vamos criar uma estrutura inicial do projeto eccverver a interface que será utilizada como comunicação com o servidor:
$ mkdir src
$ touch app.py src/{controller, socketconnection}.py
Primeiramente vamos escrever um modeulo de inicalização do servidor:
Veja imagem tehdä app.py
Depois vamos escrever o modeulo que estabelece as conexões via websocket e as redirecionam para um controlador.
Veja imagem do socketconnection.py
OHJAIMEN KÄYTTÖ
O ohjauslaite vastaanottimella tai pacotella, joka reagoi asetusten määrittäjälle ja gerenciarille yhdyskäytäntöinä; Vastuuvelvollisuus tehdä valvontaa sapeli laatu 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.
Lopulliset temot 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 system 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 modeulo responselavel pela persência de dados como se fosse essa a "regra de negócio".
Veja imagem do usecases.py
Huomautus: tarkat pysyvät osados de alguma forma. Fica ja escolha do leitor como prefere armazenar os dados e portanto, implementar as funções do src/repository.py. No projeto desenvolvido como examplelo foi persistido em um arquivo json no directtório database. Ei arkistoja, joita ei voi projetoida, vaan ne voidaan varmentaa pastapalvelimen/tietokannan avulla.
Vaihe 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 kontti está rodando, ja dentro dele execute:
$ python app.py
Suorita kontti, ei suoritusta $ PROJECT_DIR/palvelimen suoritus:
$ python3 serverclient.py
Ei kehotetta ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identifação e/ou novos valores. Esimerkki:
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 persidoido no banco de dados escolhido.
Huomautus: 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.
Vaihe 5: Aplicação Mobile
Não será demonstrado com muitos details cada parte do desenvolvimento do cliente mobile. Não será explicitado aqui cada importação no modeulo principa criado pelo React Native nem possíveis detalhes de configuração. Kamerat, navigointipalvelut $ PROJECT_DIR/client e addicione a dependência que precisaremos para or projeto:
$ npm i socket.io
Em seguida vamos escrever os komponentit gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vc escrever os -komponentit de GUI.
⚠ Huomaa que a função chamada pelo useEffect ainda não foi escrita! Também não foram escritos os reductors 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 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.
Lataa sovellus App.js -komennolla, jossa on GUI -käyttöliittymä
Fim vamos escrever kuin funções välttämättömyys para fazer a comunicação com or servidor e para utlização do mesmo pelos komponentit de GUI.
Veja imagem do App.js com código da parte lógica/operacional
Suositeltava:
Projeto IoT - Sistema -ilmaisin De Fumaça: 5 vaihetta
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça koostuu uma solução IoT com tai objetivo de lupa tai valvonta hälytyksistä incêndio de residências através de um applicativo Android. O projeto ja baseado em um microcontrolador que se comunica com a nu
Projeto CoCoa: Um Colete De Comunicação Vaihtoehto: 8 vaihetta
Projeto CoCoa: Um Colete De Comunicação Alternativa: CoCoA-hanke on puettava liivi, joka on kytketty internetiin ja jonka avulla voidaan yhdistää vaihtoehtoisen viestinnän tuntoherkät symbolit auttamaan ihmisiä, joilla on puhe- tai ei-sanallisia vammoja
Projeto Lumos: 8 vaihetta
Projeto Lumos: O projeto Lumos koostuu rakenteesta, jossa on luminária, joka ohjaa älypuhelimen osaa, jossa on WiFi -yhteys. Voit hallita Android -sovellusten lumináriaa, kun se on kehitetty Android -sovelluksille, jotka ovat sallittuja ja käyttökelpoisia
Projeto Fila Fácil: 7 vaihetta
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é välttämätön 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
Casa Inteligente Com Arduino: 6 vaihetta
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 system com medição de temperatura e umidade, alarmme, acendimento de