SIM800+ESP32 без зависаний скетча. Одновременное использование MQTT, SMS и GSM звонков без библиотек

Поделиться
HTML-код
  • Опубликовано: 19 окт 2024

Комментарии • 35

  • @СергейСолодовников-в1п
    @СергейСолодовников-в1п 9 месяцев назад

    Погонял Вашу прошивку на старый функционал, с датчиками DHT22 и DS1820, вроде все работает как надо! Проверил IK приемник, тоже работает нормально, правда после исправления известной ошибки. Там надо поменять строчку lastIRValue = results.value; это заменил на lastIRValue = (uint32_t)results.value;
    Проверил так же работу на платке ESP32-S2, без нареканий. Ну и конечно надо изменить ограничение по ножкам у датчиков вот тут constrain(value.toInt(), -1, 40);
    я поставил вместо 16 значение 40. Спасибо большое за проделанную Вами работу! Если у кого то не будет собираться прошивка, пишите, выложу старенькие надежные библиотеки для датчиков.
    И вопрос по размеру EEPROM , почему Вы поменяли 4096 на 1024, я не сильно копался в даташитах ESP32, там какие то ограничения ?

    • @СергейСолодовников-в1п
      @СергейСолодовников-в1п 9 месяцев назад

      Пока тестировал IR порт случайно выловил "первородный" :-) косяк, с потерей данных при записи кода из HTML странички в память....
      вот тут (поля данных кодов IR) irOn[id] = value.toInt(); irOff[id] = value.toInt(); надо поменять на value.toDouble();
      Так как некоторые пульты дают длинный 32 битный код, а он при конвертации портится, если число больше чем 2147483647 (7FFFFFFF)
      Ну и ножки контроллера ESP32 лучше брать те, которые только на вход работают.

  • @szlab2025
    @szlab2025 9 месяцев назад +1

    Супер!

  • @emilmv9089
    @emilmv9089 9 месяцев назад

    👍🏻

  • @juliec208
    @juliec208 9 месяцев назад

    Отлично, лайк, подписка!!

  • @Владимир-к5з8н
    @Владимир-к5з8н 7 месяцев назад

    Для новичков очень поучительно и полезно, но сложно разобраться )) Есть ли такой код, но только для СМС без подключения к интернету и MQTT?

    • @antonkozlenko6333
      @antonkozlenko6333  7 месяцев назад

      Отправка и прием СМС это самое сложное. Работает все не зависимо. В примере я постарался снабдить код максимальным количеством комментариев и разнести функционал по файлам. В самом видео подробно рассказал, поэтому такое длинное получилось. Пример как основа, это не законченный проект, используйте только нужную часть. Если разберетесь с основным принципом взаимодействия с модемом, с остальным проблем не будет. С другой стороны во втором скетче, для готового устройства, вообще GPRS и MQTT можно не использовать и все будет работать.

  • @tree-service
    @tree-service 9 месяцев назад +1

    Ат команды, и многопоточность, в одном цикле посылаем команду, вторым потоком читаем ответы, если таймаут вышел, повторяем отправку иди ексепшион

  • @СергейСолодовников-в1п
    @СергейСолодовников-в1п 9 месяцев назад

    Очень интересно! У меня вопрос по исходному скетчу Морозова, вы его смогли конвертировать для ESP32 ?!
    Я давно просил Алексея сделать версию для ESP32? но увы у него нет времени, а я не программист и при конвертировании версии 5.4 уперся в SPIFF память :-(
    Могли бы вы помочь с этой проблемой ? Думаю многим не хватает GPIO на умном реле ESP_Relay5_4 для esp8266...

    • @antonkozlenko6333
      @antonkozlenko6333  9 месяцев назад

      Скетч конвертирован под ESP32 на 95%.
      Оставил как есть (т.к. не использовал) RTC memory, датчик освещенности, модуль часов, ИК-пульт. Это скорее всего работать не будет. Но оригинал оставлен в исходниках.

    • @СергейСолодовников-в1п
      @СергейСолодовников-в1п 9 месяцев назад

      Я сравнил код с оригинальной, попробую что в нем работает на есп32, меня больше интересует будет ли Ваша запускаться без SIM800 ? У меня куча устройств на этой прошивке в "умном доме" ну и еще один проект очень нравится - ESPEasy, прошивки даже друг другом управляют по сетке :-)

    • @antonkozlenko6333
      @antonkozlenko6333  9 месяцев назад

      Будет работать без Sim800, я в видео об этом говорю. В веб админке можно вообще исключить Sim800.

    • @СергейСолодовников-в1п
      @СергейСолодовников-в1п 9 месяцев назад

      Не компилится ни для ESP32 ни ESP8266 :-( Правда версия arduino у меня 1.8.19 но библиотек не просит...
      И обратил внимание, в примере видео 5 вкладок в проекте, а скачал по ссылке, там два головных файла Sim800_GSM_Contol и ESP32_GSMRelay5_31
      и при загрузке проекта в IDE совсем другой комплект на компиляцию, такой же как у Морозова....

    • @antonkozlenko6333
      @antonkozlenko6333  9 месяцев назад

      Так я вроде в комментариях все ссылки подписал. Что пример из видео (чему видео и посвящено), а что рабочее устройство (описано вкрадце в конце видео).
      Платформа ESP32 2.0.6, на arduino 1.8.15 у меня работает.

  • @emilmv9089
    @emilmv9089 9 месяцев назад

    Доброго времени! Не подскажите, каким приложением управляете?

    • @antonkozlenko6333
      @antonkozlenko6333  9 месяцев назад +1

      Доброго времени!
      Приложение "MQTT Dash".
      В описании под видео есть ссылки на статьи как настраивать это приложение. Спасибо автору этих статей, все очень подробно расписал.

    • @emilmv9089
      @emilmv9089 9 месяцев назад

      @@antonkozlenko6333 Благодарствую за информацию!🤝

  • @padalkoalexey216
    @padalkoalexey216 2 месяца назад

    Добрый день! Спасибо за такую фундаментальную работу с отличными комментариями. Тестировал и заметил проблему. через несколько часов устройство с кодом демонстрационной программы перестает подключаться в серверу. в логах сервера видно. если позвонить, бросает трубку как положено после первого гудка, дергает ли диод не смотрел - еще не подключал , но топик не обновляет на сервере. Посылать обновление топика конфига- никак не реагирует. Если перезагрузить по питанию все нормально опять на некоторое время. не смотрел точно сколько часов... понаблюдаю с COM- портом.

    • @antonkozlenko6333
      @antonkozlenko6333  2 месяца назад

      Здравствуйте. Если в целом система ESP + SIM800 не повисла, то могут влиять внешние факторы. Под подозрением GSM оператор, который разрывает соединение. Т.к, GPRS соединение долго отрыто. Я тоже погоняю свою сборку.

    • @padalkoalexey216
      @padalkoalexey216 2 месяца назад

      @@antonkozlenko6333 может быть регулярно перезагружать модем, например раз в 10 минут? Его подъем вроде бы не такое долгое действо?

    • @padalkoalexey216
      @padalkoalexey216 2 месяца назад

      @@antonkozlenko6333 причем /Status offline. как формируется offline и зачем? если после него он не выходит?

    • @antonkozlenko6333
      @antonkozlenko6333  2 месяца назад

      @@padalkoalexey216 У меня уже 11 часов работает без сбоев. В вашем случае надо найти причину отвала MQTT. Если звонки и SMS работают, к ESP + SIM800 вопросов нет. Как радикальное средство можно и перезагружать ESP.

    • @padalkoalexey216
      @padalkoalexey216 2 месяца назад

      @@antonkozlenko6333 да спасибо большое! буду пробовать. может особенности брокера или оператора у меня МТС. я попробовал static uint32_t timeout; поменять до 10с. и периоды реконекта до 5-10 сек уменьшил. пробую.

  • @Dima_Volkov81
    @Dima_Volkov81 9 месяцев назад

    День добрый, подскажите как такой код можно отладить? каким отладчикам вы пользуетесь?

    • @antonkozlenko6333
      @antonkozlenko6333  9 месяцев назад +1

      Добрый день. Как показано в видео, это скетч для среды Arduino IDE. Я никаким отладчиком не пользуюсь. Вероятно другие среды имеют отладку, но они под другие МК (STM или еще что то). С этим я не работаю.

  • @padalkoalexey216
    @padalkoalexey216 2 месяца назад

    не подскажете куда копать?

  • @СергейСолодовников-в1п
    @СергейСолодовников-в1п 9 месяцев назад

    Скажите пожалуйста, вот эта манипуляция касается только ESP8266 ?
    /* !!!! При первой загрузе скетча в ESP32 необходимо ОТФОРМАТИРОВАТЬ SPIFFS
    Для этого установить FORMAT_SPIFFS_IF_FAILED true !!!!
    Потом исправить в false и загрузить скетч повторно !!!!! */
    Почему я это спросил, не понял вот это место :
    #ifdef ESP8266
    if (! readRTCmemory()) {
    _log->println(F("RTC memory is empty!"));
    }
    if (! SPIFFS.begin()) {
    _log->println(F("Unable to mount SPIFFS!"));
    }
    #else
    if (! SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) {
    _log->println(F("Unable to mount SPIFFS!"));
    }
    #endif
    как бы применяется переменная только для ESP8266 ?
    Для ESP32 скетч собрался и заработал, а для 8266 почему то не собирается...вроде бы и пакет 2.4.2 пробовал...

    • @antonkozlenko6333
      @antonkozlenko6333  9 месяцев назад

      Под ESP8266 это не работает. Скачайте оригинал у автора по ссылке. Видео снято про SIM800 и ESP32

    • @СергейСолодовников-в1п
      @СергейСолодовников-в1п 9 месяцев назад

      Понятно. А исключить вариант с повторной загрузкой не получился ? Типа если spiffs до этого была не отформатирована ,
      чтобы это делала прошивка при первом запуске...