• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Простая "открывалка" на esp8266 для ворот и шлагбаумов

Сергей_Ф

Moderator
Команда форума
В продолжение темы https://esp8266.ru/forum/threads/esp8266-v-kachestve-telegram-bota-dlja-rtu5024.5685/ сделал простую "открывалку" на esp через Телеграм-бота.

  • Заменяет или дополняет любые системы открытия ворот/шлагбаумов/дверей.
  • Возможность открытия из любой точки мира, где есть доступ к Телеграмм
  • Неограниченное число авторизованных пользователей для открытия
  • Индивидуальный доступ для настроек
  • Возможность обновления прошивки по воздуху:
    • через точку доступа
    • через веб-морду
    • через Телеграмм
    • обновление с GitHub с автоматическими проверками новых версий
  • Для работы необходим WiFi диапазона 2.4Ггц с доступом к Интернет с минимальным каналом (достаточно даже 128 кбит/с).
Прошивка и исходники в свободном доступе. Доступны готовые бинарники для прошивки ( настоятельно рекомендуется ).

З.Ы. Использует библиотеки от Alex Gyver, но никакого выигрыша по объему кода я не заметил по сравнению с библиотекой Universal Telegram Bot.
 
Последнее редактирование:

Gr2000

New member
Добрый день. Взял модуль прошил, подключил. сразу не завелось, но заработало с некоторыми усилиями.
В связи с ними и вопрос:
1. Есть ли какое место(площадка) для обсуждения вопросов связанных с этим проектом?
2. Если это она, то я пока не разобрался как должна работать проверка времени кнопки, у меня время на ней не обновляется
update.h
C:
case fb::Update::Type::CallbackQuery:
    {
    bool myAlert = false;
 
    debugPrintln("NEW QUERY");
    String txt;
    txt.reserve(100);
    long takeAdminMsgId=0;

      auto resp = u.query().data();
      debugPrint("Response '"); debugPrint(resp); debugPrintln("'");

      //auto startOpen = String(ESP.getChipId(), HEX);

      /// =================== Button in channel ============================
      if ( resp.startsWith(ButtonInlineMenu::bCmds)){ //QUERY_START_OPEN)) {
        auto queryChatId = u.query().message().chat().id(); // entry;

        if( settings.getChatId(true) != 0ll &&
            queryChatId != settings.getChatId(true) ){
          txt += CHANNEL_FOR_CONTROL;
          txt += TelegramMD::textIn( menuIds.getChannelName( settings.getChatId(true) ), '\'' );
          myAlert = true;
        } else {
          // проверяем время на кнопке
          long buttonTime = resp.substring(strlen(ButtonInlineMenu::bCmds) );//constLength(QUERY_START_OPEN)).toInt32();
          if ( ! myButton.isExpired( buttonTime ) ){
long buttonTime = resp.substring(strlen(ButtonInlineMenu::bCmds) ); - кнопка должна обновляться и соответственно возвращать при нажатии обновленное значение в этом поле? мы в нее при обновлении каждые 20 сек обновляем это поле?
поясните о чем это и где это можно почитать.
 

Сергей_Ф

Moderator
Команда форума
День добрый.
Давайте по порядку.
0) как устанавливали?
1) что сразу не завелось?
2) какие усилия приложили, чтобы завелось?
3) как определили что время не обновляется? Его не видно, это внутренняя переменная для кнопки.

Ну и сразу предупрежу, некоторые библиотеки подвергались правкам, они в проект не входят. Соответственно, код у вас может (да скорее всего так и есть) скомилироваться не верно. Для этого в релизах лежат готовые бинарники для прошивки. Листинг представлен только для ознакомления с кодом.
 

Gr2000

New member
0. Из исходников естественно, для более глубокой переработки под свои нужды.
1. Вот эта кнопка и не завелась, 20 секунд работала и все( выходил тайм-аут)
2. В переменную проверки просроченности кнопки пока заткнул текущим временем уменьшенным на 100 мм , пока не понял функционал который эта проверка реализует и это фича или архитектурное требование телеграм.
3. Не работало, вывел отладку в консоль

