Talaan ng mga Nilalaman:
- Hakbang 1: Configurando O Ambiente
- Hakbang 2: WebSocket
- Hakbang 3: Escrevendo O Servidor
- Hakbang 4: Testando O Servidor
- Hakbang 5: Isang Mobile na Aplicação
Video: Pequeno Projeto De Uma Casa Inteligente: 5 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
O projeto que faremos é 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.
Nao escreveremos os firmwares dos dispositivos IoT da geladeira nem dos cômodos; porém assumiremos que os dispositivos fazem o seguinte:
- Isang geladeira na maaaring gawin sa pamamagitan ng touchscreen upang mai-entrada ang mga ito sa loob ng mga ito: o maaari kang mag-isip ng maraming dami;
- Isang 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;
Mga Requisitos:
- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos no shell
- Ter installado: nodejs, python
- Ter installado (opcional): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (walang Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Mag-click dito para sa iyo upang mai-install ang Windows.
Hakbang 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 typcriptcript, sendo utilizado React Native para sa projeto.
reactnative.dev/
Vamos inicialmente criar uma estrutura de pastas. Para sa iyo (tulad ng isang partir de agora será escrito semper como $ PROJECT_DIR como placeholder - walang lokal na lokal na ahensya na naisagawa sa iyo), kung paano mo masubukan ang lahat ng pasta) "servidor":
$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR
$ mkdir servidor
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Mga Podemos na gumagamit ng ambiente conteinerizado com Docker para sa iyong virtual virtual python (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$ cd $ PROJECT_DIR
$ touch dockerfile
Veja imagem gawin dockerfile.
Caso prefira utilizar ambiente virtual do python, siga as instruções em
Vamos então criar o arquivo que persistirá a lista de dependências do servidor e colocar as dependências kinakailangan:
$ touch kinakailangan.txt
Ang mga imahe ng Veja ay gumagawa ng mga kinakailangan.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, construa a imagem e entre no container:
$ docker build. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd): / app smarthouse bash
Para mais informações sobre o dockerfile at isang kliyente docker: https://docs.docker.com/engine/referensi/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:
Maaari kang mag-configure, gagamitin ang pasta upang maisagawa ang pagpapatupad ng comando para sa isang mobile app:
$ npx create-react-katutubong-app client
Hakbang 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, mag-iwan ng mga alarm para sa 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. Paghiwalayin ang tempo para sa estudar bilang bibliotecas utilizados no cliente e no servidor:
Cliente:
Servidor:
Hakbang 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 gawin app.py
Depois vamos escrever o módulo que establelece as conexões via websocket at bilang redirecionam para um controlador.
Veja imagem gawin socketconnection.py
CONTROLLER E GINAGAMIT
O controlador receberá um pacote do módulo responsável por establelecer 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 dispositivos conectados para atualização das informações.
Veja imagem gawin controller.py.
Finalmente temos os casos de uso que devem gerenciar como deve ser tratado os dados do evento recebido e criar os novos maging a partir do maging recebidos para que o controlador atualize o estado do sistema. Walang caso desse sistema kung paano mag-iingat ang mga de-valores (sejam numéricos, texto ou booleanos - walang caso de ligar / desligar dispositivos de ambientação). Ang pag-uusapan ay ang surpreender na ito upang makapag-ayos ng mga bisita habang hinuhusay ang mga ito upang maging isang tao sa isang "regra de negócio".
Veja imagem gawin usecases.py
Nota: precisamos persistir os dados de alguma forma. Gawin ang isang escolha do leitor como prefere armazenar os magiging e portanto, ipatupad bilang funções do src / repository.py. Walang projeto desenvolvido como exemplo foi persistido em um arquivo json no diretório database. Walang repositório na gagawa ng proyekto upang maiyak ang lahat ng server ng server / database upang maibalik ang iyong server sa database ng modelo ng server / database-model.json mula sa loob ng seremonya para sa isang mahusay na application.
Hakbang 4: Testando O Servidor
Podemos criar um script para sa 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 gawin serverclient.py
Sa pamamagitan ng criado, verifique se container na ito ay isinasagawa:
$ python app.py
Fora do container, walang direktang $ PROJECT_DIR / server na isinasagawa:
$ python3 serverclient.py
Walang prompt ">" digite os eventos encontrados no controlador seguido de ";" at ang mga valores de identificação e / ou novos valores. Bilang halimbawa:
UPDATE_FRIDGE_WATER_LEVEL; 80
I-UPDATE_ROOM_TEMPERATURE; 1, 22.0
UPDATE_ROOM_TEMPERATURE_SETPOINT; 1, 17.5
I-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 magiging escolhido.
Nota: verifique que a porta que está sendo servido a aplicação, a porta exposta no docker run and a porta do script de teste devem ser a mesma.
Hakbang 5: Isang Mobile na Aplicação
Nao será demonstrado com muitos detalhes cada parte do desenvolvimento do cliente mobile. Hindi malinaw na explicitado aqui cada importação no módulo punong criado pelo React Native nem posíveis detalhes de configuração. Para sa iyo, mag-iwan ng $ PROJECT_DIR / client at mag-click dito upang maibigay ang iyong proyekto:
$ npm i socket.io
Em seguida vamos escrever os sangkap ng mga ito ay bilang funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vamos escrever os sangkap ng GUI.
⚠ Tandaan ang isang função chamada pelo useEffect ainda não foi escrita! Também não foram escritos os reducers setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer e nem escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL_, INMITAL_
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, toggleLightForRoom
Portanto, se desejar testar os elementos com dados falsos, escreva cada objeto e função dito acima.
Mag-isip ng larawan sa App.js com código da parte GUI
Para sa mga eskrim ng escrever bilang funções kinakailangan para sa fazer ng isang comunicação com o servidor at para sa mga utlização na gawin ang mga pelos sangkap ng GUI.
Mag-isip ng larawan sa App.js com código da parte lógica / operacional
Inirerekumendang:
Projeto IoT - Sistema Detector De Fumaça: 5 Hakbang
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça ay binubuo ng lahat ng mga IoT com o objetivo de permitir o monitoramento ng mga alarma mula sa mga residucias através de um aplicativo Android. O projeto é baseado ng kanilang microcontrolador upang mai-comunica ito
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 Mga Hakbang
Projeto CoCoa: Um Colete De Comunicação Alternativa: Ang CoCoA Project ay isang naisusuot na vest na konektado sa internet na nagpapahintulot sa pagkabit ng mga simbolo ng pandamdam na alternatibong komunikasyon upang matulungan ang mga taong may kapansanan sa pagsasalita o di-berbal. O Colete de Comunicação Alternativa (CoCoA)
Projeto Lumos: 8 Hakbang
Mga Projeto Lumos: Ang projeto Lumos ay binubuo ng pagsasaayos ng lahat ng kontrol sa isang bahagi ng smartphone na kumonekta sa mesma upang muling mag-WiFi. Para sa kontrol ng isang luminária foi desenvolvido um aplicativo Android, na nagpapahintulot sa iyo na magbigay ng isang karagdagang impormasyon
Projeto Fila Fácil: 7 Mga Hakbang
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é kailangan á ria uma gest ã o de senhas de clientes para sa organisar e agilizar atendimentos. Em alguns setelecimentos podemos demorar alguns minutos ou at é mesmo horas esp
Casa Inteligente Com Arduino: 6 na Hakbang
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 temperatura e umidade, alarme, acendimento de