תוכן עניינים:

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 שלבים
וִידֵאוֹ: Neighbors Laughed at the Innovative Building of our Small-House, But then they were Amazed 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.

· מעקב אחר הרשימה של התזונה והחדשות של מסננים.

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

- מסך מגע עם אחיזה במסך המגע, כי אפשר להזין את כל המאכלים: 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;

- 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

- התקנה: nodejs, python

- התקנה (אופציונאלי): עגינה, אמולדור לדיסאוזי נייד, אחסון sdk לאנדרואיד (ללא אנדרואיד סטודיו)

O desenvolvimento desse projeto foi feito no Linux. אתה יכול להשתמש במאפיינים המתאימים ביותר עבור Windows.

שלב 1: Configurando O Ambiente

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

ניתן להגדיר את התצורה של 2 חלקים: servidor e mobile. O servidor será escrito em python e o mobile em javascript ou typescript, sendo utilizado React Native for a 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

$ mkdir servidor

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVER

Podemos utilizar um ambiente conteinerizado com Docker ou ambiente python וירטואלי (venv). Caso deseje utilizar ambiente conteinerizado, criaremos and imagem segundo o dockerfile:

$ cd $ PROJECT_DIR

קובץ docker של $ touch

אפשר להדפיס קובץ docerfile.

Caso prefira utilizar ambiente וירטואלי לעשות פייתון, ניתן להשתמש בו לפי הוראות

אנו יכולים לקרוא את כל התנאים והרשימות התלויים במגוון השירותים:

דרישות $ touch.txt

Veja imagem do requirements.txt.

Caso tenha optado por utilizar um ambiente conteinerizado, construa a imagem e entre no container:

בניית דוקר. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd):/app smarthouse bash

למידע נוסף על קובץ docker ו cli do docker:

CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO נייד

Um passo a passo de como configurar o ambiente de desenvolvimento mobile com React Native pode ser visto no link:

תפריט אווירת תצורה, ופסטה לפרוייקט יכול להכין מנהלים או קומנדו עבור ניידים ואפליקציות:

לקוח $ npx create-react-native-app

שלב 2: WebSocket

E interessant que o leitor conheça meno 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 fora 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. אנו יכולים לקרוא את הקצב של התורה כמקרא התנ ך ללא לקוחות ואין שירותים:

לקוחות:

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 e escrever a interface que será utilizada como comunicação com or servidor:

$ mkdir src

$ touch app.py src/{בקר, socketconnection}.py

Primeiramente vamos escrever um módulo de inicalização do servidor:

תמונות של אפליקציות

Depois vamos escerver or módulo que estabelece as conexões via websocket e as redirecionam for a controlador.

ניתן להיראות באמצעות socketconnection.py

בקרות E שימושיות

O שליטור יכול לקבל מענה אחראי על התייחסות וכמשנה; 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.

אפשר להדפיס את controller.py.

סיום הזמן שלנו יכול להוביל אותנו לאירועי התאמה לאירועי אירועים ולסיפורים. אין 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

הערה: מדויק של התנהגותנו. אנו יכולים להשתמש בו כדי להבחין בארמזים או באתרים, להפעיל אותם כמו src/repository.py. אין שום תוכנה להדגמה למשל להתמקד ב- um arquivo json ללא מסד נתונים ישיר. אין מאגר של שרת פסטה/מסד נתונים של שרותי פסטה/מסד נתונים של מערכת ההפעלה או שרת הנתונים/מסד הנתונים.

שלב 4: Testando O Servidor

Testando O Servidor
Testando O Servidor

Podemos criar um script for a conectar ao servidor e enviar events conforme a estrutura esperada pelos controladores para fins de testes manuais. Vamos criar esse script e rodá-lo com o servidor*.

אפשר לראות תמונות של serverclient.py

Com o arquivo criado, verifique se o container está rodando, e dentro dele לבצע:

$ python app.py

עבור מיכל, אין אפשרות לנהל $ PROJECT_DIR/שרת:

$ python3 serverclient.py

No prompt ">" digite os eventsos encontrados no controlador seguido de ";" הערכות הזיהוי של e/ou valos 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

נייד Aplicação
נייד Aplicação
נייד Aplicação
נייד Aplicação

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. לשם כך, נתיב של $ PROJECT_DIR/client and adicione a exactêemos para o projeto:

$ npm i socket.io

אנו יכולים להבחין ברכיבים של חלקים חשובים וכאשר הם יכולים לתפקד יחד עם שירותים.

ESCREVENDO A TELA

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

שימו לב que a 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_, Também ainda não foram escritas as funçõeses utilizadas pelos elementos de inteface gráfica para fazer chamadas for escrita no servidor: saveNewFoodValue, saveNewTemperature, saveNewLumininosity, toggleTemperatureForRoom, toggleLightForRoom

פורטנטו, אנו יכולים לראות את היסודות שלנו בדוגמא, ולמרות זאת.

אנו יכולים להעלות תמונות של App.js עם GUI

Por fim vamos escrever as funções needsárias para fazer a comunicação com o servidor e para utlização do mesmo pelos componentes de GUI.

אנו יכולים לדמיין את האפליקציות של App.js

מוּמלָץ: