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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
AlexZ
Сообщения: 6
Зарегистрирован: 04 фев 2013, 21:26

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

Сообщение AlexZ » 26 янв 2014, 13:39

запуск из консоли под рутом, вывод ошибок включил, светодиод на RJ-45 разъеме на запуск скрипта не реагирует, никаких сообщений при запуске скрипта нет

AlexZ
Сообщения: 6
Зарегистрирован: 04 фев 2013, 21:26

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

Сообщение AlexZ » 26 янв 2014, 14:00

Andrey_B, нашел проблему gethostbyname(gethostname()) выдает 127.0.1.1

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 26 янв 2014, 14:20

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

AlexZ
Сообщения: 6
Зарегистрирован: 04 фев 2013, 21:26

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

Сообщение AlexZ » 26 янв 2014, 14:41

Andrey_B, пока исправил на $local_ip = str_replace("\n","",shell_exec("ifconfig | grep -m1 'inet addr' | awk -F':' {'print $2'} | awk -F' ' {'print $1'}"));
Это если локальный интерфейс только один.

vtec
Сообщения: 459
Зарегистрирован: 19 сен 2011, 09:28

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

Сообщение vtec » 26 янв 2014, 16:45

Может, сделать типа поля, пусть человек сам укажет ip

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

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

Сообщение Dron » 27 янв 2014, 21:03

временно можно просто заменить строку

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

$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);
	}
}

а вообще, всё прекрасно работает, очередной респект автору!
Последний раз редактировалось Dron 29 янв 2014, 15:02, всего редактировалось 1 раз.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 28 янв 2014, 13:21

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

Aquarius
Сообщения: 362
Зарегистрирован: 19 дек 2011, 17:17
Откуда: Дзержинск

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

Сообщение Aquarius » 28 янв 2014, 16:52

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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 28 янв 2014, 18:05

Aquarius, можно, но не тот и не в этой ситуации.

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

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

Сообщение Dron » 29 янв 2014, 12:01

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

Sergey
Сообщения: 34
Зарегистрирован: 04 окт 2011, 03:16

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

Сообщение Sergey » 29 янв 2014, 12:24

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

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

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

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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 29 янв 2014, 13:00

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

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

Sergey
Сообщения: 34
Зарегистрирован: 04 окт 2011, 03:16

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

Сообщение Sergey » 29 янв 2014, 14:31

В сети два устройства:
Одно обновил нормально.
При обновлении второго :

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

Отключил первый от сети и процедура прошла успешно.

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

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

Сообщение Dron » 29 янв 2014, 14:44

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


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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 29 янв 2014, 14:58

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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 29 янв 2014, 15:00

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

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

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

Сообщение Dron » 29 янв 2014, 15:08

такое ощущение, что команды куда-то теряются. к примеру, через браузер захожу по 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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 29 янв 2014, 19:56

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

Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

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

Сообщение Dron » 29 янв 2014, 20:41

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

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

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 29 янв 2014, 22:47

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

Ответить