Прошивка MegaD-328 (релизы, обсуждения, предложения)
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
запуск из консоли под рутом, вывод ошибок включил, светодиод на RJ-45 разъеме на запуск скрипта не реагирует, никаких сообщений при запуске скрипта нет
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Andrey_B, нашел проблему gethostbyname(gethostname()) выдает 127.0.1.1
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Что-то я не учел, что у пользователя hostname -a может выдавать localhostAlexZ писал(а):Andrey_B, нашел проблему gethostbyname(gethostname()) выдает 127.0.1.1
Думал - можно будет простым и изящным решением получить текущий IP-адрес, но, видать, придется лезть в ifconfig/ipconfig... Или есть другой вариант? Как-то не кошерно спрашивать у пользователя его IP-адрес. Если же все-таки лезть в ifconfig, то можно отправлять broadcast-пакеты на разные интерфейсы, ведь в компьютере может быть несколько сетевых плат.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Andrey_B, пока исправил на $local_ip = str_replace("\n","",shell_exec("ifconfig | grep -m1 'inet addr' | awk -F':' {'print $2'} | awk -F' ' {'print $1'}"));
Это если локальный интерфейс только один.
Это если локальный интерфейс только один.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Может, сделать типа поля, пусть человек сам укажет ip
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
временно можно просто заменить строку
на
где 192.168.0.1 - IP Вашего компа в сетке.
так же, если у Вас php версии ниже 5.4, в самое начало скрипта обязательно добавьте строки (впрочем, они никогда не помешают):
а вообще, всё прекрасно работает, очередной респект автору!
Код: Выделить всё
$local_ip = gethostbyname(gethostname());
Код: Выделить всё
$local_ip = '192.168.0.1';
так же, если у Вас php версии ниже 5.4, в самое начало скрипта обязательно добавьте строки (впрочем, они никогда не помешают):
Код: Выделить всё
if(!function_exists('hex2bin')){
function hex2bin($hex){
return pack('H*', $hex);
}
}
Последний раз редактировалось Dron 29 янв 2014, 15:02, всего редактировалось 1 раз.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Разместил новый скрипт megad-cfg.php с улучшенной процедурой определения локального IP-адреса.
Пробовал скрипт под Windows XP. Не заработал. Не могу получить данные из сокета. Пока не разобрался.
Пробовал скрипт под Windows XP. Не заработал. Не могу получить данные из сокета. Пока не разобрался.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
А разве вот таким способом нельзя получить IP-адрес: $ip=$_SERVER['REMOTE_ADDR']
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Aquarius, можно, но не тот и не в этой ситуации.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
в ХР есть коварная штука - брандмауэр windows.Andrey_B писал(а):Разместил новый скрипт megad-cfg.php с улучшенной процедурой определения локального IP-адреса.
Пробовал скрипт под Windows XP. Не заработал. Не могу получить данные из сокета. Пока не разобрался.
добавьте php в исключения. мне помогло.
а в семёрке работает волшебно.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Спасибо, помогло. Так же пришлось добавить свою подсеть 172.16..... (она стандартная, Андрей добавь в скрипт)....Dron писал(а): так же, если у Вас php версии ниже 5.4, в самое начало скрипта обязательно добавьте строки (впрочем, они никогда не помешают):а вообще, всё прекрасно работает, очередной респект автору!Код: Выделить всё
if(!function_exists(hex2bin)){ function hex2bin($hex){ return pack('H*', $hex); } }
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Dron, брандмауэр не виноват. Что-то не то со stream sockets. Пакеты то уходят и приходят, но функции считывания из сокета их не видят. То есть вы хотите сказать, что у вас в Windows XP работало? На какой версии PHP?
Sergey, да, совсем забыл. Спасибо. Поправил.
Sergey, да, совсем забыл. Спасибо. Поправил.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
В сети два устройства:
Одно обновил нормально.
При обновлении второго :
root@server:/var/www# php megad-cfg.php --fw megad-328.hex -f
PHP Notice: Use of undefined constant hex2bin - assumed 'hex2bin' in /var/www/megad-cfg.php on line 8
PHP Notice: Undefined index: p in /var/www/megad-cfg.php on line 179
Connecting... OK
Erasing firmware... FAULT
Restarting device... OK
Отключил первый от сети и процедура прошла успешно.
Одно обновил нормально.
При обновлении второго :
root@server:/var/www# php megad-cfg.php --fw megad-328.hex -f
PHP Notice: Use of undefined constant hex2bin - assumed 'hex2bin' in /var/www/megad-cfg.php on line 8
PHP Notice: Undefined index: p in /var/www/megad-cfg.php on line 179
Connecting... OK
Erasing firmware... FAULT
Restarting device... OK
Отключил первый от сети и процедура прошла успешно.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
да, обманул, прошу прощения. на хр не работает. прошивал из-под семёрки. почему-то был уверен, что прошивал с нового хр сервера..Andrey_B писал(а):Dron, брандмауэр не виноват. Что-то не то со stream sockets. Пакеты то уходят и приходят, но функции считывания из сокета их не видят. То есть вы хотите сказать, что у вас в Windows XP работало? На какой версии PHP?
--- UPD
кстати, заметил, что с новой прошивкой устройства не всегда отзываются сразу на команду с сервера. могут ответить на 2й, 3й, 4й запрос... кто-то сталкивался? как победить?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Sergey, все правильно.
Смотрите, логика предполагает, что в сети не должно быть два совершенно чистых и незапрограммированных устройства.
Команда
megad-cfg.php --fw megad-328.hex -f
прошивает только "чистое" устройство. Так как вся процедура построена на бродкаст-пакетах, то есть у вас будет одновременно работать 2 таких устройства, но на бродкасты начнут отвечать оба.
Но как только устройство прошито, тогда перепрошивать его нужно другой командой
php megad-cfg.php --ip 192.168.0.14 --fw megad-328.hex -p sec
То есть мы ЯВНО указываем IP-устройства и его пароль. Прошивка только нужного нам устройства передает управлению загрузчику, поэтому важно, чтобы в сети в этот момент не было других "чистых" устройств.
"Чистое" устройство - это то, в который не загружена никакая программа, а весь флеш за исключением загрузчика заполнен FF. То есть в нормальной жизни (без подключения программатора) несколько устройств в таком состоянии быть в принципе не должно.
Смотрите, логика предполагает, что в сети не должно быть два совершенно чистых и незапрограммированных устройства.
Команда
megad-cfg.php --fw megad-328.hex -f
прошивает только "чистое" устройство. Так как вся процедура построена на бродкаст-пакетах, то есть у вас будет одновременно работать 2 таких устройства, но на бродкасты начнут отвечать оба.
Но как только устройство прошито, тогда перепрошивать его нужно другой командой
php megad-cfg.php --ip 192.168.0.14 --fw megad-328.hex -p sec
То есть мы ЯВНО указываем IP-устройства и его пароль. Прошивка только нужного нам устройства передает управлению загрузчику, поэтому важно, чтобы в сети в этот момент не было других "чистых" устройств.
"Чистое" устройство - это то, в который не загружена никакая программа, а весь флеш за исключением загрузчика заполнен FF. То есть в нормальной жизни (без подключения программатора) несколько устройств в таком состоянии быть в принципе не должно.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Очень интересно. То есть, с 3.13 этого нет, а есть только с 3.14beta1 ?Dron писал(а):кстати, заметил, что с новой прошивкой устройства не всегда отзываются сразу на команду с сервера. могут ответить на 2й, 3й, 4й запрос... кто-то сталкивался? как победить?
Как отправляется команда? Устройство не выполняет ее совсем или выполняет с задержкой?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
такое ощущение, что команды куда-то теряются. к примеру, через браузер захожу по http://192.168.1.103/sec/?pt=2
браузер долго крутит "ожидание 192.168.1.103", дождаться окончания "незагрузки" не смог).
если ткнуть F5, то, как вариант, моментально открывается страничка настройки P2, как 2й вариант, опять "висит"
ранее такого не замечал.
раньше замечал, что при 1м обращении к девайсу тупит секунды 2, потом летает, списывал на роутер
--- UPD
поэксперементировал. команды выполняет сразу, в любом случае. т.е. теряется именно "ответ" веб-интерфейса
--- UPD 2
по команде ?cmd=7:2
выдаёт главную страницу вэб-интерфейса, сама команда исполняется. тоже периодически теряется ответ.
--- UPD 3
не уверен, что была именно 3.13. не обновлялся с месяц
если нужно проверить что-то ещё, только намекните, что именно...
--- UPD 4
?pt=1&cmd=get
всегда отрабатывается корректно, ответ возвращается
--- UPD 5
в общем, судя по экспериментам, программа девайса через раз глючит при отдаче html
браузер долго крутит "ожидание 192.168.1.103", дождаться окончания "незагрузки" не смог).
если ткнуть F5, то, как вариант, моментально открывается страничка настройки P2, как 2й вариант, опять "висит"
ранее такого не замечал.
раньше замечал, что при 1м обращении к девайсу тупит секунды 2, потом летает, списывал на роутер
--- UPD
поэксперементировал. команды выполняет сразу, в любом случае. т.е. теряется именно "ответ" веб-интерфейса
--- UPD 2
по команде ?cmd=7:2
выдаёт главную страницу вэб-интерфейса,
Код: Выделить всё
MegaD-328 by ab-log.ru (fw: 3.14b1)
Netconfig
-- Ports --
P0 - OUT
...
P13 - OUT
A6 - ADC
A7 - ADC
--- UPD 3
не уверен, что была именно 3.13. не обновлялся с месяц
если нужно проверить что-то ещё, только намекните, что именно...
--- UPD 4
?pt=1&cmd=get
всегда отрабатывается корректно, ответ возвращается
--- UPD 5
в общем, судя по экспериментам, программа девайса через раз глючит при отдаче html
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Dron, попробуйте выключить устройство (полностью отключить питание) и включить. Проблема сохранится?
Если да, то пожалуйста, попробуйте 3.13. Это позволит хоть как-то локализовать проблему.
У себя на 3.14beta1 ничего подобного пока не наблюдаю.
Если да, то пожалуйста, попробуйте 3.13. Это позволит хоть как-то локализовать проблему.
У себя на 3.14beta1 ничего подобного пока не наблюдаю.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
питание отключал, не помогает.
прошивкой займусь завтра, сразу отпишусь.
проблема во всех 7ми устройствах, так что это либо прошивка, либо индивидуальные глюки локальной сети (во что слабо верится, но не исключаю.)
--- UPD
отбой воздушной тревоги.
действительно виновата сеть. подключил все устройства через самый примитивный хаб (арендовал у друга), и, о чудо.... всё заработало.
роутер как-то мешал прохождению ответов от девайсов. =-(
прошивкой займусь завтра, сразу отпишусь.
проблема во всех 7ми устройствах, так что это либо прошивка, либо индивидуальные глюки локальной сети (во что слабо верится, но не исключаю.)
--- UPD
отбой воздушной тревоги.
действительно виновата сеть. подключил все устройства через самый примитивный хаб (арендовал у друга), и, о чудо.... всё заработало.
роутер как-то мешал прохождению ответов от девайсов. =-(
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Dron, любопытно будет узнать - это неисправность или неправильные настройки роутера (если восстановить заводские настройки?) или есть какая-то особая причина.
Использую у себя различные коммутаторы, как управляемые, так и нет. Никогда ничего подобного не замечал. Подключать к роутерам не пробовал.
Использую у себя различные коммутаторы, как управляемые, так и нет. Никогда ничего подобного не замечал. Подключать к роутерам не пробовал.