Проект — замок с уникальным id, который открывается и закрывается удаленно после оплаты. Как лучше реализовать?

Есть задача - сделать сет коробочек, каждая из которых независимо открывается после оплаты на сайте и закрывается спустя некоторое время, скажем, час. У каждой коробки уникальный номер id. Кроме того, если пользователь продлил оплату, замок не закрывается еще на проплаченное время. Мы должны знать время открытия и закрытия каждой, и желательно, понимать, сколько коробок сейчас активны. То есть - железо в коробке должно уметь ограниченно общаться со внешним миром.

Уже реализован сам физический замок в коробке, но работает он пока только в локальном вайфае, без связи со внешним миром, который сам же и раздает. Сделано это на ESP-32.

Принцип напоминает постаматы боксберри или что-то в этом роде. Напрашивается мысль, что мы изобретаем велосипед и есть готовые или почти готовые решения, для этих либо других железок сопоставимого размера.
- Вопрос - есть ли, какие?
- Если нет, реально ли допиливать наш замок на этом контроллере, или искать другой? какие библиотеки использовать?
  • Вопрос задан
  • 326 просмотров
Решения вопроса 1
trapwalker
@trapwalker
Программист, энтузиаст
А в чем проблема? Проплатите самую дешевую VDS, купите домен, настройте бесплатный SSL-сертификат, чтобы https был и безопасненько было. На VDS, чтобы не завязываться на одного единственного провайдера и легче было переносить сервер в случае чего, докер поставьте, сконфигурируйте докер-компоуз с контейнерами:
- nginx для статики и заворачивания SSL,
- БД (postgres или что вам там привычнее? Можно монгу)
- напишите на питончике или любом языке который знаете простейший веб-сервис с API, который будет отвечать коробочкам кому когда открываться и закрваться, статусы с них собирать, уровень заряда там и прочую телеметрию. Можно под это дела фрилансера нанять, если сами не умеете.
- можно отдельно поднять сайтик на этой же VDS и, если надо, какую-нибудь CMS готовую. Благодаря докеру все он у вас не будут толкатьс локтями и мешать друг другу своими зависимостями.

Не забыть по крону прописать обновление сертификата (у letsencrypt есть certbot специальный).

Если всё сделать правильно, то развёртывание сервера будет тривиальным, можно легко, быстро и бесшовно переезжать на другой хостинг.

Коробочки ваши будут с заданным интервалом слать телеметрию на API, забирать инфу о необходимости открыться/закрыться. Если момент открытия и закрытия нужно соблюдать до секунд или точнее, то можно поднимать веб-сокет соединение, но лучше синкануть время и говорить коробочке во сколько открываться и закрываться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Проблема дизайна. Коробка обязана иметь локальный интерфейс, а не сайт. Это типичная ошибка "дизайнеров" всевозможных умных (а в результате, тупых) систем - предполагать, что у юзера с собой заряженный смартфон с работающим интернетом. Очень часто вместо этого вы получаете юзера:
-с севшим телефоном
-с телефоном без денег
-с нокией 3310
-ладно, у юзера заряженный айфон и деньги есть, но блин, как раз сегодня в районе вашей коробочки упал мобильный интернет, осталось только 2G, а ваш сайт - раздутое PWA на десяток мегабайт.

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

Как я уже говорил в похожем треде - наиболее надежно в плане электроники (и дешево в долгосрочной перспективе) - специализированное решение, а не поделка из RPi с линуксом и прочим шарабаном.

Определяйтесь с тем, как ваше изделие будет получать интернет (Wi-fi, Ethernet, 3G) и основываясь на этом, проектируйте контроллер. Ну или используйте RPi, но это будет дороже.

В частности, такой девайс можно сделать вообще не требующим подключения ни к интернету, ни к сети 220V - ведь курьер, приносящий в него товары, может обновлять списки пинкодов к шкафчиками и приносить новые батареи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы