Оглавление:
- Шаг 1: Configurando O Ambiente
- Шаг 2: WebSocket
- Шаг 3: Escrevendo O Servidor
- Шаг 4: Testando O Servidor
- Шаг 5. Мобильное приложение Aplicação
Видео: Pequeno Projeto De Uma Casa Inteligente: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
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.
Никаких обновлений прошивок для устройств IoT не требуется; porém assumiremos que os dispositivos fazem o seguinte:
- Удобный доступ к дисплею с сенсорным экраном, который можно использовать для приема пищи: на одном устройстве с питанием и на количественном уровне;
- 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;
- Как лампады душ 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
- Ter instalado (опционально): докер, эмулятор мобильного устройства, SDK для Android (отсутствует Android Studio)
О desenvolvimento desse projeto foi feito no Linux. Подъем, требующий адаптации, для того, чтобы работать без Windows.
Шаг 1: Configurando O Ambiente
Вам нужно настроить среду для работы в двух частях: сервер и мобильный. Для сервера и для мобильных устройств используется python и для мобильных устройств, а также JavaScript или машинописный текст, для чего используется React Native для проекта.
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 Соответствующий e com o nome de sua desireência), vamos criar uma pasta "servidor":
$ mkdir $ PROJECT_DIR && cd $ PROJECT_DIR
Сервер $ mkdir
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO PARA O SERVIDOR
Подходит для использования в окружении Docker или Ambiente Virtual Python (venv). Как использовать окружающее пространство, использовать второй образ или файл докеров:
$ cd $ PROJECT_DIR
$ touch dockerfile
Veja imagem do dockerfile.
Если вы хотите использовать виртуальный виртуальный Python, используйте инструкции в
Vamos então criar o arquivo que persistirá список зависимостей do servidor e colocar в зависимости от необходимости:
$ touch requirements.txt
Veja imagem делает requirements.txt.
Caso tenha optado por utilizar um ambiente continerizado, construa an imagem e entre no container:
$ docker build. -t smarthouse $ docker run -it -p 3000: 3000 -v $ (pwd): / приложение smarthouse bash
Для получения дополнительной информации о файле dockerfile и cli docker:
CONFIGURANDO O AMBIENTE DE DESENVOLVIMENTO MOBILE
Um passo de como configurar or ambiente de desenvolvimento mobile com React Native pode ser visto no link:
Após ter o ambiente configurado, na pasta do projeto deve ser Возможный исполнитель или команда для создания мобильного приложения:
$ npx клиент create-response-native-app
Шаг 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 precisionmos pensar em detalhes de chamada e de armazenamento deidentificadores e rotas. Разделите também um tempo para estudar as bibliotecas utilizados no cliente e no servidor:
Клиент:
Сервидор:
Шаг 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 / {контроллер, 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 create as conexões через websocket e as redirecionam para um controlador.
Veja imagem делает socketconnection.py
КОНТРОЛЛЕР E ИСПОЛЬЗУЕТ
O controlador Receberá um pacote do módulo responseável por setelecer e gerenciar as conexões; será responsabilidade do controlador saber qual função de caso de uso chamar para cada envento recbido, 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.
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 responseá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, реализован как функции src / repository.py. Нет проекта desenvolvido como exemplo foi persistido em um arquivo json no diretório database. Нет репозитория для проекта, который может быть проверен сервером макаронных изделий / базой данных, в котором находится объект, в котором хранятся данные, которые могут быть сохранены в рамках модели сервера / базы данных-model.json, которые могут быть разработаны для использования в качестве функционального приложения.
Шаг 4: Testando O Servidor
Podemos criar um script for conectar ao servidor e enviar eventos conforme a estrutura esperada pelos controladores for fins de testes manuais. Vamos criar esse script e rodá-lo com o servidor *.
Veja imagem делает serverclient.py
Com o arquivo criado, verifique se o container está rodando, e dentro dele выполнить:
$ python app.py
Чтобы сделать контейнер, не выполняйте директиву $ PROJECT_DIR / server:
$ 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
Não será демонстрация com muitos detalhes cada parte do desenvolvimento do cliente mobile. Нет явного указания, что важно не импортировать основной модуль, предназначенный для React Native, нельзя использовать подробные сведения о конфигурации. Для получения сообщения, не забудьте указать $ PROJECT_DIR / client и добавить зависимость для точного проекта:
$ npm я socket.io
Em seguida vamos escrever os components gráficos e as funções que irão se comunicar com o servidor.
ESCREVENDO A TELA
Em App.js, вам нужно обновить компоненты графического интерфейса.
⚠ Обратите внимание на função chamada pelo useEffect ainda não foi escrita! Нет ограничений для редукторов setDataReducer, setFoodReducer, setTemperatureReducer, setLightReducer и других объектов, созданных для исходных объектов INITIAL_STATE, INITIAL_FOOD_MODAL, INITIAL_TEMPERATURE_MODAL_MODAL, INITIAL_TEMPERATURE_MODAL
Também ainda não foram escritas as funções utilizadas pelos elementos de interface 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.
Создавайте изображения для App.js с помощью графического интерфейса пользователя.
Por fim vamos escrever as Funções, которые необходимы для создания коммуникационного сервера и для использования для обмена компонентами графического интерфейса пользователя.
Veja imagem do App.js com código da parte lógica / operacional
Рекомендуемые:
Projeto IoT - Sistema Detector De Fumaça: 5 шагов
Projeto IoT - Sistema Detector De Fumaça: Введение в Sistema Detector de Fumaça, состоящее из решения IoT с целью разрешения мониторинга тревожных сигналов, возникающих при использовании приложений Android. Этот проект базируется на микроконтроллере, который поддерживает связь с
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 шагов
Projeto CoCoa: Um Colete De Comunicação Alternativa: Проект CoCoA - это носимый жилет, подключенный к Интернету, который позволяет соединять тактильные символы альтернативного общения, чтобы помочь людям с речевыми или невербальными нарушениями
Projeto Lumos: 8 шагов
Projeto Lumos: Проект Lumos, состоящий из управления светом, является частью смартфона, подключенного к сети Wi-Fi. Для управления освещением для desenvolvido um aplicativo Android, чтобы разрешить apagar e acender и использовать все
Casa Inteligente Com Arduino: 6 шагов
Casa Inteligente Com Arduino: Esse projeto é uma junção de vários pequenos projetos que podem ser feitos com Arduino. Это временный проект для того, чтобы быть готовым к использованию в мире Arduino.Позвоните, чтобы предоставить систему fazer um sistema com medição de temperatura e umidade, alarme, acendimento de
Projeto SmartHome - Repositor De Alimento Para Pet + Controle De Iluminação: 7 шагов
Projeto SmartHome - Repositor De Alimento Para Pet + Controle De Iluminação: Este tutorial apresenta uma solução SmartHome simples que permite a reposição automática de alimento para animais de Estimação (pet) e controle automático de iluminação motivien de votivitosando, inc. vizinhos para ace