جدول المحتويات:
- الخطوة 1: Configurando O Ambiente
- الخطوة الثانية: 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:36
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
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
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
موصى به:
Projeto IoT - جهاز كشف سيستيما دي فوماكا: 5 خطوات
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça تتكون من uma solução IoT com o objetivo de allowir o monitor de encêndio de Residências 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 Alternativa: 8 خطوات
Projeto CoCoa: Um Colete De Comunicação Alternativa: The CoCoA Project عبارة عن سترة يمكن ارتداؤها متصلة بالإنترنت تتيح اقتران الرموز اللمسية للاتصال البديل لمساعدة الأشخاص الذين يعانون من إعاقات في الكلام أو غير لفظية. O Colete de Comunicação Alternativa (CoCoA) consi
Projeto Lumos: 8 خطوات
Projeto Lumos: O projeto Lumos تتكون من كونستروساو دي لوميناريا كونيكتادو من جانب الهاتف الذكي المتصل بشبكة الإنترنت. Para controlar a luminária foi desenvolvido um aplicativo Android، que permite apagar e acender a luz utilizando além
Projeto Fila Fácil: 7 خطوات
Projeto Fila Fácil: Em nosso dia a dia vamosiversas vezes em locais onde & eacute؛ الضرورة & aacute؛ ria uma gest & atilde؛ o de senhas de Clientes para Organizar e agilizar atendimentos. Em alguns estabelecimentos podemos demorar alguns minutos ou at & eacute؛ ميسمو حورس إسبانيا
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 sistema com medição de thermatura e umidade، alarme، acendimento de