Подключение датчиков влажности почвы к MajorDoMo

000
Недавно я разработал партию резистивных  сенсоров влажности почвы
. В этой статье я расскажу, как подключить эти сенсоры к системе умного лома MajorDoMo и сделать информацию по влажности почвы комнатных растений удобной для использования.

Перед тем как перейти к настройке MajorDoMo я немного конкретизирую свои требования:

  • Сервер должен делать пересчет показаний сервера в калиброванное значение влажности почвы, а также в упрощенные понятия «сухо», «влажно», «срочно полить».
  • Подключение однотипных сенсоров к системе должно быть как можно менее трудозатратным.
  • Показания всех сенсоров (влажности и состояния батареи) должны отображаться на одной экранной форме.
  • Должна быть настроена система оповещений с конкретными рекомендациями и проблемами для всей системы контроля влажности почвы.
  • При необходимости нужен отчет по частоте полива, дате последнего полива и прогнозу даты следующего полива

Сразу скажу, что последняя функция возможна только при накоплении данных за довольно длительный период и на момент написания статьи не реализована.

000

Подключение сенсоров к MajorDoMo

После включения контроллеров влажности новые ноды начинают появляться на страницы MajorDoMo Mysensors. В прошивке контроллера прописаны презентации двух сенсоров — значение влажности в виде значения АЦП и напряжение батареи питания, считанной через функцию ReadVcc()

Для удобства меняю названия нод на понятные мне

md01

Наиболее близкий тип к сенсору влажности почвы из существующих это класс SHumSensors. Но в моем случае он будет отображать в качестве основного параметра влажности то что передается с контроллера, то есть значение АЦП. Пересчитывать эти значения в процентный показатель влажности я решил на стороне сервера, чтобы каждый раз при калибровке не лезть  в прошивку контроллера. Поэтому я  создал новый класс, наследующий SHumSensors с двумя новыми свойствами: «Относительная влажность почвы» и «Оценка влажности почвы»

md02

Относительная влажность почвы указывается ка ключевое свойство с желаемым периодом хранения (в моем случае 1000 дней) в истории параметров (читай, в базе MySQL).

md03

Свойство «Оценка влажности» у меня не ключевое и историю его хранить не нужно, что и указывается при создании

md04

После этого я отредактировал существующий метод valueUpdated моего класса, который вызывается при каждом изменении свойства value, унаследованного из родительского класса.

md05

В PHP код я пишу формулу пересчета показания АЦП в относительную влажность, полученную при калибровки сенсора и оценочное значение влажности, удобное для быстрого понимания

После этого можно создавать объекты нового класса для удобства идентификации в названии добавляя номер ноды Mysensors и прописывая в свойство Name название растения

md06

Для параметра напряжения батареи каждого контроллера я не стал создавать нового класса, а взял готовый SVoltageSensors.  Для удобства добавил ему свойство TextStatus и в метода valueUpdated добавил PHP код его формирующий

Теперь, заполнив свойство minValue, в TextStatus прописывает строка о состоянии батареи. На самом деле можно было воспользоваться встроенным механизмом контроля батареи Mysensors — посылать процент разряда батареи sendBatteryLevel().  Для этого нужно зашить внутрь контроллера тип батареи и диапазоны ее напряжения. На данном этапе проекта я решил обойтись вычислением уровня разряда на стороне сервера.

Итак, после того как для каждого контролера я сформировал пару объектов сенсором относительной влажности и сенсором батареи, я связал эти сенсоры с соответствующей  нодой Mysensors

md07

Форма контроля влажности почвы

Для отображения показания всех параметров влажности почвы и состояния батарей питания создаю отдельную сцену с одним единственным элементом типа HTML.

md08

Сцена с кучей отдельных информеров или  иконок смотрелась бы очень эффективно, но трудоемкость на ее создания, а также последующие добавления параметров мне показалась слишком высокой.

В HTML код элемента сцены прописываем HTML таблицу с выводом всех параметров контроллеров влажности

В результате получаем такую вот форму

md09

Для наблюдения изменения влажности можно использовать расширение MajorDoMo «Графики»

md10

Здесь на графиках наглядно видно поливы трех растений.

Настройка оповещений

Типов оповещений в MajorDoMo великое множество — СМС, различные мессенджеры, социальные сети, а также встроенный помощник Алиса с голосовым выводом. Мне удобно получать уведомление утром на электронную почту.

Для формирования отчета электронным письмо я разработал сценарий с PHP кодом, выполняемый ежедневно утром:

md11

Сценарий анализирует текущее состояние сенсоров и формирует сперва важные оповещения — список растений, которым требуется полив, списки контроллеров которым необходима замена батареи и которые не выходят на связь. Эти же проблемы передаются через помощника Алису. В конце письма добавляется полная сводка параметров контроллеров влажности на манер формы отображения

В результате работы сценария мне каждое утро приходит примерно такое письмо:

Небольшой итог

001

В прошлый раз я писал мониторинг влажности сенсоров на PHP и получил гораздо более скромные результаты, потратив намного больше времени.  Мониторинг влажности в системе MajorDoMo мне нравится своими возможностями и гибкостью работы.

На момент написания статьи система работает уже пол года. В датчиках стоят самые дешевые щелочные батарейки из магазина Галамарт.

А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом Mysensorscat2.

 

Вы можете оставить отзыв или трекбек со своего сайта.

4 комментария на «Подключение датчиков влажности почвы к MajorDoMo»

  1. Денис:

    «..А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом.»
    Запустили?

  2. Олег:

    «… А я готовлюсь к весне запустить эту систему в теплице и открытом грунте на своем огороде с GSM-шлюзом Mysensors»
    Как успехи?
    Про GSM-шлюз можно подробнее? Какой использовался? Отсюда: https://forum.mysensors.org/topic/9147/my_gateway_tinygsm/2 или другой?

    • Alexey Alexey:

      Пока еще не запустил
      Отлаживаю исполнительные механизмы — полив, наполнение емкости с водой, открытие форточек.
      На шлюз скорее всего поставлю Orange PI с USB-модемом. Так больше функционал (можно, например, еще и камеры поставить)

Ваш отзыв