Photo

(no subject)

Народ, кто разбирается в библиотеках ESP8266 Arduino core? У меня вопрос есть.

Не понимаю, что вот этот вот делает тут в библиотеке WiFiUDP. При каждом обращении к .available() если в буфере нет данных о новом пакете, библиотека вставляет принудительный yielding на одну миллисекунду. Это с какого бодуна она вообще о yield думает? Это ж не ее дело, комментарий там ни о чем!

/* return number of bytes available in the current packet,
   will return zero if parsePacket hasn't been called yet */
int WiFiUDP::available() {
    int result = 0;
 
    if (_ctx) {
        result = static_cast<int>(_ctx->getSize());
    }
 
    if (!result) {
        // yielding here will not make more data "available",
        // but it will prevent the system from going into WDT reset
        optimistic_yield(1000);
    }
 
    return result;
}
Photo

ESP8266 flash

С удивлением обнаружил, что на новокупленных ESP-03 стоит уже 1 мегабайт флеша против 512 килобайт на модулях 3 года назад. Каких-либо упоминаний об этом нигде нет, кроме маркировки на самом чипе.
Photo

NTP и fail-over в случае "блэкаута"

Размышления навеяны дискуссией в телеграм-чатеге по поводу часов на ESP8266, которые являются частью чего-либо, причем относительно критичной.

Собеседник имеет подобную ситуацию - в доме, который, бывает, оставляется на какое-то время, железяки управляют освещением растений. Если не использовать внешний RTC с батарейками, быстро появляется идея завязаться на NTP, что и делается.

Но тут же всплывает ситуация "блэкаута": потеря питания (знаем мы энергосети) с последующим (или предварительным) умиранием рутера. К слову сказать, такая ситуация у меня уже была, один рутер сдох именно в момент, когда я коротнул 220В на рабочем столе с выбиванием УЗО, а рутер находился в этой же самой комнате. После такого отключения он больше не вышел из бутлоадера.

После такого блэкаута часы не могут получить время, как следствие, растения мрут. Я предлагал начинать работать с 00:00 и светить хоть как-то, но это не найс.

Так вот, у меня возникла идея, как сделать устойчивую систему и недорого. Конечно же, с локальным NTP-сервером. Но как быть с ситуацией, когда рутер сдох? Для этого нужно поднять на NTP-сервере не только клиента, но и точку доступа, можно скрытую.

Так как железяки работают на ESP-шках, мы полностью можем контролировать их поведение. Если есть вайфай, то первым делом лезем к своему серверу. Если сервера нет, лезем в интернет (или наоборот). Если не можем подключиться к вайфаю, переподключаемся к нашей скрытой сетке, забираем время и отключаемся, чтобы ее не нагружать. Таким образом, система выдерживает отказ одного устройства и всегда откуда-нибудь получает время.

И более того, такой резервный сервер можно дешево собрать даже на ESP8266, хоть в интернетах ее ругают за нестабильное поведение и скакание одной секунды. Но для растений-аквариумов и прочих инкубаторов это некритично.
Photo

Юбилей

Кто бы мог подумать, что заведенный по принципу "много слышал, попробую, что за зверь" по наводке ikaktys дневничок проживет аж целых 10 лет.

С днем рождения, дневник! :)

Photo

Нациграммарское

Когда-нибудь появится какой-то Web 42.0, в котором можно будет исправлять грамматические ошибки других, больно бьющие по глазам. На других сайтах. С рейтингом корректоров и всякое такое"

Отголоски этого уже существуют, на той же ленте-ру, например, уже много лет существует функция "выдели, нажми ctrl-enter и пошли сообщение о грамматической ошибке автору", но сколько ни посылал, ни разу не помогло. Статьи там короткоживущие.