ESP8266: Автоматическая перезагрузка роутера. Бюджетный вариант.
вариант прошивки здесь.
Мы видим устройство с белым огоньком: оно трудится и потеет. Сеть мониторится через WiFi, провода там лишь для доставки электронов с размахом 3,3 вольта.
Перегружаем компьютером роутер: интернет, естественно, теряется. Как следствие, на устройстве гаснет фара, зато срабатывает реле на размыкание (типа роутер отключили от сети чтобы перезагрузить), на нем загорается светодиод - смотрите внимательно, видно его. Через некоторое время устройство заново входит в режим надзора за сетью, что означает подачу питания на роутер и возобновление проверки через установленное время.
Краткое описание логики работы, для тех, кому необходимо.
1. После включения, модуль запускает скрипт init.lua. Его задача - затормозить деятельность на 20 секунд, за которые через Esplorer на модуль можно послать команду на остановку Таймера 0. Если она послана за это время - устройство останавливается, если нет - запускается основной скрипт, в данном случае netCheck02003.lua.
2. Реле устройства работает на размыкание. То есть, после старта устройства, оно не срабатывает! Реле сработает только в том случае, если нет Интернета или WiFi - разомкнет розетку, в которую включен роутер и модем, у кого он есть.
3. При старте основного скрипта число попыток проверки устанавливается в - (минус!)14. Проверка соединения осуществляется сразу, каждый раз через 30 секунд, причем, если Интернет уже есть (то есть мы запустили устройство, а Интерент работал) счетчик проверок сразу обнуляется. В ином случае, модуль при каждой неудачной проверке увеличивает количество на единицу. Как только число неудачных проверок достигнет трех - реле получает команду на 10 секундное размыкание.
Таким образом, при общем старте, когда интернет соединения нет, размыкание произойдет ((14 + 3) х 30 секунд)/60сек = 8,5 минут. Если за это время Интренет появится - счетчик будет сброшен в 0.
4. При каждой проверке (через 30 секунд) счетчик устанавливается в единицу. Удачная проверка его сбрасывает.
5. При неудачной проверке - счетчик увеличивается, 3 проверки - перезагрузка. При перезагрузке увеличивается на единицу счетчик перезагрузок. После первой перезагрузки счетчик проверок устанавливается в -14, чтобы очередная перезагрузка прошла через 8,5 минут. Если она оказывается неудачной - счетчик проверок устанавливается в -28. То есть следующая перезагрузка произойдет через 17 минут. Если и она окажется неудачной, счетчик устанавливается в -120, что будет вызывать перезагрузку каждый час.
Любое удачное соединение с Интернетом обнуляет счетчик проверок и счетчик перезагрузок.
6. При старте основного скрипта, нога светодиода устанавливается в ноль, в этом случае диод должен загореться. Потому ка плюсом он соединен (через резистор) к шине питания, а минусом - к ноге модуля. При срабатывании реле этот диод гаснет на время срабатывания.
7. Работу модуля можно проверять не вставляя его в устройство - в UART порт он выдает некоторую информацию. "time is money" - проверка сети прошла успешно. "Restart No...(количество рестартов подряд) " - когда подается команда на реле. "Exit Restart Router!" - выключение реле. "Trying: (номер проверки), нормально - 1" - перед каждой проверкой, предыдущая была удачной. В ином случае число проверок будет другим. "No Time" - проверка прошла, удачная или неудачная. Модуль будет ожидать 30 секунд до следующей.
Источник: Тут