logo
Истории      23/02/2022

«Пишешь в чат “тук-тук” — и тебя впускают»: как мы за два вечера автоматизировали секретный бар в Киеве

Максим Мельник BLOG

Python Developer / BA

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

Секретный бар

Дело было вечером, мы гуляли по ПодолуИсторическая местность Киева, низинная часть исторического центра города, древний посад ремесленников и купцов, искали бар, решили заскочить в «Поток» к знакомым на Воздвиженке.

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

В общем, мы решили немного упростить ребятам жизнь. Посидели, подумали, придумали примерно следующее:

Я, как бармен, хочу иметь визуальное и звуковое оповещение о гостях, которые ждут под дверью. Не хочу дверной звонок, хочу понимать, что гость ждет, и хочу, чтобы только люди, которым я позволю, могли «постучать» в дверь.

 Обсудили с барменами, им идея понравилась, на этом и разошлись.

Наша разработка и воплощение

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

Бармен очень рад нашей затее!

Бармен очень рад нашей затее!

Ближе к вечеру у нас был готовый прототип системы.

Так как чат, куда пишут «тук-тук» и где происходит общение, уже был, просто работал в ручном режиме — нужно было придумать, как вытаскивать оттуда сообщения.

Юзербот

Изначально хотели остановиться на юзерботе на основе Pyrogram, привязанному к аккаунту бармена, чтобы выглядело естественнее, но позже сделали выбор в сторону обычного бота на aiogram.

Онлайн-курс "AWS для початківців" від robot_dreams.
Навчіться працювати з cloud-native системами та побудуйте власний застосунок для зберігання даних у системі AWS.Досвід і фідбек від Fullstack Developer in Amazon.
Детальніше про курс

Логика у бота не очень сложная: проверка сообщений на ключевые слова с учетом опечаток.

В качестве движка для обнаружения ключевых слов изначально хотели взять Dialogflow от Google, но не сложилось, так как не было постоянного стабильного подключения к интернету, а обрабатывать миллион возможных ошибок никто не хотел. Да и слишком тяжелый фреймворк для одной простой функции — определить схожесть слов.

Нам хотелось создать что-то максимально простое и удобное

Нам хотелось создать что-то максимально простое и удобное

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

Система оповещения

С системой оповещения получилось веселее. За барной стойкой была установлена светодиодная лента, которая изначально не предполагала какую-либо интеграцию или вообще модернизацию, да и работала она по радиопульту.

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

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

Кажется, сердце клиента растоплено

Кажется, сердце растоплено

Мы, правда, поняли, что скорее всего серву кто-то сломает, перебьет или еще что-то нехорошее с ней сделает, потому сразу продумали дополнительную систему с пищалкой. Параллельно с морганием света она издает звуковой сигнал.

По крайней мере, так оно должно было проработать до тех пор, пока мы не заменим пульт или не поставим светодиодную ленту «поумнее».

Когда вся система была наконец-то собрана, мы еще где-то час провели за настройкой доступа в интернет, автоматическим запуском и подобными вещами.

Онлайн-курс Frontend-разробник від Powercode academy.
Курс на якому ти напишеш свій чистий код на JavaScript, попрацюєш із різними видами верстки, а також адаптаціями проектів під будь-які екрани. .
Зарееструватися

Результат

По итогу: у нас был чат, в который ты пишешь «пустите» или «пустрпте» или «тук-тук», и эта штука выдает сигнал на систему оповещения.

Мы довольно весело провели два вечера, чуть улучшили свои навыки в работе с хардвером, повеселились, решили «боль» бармена.

Что в итоге?

Система работает уже больше месяца, нареканий не поступало.

Наша команда за работой

На начатом останавливаться не планируем!

На этом еще не все. Проект не закрыт и запланированы некоторые доработки:

  • замена сервомотора и пульта на радиоконтроллер или полная замена светодиодной ленты на «умную»;
  • более качественная защита системы от перебоев с питанием (сейчас настроен авторебут, но работает он через раз);
  • запрограммировать поинтереснее звук на пищалку.

Несмотря на некоторые спорные технические решения, бармены настолько привыкли к этой штуке, что часто звучит вопрос: «Как мы без этого жили раньше?»

Как по мне, как раз это и маркер хорошо закрытой потребности пользователя и работы, которая проделана не зря!

Курс Full-stack developer від Mate academy.
Ідеальний курс для новачків - після закінчення гарантоване працевлаштування. Ви навчитесь працювати як з фронтендом, так і з бекендом сайта. .
Отримати знижку на курс

Читайте также: Приглашал спутниц попробовать наливку, но сам — за рулем, поэтому не пил. Как я придумал портативный алкотестер

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн-курс "Фінансовий аналіз" від Laba.
Опануйте звітність — від збору даних до обробки результатів, та інтерпретуйте дані ключових звітів CF, BS, P&L зрозумілою мовою.
Детальніше про курс

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: