Null
А тут скачал и всё
Petr
И на вандрайв мог положить¿
Null
Ага, и еще нкуда то
Null
Зачем
Null
Точки отказа только
Null
А так все под рукой
Sneg.
Null ты говорил вроде что занимался с mqtt через sim 800l и arduino ?
Sneg.
Ребята, есть у кого нибудь рабочий пример ардуино + mqtt по gprs ? Очень нужно.
Sneg.
?
Null
Пример
Null
TinyGSM
Null
?
⬆️
Andy
Ребят, всем привет) А кто-нибудь может подсказать библиотеку нормальную, развивающуюся для ESP8266-telegram По типу этой? https://github.com/Gianbacchio/ESP8266-TelegramBot
Andy
Эту автор забросил, а хотелось бы чтоб и под esp32 подходило Кто чем пользуется?
Null
А в чем проблема исправить или написать самому?
Null
Там всего то tcp client и таймеры
Null
А далее API telegram
Andy
А в чем проблема исправить или написать самому?
Я собсно так и сделал, но там в апи всплывают мелкие проблемы - русская кодировка некорректно отображается, с кнопками не до конца разобрался, поэтому, если есть рабочий инструмент, зачем писать велосипед
.Dmitry
https://mysku.ru/blog/china-stores/48213.html
.Dmitry
https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
Anonymous
это наверно Наташка+ из ютуба фанатка электронники ))
Andy
https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
Этот тоже кириллицу не понимает
.Dmitry
Не сочти за рекламу https://wifi-iot.com/p/esp32/ Макс прикрутил телеграмму к есп32
Sergio
Удобная эта прошивка от макса?
.Dmitry
для лентяев да)))
Sergio
Я лентяй) лишь бы стабильность была
Я лентяй) лишь бы стабильность была
Первые прошивки у него жутко глючили зависали модули и т.д. сейчас получше у меня несколько месяцев держится
Sergio
Я еще год назад слышал что стабильно уже работали
Sneg.
Ребята подскажите пожалуйста, по функции pubsubclient. Логика работы: при срабатывании датчика движения включаю реле и отправляю в топик 1, далее жду 3 секунды отключаю реле и отправляю в топик ноль. Если жду не три секунды, а тридцать то в топик ничего не приходит, хотя реле отключается. Почему в топик при delay
Sneg.
В тридцать секунд ничего не приходит ?
Jason
отваливается по таймауту и флаги стоят без подтверждения получения
Jason
щас скопипастить не могу, но в доке по mqtt или пабсабклиенту все написано
Sneg.
Как тогда быть ?
Sneg.
Я новичек, направьте мысли в правильную сторону.
Jason
не делать delay в 30 секунд
Sneg.
Мне надо отследить состояние кнопки
Sneg.
После отключения нужно ждать пару минут, а потом только включать
Sneg.
После включения соответственно отправить в топик
Jason
ну так ты pubsub loop крути каждые пару секунд
Jason
а в отдельном условии жди 2 минуты для дальнейших действий
Sneg.
Я жду через делей
Sneg.
Не будет крутиться
Jason
не надо ждать через делэй
Jason
есть классическая неблокирующая цикл схема ожидания
Jason
заводишь глобальную переменную
Jason
создаешь условие в основном цикле , что если текущие millis -peremennaya > vremya ozhidaniya, то делать какие-то действия и присвоить peremennaya текущим millis()
Jason
peremennuyy только не забыть сразу нулем инициализировать при объявлении
Jason
тогда у тебя будет собственный таймер на выполнение чего-то, не мешающий основному циклу
Sneg.
Получается мне нужно его запустить после сработки датчика
Sneg.
То есть внутри функции
Jason
ну ты можешь помимо непосредственно разности миллисекунда еще и проверять какую-то переменную
Jason
которая меняет значение после сработки датчика
Jason
я до конца твою схему не понял , зачем две минуты ждать, но идея такова
Jason
основная идея, что при работе с mqtt ты не должен надолго блокировать основной цикл своими действиями
Sneg.
Понял
Sneg.
Не понял пока только как сделать что бы отсчет таймера начался именно тогда, когда датчик сработает
Sneg.
А не считал постоянно
Sneg.
Через смену переменной?
Jason
да
Jason
в момент срабатывания выставляешь переменную, к примеру "timerActivated" = true и "peremennaya" = millis()
Jason
а в условии в основном цикле проверяешь значение timerActivated и разность millis() - "peremennaya"
Jason
и дальше выполняешь действия
Jason
если условие ок
Sneg.
Спасибо тебе, направление понял. Буду изучать.
Jason
не забывай потом в ветке, где идут действия после срабатывания условия, сбрасывать timerActvated
Sneg.
Ок
Sneg.
подскажи пожалуйста еще
Sneg.
делаю так:
Sneg.
принимаю переменные:
Sneg.
int timerActivated; unsigned long peremennaya = 0;
Sneg.
в основном цикле функция и условия таймера:
Sneg.
economy (); // выполняем функцию экономии электроэнергии if (timerActivated = true) { if (millis() - peremennaya > 10000) { flag_eco = 0; // равняем флаг к нулю (для разовой сработки каждого режима) timerActivated = false; } }
Sneg.
сама функция: void economy (){ // функцция экономии електроэнергии if ((digitalRead(pir) == HIGH)&&(flag_eco == 1)) { // если есть движение и флаг равен единице, то digitalWrite (rele_dvig_panika, LOW); // включаем реле (жмем кнопку) Serial.println ("HIGH"); // пишем в сериал client.publish(eco_topic, String("pir no economy").c_str()); // публикуем в топике delay (1000); // держим нажатой секунду digitalWrite (rele_dvig_panika, HIGH); // выключаем реле (отпускаем кнопку) timerActivated = true; peremennaya = millis(); } if ((digitalRead(pir) == LOW)&&(flag_eco == 0)) { digitalWrite (rele_no_dvig_econom, LOW); // включаем реле (жмем кнопку) Serial.println ("LOW"); // пишем в сериал client.publish(eco_topic, String("pir economy").c_str()); // публикуем в топике delay (1000); // держим нажатой секунду digitalWrite (rele_no_dvig_econom, HIGH); // выключаем реле (отпускаем кнопку) flag_eco = 1; // равняем флаг к единице (для разовой сработки каждого режима) delay (3000); } }
Sneg.
при таком варианте всегда нажата кнопка digitalWrite (rele_dvig_panika, LOW);
Jason
а flag_eco где у тебя объявляется?
Jason
и как?
Sneg.
в самом начале
Sneg.
int flag_eco = 0; // принимаем флаг экономии электроэнергии