ዝርዝር ሁኔታ:
- ደረጃ 1 Configurando O Ambiente
- ደረጃ 2 - WebSocket
- ደረጃ 3: Escrevendo O Servidor
- ደረጃ 4: Testando O Servidor
- ደረጃ 5 - አፕሊካçኦ ሞባይል
ቪዲዮ: Pequeno Projeto De Uma Casa Inteligente: 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:29
O projeto que faremos é de uma casa inteligente። Possui basicamente dois grupos de funcionalidades: · ደ ሞኒቶራቶሞቶ ደ ኢሉሚናçኦ ኢ temperatura dos cômodos.
· ዴ ሞኒቶራሜንቴይ ዴ ሊስታ ዴ አልሚሞስ ኢ ኒቬል ደ አጉዋ ፍልትራዳ እና ገላዴይራ።
ናኦ escreveremos ኦኤስ firmwares dos dispositivos IoT da geladeira nem dos cômodos; porém assumiremos que os dispositivos fazem o seguinte:
- አንድ ገላዲራ ሊኖር የሚችል የመዳሰሻ ማያ ገጽ በ ‹ፖሲሲቬል ኢንተርራር› ዳዶስ ዴ አልሚሞስ ፤ o nome de um alimento e sua quantidade;
- አንድ ገላዴራ ሊኖር የሚችል የሕዋስ ዳሳሽ (ዴል)
- ኦስ cômodos têm termômetros e sensores de iluminância;
- Os cômodos têm ar condicionado que se comunicam pela rede wifi;
- እንደ 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 sistema operacional ፣ comandos básicos no shell
- Ter instalado: nodejs ፣ python
- Ter instalado (opcional): docker ፣ emulador de dispositivo mobile ፣ gerenciador de sdk do Android (ምንም የ Android ስቱዲዮን አያሰራጩ)
O desenvolvimento desse projeto foi feito no Linux. Podem ser daruárias adaptações para que seja feito no 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 typescript, sendo utilizado React Native para o projeto.
reactnative.dev/
Vamos inicialmente criar uma estrutura de pastas. ኢም ዲሬቶሪዮ እስኮሊዶ (ለንባብ የበቃው ሰሪ 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 አገልጋይ
Podemos utilizar um ambiente conteinerizado com Docker ou ambiente ምናባዊ ፓይዘን (venv)። Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$ cd $ PROJECT_DIR
$ ንኪ dockerfile ን ይንኩ
Veja imagem dockerfile ን ያድርጉ።
Caso prefira utilizar ambiente virtual do python ፣ እንደ መመሪያቸው ያውጡ
Vamos então criar o arquivo que persistirá a lista de dependências do servidor e colocar as dependências necessárias:
የንክኪ መስፈርቶች.txt
Veja imagem requirements.txt ያድርጉ።
Caso tenha optado por utilizar um ambiente conteinerizado, አንድ ምናባዊ እና ምንም መያዣ የለም:
$ docker ግንባታ። -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash
ለፓራ mais መረጃ ወይም ለ dockerfile እና ለ dockerfile:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO ሞባይል
እኔ ፓሶ ዴ ኮሞ configurar o ambiente de desenvolvimento mobile com React Native pode ser visto no link:
የአከባቢው ውቅረት ፣ እና ፓስታ በ projeto deve ser possível executar o comando para criar a aplicaçã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 ovivido 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. ተለያይም እም ቴም ፓራ ፓስት ኢስታዱር እንደ bibliotecas utilizados ምንም ደንበኛ እና አገልጋይ የለም
ደንበኛ ፦
አገልጋይ -
ደረጃ 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/{መቆጣጠሪያ ፣ socketconnection}.py
Primeiramente vamos escrever um módulo de inicalização do servidor:
Veja imagem app.py ን ያድርጉ
Depois vamos escrever o módulo que estabelece as conexões via websocket e as redirecionam para um controlador.
Veja imagem socketconnection.py ያድርጉ
ተቆጣጣሪ ሠ አጠቃቀሞች
ኦ controlador receberá um pacote do módulo responsável por 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 ሳላ ክፍል de dispositivos conectados para atualização das informações.
Veja imagem መቆጣጠሪያ.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. ምንም 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".
Veja imagem usecases.py ያድርጉ
ማሳሰቢያ: precisamos persistir os dados de alguma ፎርማ። Fica a escolha do leitor como prefere armazenar os dados e portanto, fular as funções do src/repository.py. ምንም ምሳሌ የለም። ምንም የፓስታ አገልጋይ/የውሂብ ጎታ ኮም ከአርኪቮ com ጋር ዳፓስ ቀጣይስሞስ በአቶ አርኩቮ ዴ ሞሎ ኤም አገልጋይ/የውሂብ ጎታ-ሞዴል።
ደረጃ 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*.
Veja imagem serverclient.py ን ያድርጉ
ከአርኪቮ ክሪዶ ፣ ከእውነተኛው ኮንቴይነር está rodando ፣ e dentro Dele execute:
$ python app.py
ፎራ ዶ ኮንቴይነር ፣ ምንም ዳይሬክቶሪ የለም $ PROJECT_DIR/አገልጋይ ያስፈጽማል ፦
$ 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, porta exposta no docker run e a porta do script de teste devem ser a mesma.
ደረጃ 5 - አፕሊካçኦ ሞባይል
Não será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Não será explicitado aqui cada importação no módulo principal criado pelo React Native nem possíveis detalhes de configuração. ከዚህ ቀደም ፣ ለ $ PROJECT_DIR/ደንበኛ እና ለድህረ -ገፅ ለፕሮጀክቱ የተሰጠ መግለጫ-
$ npm i socket.io
Em seguida vamos escrever os componentses gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A ቴላ
Em App.js ፣ vamos escrever os componentses de GUI።
⚠ ማስታወሻ que a função chamada pelo useEffect ainda não foi escrita! Também não foram escritos os redurs setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e nem escritos os objetos com estados iniciais INITIAL_STATE ፣ INITIAL_FOOD_MODAL ፣ INITIAL_TEMALALMITAL, INITIAL_TEMAL
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 ፣ አስቀምጥ አዲስ የሙቀት መጠን ፣ አዲስ አዲስ ብርሃንን ፣ መቀያየርን ለሙቀት ፣ ለውጡን ለመለወጥ
ፖርቶንቶ ፣ se desejar testar os elementos com dados falsos, escreva cada objeto e função dito acima.
Veja imagem App.js com código da parte GUI ን ያድርጉ
Por fim vamos escrever as funções necessárias para fazer a comunicação com o servidor e para utlização do mesmo pelos componentses de GUI.
Veja imagem do App.js com código da parte lógica/operacional
የሚመከር:
Projeto IoT - Stema Detector De Fumaça: 5 ደረጃዎች
Projeto IoT - Stema Detector De Fumaça: IntroduçãoO Stema Detector de Fumaça consiste em uma solução IoT com o objetivo de permitir o monitoramento de alarmes de incêndio de residências através de um aplicativo Android. በፕሮጀክቱ እና በመሰረተ ልማት ውስጥ የማይክሮ መቆጣጠሪያ መሣሪያን ከኮሚኒካ ጋር ያገናኙ
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 ደረጃዎች
Projeto CoCoa: Um Colete De Comunicação Alternativa: CoCoA ፕሮጀክት የንግግር ወይም የቃል እክል ያለባቸውን ሰዎች ለመርዳት አማራጭ የግንኙነት ንክኪ ምልክቶችን ለማጣመር የሚያስችል ከበይነመረቡ ጋር የተገናኘ የሚለበስ ቀሚስ ነው። O Colete de Comunicação Alternativa (CoCoA)
Projeto Lumos: 8 ደረጃዎች
Projeto Lumos: O projeto Lumos consiste na construção de uma luminária controlada a partir de um smartphone conectado à mesma rede móvel ou WiFi. ለ Android ፣ ለ Android መሣሪያ ፣ ለ perimite apagar እና acender a luz utilizando além
Projeto Fila Fácil: 7 ደረጃዎች
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é አስፈላጊ á 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 አርዱinoኖ። Ar ó ó ó ó ó ó Ar du du du du du ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê du ê du ê ê