Satura rādītājs:
- 1. darbība. Configurando O Ambiente
- 2. darbība: WebSocket
- 3. darbība: Escrevendo O Servidor
- 4. darbība. Testando O Servidor
- 5. darbība. Aplicação Mobile
Video: Pequeno Projeto De Uma Casa Inteligente: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · De monitoramento de iluminação e temperatura dos cômodos.
· De monitoramente de list de alimentos e 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:
- 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;
- Kā lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Rekvizīti:
- Conhecimento básico em python, javascript, uso do system operational, comandos básicos no shell
- Instalēt: nodejs, python
- Inst instalado (opcionāli): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (nav pieejams Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Podem ser needárias adaptações para que seja feito no Windows.
1. darbība. Configurando O Ambiente
Vamos configurar o ambiente de desenvolvimento em 2 partes: servidor e mobile. O servidor seri escrito em python e o mobile em javascript ou typebook, 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 adekvato e com o nome de sua preferência), vamos criar uma pasta "servidor":
$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR
$ mkdir servidors
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Podemos utilizar um ambiente conteinerizado com Docker vai ambiente virtuālais python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos un imagem segundo o dockerfile:
$ cd $ PROJECT_DIR
$ touch dockerfile
Veja imagem do dockerfile.
Caso prefira utilizar ambiente virtual do python, siga as instrukcijas
Vamos então criar o arquivo que persistirá a list de dependências do servidor e colocar as dependências requiredárias:
$ touch prasības.txt
Veja imagem do prasības.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, konstruējot a imagem e entre no container:
$ docker būve. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash
Lai iegūtu papildinformāciju par dockerfile un cli do docker:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE
Um passo a comso configurar o ambiente de desenvolvimento mobile com React Native pode ser visto no link:
Após ter o ambiente configurado, ar pasta do projeto deve ser possível executar o comando para criar a aplicação mobile:
$ npx izveidot-reaģēt-vietējās lietotnes klients
2. darbība: WebSocket
Interesante 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, separe alguns minutes of 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 protokola de maneira que não precisemos pensar em detailshes de chamada e de armazenamento de identifadores e rotas. Atdaliet também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Kliente:
Servidors:
3. darbība: Escrevendo O Servidor
Vamos criar uma estrutura inicial do 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 methodulo de inicalização do servidor:
Veja imagem do 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
KONTROLERA E LIETOŠANAS
O kontroles kontrolieris vai pacots veic atbildes reakciju, lai izveidotu un izmantotu ģenerāldirektoru; serā Respabililade 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.
Galīgais temats 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 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 responseável pela persência de dados como se fosse essa a "regra de negócio".
Veja imagem do usecases.py
Piezīme: precīza pastāvīga informācija. Fica un escolha do leitor como prefere armazenar os dados and portanto, implementat 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 makaronu serveris/datu bāze 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.
4. darbība. 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, and dentro dele izpildīt:
$ python app.py
Visā konteinerā, nav tieša $ PROJECT_DIR/servera izpildes:
$ python3 serverclient.py
No prompt ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identifação e/ou novos valores. Piemēram:
80. UPDATE_FRIDGE_WATER_LEVEL;
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.
Piezīme: 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. darbība. Aplicação Mobile
Não será demonstrado com muitos detales 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 detales de configuração. Parādiet, navigējiet ar $ PROJECT_DIR/klients un pieskarieties pie atkarības, kas ir precīza:
$ npm i socket.io
Em seguida vamos escrever os komponentes gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vamos escrever os komponenti de GUI.
⚠ Piezīme que a função chamada pelo useEffect ainda não foi escrita! Kombinācija, kas sastāv no reduktoru komplektaDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURIALMODAL, 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 do App.js com código da parte GUI
Por fim vamos escrever as funções needárias para fazer a comunicação com or servidor e para utlização do mesmo pelos komponentes de GUI.
Veja imagem do App.js com código da parte lógica/operacional
Ieteicams:
Projeto IoT - Sistēmas detektors De Fumaça: 5 soļi
Projeto IoT - Sistēmas detektors De Fumaça: Ievads Sistēmas detektors Fumaça sastāv no katra risinājuma IoT com vai objetivo de atļauju vai monitoramento de alarmmes de incêndio de residências através de um applicativo Android. O projeto é baseado em um microcontrolador que se comunica com a nu
Projeto CoCoa: Um Colete De Comunicação Alternatīva: 8 soļi
Projeto CoCoa: Um Colete De Comunicação Alternativa: CoCoA projekts ir valkājama veste, kas savienota ar internetu, kas ļauj savienot taustes alternatīvas komunikācijas simbolus, lai palīdzētu cilvēkiem ar runas vai neverbāliem traucējumiem. O Colete de Comunicação Alternativa (CoCoA) consi
Projeto Lumos: 8 soļi
Projeto Lumos: O projeto Lumos konsiste ar konstruēšanu de luma luminária controlada a partir de um smartphone conectado à mesma rede móvel ou WiFi. Lai kontrolētu Android ierīču apgaismojumu, atlaidiet to, ļaujiet ātri un acender un izmantojiet utilītu
Projeto Fila Fácil: 7 soļi
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é nepiecieams 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 soļi
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