Spisu treści:
- Krok 1: Konfiguracja O Ambiente
- Krok 2: WebSocket
- Krok 3: Escrevendo O Servidor
- Krok 4: Testando O Servidor
- Krok 5: Aplicação Mobile
Wideo: Pequeno Projeto De Uma Casa Inteligente: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades:· De monitormento de iluminação e temperatura dos cômodos.
· De monitormente de lista de alimentos e nível de água filtrada na geladeira.
Não escreveremos os firmware dos dispositivos IoT da geladeira nem dos cômodos; porém assumiremos que os dispositivos fazem o seguinte:
- 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 comodos 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;
Wymagania:
- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos bez powłoki
- Ter instalacji: nodejs, python
- Ter instalacja (opcjonalnie): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (disponível no Android Studio)
O desenvolvimento desse projeto foi feito no Linux. Podem ser necessárias adaptações para que seja feito no Windows.
Krok 1: Konfiguracja 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 lub maszynopis, 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 adequado e com o nome de sua preferência), vamos criar uma pasta „servidor”:
$ mkdir $PROJECT_DIR && cd $PROJECT_DIR
$ serwer mkdir
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Podemos jest używany w środowisku Conteinerizado z Dockerem lub wirtualnym pytonem (venv). Caso deseje utilizar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:
$ cd $PROJECT_DIR
$ dotknij dockerfile
Veja imagem do dockerfile.
Caso prefira wykorzystuje wirtualne otoczenie do Pythona, siga jako instruçes em
Vamos então criar o arquivo que persistirá a lista de dependências do servidor e colocar as dependências necessárias:
$ wymagania dotykowe.txt
Veja imagem zrobić wymagania.txt.
Caso tenha optado por utilizar um ambiente conteinerizado, construa a imagem e entre no container:
$ kompilacja dockera. -t smarthouse $ docker run -it -p 3000:3000 -v $(pwd):/app bash smarthouse
Para mais informações sobre o dockerfile i 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 bez linku:
Após ter o ambiente configurado, na pasta do projeto deve ser possível executar o comando para criar a aplicação mobile:
$ npx create-react-native-app client
Krok 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, 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 specificmos pensar em detalhes de chamada e de armazenamento de identificadores e rotas. Separe também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Klient:
Serwer:
Krok 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/{kontroler, połączenie z gniazdem}.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 as conexões przez websocket e jako przekierowanie para um controlador.
Veja imagem do socketconnection.py
PRZYPADKI UŻYCIA KONTROLERA E
O 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 resosta do caso de uso enviar um pacote de resosta para a sala room de dispositivos conectados para atualização das informações.
Veja imagem do controller.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. No 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 do usecases.py
Uwaga: precisamos persistir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto, implementuj jako funções do src/repository.py. No projeto desenvolvido como exemplo foi persistido em um arquivo json no diretório database. No repositório do projeto é possível verificar uma pasta server/database 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.
Krok 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 do serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele wykonaj:
$ aplikacja python.py
Dla kontenera, bez bezpośredniego wykonania $PROJECT_DIR/serwera:
$ python3 serverclient.py
Brak monitu "> " digite os eventos encontrados no controlador seguido de ";" e então valores de identificação e/ou novos valores. Na przykład:
UPDATE_FRIDGE_WATER_LEVEL;80
AKTUALIZACJA_TEMP_POKOJU;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.
Nota: verifique que a porta que está sendo servido a aplicação, a porta expost no docker run e a porta do script de teste devem ser a mesma.
Krok 5: Aplicação Mobile
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. Para começar, navegue até $PROJECT_DIR/client e adicione a dependência que precisaremos para o projeto:
$ npm i gniazdo.io
Em seguida vamos escrever os komponenty graficzne e jako funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, vamos escrever lub komponenty GUI.
⚠ Uwaga que a função chamada pelo useEffect ainda não foi escrita! Nie są dostępne żadne fora reduktory i redukcje setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer i nie są przypisane do początkowych stanów INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_MODALMERATURE_INITIAL_MODALMODAL
Tam nie ma fora escritas jako funçs, które wykorzystuje elementy graficzne interfejsu fazera Chamadas for escrita no servidor: saveNewJedzenieWartość, zapiszNowaTemperatura, zapiszNowaJasność, przełącz TemperaturaDlaPokój, przełączLightForRoom
Portanto, se desejar testar os elementos com dados falsos, escreva cada objeto i função dito acima.
Veja imagem do App.js com código da parte GUI
Por fim vamos escrever jako funções necessárias para fazer do komunikacji z serwerem lub do obsługi do mesmo pelos komponentów de GUI.
Veja imagem do App.js com código da parte lógica/operacional
Zalecana:
Projeto IoT - Sistema Detector De Fumaça: 5 kroków
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça składa się z rozwiązania IoT com o objetivo de allowir o monitormento de alarmes de incêndio de residências através de um aplicativo Android. O projeto é baseado em um microcontrolador que se comunica com a nu
Projeto Kakao: Um Colete De Comunicação Alternatywa: 8 kroków
Projeto CoCoa: Um Colete De Comunicação Alternativa: Projekt CoCoA to kamizelka do noszenia podłączona do Internetu, która umożliwia łączenie dotykowych symboli alternatywnej komunikacji, aby pomóc osobom z zaburzeniami mowy lub niewerbalnymi. O Colete de Comunicação Alternativa (CoCoA) consi
Projeto Lumos: 8 kroków
Projeto Lumos: O projekt Lumos składa się z konstrukcji sterowania oświetleniem, połączonego ze smartfonem, połączonego z mesma rede móvel lub WiFi. Para control a luminária foi desenvolvido um aplicativo Android, que allowe apagar e acender a luz utilizando alem
Rozpoczęcie inteligentnego domu - Projeto Final: 6 kroków
Rozpoczęcie inteligentnego domu - Finał Projeto: Projeto apresentado é parte do projektu final do curso de IoT aplicado Smart Home.O projektu mostrado do seguir é parte do projeto final a ser apresentado no curso de IoT aplicada Smart Home, que sklade de sensores e atuadores conec
Casa Inteligente Com Arduino: 6 kroków
Casa Inteligente Com Arduino: Esse projekt é uma junção de Vários pequenos projekty 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