Cuprins:
- Pasul 1: Configurarea O Ambiente
- Pasul 2: WebSocket
- Pasul 3: Escrevendo O Servidor
- Pasul 4: Testând O Servidor
- Pasul 5: O aplicație mobilă
Video: Pequeno Projeto De Uma Casa Inteligente: 5 Steps
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
O proiectare care faremos este de uma casa inteligentă. Posibil de bază sunt grupuri de funcționalități: · De monitorizare a iluminării și a temperaturii de două moduri.
· De monitoramente de listă de alimente și nível de água filtrată na geladeira.
Não escreveremos os firmwares dos devices IoT da geladeira nem dos cômodos; presupunem că dispozitivele fac fazem următorul:
- A geladeira possui um device com touchscreen em that é possível enter com dados de alimente: o nume de umăr și sua quantitate;
- 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 moduri sunt condiționate de comunicarea pela rede wifi;
- As lâmpadas dos cômodos putem ter o brilho ajustado por device care se comunica pela rede wifi;
Requisitos:
- Conhecimento básico em python, javascript, uso do sistema operational, comandos basic no shell
- Ter instalat: nodejs, python
- Ter instalat (opțional): docker, emulator de dispozitiv mobil, gerenciador de sdk pentru Android (disponibil fără Android Studio)
O dezvoltare a fost proiectată pentru Linux. Podem ser needárias adaptações for that seja done no Windows.
Pasul 1: Configurarea O Ambiente
Vamos configurați un mediu de dezvoltare în 2 părți: server și mobil. O server va fi scris în python și pe mobil în javascript sau typescript, fiind utilizat React Native pentru proiect.
reactnative.dev/
Vamos initial criar uma estrutura de pastas. Em um diretório escolhido (care a partir de acum va fi scris întotdeauna ca $ PROJECT_DIR as placeholder - crie com no local that achar mais adequado e com o name de sua preferência), vamos criar uma paste "server":
$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR
$ mkdir server
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Putem utiliza un mediu conținut cu Docker sau un mediu virtual python (venv). Caso deseje use ambient conteinerizado, criaremos a imagem second or dockerfile:
$ cd $ PROJECT_DIR
$ touch dockerfile
Veja imagem do dockerfile.
Caso preferă să utilizeze un mediu virtual de python, ca instrumente în
Vamos então criar o arquivo that persistirá to a list of dependências do server and colocar as dependências necessárias:
$ touch requirements.txt
Veja imagem do requirements.txt.
Caso tenha optado por utiliza um ambiente conteinerizado, construit a image and entre no container:
$ docker build. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd): / app smarthouse bash
Pentru mai multe informații despre dockerfile și a cli do docker:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE
Um passo a passo de como configurar o ambiente de desarrollo mobile com React Native se poate vedea fără link:
Após ter o ambiente configurado, na pasta do project trebuie să fie posibil să se execute sau să comande pentru creștere a aplicației mobile:
$ npx create-react-native-app client
Pasul 2: WebSocket
É interesante que o leitor conheça pelo menos um poco a respeito de websocket antes de prosseguir. Caso o leitor nunca tenha lido, trabalhado ou ouvido falar nada a respeito, separe some minutes for understand as works o websocket através da documentação:
developer.mozilla.org/pt-BR/docs/WebSocket…
Usaremos uma biblioteca no client e no server that abstrai o protocolo de manière that não precisemos think em detalhes de chamada e de armazenamento de identificadores e rotas. Separați și un timp pentru studierea bibliotecilor folosite fără client și fără server:
Cliente:
Servidor:
Pasul 3: Escrevendo O Servidor
Vamos criar uma estrutura initial do project and escrever a interface that will be used as comunicação com o server:
$ mkdir src
$ touch app.py src / {controller, socketconnection}.py
Primeiramente vamos escrever um módulo de inicalização do server:
Veja imagem do app.py
Depois vamos escrever o módulo that stabelece as conexões via websocket e as redirecionam for um controlador.
Veja imagem do socketconnection.py
CONTROLUL E UTILIZEAZĂ
O controlator receberá um pacote do módulo responsável por estabelecer e gerenciar as conexões; será responsabilidade do controlador saber qual funcție de caz de utilizare chamar pentru fiecare invenție recebită, bem ca și după ce da răspuns de caz de utilizare trimite um pacote de răspuns pentru sala room de dispozitive conectate pentru actualizare da informații.
Veja imagem do controller.py.
Finalmente avem os casos de uso que devem gerenciar como deve ser tratado os dados do event 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 dispozitive de ambientação). Então não é de surpreender que os cases de uso tão somente chame funções do módulo responsável pela persistência de dados as se fosse essa a "regra de negócio".
Veja imagem do usecases.py
Nota: precisamos persistir os dados de alguma forma. Fica a escolha do leitor as prefere armazenar os dados e portanto, implementar as funções do src / repository.py. Nici un proiect dezvoltat ca exemplu a fost persistent cu un arquivo json fără o bază de date directoare. No repositório do project is possível verificar uma pasta server / database com um arquivo com os dados persistidos bem as um arquivo de model em server / database-model.json de como deve ser o json para a nossa aplicação functionar.
Pasul 4: Testând O Servidor
Podemos criar um script para conectar ao server e enviar eventos conforme a estrutura sperada pelos controladores for fins de testes manuais. Vamos criar esse script e rodá-lo com o server *.
Veja imagem face serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele execute:
$ python app.py
Pentru container, fără direcție $ PROJECT_DIR / server execute:
$ python3 serverclient.py
No prompt ">" digite os eventos foundados no controlador seguido de ";" e então valores de identificação e / ou novos valores. De exemplu:
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 pentru fiecare eveniment enviat verificat se a persistat nu banco de dados escolhido.
Nota: verifique that a porta that está sendo servido a aplicação, a porta exposta no docker run e a porta do script de teste devem ser a same.
Pasul 5: O aplicație mobilă
Não será demonstrado com muitos detalhes each parte do developimento do client mobile. Não será explicitado aqui cada importação no módulo principal criado pelo React Native nem possíveis detalhes de configuração. Pentru a veni, navigați la $ PROJECT_DIR / client și adăugați o dependență pe care o precisăm pentru proiect:
$ npm i socket.io
Em seguida vamos escrever os componentes graphics and as funções that irão se comunicar com o server.
ESCREVENDO A TELA
În App.js, scăpăm componentele GUI.
⚠ Notă că o funcție chamada pelo useEffect ainda não foi escrita! Nu am scris nici un reductor setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer și nem escritos os objectos cu inițiate inițiale INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL, INITIAL_LIGHT_MODAL
De asemenea, nu sunt scrise ca funcții folosite pentru elemente de interfață grafică pentru fază șampanie pentru escritor fără server: saveNewFoodValue, saveNewTemperature, saveNewLuminosity, toggleTemperatureForRoom, toggleLightForRoom
Portanto, se desejar testar os elements com dados falsos, escreva cada objecteto e função dito acima.
Veja imagem do App.js com code from parte GUI
Por fim vamos escrever as funções necessárias for fazer a comunicação com o server și para utlização do mesmo pelos components de GUI.
Veja imagem do App.js com code da parte lógica / operational
Recomandat:
Projeto IoT - Sistema Detector De Fumaça: 5 Steps
Projeto IoT - Sistema Detector De Fumaça: IntroduçãoO Sistema Detector de Fumaça consiste în uma soluție IoT cu obiectivul de a permite sau monitoriza alarmele de incidență a rezidențelor atravate de um aplicativ Android. O proiecție este bazată pe un microcontrolator care se află în comun cu nu
Cum se fac jaluzele cu role inteligente DIY cu comutatoarele inteligente SONOFF ?: 14 pași
Cum să faceți rulouri inteligente cu comutatoare inteligente SONOFF ?: Utilizați modul de interblocare în comutatoarele inteligente SONOFF pentru a vă transforma jaluzelele / jaluzelele obișnuite în inteligente. și să o tragi seara? Oricum, eu sunt
RPI Casă de casă: 5 pași (cu imagini)
RPI Homemade Hat: Bună, mă numesc Boris și acesta este primul meu instructabil. Am un Raspberry Pi 3B + și îl folosesc pentru automatizarea casnică simplă, cum ar fi să controlez televizorul, AC și câteva lumini. Recent am cumpărat un router CNC chinezesc ieftin și am început să fac PCB-uri simple (eu
Tutorial Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017: 4 Steps (with Pictures)
Tutorial Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017: No development desse project a fost utilizată uma platforma hibrida, sem a necesitate de accesare a resurselor de plataforme native do Android ou do IOS. A fost folosit cu un computer tip notebook cu Windows 10. Essa platforma chama-se Ionic, q
Casa Inteligente Com Arduino: 6 pași
Casa Inteligente Com Arduino: Esse projeto é uma junção de vários pequenos projectos that we can ser feitos com Arduino. É um ótimo projeto para quem está começando no world do Arduino.Você vai learn a fazer um system com medição de temperatura e umidade, alarme, acendimento de