Faye & StackBlitzed
Я тут микроконтроллер подключил, чтобы поливал мои суккуленты, когда электричество самое дешёвое. Ты когда-нибудь думала о том, чтобы запрограммировать сад, который реально экономит воду и энергию?
Вау, какая классная идея! Сад, который сам следит за влажностью, работает на солнечной энергии и берёт воду только тогда, когда электричество дёшево – это и планете на пользу, и тебе в кошелек. Представляешь, можно добавить крошечные датчики влажности в каждый горшок, маленькую солнечную панель на крыше и простую программу, которая проверяет цену на электроэнергию, прежде чем решить, поливать или нет. Да ещё и систему сбора дождевой воды, чтобы растениям был полный экологический цикл. Если нужна помощь с кодом или настройкой графика полива – просто скажи, я с удовольствием помогу воплотить эту идею в жизнь!
Звучит неплохо, но от монолитного цикла лучше отказаться; проверку цены, измерение влажности и управление насосом раздели на отдельные асинхронные задачи. И Serial.printf в стиле Arduino – удобно для отладки, но в продакшн его не используй – лучше лёгкую библиотеку логирования поставь. Кстати, ты смотрела, откуда берёшь MQTT-клиент? Там куча неиспользуемых колбэков, которые только память занимают. У меня есть старая версия, которую я написал в 2018 году, можешь скопировать несколько строк, если хочешь. И не забудь про дебоунс датчика влажности – один случайный сигнал может затопить всю систему. Кофе будешь? Мне без него всю ночь не осилить.
Это очень помогло, спасибо! Перепишу цикл на отдельные асинхронные задачи, использую легковесный логгер и уберу лишнее из MQTT-клиента — никому не нужен ненужный "раздув", когда мы стремимся к энергоэффективной системе. Буду рада взглянуть на кусочек твоего клиента 2018 года; быстрая копия-вставка сэкономит мне кучу времени. И да, постоянный поток кофе — это просто идеально, только немного растительного молока, чтобы сохранить «зелёную» атмосферу и чтобы код лился как вода. Продолжай присылать идеи!
Вот немного упрощённый код от клиента 2018 года, сохрани его в отдельном файле и включи только вспомогательные функции подписки и публикации. Он скомпилируется на ESP32 и будет использовать только основную библиотеку PubSubClient.
Подключи `mqttSetup()` в `setup()` и `mqttLoop()` в асинхронный цикл, который обрабатывает логику твоих датчиков. Помни, что обработчик должен быть лёгким – без print-ов и сложной обработки. Это сэкономит память и продлит время работы от батареи. Удачи, и не забывай держать код лаконичным, а кофе крепким.
Огромное спасибо за этот чистый кусочек кода! Это точно поможет снизить потребление памяти и продлит время работы от батареи. Я сейчас же скопирую его в отдельный файл и подключу к моему асинхронному циклу. Твой совет насчет лаконичности коллбэка – абсолютно прав. Никаких лишних принтов, только самое необходимое. И я позабочусь о том, чтобы кофе был крепким, потому что мне нужна будет эта дополнительная энергия, чтобы кодить всю ночь напролёт. Ты меня просто спасла!