Съдържание:
- Стъпка 1: Конфигурирайте O Ambiente
- Стъпка 2: WebSocket
- Стъпка 3: Escrevendo O Servidor
- Стъпка 4: Testando O Servidor
- Стъпка 5: Aplicação Mobile
Видео: Pequeno Projeto De Uma Casa Inteligente: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · De monitorramento de iluminação e temperature dos cômodos.
· De Monitorramente de lista de alimentos e nível de água filtrada na geladeira.
Não escreveremos os firmwares dispositivos IoT da geladeira nem dos comodos; 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;
- As lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Реквизити:
- Conhecimento básico em python, javascript, uso do system operational, comandos básicos без черупка
- Терминално инсталиране: nodejs, python
- Терминална инсталация (опционално): docker, emulador de dispositivo mobile, gerenciador de sdk до Android (без Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Настройте необходимите адаптации за това, че нямате Windows.
Стъпка 1: Конфигурирайте O Ambiente
Vamos конфигурация за ambiente de desenvolvimento em 2 partes: servidor e mobile. O servidor será escrito em python e или mobile em javascript или машинопис, sendo utilizado React Native за проектиране.
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 сървър
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Podemos utilizar um ambiente conteinerizado com Docker или ambiente virtual python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$ cd $ PROJECT_DIR
$ touch докер файл
Снимки на dockerfile.
Caso prefira използва ambiente virtual do python, сига като инструкции в тях
Vamos então criar o arquivo que persistirá a list de dependências do servidor e colocar as dependências neophodárias:
$ touch requirements.txt
Veja imagem do requirements.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, конструирайте изображение и въведете без контейнер:
$ docker build. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash
За повече информация относно dockerfile и клик докер:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE
Um passo a passo de como configurar o ambiente de desenvolvimento mobile com React Native pode serto visto no link:
Após ter o ambiente configurado, na pasta do projeto deve ser possível executar o comando para criar a applicação mobile:
$ npx клиент за създаване-реакция-роден-приложение
Стъпка 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 или 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 precizmos pensar em detalhes de chamada e de armazenamento de identificadores e rotas. Отделно também um tempo para estudar като bibliotecas използва no cliente e no servidor:
Клиент:
Сървидор:
Стъпка 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/{controller, socketconnection}.py
Primeiramente vamos escrever um módulo de inicalização do servidor:
Изтеглете imagem до app.py
Depois vamos escrever o módulo que estabelece as conexões via websocket e as redirecionam para um controlador.
Изтеглете imagem до socketconnection.py
КОНТРОЛЕР E ИЗПОЛЗВА
O controlador receberá um pacote do módulo responsável por estabelecer e gerenciar as conexões; será responsabilidade do controlador sabre 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.
Изтеглете imagem до 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. 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 responsável pela persistência de dados como se fosse essa a "regra de negócio".
Изображението се използва от usecases.py
Забележка: precisamos persistir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto, implementar as funções do src/repository.py. Няма проект за десенволвидо, което е приложимо за постоянството им в arquivo json без директна база данни. 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.
Стъпка 4: 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*.
Имейл изображение към serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele execute:
$ python app.py
За контейнер, без директно изпълнение на $ PROJECT_DIR/сървър:
$ python3 serverclient.py
Няма подкана ">" цифрови съобщения за събития, които не съдържат контролер или контролер ";" e então valores de identificação e/ou novos valores. Например:
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.
Забележка: Verifique que a porta que está sendo servido a applicação, porta exposta no docker run e a porta do script de teste devem ser a mesma.
Стъпка 5: Aplicação Mobile
Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Não será eksplicitado aqui cada importação no módulo principal criado pelo React Native nem possíveis подробности за конфигурирането. Para começar, navegue at $ PROJECT_DIR/client e adicione a dependência que precisaremos para o projeto:
$ npm i socket.io
Em seguida vamos escrever os componentsntes gráficos e as funções que irão se comunicar com o servidor.
ЕСКРЕВЕНДО А ТЕЛА
Em App.js, vamos escrever с компоненти на GUI.
Забележете, че можете да използвате função chamada peloEffect ainda não foi escrita! Também não foram escritos os reductors setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer и немски escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPALITM_MITAL_MODAL, 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, toggleLight
Portanto, se desejar testar os elementos com dados falsos, escreva cada objeto e função dito acima.
Използвайте imagem до App.js с кодиго да парте GUI
Por fim vamos escrever as funções neophodárias para fazer a comunicação com o servidor e para utlização do mesmo pelos компоненти на GUI.
Veja imagem do App.js com código da parte lógica/operacional
Препоръчано:
Projeto IoT - Sistema Detector De Fumaça: 5 стъпки
Проектиране на IoT - Sistema Detector De Fumaça: Въвеждане на O Sistema Detector de Fumaça се състои от решението на IoT за обективиране на разрешителни за мониторинг на аларми за включване на остатъци в приложения за Android. O projeto é baseado em um microcontrolador que se comunica com a nu
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 стъпки
Projeto CoCoa: Um Colete De Comunicação Alternativa: Проектът CoCoA е носеща жилетка, свързана към интернет, която позволява свързването на тактилни символи на алтернативна комуникация, за да подпомогне хората с реч или невербални увреждания
Projeto Lumos: 8 стъпки
Projeto Lumos: O проекто Lumos се състои от конструиране на контрола за управление на осветителни тела, част от смартфон, свързан чрез съобщение за повторно използване на WiFi или WiFi. За да контролирате осветлението за desenvolvido и да прилагате Android, можете да разрешите apagar e acender и да използвате всички приложения
Projeto Fila Fácil: 7 стъпки
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 стъпки
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 temperature e umidade, alarme, acendimento de