Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.05.2017, 21:46   #1
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
А для чего GPIO дергать?
Он хочет отключить/включить usb, а потом ребутнуть весь роутер.
Цитата:
Что надо сделать , чтобы его перегрузить после передергивания питания USB?
to_, а можно поинтересоваться целью данных команд? Что в итоге ожидаете получить?
Tohin вне форума   Ответить с цитированием
Старый 17.08.2017, 20:15   #2
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Tohin Посмотреть сообщение
Он хочет отключить/включить usb, а потом ребутнуть весь роутер.


to_, а можно поинтересоваться целью данных команд? Что в итоге ожидаете получить?
Не долго я радовался. Давненько не заходил к Вам. Прошу прощенья.

Задача такая - время от времени роутер становится недоступен - почему не знаю. Хотя судя по лампочкам (на роутере крутится файл с паузой 5 сек) запись идет (и флэшка живет и мигает). Поэтому в кроне каждые 10 мин вызывается файл с содержимым

PHP код:
#! /bin/sh
# Checks if the wifi conn is up.  If not, it tries to restart
# the wifi.  If that fails, then reboot.

if (! ping -c 3 ya.ru >/dev/nill 2>&1)
        
then
                
{
                echo 
> /sys/class/gpio/gpio8/value
                sleep 5
                
echo > /sys/class/gpio/gpio8/value
                sleep 5
                reboot 
&&  exit
                }
      
fi 
, который обесточивает USB со всеми его девайсами( их там до 3х , адаптер питания поменян на 3А), и в случае отсутствии пинга перегружает роутер.
Когда роутер работает нормально (доступ есть, выключаю внешнюю точку доступа) , скрипт отрабатывает правильно.
Как найти причину отвала? На роутере крутится много процессов и что влияет мне не понятно, поскольку зайти на него нельзя. Иногда без проблем работает неделю, иногда 1 день.
Уважаемый ALL, прошу помощи.
to_ вне форума   Ответить с цитированием
Старый 17.08.2017, 21:49   #3
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

А есть уверенность, что в случае зависания роутера скрипт вообще стартует?
Может стоит добавить в начало скрипта touch /path/to/usb/imworking
и проверить наличие файла после ребута.
Ну и соответственно искать, что именно происходит при зависании, записывая (в файл на флешке) выхлопы команд.

Сложный вариант: Распаять Uart и смотреть, во время зависания, что именно там происходит.
Tohin вне форума   Ответить с цитированием
Старый 17.08.2017, 22:44   #4
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Tohin Посмотреть сообщение
А есть уверенность, что в случае зависания роутера скрипт вообще стартует?
Может стоит добавить в начало скрипта touch /path/to/usb/imworking
и проверить наличие файла после ребута.
Ну и соответственно искать, что именно происходит при зависании, записывая (в файл на флешке) выхлопы команд.

Сложный вариант: Распаять Uart и смотреть, во время зависания, что именно там происходит.
вот добавил , если флэшка отвалит (файл FILE=/www/my.db, в который все время пишется перестанет изменятся в течение более 600 сек):
PHP код:
#!/bin/sh
#

# which file to check
FILE=/www/my.db
# time limit in seconds
TLIMIT=600

# main
CURRENT="$(date +%s)"
FILEMOD="$(stat ${FILE} -c %Y)"
TDIFF="$(echo ${CURRENT}-${FILEMOD} | bc)"

# comparison
if [[ ${TDIFF} -gt ${TLIMIT} ]]
  
then
{
date >> /www/log.log
echo "File ${FILE} was last modified more than ${TLIMIT} seconds ago." >> /www/log.log

  
echo > /sys/class/gpio/gpio8/value
  sleep 5
  
echo > /sys/class/gpio/gpio8/value
  sleep 5
  reboot 
&&  exit
}

  else
        echo 
'ok'
fi 
и еще через пару минут , то же по крону , если сеть отвалит дополнил:
PHP код:
#! /bin/sh
# Checks if the wifi conn is up.  If not, it tries to restart
# the wifi.  If that fails, then reboot.

if (! ping -c 3 ya.ru >/dev/nill 2>&1)

        
then
                
{
date >> /www/log.log
echo "lost connect">> /www/log.log

                
echo > /sys/class/gpio/gpio8/value
                sleep 5
                
echo > /sys/class/gpio/gpio8/value
                sleep 5
                reboot 
&&  exit
                }
        else
                echo 
'ping ok'


fi 
А это я не понял :
touch /path/to/usb/imworking Это ...Устанавливает дату последнего изменения и доступа к файлу? А какого файла после ребута? Самого скрипта? или FILE=/www/my.db?
Думаю, если флэшка отвалится, все равно ничего не запишем никуда .

Последний раз редактировалось to_; 17.08.2017 в 22:53.
to_ вне форума   Ответить с цитированием
Старый 17.08.2017, 23:01   #5
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1032
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

Цитата:
touch /path/to/usb/imworking Это ...Устанавливает дату последнего изменения и доступа к файлу? А какого файла после ребута? Самого скрипта? или FILE=/www/my.db?
Это создает файл, если он отсутствует. Или обновляет дату изменения для существующего.

Я исходил из того, что "запись идет (и флэшка живет и мигает)"

А /www случайно не на виртуальной фс? А то лог не переживет ребута.
Tohin вне форума   Ответить с цитированием
Старый 17.08.2017, 23:13   #6
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Tohin Посмотреть сообщение
Это создает файл, если он отсутствует. Или обновляет дату изменения для существующего.

Я исходил из того, что "запись идет (и флэшка живет и мигает)"

А /www случайно не на виртуальной фс? А то лог не переживет ребута.
Опять не понял. Что значит виртуальный? Имеете ввиду RAM? У меня все как описано в руководстве CyberWRT - использование флэшки в качестве системного диска. Конечно если внешняя флэшка отвалится во флэш роутера не запишится. Или я не догоняю о чем идет речь? Я не силен в Линуксах. Лог лежит /www/log.log

И опять , о каком файле идет речь в команде touch?
to_ вне форума   Ответить с цитированием
Старый 18.08.2017, 09:06   #7
solalex
Senior Member
 
Регистрация: 20.01.2015
Сообщений: 312
Вес репутации: 445
solalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud of
По умолчанию

Цитата:
Сообщение от to_ Посмотреть сообщение
использование флэшки в качестве системного диска.
своим скриптом вы отрубаете питание усб, а флешка смонтирована как extroot? естественно ничего толком работать не будет. делайте в скрипте просто ребут, без дерганья gpio
solalex вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:20. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика