Daftar Isi:

Pequeno Projeto De Uma Casa Inteligente: 5 Langkah
Pequeno Projeto De Uma Casa Inteligente: 5 Langkah

Video: Pequeno Projeto De Uma Casa Inteligente: 5 Langkah

Video: Pequeno Projeto De Uma Casa Inteligente: 5 Langkah
Video: Neighbors Laughed at the Innovative Building of our Small-House, But then they were Amazed 2024, Juli
Anonim
Pequeno Projeto De Uma Casa Inteligente
Pequeno Projeto De Uma Casa Inteligente

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 O Ambiente
Konfigurasi O Ambiente
Konfigurasi O Ambiente
Konfigurasi 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

Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
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

Testando O Servidor
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

Aplikasi Ponsel
Aplikasi Ponsel
Aplikasi Ponsel
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: