Перед тем как перейти к настройке MajorDoMo я немного конкретизирую свои требования:
Сервер должен делать пересчет показаний сервера в калиброванное значение влажности почвы, а также в упрощенные понятия «сухо», «влажно», «срочно полить».
Подключение однотипных сенсоров к системе должно быть как можно менее трудозатратным.
Показания всех сенсоров (влажности и состояния батареи) должны отображаться на одной экранной форме.
Должна быть настроена система оповещений с конкретными рекомендациями и проблемами для всей системы контроля влажности почвы.
При необходимости нужен отчет по частоте полива, дате последнего полива и прогнозу даты следующего полива
Сразу скажу, что последняя функция возможна только при накоплении данных за довольно длительный период и на момент написания статьи не реализована.
Подключение сенсоров к MajorDoMo
После включения контроллеров влажности новые ноды начинают появляться на страницы MajorDoMo Mysensors. В прошивке контроллера прописаны презентации двух сенсоров — значение влажности в виде значения АЦП и напряжение батареи питания, считанной через функцию ReadVcc()
Для удобства меняю названия нод на понятные мне
Наиболее близкий тип к сенсору влажности почвы из существующих это класс SHumSensors. Но в моем случае он будет отображать в качестве основного параметра влажности то что передается с контроллера, то есть значение АЦП. Пересчитывать эти значения в процентный показатель влажности я решил на стороне сервера, чтобы каждый раз при калибровке не лезть в прошивку контроллера. Поэтому я создал новый класс, наследующий SHumSensors с двумя новыми свойствами: «Относительная влажность почвы» и «Оценка влажности почвы»
Относительная влажность почвы указывается ка ключевое свойство с желаемым периодом хранения (в моем случае 1000 дней) в истории параметров (читай, в базе MySQL).
Свойство «Оценка влажности» у меня не ключевое и историю его хранить не нужно, что и указывается при создании
После этого я отредактировал существующий метод valueUpdated моего класса, который вызывается при каждом изменении свойства value, унаследованного из родительского класса.
В PHP код я пишу формулу пересчета показания АЦП в относительную влажность, полученную при калибровки сенсора и оценочное значение влажности, удобное для быстрого понимания
После этого можно создавать объекты нового класса для удобства идентификации в названии добавляя номер ноды Mysensors и прописывая в свойство Name название растения
Для параметра напряжения батареи каждого контроллера я не стал создавать нового класса, а взял готовый SVoltageSensors. Для удобства добавил ему свойство TextStatus и в метода valueUpdated добавил PHP код его формирующий
$this->setProperty('TextStatus','Батарея в норме');
Теперь, заполнив свойство minValue, в TextStatus прописывает строка о состоянии батареи. На самом деле можно было воспользоваться встроенным механизмом контроля батареи Mysensors — посылать процент разряда батареи sendBatteryLevel(). Для этого нужно зашить внутрь контроллера тип батареи и диапазоны ее напряжения. На данном этапе проекта я решил обойтись вычислением уровня разряда на стороне сервера.
Итак, после того как для каждого контролера я сформировал пару объектов сенсором относительной влажности и сенсором батареи, я связал эти сенсоры с соответствующей нодой Mysensors
Форма контроля влажности почвы
Для отображения показания всех параметров влажности почвы и состояния батарей питания создаю отдельную сцену с одним единственным элементом типа HTML.
Сцена с кучей отдельных информеров или иконок смотрелась бы очень эффективно, но трудоемкость на ее создания, а также последующие добавления параметров мне показалась слишком высокой.
В HTML код элемента сцены прописываем HTML таблицу с выводом всех параметров контроллеров влажности
Для наблюдения изменения влажности можно использовать расширение MajorDoMo «Графики»
Здесь на графиках наглядно видно поливы трех растений.
Настройка оповещений
Типов оповещений в MajorDoMo великое множество — СМС, различные мессенджеры, социальные сети, а также встроенный помощник Алиса с голосовым выводом. Мне удобно получать уведомление утром на электронную почту.
Для формирования отчета электронным письмо я разработал сценарий с PHP кодом, выполняемый ежедневно утром:
Сценарий анализирует текущее состояние сенсоров и формирует сперва важные оповещения — список растений, которым требуется полив, списки контроллеров которым необходима замена батареи и которые не выходят на связь. Эти же проблемы передаются через помощника Алису. В конце письма добавляется полная сводка параметров контроллеров влажности на манер формы отображения
В прошлый раз я писал мониторинг влажности сенсоров на PHP и получил гораздо более скромные результаты, потратив намного больше времени. Мониторинг влажности в системе MajorDoMo мне нравится своими возможностями и гибкостью работы.
На момент написания статьи система работает уже пол года. В датчиках стоят самые дешевые щелочные батарейки из магазина Галамарт.
А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом Mysensors.
«… А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом Mysensors»
Как успехи?
Про GSM-шлюз можно подробнее? Какой использовался? Отсюда: https://forum.mysensors.org/topic/9147/my_gateway_tinygsm/2 или другой?
Пока еще не запустил
Отлаживаю исполнительные механизмы — полив, наполнение емкости с водой, открытие форточек.
На шлюз скорее всего поставлю Orange PI с USB-модемом. Так больше функционал (можно, например, еще и камеры поставить)
«..А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом.»
Запустили?
Нет еще
Там снега еще по колено
В майские начну заниматься.
«… А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом Mysensors»
Как успехи?
Про GSM-шлюз можно подробнее? Какой использовался? Отсюда: https://forum.mysensors.org/topic/9147/my_gateway_tinygsm/2 или другой?
Пока еще не запустил
Отлаживаю исполнительные механизмы — полив, наполнение емкости с водой, открытие форточек.
На шлюз скорее всего поставлю Orange PI с USB-модемом. Так больше функционал (можно, например, еще и камеры поставить)
Я не совсем понял как передается информация на мажордомо? Передатчики есть, их много, как инфа обрабатывается, кем?
Хотелось бы заказать у вас комплект с несколькими датчиками il@li.ru