Πίνακας περιεχομένων:

Pequeno Projeto De Uma Casa Inteligente: 5 Βήματα
Pequeno Projeto De Uma Casa Inteligente: 5 Βήματα

Βίντεο: Pequeno Projeto De Uma Casa Inteligente: 5 Βήματα

Βίντεο: Pequeno Projeto De Uma Casa Inteligente: 5 Βήματα
Βίντεο: Советы и Хитрости Мастеров по Дому, Которые Действительно Помогают▶10 2024, Νοέμβριος
Anonim
Pequeno Projeto De Uma Casa Inteligente
Pequeno Projeto De Uma Casa Inteligente

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.

Não escreveremos os firmwares dos dispositivos IoT da geladeira nem dos cômodos; porém suppiremos que os dispositivos fazem o seguinte:

- Μια ευχάριστη θέση για τη διάθεσή σας σε μια οθόνη αφής που είναι διαθέσιμη για όλους τους τρόπους κατανάλωσης: o nome de um alimento και sua quantidade?

- Μια ευαισθησία που μπορεί να έχει έναν αισθητήρα που μπορεί να χρησιμοποιηθεί για την εμβάπτιση και τη γελαδέρα.

- 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;

Απαιτήσεις:

- Conhecimento básico em python, javascript, uso do sistema operacional, comandos básicos no shell

- Ter instalado: nodejs, python

- Ter instalado (προαιρετικό): docker, emulador de dispositivo mobile, gerenciador de sdk do Android (δεν διαθέτετε Android Studio)

Αποκλεισμός που θα μπορούσε να γίνει για το Linux. Πραγματοποιήστε αναγκαίες προσαρμογές για τη λειτουργία των Windows.

Βήμα 1: Configurando O Ambiente

Configurando O Ambiente
Configurando O Ambiente
Configurando O Ambiente
Configurando O Ambiente

Διαμορφώστε τον περιβάλλοντα χώρο και τις ρυθμίσεις μας 2 μέρη: εξυπηρέτηση και κινητό. Ο εξυπηρετητής εξυπηρετεί την πύθωνα και το κινητό μας javascript ή γραφομηχανή, αποστέλλει τη χρήση του React Native για προτάσεις.

reactnative.dev/

Vamos inicialmente criar uma estrutura de pastas. Em um diretório escolhido (que a partir de agora será escrito sempre como $ PROJECT_DIR como placeholder - crie com no local que achar mais επαρκές e com o nome de sua prefeência), vamos criar uma pasta "servidor":

$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR

$ mkdir servidor

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR

Χρησιμοποιήστε το περιβάλλον και τη διαχείριση του περιβάλλοντος εικονικού python (venv). Caso deseje utilisar ambiente conteinerizado, criaremos a imagem segundo o dockerfile:

$ cd $ PROJECT_DIR

dockerfile $ touch

Veja imagem do dockerfile.

Caso prefira utilizar ambiente virtual do python, siga as instruções em

Vamos então criar o arquivo que persistirá a lista de dependenscias do servidor e colocar as dependencias needárias:

απαιτήσεις $ touch.txt

Veja imagem do απαιτήσεις.txt.

Caso tenha optado for utilizar um ambiente conteinerizado, κατασκευάστε μια εικόνα και μην εισάγετε κανένα δοχείο:

$ docker build. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash

Για να μάθετε περισσότερα για το dockerfile και το docker:

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE

Πραγματοποιήστε μια ρύθμιση παραμέτρων για το περιβάλλον κινητής τηλεφωνίας React Native pode ser visto no link:

Εφαρμογή ρύθμισης περιβάλλοντος, ζυμαρικών που μπορούν να εκτελεστούν για να εκτελέσετε ή να κάνετε κλικ σε ένα κινητό:

$ npx create-react-native-app client

Βήμα 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 ή 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 πρωτόκολλο de maneira que δεν μπορεί να είναι ακριβής σε όλες τις λεπτομέρειες του chamada και de armazenamento de identificadores e rotas. Ξεχωρίστε το também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:

