Daftar Isi:
- Langkah 1: Konfigurasikan O Ambiente
- Langkah 2: WebSocket
- Langkah 3: Escrevendo O Servidor
- Langkah 4: Testando O Servidor
- Langkah 5: Aplikasi Ponsel
Video: Pequeno Projeto De Uma Casa Inteligente: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
O projeto que faremos é de uma casa inteligente. Positif dasar lakukan grup fungsi:· De monitoramento de iluminação dan suhu dos cômodos.
· De monitoramente de lista de alimentos dan nivel de água filtrada na geladeira.
Tidak ada escreveremos os firmware dos dispositivos IoT da geladeira nem dos cômodos; porém assumiremos que os dispositivos fazem o seguinte:
- Layar sentuh geladeira possui um dispositivo com em que é possível entrar com dados de alimentos: o nome de um alimento e sua quantidade;
- Sebuah geladeira possui um sensor de nivel em um pequeno tanque de água embutido na geladeira;
- Os cômodos têm termômetro dan sensores de iluminância;
- Berkomunikasi dengan baik untuk wifi;
- Sebagai lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Persyaratan:
- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos no shell
- Ter instalado: nodejs, python
- Ter instalado (opsional): buruh pelabuhan, emulador de dispositivo mobile, gerenciador de sdk do Android (disponível no Android Studio)
O desenvolvimento desse projeto foi feito tidak ada Linux. Podem ser necessárias adaptaes para que seja feito no Windows.
Langkah 1: Konfigurasikan O Ambiente
Konfigurasi Vamos atau ambiente de desenvolvimento em 2 bagian: server dan mobile. O server será escrito em python e o mobile em javascript atau TypeScript, sendo utilizado Bereaksi Asli untuk 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 server
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Podemos utilizar um ambiente conteinerizado com Docker atau ambient virtual python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$cd $PROJECT_DIR
$ sentuh file buruh pelabuhan
Veja imagem dockerfile.
Caso prefira utilizar ambiente virtual do python, siga sebagai instruções em
Vamos então criar o arquivo que persistentirá a lista de dependências do service and colocar as dependências need:
$ persyaratan sentuh.txt
Veja imagem lakukan requirements.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, construa a imagem e entre no container:
$ membangun buruh pelabuhan. -t smarthouse $ docker run -it -p 3000:3000 -v $(pwd):/app smarthouse bash
Para mais informaes sobre o dockerfile dan 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:
Ter o ambiente configurado, na pasta do projeto deve ser possível executar o comando para criar a aplikasi mobile:
$npx buat-bereaksi-aplikasi asli-klien
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, pisahkan alguns minutos para entender como funciona o websocket através da documentao:
developer.mozilla.org/pt-BR/docs/WebSocket…
Usaremos uma biblioteca no cliente dan no service que abstrak atau protokol de maneira que não tepat pensar em detalhes de chamada dan de armazenamento de identificadores dan rotas. Pisahkan também um tempo para estudar sebagai bibliotecas utilizados no cliente and no service:
Klien:
Layanan:
Langkah 3: Escrevendo O Servidor
Vamos criar uma estrutura inisial melakukan projeto dan escrever sebuah antarmuka permintaan será utilizada como comunicao com o layanan:
$mkdir src
$ sentuh app.py src/{controller, socketconnection}.py
Primeiramente vamos escrever um módulo de inicalização do servidor:
Veja imagem lakukan app.py
Depois vamos escrever o módulo que estabelece sebagai koneksi melalui websocket dan sebagai redirecionam para um controlador.
Veja imagem lakukan socketconnection.py
PENGGUNAAN KONTROLER E
O controlador receberá um pacote do módulo responsável por estabelecer dan gerenciar sebagai conexões; será responsabilidade lakukan kontrol 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 lakukan controller.py.
Tugas akhir dari casos de uso que devem gerenciar como deve ser tratado os dados do evento recebido dan criar os novos dados a partir do dados recebidos para que o controlador atualize o estado do sistema. Tidak ada caso desse sistema há somente atualização de valores (sejam numéricos, texto ou booleanos - no caso de ligar/desligar dispositivos de ambientação). Eno não é de surpreender que os casos de uso tão somente chame funções do módulo responsável pela bertahanncia de dados como se fosse essa a "regra de negócio".
Veja imagem lakukan usecases.py
Nota: precisamos persistenir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto, implement as funções do src/repository.py. Tidak ada projeto desenvolvido como exemplo foi persistentido em um arquivo json tidak ada database diretório. Tidak ada repositori lakukan projeto é possível verifikasi uma pasta server/database com um arquivo com os dados persisten bem como um arquivo de modelo em server/database-model.json de como deve ser o json para nossa aplikasi funcionar.
Langkah 4: Testando O Servidor
Podemos criar um script para conectar ao service dan enviar eventos sesuai dengan estrutura esperada pelos controladores para fins de testes manuais. Vamos criar esse script dan rodá-lo com o service*.
Veja imagem lakukan serverclient.py
Com o arquivo criado, verifique se o container está rodando, dan dentro dele jalankan:
$ python app.py
Untuk wadah, tidak ada perintah $PROJECT_DIR/server yang dijalankan:
$ python3 serverclient.py
No prompt "> " digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e/ou novos valores. 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 persistentido no banco de dados escolhido.
Nota: verifikasi untuk 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: Aplikasi Ponsel
Não será demonstrado com muitos detalhes cada parte do desenvolvimento do klien seluler. No será eksplisitado aqui cada importação no módulo prinsip criado pelo React Native nem possíveis detalhes de configuração. Para começar, navegue até $PROJECT_DIR/client and adicione a dependência que precisaremos para o projeto:
$npm saya socket.io
Em seguida vamos escrever os componentes gráficos e as funções que irão se comunicar com o service.
ESCREVENDO A TELA
Em App.js, vamos escrever os componentes de GUI.
Perhatikan que a função chamada pelo useEffect ainda não foi escrita! Mulai dari reduksi untuk setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer, setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer, dan initiAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL_MODAL_MODAL
Também ainda não foram escritas as funções utilizadas pelos elementos de inteface gráfica para fazer chamadas para escrita no service: saveNewFoodValue, saveNewTemperature, saveNewLuminosity, toggleTemperatureForRoom, toggleLightForRoom
Portanto, se desejar testar os elementos com dados falsos, escreva cada objeto dan função dito acima.
Veja imagem do App.js com código da parte GUI
Oleh karena itu, gunakan sebagai kesenangan yang diperlukan untuk berkomunikasi dengan layanan dan untuk menggunakan komponen GUI.
Veja imagem do App.js com código da parte lógica/operacional
Direkomendasikan:
Projeto IoT - Detektor Sistema De Fumaça: 5 Langkah
Projeto IoT - Sistem Detektor De Fumaça: Pengenalan Sistema Detector de Fumaça terdiri dari solusi IoT dan objetivo de permitir atau monitoramento de alarmes de incêndio de residencias através de um aplicativo Android. O projeto é baseado em um microcontrolador que se comunica com a nu
Projeto CoCoa: Um Colete De Comunicação Alternatif: 8 Langkah
Projeto CoCoa: Um Colete De Comunicação Alternativa: Proyek CoCoA adalah rompi yang dapat dikenakan yang terhubung ke internet yang memungkinkan penggabungan simbol sentuhan komunikasi alternatif untuk membantu orang-orang dengan disabilitas bicara atau non-verbal.O Colete de Comunicação Alternativa (CoCoA) consi
Projeto Lumos: 8 Langkah
Projeto Lumos: O projeto Lumos terdiri dari konstruo de uma luminária mengontrol sebagian dari koneksi ponsel cerdas mesma rede móvel ou WiFi. Untuk mengontrol luminária foi desenvolvido um aplikasi Android, izinkan apagar dan acender a luz utilizando além
Projeto Fila Fácil: 7 Langkah
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é needá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 temperaturea e umidade, alarme, acendimento de