К содержимому

Инструкции: IoT и умный дом

Шкала заполнения: уровень воды в баке и заряд батареи на дашборде

Шкала заполнения отвечает на один вопрос — сколько осталось. Чтобы ответ был честным, сырое показание датчика нужно правильно перевести в проценты.

редакция «Топика»~5 мин

Разделы материала

Что на самом деле меряет датчик

Для уровня воды обычно используют три принципа.

  • Расстояние сверху. Датчик над баком меряет расстояние до поверхности. Чем больше вода, тем меньше число — шкалу нужно переворачивать.
  • Давление снизу. Датчик на дне меряет давление столба воды. Чем выше уровень, тем больше давление — зависимость прямая.
  • Поплавок или дискретные контакты. Несколько контактов на разной высоте дают ступенчатый уровень: четверть, половина, три четверти.

Для аккумулятора сырое значение — напряжение. Зависимость заряда от напряжения нелинейна и зависит от типа батареи, поэтому простая пропорция даёт лишь грубую оценку. Для дашборда этого часто хватает, если честно подписать шкалу как «примерный заряд».

Калибровка двух точек

Расчёт по паспорту бака подводит: реальная высота, место установки датчика и мёртвая зона у дна всегда отличаются. Надёжнее откалибровать по факту.

  1. Опустошите бак до уровня, который вы считаете «пустым» — например, до заборной трубы насоса, ниже которой воду всё равно не взять. Запишите показание датчика.
  2. Наполните бак до рабочего максимума — до перелива или поплавкового клапана. Запишите второе показание.
  3. Эти два числа и будут нулём и сотней процентов.

Условная дача в посёлке N с бочкой для полива: датчик расстояния над горловиной. При пустой бочке он показывает, допустим, значение E, при полной — F, причём F меньше E. Дальше работает обычная пропорция.

Пересчёт в проценты

Формула для общего случая:

процент = (сырое − пусто) / (полно − пусто) × 100

Она сама учитывает перевёрнутую шкалу: если «полно» меньше «пусто», знаменатель отрицательный, и проценты всё равно растут с уровнем воды. После расчёта обязательно ограничьте результат рамками от 0 до 100: волны, пена и шум датчика иногда дают «минус три» или «сто четыре процента».

Пример того, что удобно публиковать в брокер, чтобы панель не занималась математикой:

{"percent": 62, "raw": 418, "state": "ok"}

Сырое значение пригодится при перекалибровке, а поле состояния — для подсветки шкалы. Уровень меняется медленно, поэтому его разумно отправлять с флагом retained: открыв панель, вы сразу увидите последнее известное заполнение, а не пустую заготовку. Подробности о топиках и флагах — в разборе обмена сообщениями MQTT.

Неровная ёмкость

Если бак не цилиндр с вертикальными стенками, а, например, лежачая бочка, то уровень и объём связаны нелинейно: половина высоты не равна половине воды. Для дашборда либо честно подпишите шкалу как «уровень», либо снимите несколько промежуточных точек при наполнении и пересчитывайте по таблице.

Гистерезис: чтобы тревога не мигала

Когда уровень стоит ровно на пороге, шум датчика заставляет его прыгать туда-сюда: «пора доливать» — «норма» — «пора доливать». Каждое пересечение — новое уведомление на телефоне. Лечится это гистерезисом: тревога включается при одном значении, а выключается только при заметно более высоком. Например, сигнал «мало воды» загорается на нижнем пороге и гаснет, лишь когда бак наполнится хотя бы до середины. Тот же приём работает для заряда: предупреждение не исчезает от того, что напряжение на минуту подросло без нагрузки.

Для батареи есть ещё одна тонкость — напряжение под нагрузкой проседает. Если устройство меряет заряд в момент передачи по радио, оно увидит заниженное значение. Лучше снимать замер до включения передатчика или усреднять несколько измерений в покое.

Пороги и цвета

Шкала полезна, когда подсказывает, что делать. Задайте пороги по реальным действиям:

  • «Пора доливать» / «пора заряжать» — уровень, при котором вы обычно начинаете действовать;
  • «Критично» — уровень, ниже которого насос может работать всухую или устройство отключится;
  • «Перелив» — для баков, которые наполняются автоматически, верхний порог тоже важен.

Цвет заливки меняется по порогам, но не стоит полагаться только на него — рядом всегда нужна цифра процентов. Как подобрать цвета, которые читаются и днём, и в тёмной теме, разобрано в материале про цвета дашборда.

Вертикально или горизонтально

Для бака естественна вертикальная шкала: вода поднимается снизу вверх, и картинка совпадает с тем, что человек видит в жизни. Для заряда батареи привычнее горизонтальная полоска, как на экране телефона. Если на панели несколько ёмкостей — бочка для полива, накопительный бак и аккумулятор резервного питания, — сделайте шкалы одного размера и расположите рядом, подписав по месту: «Бочка у теплицы», «Бак в котельной».

Шкала или стрелка

Шкала заполнения и стрелочный индикатор похожи, но читаются по-разному. Шкала — это «ёмкость»: человек интуитивно понимает, что пустое плохо, а полное хорошо. Стрелка — «положение в диапазоне», где норма обычно в середине. Уровень воды и заряд — классика для шкалы, температура и давление — для стрелки.

Чек-лист

  • Понятно, что именно меряет датчик и растёт ли значение вместе с уровнем.
  • Точки «пусто» и «полно» сняты на реальной ёмкости.
  • Пересчёт делается на устройстве или обработчике, панель получает готовые проценты.
  • Результат ограничен рамками от 0 до 100.
  • Заданы пороги по реальным действиям, а не «на глаз».
  • Рядом со шкалой выводится цифра процентов.
  • Для «нет данных» предусмотрено отдельное состояние, а не пустой бак.

Типичные ошибки

  1. Перевёрнутая шкала. Датчик расстояния сверху, а формула взята как для давления снизу: бак полон, а шкала показывает пустоту.
  2. Калибровка по паспорту. Мёртвая зона у дна и место установки датчика не учтены, шкала постоянно врёт на несколько делений.
  3. Нет ограничения краёв. На дашборде появляются «104%», и пользователи перестают доверять панели.
  4. Пустой бак вместо «нет связи». Датчик отключился, шкала упала в ноль — и среди ночи срабатывает тревога.
  5. Скачущая заливка. Волны после наполнения дают дрожание; помогает усреднение нескольких замеров.

Вопросы и ответы

Как часто обновлять уровень воды?

Для бочки или бака достаточно редких обновлений — раз в несколько минут. Чаще имеет смысл только во время наполнения, чтобы вовремя остановить насос.

Можно ли показывать заряд батареи самого датчика?

Да, и это полезно: маленькая шкала заряда рядом с показанием подскажет, когда менять батарейки, до того как датчик замолчит.

Нужно ли перекалибровывать датчик?

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