Страница 2 из 91

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 26 янв 2014, 13:39
AlexZ
запуск из консоли под рутом, вывод ошибок включил, светодиод на RJ-45 разъеме на запуск скрипта не реагирует, никаких сообщений при запуске скрипта нет

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 26 янв 2014, 14:00
AlexZ
Andrey_B, нашел проблему gethostbyname(gethostname()) выдает 127.0.1.1

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 26 янв 2014, 14:20
Andrey_B
AlexZ писал(а):Andrey_B, нашел проблему gethostbyname(gethostname()) выдает 127.0.1.1
Что-то я не учел, что у пользователя hostname -a может выдавать localhost ;)
Думал - можно будет простым и изящным решением получить текущий IP-адрес, но, видать, придется лезть в ifconfig/ipconfig... Или есть другой вариант? Как-то не кошерно спрашивать у пользователя его IP-адрес. ;) Если же все-таки лезть в ifconfig, то можно отправлять broadcast-пакеты на разные интерфейсы, ведь в компьютере может быть несколько сетевых плат.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 26 янв 2014, 14:41
AlexZ
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 (релизы, обсуждения, предложения)

Добавлено: 26 янв 2014, 16:45
vtec
Может, сделать типа поля, пусть человек сам укажет ip

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 27 янв 2014, 21:03
Dron
временно можно просто заменить строку

Код: Выделить всё

$local_ip = gethostbyname(gethostname());
на

Код: Выделить всё

$local_ip = '192.168.0.1';
где 192.168.0.1 - IP Вашего компа в сетке.

так же, если у Вас php версии ниже 5.4, в самое начало скрипта обязательно добавьте строки (впрочем, они никогда не помешают):

Код: Выделить всё

if(!function_exists('hex2bin')){
	function hex2bin($hex){
		return pack('H*', $hex);
	}
}

а вообще, всё прекрасно работает, очередной респект автору!

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 28 янв 2014, 13:21
Andrey_B
Разместил новый скрипт megad-cfg.php с улучшенной процедурой определения локального IP-адреса.
Пробовал скрипт под Windows XP. Не заработал. Не могу получить данные из сокета. Пока не разобрался.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 28 янв 2014, 16:52
Aquarius
А разве вот таким способом нельзя получить IP-адрес: $ip=$_SERVER['REMOTE_ADDR']

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 28 янв 2014, 18:05
Andrey_B
Aquarius, можно, но не тот и не в этой ситуации.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 12:01
Dron
Andrey_B писал(а):Разместил новый скрипт megad-cfg.php с улучшенной процедурой определения локального IP-адреса.
Пробовал скрипт под Windows XP. Не заработал. Не могу получить данные из сокета. Пока не разобрался.
в ХР есть коварная штука - брандмауэр windows.
добавьте php в исключения. мне помогло.
а в семёрке работает волшебно.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 12:24
Sergey
Dron писал(а): так же, если у Вас php версии ниже 5.4, в самое начало скрипта обязательно добавьте строки (впрочем, они никогда не помешают):

Код: Выделить всё

if(!function_exists(hex2bin)){
	function hex2bin($hex){
		return pack('H*', $hex);
	}
}

а вообще, всё прекрасно работает, очередной респект автору!
Спасибо, помогло. Так же пришлось добавить свою подсеть 172.16..... (она стандартная, Андрей добавь в скрипт)....

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 13:00
Andrey_B
Dron, брандмауэр не виноват. Что-то не то со stream sockets. Пакеты то уходят и приходят, но функции считывания из сокета их не видят. То есть вы хотите сказать, что у вас в Windows XP работало? На какой версии PHP?

Sergey, да, совсем забыл. Спасибо. Поправил.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 14:31
Sergey
В сети два устройства:
Одно обновил нормально.
При обновлении второго :

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 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 14:44
Dron
Andrey_B писал(а):Dron, брандмауэр не виноват. Что-то не то со stream sockets. Пакеты то уходят и приходят, но функции считывания из сокета их не видят. То есть вы хотите сказать, что у вас в Windows XP работало? На какой версии PHP?
да, обманул, прошу прощения. на хр не работает. прошивал из-под семёрки. почему-то был уверен, что прошивал с нового хр сервера..


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

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 14:58
Andrey_B
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. То есть в нормальной жизни (без подключения программатора) несколько устройств в таком состоянии быть в принципе не должно.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 15:00
Andrey_B
Dron писал(а):кстати, заметил, что с новой прошивкой устройства не всегда отзываются сразу на команду с сервера. могут ответить на 2й, 3й, 4й запрос... кто-то сталкивался? как победить?
Очень интересно. То есть, с 3.13 этого нет, а есть только с 3.14beta1 ?
Как отправляется команда? Устройство не выполняет ее совсем или выполняет с задержкой?

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 15:08
Dron
такое ощущение, что команды куда-то теряются. к примеру, через браузер захожу по http://192.168.1.103/sec/?pt=2
браузер долго крутит "ожидание 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 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 19:56
Andrey_B
Dron, попробуйте выключить устройство (полностью отключить питание) и включить. Проблема сохранится?
Если да, то пожалуйста, попробуйте 3.13. Это позволит хоть как-то локализовать проблему.
У себя на 3.14beta1 ничего подобного пока не наблюдаю.

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 20:41
Dron
питание отключал, не помогает.
прошивкой займусь завтра, сразу отпишусь.
проблема во всех 7ми устройствах, так что это либо прошивка, либо индивидуальные глюки локальной сети (во что слабо верится, но не исключаю.)

--- UPD
отбой воздушной тревоги.
действительно виновата сеть. подключил все устройства через самый примитивный хаб (арендовал у друга), и, о чудо.... всё заработало.
роутер как-то мешал прохождению ответов от девайсов. =-(

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Добавлено: 29 янв 2014, 22:47
Andrey_B
Dron, любопытно будет узнать - это неисправность или неправильные настройки роутера (если восстановить заводские настройки?) или есть какая-то особая причина.
Использую у себя различные коммутаторы, как управляемые, так и нет. Никогда ничего подобного не замечал. Подключать к роутерам не пробовал.