Mục lục:

Pequeno Projeto De Uma Casa Inteligente: 5 bước
Pequeno Projeto De Uma Casa Inteligente: 5 bước

Video: Pequeno Projeto De Uma Casa Inteligente: 5 bước

Video: Pequeno Projeto De Uma Casa Inteligente: 5 bước
Video: Plano de casa pequeña de 5x10 metros con 3 dormitorios 2024, Tháng mười một
Anonim
Pequeno Projeto De Uma Casa Inteligente
Pequeno Projeto De Uma Casa Inteligente

Hỡi projeto quearesmos é 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 phần vững hệ điều hành dos dispositivos IoT da geladeira nem dos cômodos; porém giả định là que os dispositivos fazem o seguinte:

- Một màn hình cảm ứng geladeira Possui um dispositivo com 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 red wifi;

- Như lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela red wifi;

Requisitos:

- Conhecimento básico em python, javascript, uso do Sistema operacional, comandos básicos no shell

- Ter instalado: nodejs, python

- Ter instalado (opcional): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (disponível no Android Studio)

O desenvolvimento desse projeto foi feito không có Linux. Podem ser needárias adaptações para que seja feito no Windows.

Bước 1: Configurando O Ambiente

Configurando O Ambiente
Configurando O Ambiente
Configurando O Ambiente
Configurando O Ambiente

Vamos configurar o ambiente de desenvolvimento em 2 partes: servidor e mobile. O servidor será escrito em python e o mobile em javascript ou stylescript, sendo useizado 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 enoughado 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 usedizar um ambiente Continerizado com Docker ou ambiente virtual python (venv). Caso deseje Pracizar ambiente Continerizado, criaremos a imagem segundo o dockerfile:

$ cd $ PROJECT_DIR

$ touch dockerfile

Veja imagem do dockerfile.

Caso prefira useizar ambiente virtual do python, siga as toolsções em

Vamos então criar o arquivo que persistirá a lista de dependências do servidor e colocar as dependências needárias:

$ touch request.txt

Veja imagem làm theo yêu cầu.txt.

Caso tenha optado bởi useizar um ambiente Conteinerizado, hiểu ra một hình ảnh e entre no container:

$ docker xây dựng. -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: https://docs.docker.com/engine/reference/builder/…

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, na pasta do projeto deve ser possível executive o comando para criar a aplicação mobile:

Ứng dụng khách $ npx create-react-native-app

Bước 2: WebSocket

Éprisssante 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 không có khách hàng e không có người phục vụ hàng đợi trừu tượng o protocolo de manira que não Preisemos penar em detalhes de chamada e de armazenamento de Idificadores e rotas. Separe também um tempo para estudar as bibliotecas Pracizados no cliente e no servidor:

Khách hàng:

Servidor:

Bước 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 inicial do projeto e escrever a interface que será useizada como comunicação com o servidor:

$ mkdir src

$ touch app.py src / {controller, 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 settingelece as conexões qua websocket e as redirecionam para um controlador.

Veja imagem do socketconnection.py

BỘ ĐIỀU KHIỂN E CÔNG DỤNG

O controlador Reberá um pacote do módulo responseável por settingelecer e gerenciar as conexões; será responseabilidade do controlador saber Qual função de caso de uso chamar para cada envento recbido, 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 Collectbido e criar os novos dados a partir do dados Rebidos para que o controlador atualize o estado do sistema. No 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 responseável pela Persência de dados como se fosse essa a "regra de negócio".

Veja imagem do usecases.py

Ghi chú: Preisamos persistir os dados de alguma forma. Fica a escolha do leitor como thích armazenar os dados e portanto, implementar as funções do src / repository.py. Không có projeto desenvolvido como exlo foi persistido em um arquivo json không có cơ sở dữ liệu diretório. 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.

Bước 4: Testando O Servidor

Testando O Servidor
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, e dentro xóa thực thi:

$ python app.py

Fora do container, không có diretório $ PROJECT_DIR / máy chủ thực thi:

$ python3 serverclient.py

Không có dấu nhắc ">" digite os eventos encontrados no controlador seguido de ";" e então valores de Idificação e / ou novos valores. Por exelo:

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.

Bước 5: Một Aplicação Mobile

A Aplicação Mobile
A Aplicação Mobile
A Aplicação Mobile
A Aplicação Mobile

Não será demorado com muitos detalhes cada parte do desenvolvimento do cliente di động. Não será explicitado aqui cada importação no módulo major criado pelo React Não nem kangíveis detalhes de configuração. Para começar, navegue até $ PROJECT_DIR / client e adicione a dependência que Preisaremos para o projeto:

$ npm i socket.io

Em seguida vamos escrever os componentes gráficos e as funções que irão se comunicar com o servidor.

ESCREVENDO A TELA

Em App.js, vamos escrever os thành phần của GUI.

⚠ Lưu ý hàng một cách sử dụng vui nhộn chamada peloEffect ainda não foi escrita! Também não foram escritos os Reducers setDataReducer, setFoodReducer, setTempe HeatReducer, setLightReducer e nem escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, INITIAL_LIGHT_MODAL, INITIAL_LIGHT_MODAL

Também ainda não foram escritas as funções useizadas pelos elementos de inteface gráfica para fazer chamadas para escrita no servidor: saveNewFoodValue, saveNewTempe Nhiệt, lưu

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 o servidor e para utlização do mesmo pelos componentes de GUI.

Veja imagem do App.js com código da parte lógica / operacional

Đề xuất: