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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

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

Сообщение Dron » 01 фев 2014, 15:55

Andrey_B писал(а):В текущий момент максимальный размер поля Action - 11 байт, но, думаю, его можно немного увеличить.
ИМХО, с введением пауз это стало насущной необходимостью
Andrey_B писал(а):Наиболее ценный ресурс МК в данной конфигурации - оперативная память ... С другой стороны, команды отправляет умное устройство, которое и само может выдерживать паузы и выдавать команды порциями.
опять же ИМХО тогда ну её нафиг. действительно, сервер легко проследит когда и что включать.
Andrey_B писал(а):Команду отмены выполнения сценария можно предусмотреть.
было бы классно...

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

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

Сообщение x13dev » 02 фев 2014, 13:34

Andrey_B писал(а): А что если во время выполнения команды поступит вторая, а потом третья? Ведь все этим команды могут работать с разными портами. Сохранять все команды в памяти невозможно - ее для этих целей просто нет. Прерывать выполнение запущенной? Это может привести к очень нехорошим результатам, например, "подвисание" звука дверного звонка.
В одном проекте использовал следующий способ:
есть очередь команд
если приходит команда, она пишется как SET <куда> <значение> перед первым встретившимся WAIT
если приходит пауза, она пишется перед WAIT позже как WAIT <текущее время + пауза>
последующая команда пишется следом.

на команду хватит 2-3 байт.

пример:
было:

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

SET 3, 1
WAIT 910
SET 3, 0
добавляем 7:1;p10;7:0
текущее время 850

стало:

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

SET 3, 1
SET 7, 1
WAIT 860
SET 7, 0
WAIT 910
SET 3, 0
Соответственно 1я команда выполняется и удаляется из очереди.

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

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

Сообщение Andrey_B » 06 фев 2014, 11:13

http://ab-log.ru/files/File/ip_manager3 ... _beta3.zip
http://ab-log.ru/files/File/ip_manager3 ... a3_hex.zip

Нельзя просто так взять и увеличить поле Action...
Так вот. Поле NetAction оптимизировано. IP-адрес записывается в энергонезависимую память отдельно и занимает 4 байта, остальная часть отдельно - 12 байт. Этот ход позволил высвободить целых 304 байта EEPROM. Строго говоря, длина URL уменьшена на 7 байт. Но фактически мало что изменилось, так как в реальности все упирается в размер буфера для парсинга GET-запроса (ведь всякие "/", ":" и прочие радости в GET-запросе занимают 3 байта... Размер буфера пришлось увеличить на 6 байт) Это все легко исправить, когда у нас будет немного больше памяти.

Поле Action увеличено до 23 байт.
Это позволяет записать в него команду типа
7:1;p50;7:0;8:1;p50;8:0
аж с двумя паузами (в примере по 5 секунд)

Да, поскольку структура данных в EEPROM меняется, если прошивать устройство через megad-cfg.php, то необходимо добавить ключ --ee (это стирание EEPROM).
Естественно, все настройки необходимо будет внести заново.

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

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

Сообщение vtec » 06 фев 2014, 14:13

Andrey_B, пропиши в megad-cfg.php тэг <?php

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

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

Сообщение Dron » 07 фев 2014, 12:01

Andrey_B писал(а):Так вот. Поле NetAction оптимизировано.
...
Поле Action увеличено до 23 байт.
Очередная благодарность!

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

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

Сообщение Sergey » 07 фев 2014, 15:04

А ключ --ee точно работает? А то у меня длительное нажатие перестало работать, думаю что дело в неочищенном еепроме. Пока откатился на Б1

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

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

Сообщение Andrey_B » 07 фев 2014, 16:57

Sergey, да, только нужно скачать последнюю версию megad-cfg с сайта.
http://ab-log.ru/files/File/megad-cfg/megad-cfg.zip

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

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

Сообщение Sergey » 07 фев 2014, 20:38

Спасибо, так все заработало!
Есть вариант перед программирование считывать конфигурацию, а перед рестартом записать....
У меня, как писал выше, сеть 172.16.... После записи с ключем --ее, прибор потерялся .....

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

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

Сообщение vtec » 08 фев 2014, 09:16

Подскажите, что делать.
Сборка состоит из arduino uno и enc. Программатор LPT порт.
Обновился на последнюю прошивку 3.14 beta. Все работало.
Решил сделать загрузчик.
Установил фьюзы как написал Андрей: sudo avrdude -v -c stk200 -p m328p -P /dev/parport0 -U lfuse:w:0x60:m -U hfuse:w:0xD8:m
Загрузил bootloader: sudo avrdude -v -c stk200 -p m328p -P /dev/parport0 -U flash:w:/tmp/megad-boot.hex
Решил попробовать обновить через сеть, а устройство не отвечает.
Ну думаю ладно попробую обновить прошивку вручную до beta2.
А фиг вам, устройство не отвечает даже через программатор.

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

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.
Решил, что может быть последовательность нарушена была.
Была у меня еще одна atmega. Теперь в ней не было прошивки только по умолчанию все от ардуино.
Прошил фьюзы, бут и все снова не могу достучаться.
Подскажите, можно что либо сделать? Или может надо полноценный программатор заказывать? Хорошо что в dip корпусе, можно будет заменить atmeg'у

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

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

Сообщение Andrey_B » 08 фев 2014, 10:26

vtec, мои рекомендации по части fuse-bits относились к референс-дизайну устройства или к готовым модулям MegaD.
Arduino Uno имеет настройку lfuse по умолчанию 'FF'. Ее не надо было трогать. Вам нужно было изменить только hfuse.

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

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

Сообщение vtec » 08 фев 2014, 16:10

А с этими atmega'ми, что нибудь сделать можно?

Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

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

Сообщение Urbas81 » 08 фев 2014, 19:55

Andrey_B писал(а):http://ab-log.ru/files/File/ip_manager3 ... _beta3.zip
http://ab-log.ru/files/File/ip_manager3 ... a3_hex.zip

Нельзя просто так взять и увеличить поле Action...
Так вот. Поле NetAction оптимизировано. IP-адрес записывается в энергонезависимую память отдельно и занимает 4 байта, остальная часть отдельно - 12 байт. Этот ход позволил высвободить целых 304 байта EEPROM. Строго говоря, длина URL уменьшена на 7 байт. Но фактически мало что изменилось, так как в реальности все упирается в размер буфера для парсинга GET-запроса (ведь всякие "/", ":" и прочие радости в GET-запросе занимают 3 байта... Размер буфера пришлось увеличить на 6 байт) Это все легко исправить, когда у нас будет немного больше памяти.

Поле Action увеличено до 23 байт.
Это позволяет записать в него команду типа
7:1;p50;7:0;8:1;p50;8:0
аж с двумя паузами (в примере по 5 секунд)

Да, поскольку структура данных в EEPROM меняется, если прошивать устройство через megad-cfg.php, то необходимо добавить ключ --ee (это стирание EEPROM).
Естественно, все настройки необходимо будет внести заново.
Залил прошивку, и в свойствах входа при прописывании netaction появляются цифры 0.0.255.255/ вместо имени скрипта

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

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

Сообщение Andrey_B » 08 фев 2014, 22:08

Urbas81, укажите пожалуйста точно. Что именно вы вносите в поле NetAction

vtec, контроллеры абсолютно исправны, просто для вашей схемы неправильно выставлено тактирование. Если я правильно понимаю вашу ситуацию, перепрограммировать фьюзы можно: в другом устройстве, переделав ваше, с помощью параллельного программатора.

Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

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

Сообщение Urbas81 » 08 фев 2014, 22:31

Andrey_B писал(а):Urbas81, укажите пожалуйста точно. Что именно вы вносите в поле NetAction

vtec, контроллеры абсолютно исправны, просто для вашей схемы неправильно выставлено тактирование. Если я правильно понимаю вашу ситуацию, перепрограммировать фьюзы можно: в другом устройстве, переделав ваше, с помощью параллельного программатора.
вносил megad.php

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

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

Сообщение Andrey_B » 08 фев 2014, 22:37

Urbas81, адрес сервера указывается в основных настройках "net conf" в соответствующих полях (отдельно ip-адрес, отдельно имя скрипта)
NetAction - поле, где вносится ПОЛНЫЙ URL вместе с IP-адресом. Например, 192.168.0.1/script.php
NetAction не предназначен для отправки сообщений на основной сервер. Подробнее читайте в статье описания, описывающей общую идеологию устройства.

Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

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

Сообщение Urbas81 » 08 фев 2014, 22:51

Andrey_B писал(а):Urbas81, адрес сервера указывается в основных настройках "net conf" в соответствующих полях (отдельно ip-адрес, отдельно имя скрипта)
NetAction - поле, где вносится ПОЛНЫЙ URL вместе с IP-адресом. Например, 192.168.0.1/script.php
NetAction не предназначен для отправки сообщений на основной сервер. Подробнее читайте в статье описания, описывающей общую идеологию устройства.
Странно, у меня 2 вхда работают так, прописан megad.php, и на сервере уже идет обработка, правда на версии 3.08b1 или это не правильно и если в основных настройках прописан megad.php то все входа через него будут обрабатываться, а в netAction прописывается просто любой скрипт? Наверное я упустил этот момент, поэтому у меня и были странные сообщения на сервере, сейчас поправлю.

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

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

Сообщение Andrey_B » 09 фев 2014, 09:00

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

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

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

Сообщение vtec » 09 фев 2014, 13:13

Andrey_B писал(а):NetAction - поле, где вносится ПОЛНЫЙ URL вместе с IP-адресом. Например, 192.168.0.1/script.php
В описании желательно прописать, что в поле NetAction указывать без http://, т.к. только методом тыка понял .

Илья Карман
Сообщения: 10
Зарегистрирован: 16 дек 2013, 19:12

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

Сообщение Илья Карман » 10 фев 2014, 11:23

Добрый День, всем.
Поправьте меня если я не правильно понимаю алгоритм работы MegaD-328, т.е. при срабатывании какого либо входа Мега отправляет сообщение на сервер об выполнении указанного, в поле Script, скрипта.
И еще вопрос такого характера. Как можно определить с какой из Мег(если не одна) пришло сообщение об срабатывании какого либо входа. Как я понял через запрос GET можно узнать параметры pt, m, at, а мне вроде как надо eip.
Заранее благодарен за ответ.

Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

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

Сообщение Urbas81 » 10 фев 2014, 11:35

Илья Карман писал(а):Добрый День, всем.
Поправьте меня если я не правильно понимаю алгоритм работы MegaD-328, т.е. при срабатывании какого либо входа Мега отправляет сообщение на сервер об выполнении указанного, в поле Script, скрипта.
И еще вопрос такого характера. Как можно определить с какой из Мег(если не одна) пришло сообщение об срабатывании какого либо входа. Как я понял через запрос GET можно узнать параметры pt, m, at, а мне вроде как надо eip.
Заранее благодарен за ответ.
Так для другой меги укажите другой скрипт, и та обрабатывайте входа.

Ответить