جدول المحتويات:

Pequeno Projeto De Uma Casa Inteligente: 5 خطوات
Pequeno Projeto De Uma Casa Inteligente: 5 خطوات

فيديو: Pequeno Projeto De Uma Casa Inteligente: 5 خطوات

فيديو: Pequeno Projeto De Uma Casa Inteligente: 5 خطوات
فيديو: INTERIOR DESIGN Step by Step How to Design Your DREAM HOUSE | Design Process to Transform Your Space 2024, يوليو
Anonim
Pequeno Projeto De Uma Casa Inteligente
Pequeno Projeto De Uma Casa Inteligente

O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades: · مراقبة درجات الحرارة.

· مراقبة قائمة الطعام ونيفيل دي أجوا فيلترادا نا جيلاديرا.

Não escreveremos os firmwares dos firmitivos IoT da geladeira nem dos cômodos؛ افتراضات قائمة الموظفين

- شاشة تعمل باللمس من الأجهزة التي تعمل باللمس وإمكانية الدخول عليها ؛

- جهاز استشعار من نوع Geladeira Posui 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 dispitivo que se comunica pela rede wifi ؛

طلبات الشراء:

- Conhecimento básico em python، javascript، uso do sistema operacional، comandos básicos no shell

- تركيب: nodejs ، بيثون

- Ter instalado (اختياري): عامل ميناء ، emulador de Disitivo mobile ، gerenciador de sdk do Android (disponível no Android Studio)

قم بتثبيت مشروع foi feito no Linux. يجب أن تتكيف Podem مع ملفات Windows.

الخطوة 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 copycript، 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 sempre 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

مكدير دولار

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR

Podemos useizar 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 relências do servidor e colocar as يعتمد على الضرورات:

متطلبات اللمس $. txt

Veja imageem تفعل المتطلبات. txt.

Caso tenha optado por utilizar um ambiente conteinerizado، construa a imagem e entre no container:

بناء عامل ميناء. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd): / app smarthouse bash

الفقرة mais informações sobre o dockerfile e a 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:

Após ter o ambiente configurado، na pasta do projeto deve ser obível installar o comando para criar a aplicação mobile:

$ npx عميل التطبيق create-react-native

الخطوة الثانية: 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. Separe também um tempo para estudar as bibliotecas utilizados no customere 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:

Veja imagem do app.py

Depois vamos escrever o módulo que estabelece كـ conexões عبر websocket e كـ redirecionam para um controlador.

Veja imagem do socketconnection.py

استخدامات جهاز التحكم E

O controlador Receberá um pacote do módulo responsável by estabelecer e gerenciar as 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 Disitivos conectados para atualização das informações.

Veja imagem do controller.py.

وضع اللمسات الأخيرة على الحالات التي يتم فيها تطوير التطبيقات في 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. لا توجد حالة ديسي سيستيما há somente atualização de valores (sejam numéricos، texto ou booleanos - no caso de ligar / desligar detitivos de ambientação). معلومات إضافية عن حالات الطوارئ التي يمكن أن تؤديها بعض المهام التي يمكن أن تقوم بها في حالة الاستجابة السريعة.

Veja imagem تفعل usecases.py

ملحوظة: precisamos persistir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto ، تنفيذ كما تفعل وظائف src / repository.py. لا يوجد مشروع نصي عليه نموذجًا لـ foi persistido em um arquivo json no diretório database. لا يوجد مستودع يمكنك القيام به للمشروع أو إمكانية التحقق من خادم المعكرونة / قاعدة بيانات com 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 matche 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 dele execute:

$ python app.py

Fora do container، no diretório $ PROJECT_DIR / server يتم تنفيذ:

$ python3 serverclient.py

لا يوجد موجه ">" digite os eventos encontrados no controlador seguido de "؛" 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 aplicação، a porta exposta no docker run e a porta do script de teste devem ser a mesma.

الخطوة 5: تطبيق Aplicação Mobile

A Aplicação موبايل
A Aplicação موبايل
A Aplicação موبايل
A Aplicação موبايل

Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Não será الصريحة ذات الأهمية الكبيرة التي لا تحتاج إلى لعبة رئيسية تتفاعل مع المحتوى الأصلي. Para começar، navegue até $ PROJECT_DIR / client e adicione a Depência que precisaremos para o projeto:

$ npm أنا socket.io

قم بتشغيل مكونات النظام الأساسي مثل funções que irão se comunicar com o servidor.

ESCREVENDO A TELA

Em App.js ، vamos escrever os elementes de GUI.

⚠ ملاحظة que a função chamada pelo useEffect ainda não foi escrita! مجموعة مخفضات نظام التشغيل Também não foram ، DataReducer ، setFoodReducer ، setTemperatureReducer ، setLightReducer e nem escritos os objetos com estados iniciais INITIAL_STATE، INITIAL_FOOD_MODAL، INITIAL_TEMPERATURE_MODAL، INITIAL_TEMPERATURE_MODAL

Também ainda não foram escritas مثل funções useizadas pelos elementos de inteface gráfica para fazer chamadas para escrita no servidor: saveNewFoodValue، saveNewTemperature، saveNewLuminosity، toggleTemperatureForLight، togoomle

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

من خلال تطبيقه على أنه عناصر ضرورية من أجل الوصول إلى الخدمات والمكونات الأساسية لواجهة المستخدم الرسومية.

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

موصى به: