Isi kandungan:
- Langkah 1: Configurando O Ambiente
- Langkah 2: WebSocket
- Langkah 3: Escrevendo O Servidor
- Langkah 4: Testando O Servidor
- Langkah 5: Aplicação Mobile
Video: Pequeno Projeto De Uma Casa Inteligente: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
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 lista 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 suppiremos que os dispositivos fazem o seguinte:
- Skrin sentuh geladeira possui um dispositivo com que é possível entrar com dados de alimentos: o nome de um alimento e sua quantidade;
- 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;
- Sebagai lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Permintaan:
- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos no shell
- Ter instalado: nodejs, python
- Ter instalado (opsional): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (disponível no Android Studio)
O desenvolvimento desse projeto juga telah menggunakan Linux. Podem ser requárias adaptações para que seja feito no Windows.
Langkah 1: Configurando O Ambiente
Vamos configurar o ambiente de desenvolvimento em 2 bahagian: servidor e mobile. O servidor será escrito em python e o mobile em javascript ou typcript, 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 maisukupado e com nome de sua preferência), vamos criar uma pasta "servidor":
$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR
servidor $ mkdir
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 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 sebagai dependências Needárias:
$ sentuhan syarat.txt
Veja imagem do requirements.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, sebagai gambaran dan tidak mengandungi kontena:
$ dok membina. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd): / app smarthouse bash
Para mais informações sobre o dockerfile e a cli do docker:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO BERGERAK
Um passo a passo de como configurar o ambiente de desenvolvimento mobile com React Native pode ser visto no link:
Apo ter ter ambiente configurado, na pasta do projeto deve ser possível pelaksana o comando para criar a aplicação mobile:
Pelanggan $ npx create-react-native-app
Langkah 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…
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. Pisahkan também um tempo para estudar sebagai bibliotecas utilizados no cliente e no servidor:
Pelanggan:
Pelayan:
Langkah 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 / {pengawal, 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 sebagai berhubung melalui websocket e sebagai redirecionam para um controlador.
Veja imagem do socketconnection.py
PENGGUNA E PENGENDALI
O controlador receberá um pacote do módulo responsável por estabelecer e gerenciar sebagai 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. Tiada 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 melakukan usecases.py
Nota: precisamos persistir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto, implementar sebagai funções do src / repository.py. Tidak ada projeto desenvolvido como exemplo juga persistido em um arquivo json no diretório database. No repositório do projeto é 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 de como deve ser o json para a nossa aplicação funcionar.
Langkah 4: Testando O Servidor
Podemos criar um script para conectar ao servidor dan enviar eventos sesuai dengan estrutura esperada pelos controladores para fins de testes manuais. Skrip karangan video vmos e rodá-lo com o servidor *.
Veja imagem do serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele melaksanakan:
$ python app.py
Fora do container, tiada diretório $ PROJECT_DIR / pelayan yang dilaksanakan:
$ python3 serverclient.py
Tiada permintaan ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e / ou novos valores. Oleh contoh:
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, porta exposta no docker run e a porta do script de teste devem ser a mesma.
Langkah 5: Aplicação Mobile
Não será demonstrado com muitos melepaskan cada parte do desenvolvimento do cliente mobile. Não será expressado aqui cada importação no módulo prinsipal criado pelo React Native nem possíveis detalhes de configuração. Para começar, navegue até $ PROJECT_DIR / pelanggan dan adicione a dependência que precisaremos para o projeto:
$ npm saya socket.io
Em seguida vamos escrever os componentses gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vamos escrever os componentses de GUI.
⚠ Perhatikan que a função chamada pelo useEffect 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_ INTERAL_TEMPERATURE_
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.
Veja imagem do App.js com código da parte GUI
Oleh fim vamos escrever sebagai kesenangan yang diperlukan untuk faz a comunicação com o servidor e para utlização do mesmo pelos komponenes de GUI.
Veja imagem do App.js com código da parte lógica / operasional
Disyorkan:
Projeto IoT - Sistema Detector De Fumaça: 5 Langkah
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça terdiri daripada em uma solução IoT com o objetivo de permitir o monitoramento de alarmes de incêndio de residências através de um aplicativo Android. O projeto é baseado em um mikrokontrolor que se comunica com a nu
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 Langkah
Projeto CoCoa: Um Colete De Comunicação Alternativa: Projek CoCoA adalah rompi yang boleh dipakai yang disambungkan ke internet yang membolehkan penggabungan simbol sentuhan komunikasi alternatif untuk membantu orang kurang upaya pertuturan atau bukan lisan. O Colete de Comunicação Alternativa (CoCoA)
Projeto Lumos: 8 Langkah
Projeto Lumos: O projeto Lumos terdiri daripada konstruksuo de uma luminária controlada a partir de um smartphone conectado à mesma rede móvel ou WiFi. Untuk kawalan dan penerangan yang diperlukan juga untuk Android, aplikasikan aplikasi dan aplikasi luz utilizando
Projeto Fila Fácil: 7 Langkah
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é keperluan á 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 Langkah
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