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

Jan 16, 2019 14:52

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

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

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

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

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

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

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

Очумелые ручки, ntp, esp8266, smart home

Previous post Next post
Up