Πελάτης:

Servidor:

Βήμα 3: Escrevendo O Servidor

Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor
Escrevendo O Servidor

Vamos criar uma estrutura inicial do projeto και escrever μια διεπαφή που χρησιμεύει για την επικοινωνία με τον εξυπηρετητή:

$ mkdir src

$ touch app.py src/{controller, socketconnection}.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 via websocket e as redirecionam para um controlador.

Veja imagem do socketconnection.py

ΕΛΕΓΧΟΣ Ε ΧΡΗΣΕΙΣ

O controlador receberá um pacote do módulo responsável for 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 for a sala room de dispositivos conectados para atualização για πληροφορίες και πληροφορίες.

Veja imagem do controller.py.

Τελικά, θα πρέπει να λάβετε πληροφορίες σχετικά με το πώς θα αντιμετωπίσετε το σύστημα που θα σας βοηθήσει να ελέγξετε το σύστημα σας. 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

Σημείωση: precisamos persistir os dados de alguma forma. Fica a escolha do leitor como prefere armazenar os dados e portanto, implementar as funções do src/repository.py. Δεν υπάρχει πρόβλεψη για την παρακολούθηση και τη διατήρηση της βάσης δεδομένων. Δεν υπάρχει δυνατότητα αποθήκευσης που μπορεί να επιβεβαιώσει τον διακομιστή ζυμαρικών/τη βάση δεδομένων και να χρησιμοποιήσει το μοντέλο διακομιστή/τη βάση δεδομένων και να χρησιμοποιήσει το μοντέλο μας.

Βήμα 4: Testando O Servidor

Testando O Servidor
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, και dentro dele εκτελέστε:

$ python app.py

Fora do container, δεν απαιτείται $ 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.

Σημείωση: η επαλήθευση που είναι δυνατή η αποστολή της υπηρεσίας σας σε μια εφαρμογή, μια έκθεση έκτακτης ανάγκης που δεν εκτελείται σε ένα λιμάνι και μια δέσμη ενεργειών για μια δοκιμή σε ένα μήνυμα.

Βήμα 5: Ένα Aplicação Mobile

Ένα Aplicação Mobile
Ένα Aplicação Mobile
Ένα Aplicação Mobile
Ένα Aplicação Mobile

Δεν είναι δυνατή η επίδειξη των μουσικών σας στοιχείων για την παρακολούθηση του κινητού σας. Δεν είναι δυνατή η άμεση εισαγωγή του κύριου κρυπτογραφικού συστήματος React Native και δεν είναι δυνατή η παραμετροποίηση των ρυθμίσεων. Για παράδειγμα, για $ PROJECT_DIR/πελάτης και προτίμησης εξαρτάται από την ακριβή παραγγελία για το εξής:

$ npm i socket.io

Em seguida vamos escrever os componentes gráficos e as funções que irão se comunicar com o servidor.

ESCREVENDO A TELA

Em App.js, vamos escrever os componentes de GUI.

⚠ Σημειώστε ότι θα χρησιμοποιήσετε ένα χαμάδα πέλο που θα σας επηρεάσει! Também não foram escritos os μειωτές setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer και nem escritos os objetos com estados iniciais INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMODERIT_TEMPERATURE, INITIAL_TEMPERATURE

Também ainda não foram escritas as funções utilisadas pelos elementos de inteface gráfica para fazer chamadas para escrita no servidor: saveNewFoodValue, saveNewTemperature, saveNewLuminosity, toggleTemperatureForRoom, toggleLightForor, Light

Portanto, se desejar testar os elementos com dados falsos, escreva cada objeto e função dito acima.

Αποκτήστε εικόνα για το App.js com código da parte GUI

Για παράδειγμα, είναι απαραίτητο για τη λειτουργία ενός προγράμματος επικοινωνίας και εξυπηρέτησης για τη χρήση του GUI.

Veja imagem do App.js com código da parte lógica/operacional

Συνιστάται: