Turinys:
- 1 veiksmas: sukonfigūruokite „Ambiente“
- 2 veiksmas: „WebSocket“
- 3 žingsnis: „Escrevendo O Servidor“
- 4 žingsnis: „Testando O Servidor“
- 5 veiksmas: „Aplicação Mobile“
Video: „Pequeno Projeto De Uma Casa Inteligente“: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
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 list de alimentos e nível de água filtrada na geladeira.
Não escreveremos os firmwares dos dispositivos IoT da geladeira nem dos cômodos; porem assumiremos que os dispositivos fazem o mixinte:
- 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;
- Kaip lâmpadas dos cômodos podem ter o brilho ajustado por dispositivo que se comunica pela rede wifi;
Reikalavimai:
- Conhecimento básico em python, javascript, uso do system operacional, comandos básicos no shell
- Instaliacija: nodejs, python
- Ter instalado (pasirinktinai): „Docker“, „emulador de dispositivo mobile“, „gerenciador de sdk do Android“(„Android Studio“neveikia)
O desenvolvimento desse projeto fori feito no Linux. „Windows“neprisijungia prie reikalingų programų.
1 veiksmas: sukonfigūruokite „Ambiente“
Vamos konfigūracija arba ambiente de desenvolvimento em 2 dalys: servidor e mobile. O servidor seria escrito em python e o mobile em javascript ou typebook, 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 semper como $ PROJECT_DIR como placeholder - crie com no local que achar mais adekvatumas e com o nome de sua preferência), vamos criar uma pasta "servidor":
$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR
$ mkdir servidor
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Naudokitės „Docker“arba „ambientte virtual python“(venv) naudodamiesi ambiente conteinerizado com. Caso deseje utilizar ambiente conteinerizado, criaremos ir imagem segundo o dockerfile:
$ cd $ PROJECT_DIR
$ touch dockerfile
Veja imagem do dockerfile.
„Caso prefira“naudojasi ambiente virtual do do python, siga kaip instrukcija
Vamos então criar o arquivo que persistirá a list de dependências do servidor e colocar as dependências requiredárias:
$ touch reikalavimai.txt
Veja imagem do reikalavimai.txt.
„Caso tenha optado por utilizar um ambiente conteinerizado“, suprojektuotas vaizdas iš konteinerio:
$ docker statyti. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash
Daugiau informacijos apie dockerfile ir cli do docker:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE
Um passo a comso configurar o ambiente de desenvolvimento mobile com React Native pode ser visto no link:
Após ter o ambiente configurado, su pasta do projeto deve ser possível executar or comando para criar a aplicação mobile:
$ npx create-reage-native-app klientas
2 veiksmas: „WebSocket“
Interessante que o leitor conheça pelo menos um pouco and respeito de websocket antes de prosseguir. Caso o leitor nunca tenha lido, trabalhado ou ouvido falar nada a respeito, separe alguns minutes for para Entender como funciona o websocket através da documentação:
developer.mozilla.org/pt-BR/docs/WebSocket…
Naudokitės biblioteka, kurioje nėra klientų ir nėra servidor que abstrai arba protokolo de maneira que não precisemos pensar em detalhes de chamada e de armazenamento de identifadores e rotas. Atskirkite também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Klientas:
Servidorius:
3 žingsnis: „Escrevendo O Servidor“
Vamos criar uma estrutura inicial do do projeto and escrever a interface que será utilizada como comunicaçã 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 padaryti app.py
Depois vamos escrever o modeulo que estabelece as conexões via websocket e as redirecionam para um controlador.
Veja imagem do socketconnection.py
KONTROLIERIAUS NAUDOJIMAS
O valdomasis gavėjas, turintis atsako į metodą, atsako į įsteigimo ir gerenciar as conexões; seria Respabilidade 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 informationções.
Veja imagem do controller.py.
Galutinis temos os casos de uso que devem gerenciar como deve ser tratado os dados do evento recebido and criar os novos dados a partir do dados recebidos para que o controlador atualize o estado do system. No caso desse system 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 metodulo responseável pela persência de dados como se fosse essa a "regra de negócio".
Veja imagem usecases.py
Pastaba: tikslūs nuolatiniai duomenys. Fica ir escolha do leitor como prefere armazenar os dados and portanto, implementar as funções do src/repository.py. Nėra projektų, skirtų plėtrai, pvz., Nuolatiniam em um arquivo json nėra tiesioginės duomenų bazės. No repositório do projeto é possível verificar uma makaronų serveris/duomenų bazė 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 žingsnis: „Testando O Servidor“
„Podemos criar um script para conectar ao servidor“ir „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 do serverclient.py
Com o arquivo criado, verifique se o container está rodando, and dentro dele Execute:
$ python app.py
Atlikite konteinerį, nėra tiesioginio $ PROJECT_DIR/serverio vykdymo:
$ python3 serverclient.py
Nėra raginimo ">" digite os eventos encontrados no controlador seguido de ";" e então valores de identifação e/ou novos valores. Pavyzdžiui:
80. atnaujinti;
UPDATE_ROOM_TEMPERATURE; 1, 22.0
UPDATE_ROOM_TEMPERATURE_SETPOINT; 1, 17.5
100. 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.
Pastaba: 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 veiksmas: „Aplicação Mobile“
Não será demonstrado com muitos detalios cada parte do desenvolvimento do cliente mobile. Não será explicitado aqui cada importação no modeulo principas criado pelo React Native nem possíveis detalhes de configuração. $ PROJECT_DIR/klientas, norėdamas gauti priklausomybę nuo projekto tikslų nustatymo:
$ npm i socket.io
Em seguida vamos escrever os komponentai gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vc escrever os komponentai de GUI.
⚠ Atkreipkite dėmesį, kad naudokite chamada peloEfektas ainda não foi escrita! Também não foram escritos os reduktoriai setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer ir ne escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, Pažymėkite, kad nėra rašymo eskritų, kaip funkcijų, naudojamų pelės elementų ir sąsajų 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.
Įkelkite vaizdą į „App.js“, kuriame rasite GUI kodą
Por fim vamos escrever as funções requiredárias para fazer a comunicação com o servidor e para utlização do mesmo pelos komponentes de GUI.
Veja imagem do App.js com código da parte lógica/operacional
Rekomenduojamas:
„Projeto IoT“- sistemos detektorius De Fumaça: 5 žingsniai
Projektas IoT - Sistemos detektorius „Fumaça“: Įvadas Sistemos detektorius „Fumaça“sudaro sprendimą sprendžiant „IoT com“arba leidimus arba stebėjimo signalus, susijusius su „Android“aparatu. Projektas yra bazinis, jis yra mikrokontroladorius, skirtas komunikacijai ir
Projeto CoCoa: Um Colete De Comunicação Alternatyva: 8 žingsniai
Projeto CoCoa: Um Colete De Comunicação Alternativa: „CoCoA Project“yra nešiojama liemenė, prijungta prie interneto, leidžianti sujungti lytėjimo alternatyvaus bendravimo simbolius, padedančius žmonėms, turintiems kalbos ar neverbalinę negalią. O Colete de Comunicação Alternativa (CoCoA) consi
Projeto Lumos: 8 žingsniai
„Projeto Lumos“: „Projeto Lumos“sudaro konstrukciją, skirtą šviesai valdyti, ir dalį išmaniųjų telefonų, skirtų „Wi -Fi“ryšiui. Kontroliuokite „Luminária foi“, skirtą „Android“programinei įrangai, nesvarbu, ar galite tai padaryti, ar naudoti „acender“
Projeto Fila Fácil: 7 žingsniai
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é būtinoji 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 žingsniai
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 temperatura e umidade, alarmme, acendimento de