9

Клуб Контур и бот для удаленного мониторинга

Давненько не было постов от Клуба любителей электроники Контур, поэтому - исправляемся :)

Контур-бот вежливо отвечает на вопрос :)

Контур-бот вежливо отвечает на вопрос :)

Сегодня поведаем вам о решении одной насущной проблемы, которая заключалась в следующем: периодически нужно знать, открыт в данный момент клуб или нет (так как мы часто открыты вне расписания, а иногда закрыты по расписанию). Проблема решалась согласованием времени заранее либо вопросом в чат; однако это зачастую неудобно - человек может не увидеть/ не ответить вовремя, время может измениться и так далее. Поэтому в один долгий зимний вечер было написано следующее сообщение (орфография сохранена):

«Давно надо сделать что нибудь, чтобы без писания сюда было понятно открыто или нет. Типо фигулины которая при включении света начинает [сообщать] на сервер куда нибудь мол типо я в сети»

Во время проработки предложения возникло множество заблуждений о необходимости покупать домен, выделенный сервер, статический IP и прочие непотребства (вплоть до того, что за API ВКонтакте якобы тоже надо платить), которые быстро развеял один из активных участников нашего клуба и пообещал провернуть всё на одной только ESP8266 с подключением через имеющийся в клубе интернет.

После недолгих обсуждений выяснили, что самый оптимальный вариант реализации – это чат-бот для ВКонтакте с приёмом сообщений через Long Poll. Вскрыв исходники своих старых похожих проектов, дописав всё «как надо» и позанимавшись оптимизацией, человек довольно быстро представил клубу прототип системы с уже разведённой печатной платой:

Прототип. Контакты для слота под microSD зарезервированы на будущее…

Прототип. Контакты для слота под microSD зарезервированы на будущее…

И практически сразу начался этап альфа-тестирования системы.

Первое время статус зависел исключительно от нажатия кнопки при входе или выходе из клуба (с обратной связью в виде звуковых и световых сигналов), но затем, когда разработчику перестало быть лень, к системе добавился заранее обещанный датчик наличия 220В (что весьма полезно).

Для безопасности схему датчика решили распаять на отдельной плате

Для безопасности схему датчика решили распаять на отдельной плате

Который мы подключили к освещению:

И протянули выходной логический сигнал остатками телефонной лапши:

Хоть изначально мы и хотели полностью автоматизировать изменение статуса клуба, но вспомнили, что клуб не всегда открывается именно для приёма посетителей (что-нибудь взять/положить, например), поэтому кнопка осталась на месте, а датчик 220 сделали вспомогательным для определения наличия кого-либо в клубе.

Заодно и для отправки админам уведомления

Заодно и для отправки админам уведомления

Хоть система всё ещё требует некоторых доработок, она уже радует своего создателя (который часто подходил к клубу «на удачу» и очень расстраивался, когда было закрыто). Из-за относительной слабости ESP8266 бот может задерживать ответ на время до 10 секунд (это время тратится на «холодную» установку SSL-соединения), но для нас это некритично.

Конечно, в клубе нередко происходят перебои в Интернет-соединении (у нас YOTA), но разработчик постарался реализовать автовосстановление, добавил предупреждающие сигналы и («на всякий случай!») автоперезагрузку при долгой потере связи. Заходящие в клуб в момент оборванной связи имеют все шансы услышать звук SOS =)

А это про кратковременные обрывы. И так каждую ночь…

А это про кратковременные обрывы. И так каждую ночь…

Напоследок, для особо любопытных (и желающих повторить что-нибудь подобное) создатель поделился исходным кодом системы: https://github.com/lethanner/kontur-monitor

А чуть менее любопытные могут уже сейчас попробовать спросить нашего бота: «клуб открыт?» https://vk.com/konturbot. ESP8266 ответит вам лично =) Учтите, что мы сохраняем историю запросов!

P.S. автор системы - тот же человек, что занимался Dial-UPом в предыдущих постах :)