Вообще проект хорошо выглядит.
Я с esp первый раз, и с телегой тоже, я все более на stm32, узнал много нового и интересного, но далеко не все чтобы хорошо ориентироваться пока))) Даже если это для рекламы сделано, сама идея хорошая.
 

Сергей_Ф

Moderator
Команда форума
функционал такой, что колбэки кнопки отрабатываются сервером Телеграмм тогда, когда он придёт на сервер. Если у вас нет Интернета, то придти он может через час, когда у вас или у Открывалки появится Интернет, но тогда ворота открывать уже не нужно. Поэтому пришлось колхозить текущее время в кнопку и проверять его - нужно ли открывать или нет.
А вообще, у вас удивительная способность отвечать, не отвечая на суть вопроса. Давайте сделаем так - грузите бинарник. Проверяете работу, понимаете что к чему. Потом смотрите исходник, говорите версию коммита, который скачали и что не так работает, как вы ожидали. А то переливание из пустого в порожнее получается.
Сделано для людей, реклама тут каким боком? Предыдущая открывалка у меня в СНТ работает успешно уже 5 лет. И ещё есть пяток юзеров, которых я знаю.
 
Последнее редактирование:

Gr2000

New member
Теперь понятно для чего эта фича со временем сделана.(y)
Вы не правильно меня поняли, я не с претензией сюда пришел. Скачал вчера с мастера. Как разобраться по бинарнику не очень понимаю. Включил дебаг дефайн и начал разбираться по выводу в консоль esp8266. Библиотеки соответственно не правил.Про канал рекламы подумал, потому что видел в продаже это или подобное устройство. В любом случае одобряю. Тем более что вы ответили на возникший у меня вопрос. А если бы и - нет, все равно остался бы доволен даже с намеренной ошибкой в коде проекта, в качестве барьера. Отвлекся. Вообщем только положительные эмоции испытал от запуска, благодарен. Есть ли какой todo лист для этого устройства, по поводу ведения лога какие соображения были и есть сейчас? Каким образом его можно реализовать, как считаете?
 

Сергей_Ф

Moderator
Команда форума
Ну, естественно, я готов сделать готовое устройство и передать его за определенную сумму тем, кто не может сам. И на Авито висит моё объявление. Журнал есть в предыдущей версии,но тут он похоже никому не нужен особо. Потому я его пока и не делал. Для журнала прекрасно подходит ещё один канал в Телеграмме. Просто пишете лог туда. Если вам нужно, то я готов сделать. Но это не бесплатно будет.
Библиотеки вы вряд-ли сами поправите, даже я не помню что там правил. Они в единственном экземпляре на моем компе.
А в коде никаких ошибок нет. Он на Гите как на моем компе.
 

Gr2000

New member
В предыдущей версии - на гитхабе ветка? Или устройство для gsm реле? Есть исходники какие-то?
 

Сергей_Ф

Moderator
Команда форума
Для rtu5024 версия с журналом. Её нет в свободном доступе. Добавить журнал сюда - пару дней работы. Готовы оплатить - сделаю. Исходники предоставлю все, до успешной компиляции. Нет - ждите, когда руки дойдут до журнала. Вы Роман,я так понимаю?
 

Gr2000

New member
Нет, я не Роман. Я вопрос покупки вашего времени пока не рассматриваю. Небольшой донат готов сделать. Скорее так оцениваю свои желания помочь проекту.
Подскажите, модификация библиотек насколько оправдана? С чем это связано?
 

Сергей_Ф

Moderator
Команда форума
Подскажите, модификация библиотек насколько оправдана? С чем это связано?
Очевидно, что что-то не устраивало в их работе. Честно говоря, уже не помню. Надо смотреть, вспоминать. Специально, чтобы нельзя было повторить, ничего не делал. Самая очевидная правка - библиотека GSON - там не был реализован тип null. Но правку оперативно принял автор и теперь можно использовать свежую версию без проблем.
 

Gr2000

New member
Добрый день. Не знаю где подсмотреть, не подскажете: "как из ид пользователя получить его ник"? Это делается средствами FastBot2 или каким другими внешними сервисами?
 
Сверху Снизу