Pull to refresh

Мониторинг температуры на удалённом объекте «подручными» средствами

Reading time5 min
Views16K

В далёком 2019 году, когда на улицу можно было выйти без пропуска, меня попросили сделать удалённое отслеживание температуры в деревенском доме. Условия были следующими. Есть частный дом с интернетом, в доме газовый котёл для отопления. Котёл поддерживает определённую температуру в системе отопления, периодически включаясь и выключаясь. В выключенном состоянии горит дежурный фитиль. Вытяжка установлена с ошибками, поэтому сильный ветер снаружи периодически задувает фитиль и отопление перестаёт работать. Чтобы зимой вода в системе отопления не замёрзла нужно вручную зажечь фитиль.

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


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

Выбор элементной базы
На разработку у меня было 2 месяца (задача была поставлена осенью, до морозов было далеко). В данной ситуации сам собой напрашивался ESP8266. Wi-fi в доме есть, библиотеки для измерения температуры написаны для различных датчиков. И ESP и датчик температуры DS18b20 у меня были, поэтому отложил данный проект на некоторое время из-за дел на основной работе. Прошло почти 2 месяца и настала пора сдавать готовое решение, а я и не начинал. Посмотрел по сторонам и решил использовать готовое решение с некоторыми доработками. У меня был свободный контроллер умного дома на базе Z-Wave. Состоит из RaspberryPi и платы расширения к ней, которая и делает из неё контроллер умного дома. RaspberryPi купил на авито за 1500р. пол года назад, а плата расширения у меня была подержанная. Новая стоит 6000р.



Если покупать всё в сборе в магазине, то цена около 13000р. и называется «Контроллер RaZberry».
Готового датчика температуры совместимого с Z-wave у меня не было.

Сделал его на базе ZUNo (в магазине около 3000р., мне достался бесплатно один из прототипов) и герметичного датчика температуры DS18B20.


ZUNo – это ардуино совместимая плата со встроенным радио приёмо-передатчиком. Скетч для неё взял без изменений с сайта производителя (https://z-uno.z-wave.me/examples/1-wire-ds18b20-temperature-sensor/). Из этого скетча ZUNo каждые 30 секунд опрашивает датчик температуры и посылает уведомление контроллеру по радио. Во время ожидания ZUNo не спит. Это я к тому, что скетч примитивный, не экономит ресурсы ни самого микроконтроллера ни электроэнергию. Но делает ровно столько сколько мне и нужно!
ZUNo «аккуратно» залил термоклеем в пластиковом корпусе.

Из корпуса вывел 2 провода: питание от USB и датчик температуры. Получилось надёжно, так что и уронить не страшно и выглядит прилично.

Контроллер подключил через Ethernet кабель к роутеру. Кабель можно было не использовать. RaspberryPi умеет пользоваться Wi-fi. Но поскольку главным требованием было «включил и забыл», не стал рисковать с предварительной настройкой wi-fi сети на raspberryPi.
RaspberryPi была подключена к 2-х амперной «зарядке» от телефона. Датчик температуры потребляет до 50 мА поэтому его подключил в USB разъём RaspberryPi.

Настройка Raspberry
Образ взял отсюда storage.z-wave.me/z-way-server называется «razberry.img.zip».
Далее установил образ на SD карту для RaspberryPi.
Если RaspberryPi запустилась, то будет запущен и Z-way server (ПО умного дома). Но он старой версии, его нужно обновить. В настройках есть кнопка для обновления, но ей никто не пользуется и она не работает.

Гораздо «удобнее» воспользоваться инструкцией для обновления. Она находится по этому адресу. Чтобы ввести команды описанные в данной инструкции нужно открыть терминал на RaspberryPi. Это можно сделать по ssh или подключить монитор с клавиатурой. Второй монитор и клавиатура у меня всегда рядом, в отличие от роутера, так что я выбрал второй вариант. Поскольку разрабатываю не обслуживаемую встраиваемую систему, то нужно предусмотреть сторожевой таймер для повышения надёжности. Всё таки RaspberryPi не является промышленным контроллером и систему Z-wave, тоже не рекомендуется применять в ответственных решениях буду рассчитывать на периодические зависания, выйти из которых можно только перезапуском ПО или всей операционной системы на RaspberryPi. Буду перезапускать операционную систему целиком каждый день в 12:00.
Для этого добавил строчку в файл, выполняемый после старта операционной системы.
#sudo vi /etc/rc.local
shutdown -r 12:00

Основные команды vi
если захочу повторить и забуду
«i»-начать печатать в vi
«:wq!» – сохранить и выйти из vi

Собранный термодатчик на базе ZUNo тоже не является идеальным, если подключить его к RaspberryPi он будет перезагружаться по питанию каждый день. Таким образом сильно повышается надёжность системы в целом. Слабым местом остаётся операционная система, если зависнет она и не перезагрузится в 12:00 уже ничего не поделаешь. Придётся вызывать «специалиста» передёрнуть питание. Однако, эта операционная система протестирована и отлажена лучше остальных составляющих этого проекта (надеюсь). На этот риск придётся пойти.

Настройка ПО Z-way server

Для входа в графическую часть ПО Z-way server подал питание на оборудование и через несколько минут воспользовался сервисом . Этот сервис ищет RaspberryPi c запущенным Z-way server в локальной сети и выводит их ip адреса. Также тут можно подключиться к удалённой RaspberryPi. Чтобы это настроить выбрал локальную RaspberryPi. Задал логин и пароль и запомнил шестизначный ID. Этого достаточно для удалённого подключения.

ID для удалённого подключения.

1) Добавил термодатчик. Это стандартное действие.

2) Добавил Приложения-> Локальные приложения-> Email ME

3) Указал название элемента и адрес электронной почты с текстом письма
4) Добавил условие, при котором отправится письмо. Тоже ничего сложного.


Финальная проверка
Подключил RaspberryPi к роутеру через кабель, подал питание, подключил термодатчик.
Охладил датчик температуры и получил письмо, потом ещё одно, и ещё. Пока температура ниже 15 градусов, «клиент» будет получать письма. Это хорошо, пропустить не удастся. (Забегая вперёд скажу, что почты у клиента тоже не было, поэтому я получал по несколько сотен писем от своего «детища». Мой почтовый клиент удобно складывал их в цепочки и никакого дискомфорта они не вызывали).
Чтобы оперативно смотреть температуру в доме на телефоне, установил приложение Z-way.

Не скажу что оно быстрое, удобное, но удалённо подключаться к Z-way server на RaspberryPi и смотреть температуру позволяет.

Итоги
За 2 вечера, оглядевшись по сторонам, собрал систему мониторинга температуры удалённого объекта. Раньше считал ZUNo и контроллер Razberry дорогими игрушками. Но после торжественного снятия моего оборудования с «боевого» поста, где оно несколько раз вовремя определило неисправность системы отопления за зимний сезон проникся уважением к данным изделиям. А уважать есть за что. Интернет и свет периодически пропадали, но после возобновления подачи связь восстанавливалась. Сейчас разобрал этот «комплекс» на запчасти и понял главную его силу. Имея платку-контроллер Razberry, которую можно вставить в RaspberryPi, а можно через UART переходник к любому компьютеру, одну или две ZUNo, базовый набор датчиков и простейшие исполнительные механизмы можно оперативно организовать решение возникшей проблемы. Не люблю слово «легко» и не имею опыта использования «умного» оборудования других производителей, но за 2 дня я получил готовый набор оборудования, который достаточно подключить к питанию, а также приложение на смартфон, web приложение на компьютер и уведомления на почту.
Tags:
Hubs:
+4
Comments14

Articles

Change theme settings