Перейти к содержанию

Олександр Король

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Весь контент Олександр Король

  1. В этом блоге я бы хотел рассказать о том, как создавал собственную систему для Smart home. почему бы не воспользоваться готовой системой? Все просто, я студент факультета информационных технологий и стояла цель научиться чему-то новому. Из чего состоит моя система сейчас? Это сервер на Raspberry pi, несколько плат Arduino и ESP8266, а также реле от Sonoff. Ну и собственное приложение на телефон. История создания проекта Все началось с покупки Raspberry и экспериментов над ней. Для начала пробовал использовать LAMP стек (Linux —операционная система Linux; Apache – веб-сервер; MariaDB / MySQL - СУБД; PHP – язык программирования, используемый для создания веб-приложений). Но спустя некоторое время стало понятно, что PHP не очень подходит для этих целей, лично у меня не получилось подружить с MQTT брокером. Следующим для написания сервера стал Python с микрофреймворком Flask, на нем я и остановился. Python отлично подходит для этих целей, так как его легко подружит с брокером, можно подключить телеграммы бота, а также много интересных библиотек. Следующим шагом стала разработка веб-интерфейса. После пробы использовать конструкторы для построения интерфейса стало понятно, что лучше будет учить HTML, CSS, JS и писать интерфейс самостоятельно. Для обмена информации клиента с сервером я использовал Socket.io, это позволило отображать актуальные данные без перезагрузки страницы. Элементы управления распределены по отдельным виджетам. Некоторое время спустя на странице уже отображалась погода, было несколько переключателей, слайдеров, стрелочных приборов и несколько графиков. На этом этапе самым сложным, наверное, было отразить графики так, чтобы они постепенно подгружали новые данные и смещались в лево. шаг второй. Стало ясно, что следующим этапом необходимо реализовать возможность пользователю самостоятельно создавать и настраивать виджеты при использовании системы. Этим я и занялся. Выджеты были распределены на несколько видов. Переключатель, слайдер, палитра, виджеты для отображения информации и сейчас работаю над графиками. Пользователь может выбрать тип виджета, дать ему название, прикрепить иконку, настроить топик MQTT. Далее данные формируются в массив и отправляются на сервер для обработки и хранения. Шаг третий. Дальше мне стало интересно разработать какой-то механизм для создания сценариев, так как раньше систему нельзя было назвать автоматизированной. Он стал одним из самых сложных и одновременно интересных этапов. После серии попыток было создано модальное окно, в котором пользователь может назвать сценарий, написать условие (например, если температура превысила установленное снаряжение), установить действие, которое будет выполняться, настроить уведомление, в том числе и в телеграмм. Шаг четвертый. Веб-интерфейс это конечно хорошо, но не так удобно как мобильное приложение. Так как такого опыта у меня раньше не было, добиться желаемого результата в Android studio у меня не получилось. Решил попробовать Flutter и это было правильным решением, так как процесс пошел гораздо быстрее. Сейчас функционал в нем очень скромен, можно только отобразить показания с датчиков, изменить яркость освещения, управлять RGB подсветкой, да и собственно управлять реле. Как это работает? Пользователь через веб-интерфейс что-то нажимает, эти данные передаются на сервер через socket.io, далее он в зависимости от их типа обрабатывает и передаю в MQTT брокер, а он в свою очередь на конечное устройство (ESP8266). Отображение показаний с датчиков происходит в обратном порядке. При использовании мобильного приложения обмен данных с сервером происходит через Firebase. Это позволяет управлять системой удаленно не давая серверу белый IP( Ну и мне так было проще). Функционал системы Если коротко, то на данный момент можно управлять устройствами на основе ESP. Также можно создавать сценарии, за счет чего автоматизировать определенные процессы. В планах на будущее доработать сервер, улучшить работу со сценаримами, добавить больше видов виджетов, попытаться подключить ZigBee (сейчас для этого не хватает средств). Также продолжить работу над улучшением мобильного приложения. Это моя первая статья, поэтому надеюсь на понимание и поддержку. Если вам понравится, то дальше буду расширять эту тему. Сейчас параллельно работаю над подобным сервером для теплицы, даже построил небольшой полигон для опытов 2*3 метра. Также если у вас есть какие-то полезные советы, я их с удовольствием прочту. видео в котором показана часть возможностей сервера( к сожалению видео в лучшем качестве не сохранилось) https://youtu.be/Pg35x2uVfVc. https://youtu.be/gyDZJuq2sk0
×
×
  • Создать...