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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

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

Сообщение Andrey_B » 12 мар 2017, 21:41

Vadim, обновите прошивку.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

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

Сообщение Vadim » 12 мар 2017, 23:00

Andrey_B писал(а):Vadim, обновите прошивку.
Андрей,
Спасибо.
Про обновление прошивки в моей ситуации было уже очевидно. :-)
Просто в описаниях обновлений подобной ситуации я не нашел, подумал что-то новое, соответственно может пригодиться для выявления бага.
Если уже исправили, то замечательно.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

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

Сообщение kod.begemot » 14 мар 2017, 21:07

Доброго времени суток!
У меня вопрос по ШИМ - в версии 2561 какая разрядность ШИМ используется? Если я правильно понял из даташитов - у 328 - максимально 10 бит (1024 значения), а у 2561 - 16 бит (65535). Вот лично мне плавности ШИМа 328 нехватает на малой скорости (заметны шажки в самом начале при 10 секундах "Smooth"), вот и думаю - может 2561 будет в этом плане лучше? Или те значения, которые мы задаем как значения шим (0-255) и есть значения? Тогда получается 8 бит? А если так, то может сделать те-же 10 бит, а в значении ШИМ использовать проценты? 0-100, а они будут транслироваться в 0-1024 (0-65535). Не так точно, но на мой взгляд для освещения этого достаточно, зато плавность может существенно возрасти.
и ещё вопрос - может можно сделать изменяемым "наклон графика" ШИМ? Не знаю, как правильно объяснить - при управлении ШИМ светодиодных лампочек (12v, обычные китайские) у меня получается сначала более-менее плавно, а потом довольно резкий подъём. Диммировал светодиодные лампочки из ИКЕЯ - с двумя нормально, а с одной - быстрый набор ~60-70%, а потом медленнее - до 100%. Визуально плавнее всего сейчас при прямом ШИМ управлении драйверов типа PT4115.
Но всё-равно хотелось бы иметь возможность влиять на форму графика, так как для разных применений - разные оптимальные варианты..
P.S. И ещё, вопрос по частоте ШИМ - какая сейчас используется? Хочу попробовать длинный (10-15 метров) провод между мегой и драйверами диодов. Чтобы эффективнее использовать входы/выходы мег, в особенности 2561.

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

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

Сообщение Alex_Jet » 15 мар 2017, 07:12

kod.begemot, "плавность" ШИМ у МК по идее линейная. А вот у приборов освещения/вентиляторов/моторов зависимость "Входное напряжение - Освещенность/Обороты" далеко не линейны! Из-за этого наблюдается такой эффект. Необходимо компенсировать эту нелинейность, но это возможно только с помощью сервера. Увеличение разрядности - не всегда оправданный шаг.
Andrey_B писал(а):Для того, чтобы в EEPROM сохранились калибровочные коэффициенты, необходимо хотя бы один раз выбрать Dev: BMP180 и нажать кнопку "Save".
Андрей, подтверждаю ваши слова :). Прошивка 4.12b6, на одной шине висят si7021, bmp180, bmp280, tsl2561, ssd1306. Выбрал bmp180 и сохранил, далее вернул ssd1306 и сохранил. Данные средствами МК отлично читаются как с bmp180, так и с si7021 - система мониторинга iH, uptime контроллера уже более 2 дней. Сегодня-завтра хочу заменить si7021 на htu21d...чтобы попробовать повесить им контроллер.

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

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

Сообщение Andrey_B » 15 мар 2017, 11:14

kod.begemot писал(а):У меня вопрос по ШИМ - в версии 2561 какая разрядность ШИМ используется? Если я правильно понял из даташитов - у 328 - максимально 10 бит (1024 значения), а у 2561 - 16 бит (65535). Вот лично мне плавности ШИМа 328 нехватает на малой скорости (заметны шажки в самом начале при 10 секундах "Smooth"), вот и думаю - может 2561 будет в этом плане лучше? Или те значения, которые мы задаем как значения шим (0-255) и есть значения? Тогда получается 8 бит? А если так, то может сделать те-же 10 бит, а в значении ШИМ использовать проценты? 0-100, а они будут транслироваться в 0-1024 (0-65535). Не так точно, но на мой взгляд для освещения этого достаточно, зато плавность может существенно возрасти.
P10, P12, P13 (XP1); P10, P12, P13 (XP2) - 16 бит
P11 (XP1) - 8 бит
0-100% - это не 10 бит. Плавность только ухудшится.
0-1023 (0-65534) - можно, но возникает вопрос совместимости с уже существующими программными компонентами.
kod.begemot писал(а): и ещё вопрос - может можно сделать изменяемым "наклон графика" ШИМ? Не знаю, как правильно объяснить - при управлении ШИМ светодиодных лампочек (12v, обычные китайские) у меня получается сначала более-менее плавно, а потом довольно резкий подъём. Диммировал светодиодные лампочки из ИКЕЯ - с двумя нормально, а с одной - быстрый набор ~60-70%, а потом медленнее - до 100%. Визуально плавнее всего сейчас при прямом ШИМ управлении драйверов типа PT4115. Но всё-равно хотелось бы иметь возможность влиять на форму графика, так как для разных применений - разные оптимальные варианты..
А как вы себе представляете установку "наклона графика" средствами встроенного Web-интерфейса контроллера?
kod.begemot писал(а):И ещё, вопрос по частоте ШИМ - какая сейчас используется?
http://ab-log.ru/smart-house/ethernet/megad-2561
Цитата: "Опция Freq. В ряде случае при управлении с помощью ШИМ-сигнала сторонним оборудованием возникает необходимость использовать более низкую или более высокую частоту ШИМ. Частоту для ШИМ-каналов можно настроить: (Norm - 3064Гц, Low - 383Гц, High - 24510Гц)"

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

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

Сообщение Andrey_B » 15 мар 2017, 11:17

Alex_Jet писал(а):Сегодня-завтра хочу заменить si7021 на htu21d...
Только прошивку используйте b8.

kod.begemot
Сообщения: 400
Зарегистрирован: 21 сен 2013, 00:38

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

Сообщение kod.begemot » 15 мар 2017, 11:32

Andrey_B писал(а):0-100% - это не 10 бит. Плавность только ухудшится.
0-1023 (0-65534) - можно, но возникает вопрос совместимости с уже существующими программными компонентами.
Так я предлагаю 0-100 значения, а Мега уже решает. Если порт 10 битный, то, к примеру, 50% = 512 на порт. ну и соответственно 25% = 256... Плавность не ухудшится, а улучшиться в таком случае, потому как мега будет менять не 0-255, и не 0-100, а 0-1023(65534) если задано увеличить 0-100%, но делать это "унутре", невидимо для пользователя. Для совместимости можно и оставить 0-255, просто тогда делить 1023(65534) не на 100 "виртуальных шагов" а на 255. ИМХО тогда будет у нас 0-100 или 0-255 это не на плавность повлияет, а на точность установки значения. Зато с использованием замедленного изменения резко увеличиться плавность, так как мы задаем 0-10 за 10 секунд, а контроллер перебирает на порту не 10 значений за 10 секунд, как сейчас, а 102 для 10 битного порта (по идее более чем достаточно будет использовать только 10 бит), что больше 10 в секунду - заметно быть не должно.
Andrey_B писал(а):А как вы себе представляете установку "наклона графика" средствами встроенного Web-интерфейса контроллера?
Как в котле с погодозависимой автоматикой настраивается не температура в контуре, а наклон (форма?) графика зависимости температуры воды от температуры "за бортом". Там просто выбор значения: 0-100 (baxi). А в инструкции примеры графиков под этими номерами. Я полагаю, там может быть какая-то формула, вроде логарифмической...
Изображение
вот и настраивать как бы коэффициент.
Логично в настройке порта, так как оборудование подключается не часто. Хотя может и командой будет полезно.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

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

Сообщение Vadim » 15 мар 2017, 14:26

Андрей, добрый день!
Andrey_B писал(а): Когда контроллер связывается с сервером, он отправляет GET-запрос (в запросе присутствует некоторая полезная информация, например, st=1, pt=0 и т.д.)
Сервер отвечает ему "командами" самого устройства. Например: "7:2".
Никакое другое управление устройством через такие ответы невозможно (не заложено в прошивку). Только команды управления выходами. Не конфигурирование, не изменение параметров, только управление выходами через стандартные команды. И это логично. Мало ли какой "мусор" решит вернуть сервер по ошибке...
При написании кода (Stream Updates with Server-Sent Events) наткнулся на такую ситуацию (понятно, что пример не совсем корректный с точки зрения подхода работы с контроллером, это скорее пример "Мало ли какой "мусор" решит вернуть сервер по ошибке"):
В прошивке 4.12b8 при генерации сервером неформатного ответа (рекция на измеенени состояния 21 порта), MegaD начинает вести себя неадекватно (как минимум, не ожидаемо).
При нажатии кнопок входа происходит незапрограммированное произвольное включение выходов, как по номеру порта, так и по сочетанию.
Подмечено, что проявляется это когда один из входов (кнопка) настроена, в режиме "С".
Иногда контроллер перестает реагировать на события входов (ощущение, что он входит в неприрывный цикл генерации событий серверу и обработки ответов от сервера).

Конфигурация:
MegaD-2561 (fw: 4.12b8) + 14-IN + 14-R
MD-2561_2.jpg
MD-2561_2.jpg (125.23 КБ) 7331 просмотр
index.php

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

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Testing MegaD</title>

</head>

<body>

<span>p0: </span><span id="p0">***</span><br>
<span>p1: </span><span id="p1">***</span><br>
<span>p21: </span><span id="p21">***</span><br>
<span>p22: </span><span id="p22">***</span><br>
<span>p23: </span><span id="p23">***</span><br>
<span>p24: </span><span id="p24">***</span><br>

<script>

if(typeof(EventSource) !== "undefined") {
    var source = new EventSource("md.php");	
         	source.addEventListener('p1', function(e) {
			document.getElementById("p1").innerHTML = e.data;
		}, false);

		source.addEventListener('p21', function(e) {
			document.getElementById("p21").innerHTML = e.data;
		}, false);

} else {
    document.getElementById("p1").innerHTML = "Error: server-sent events...";
}

</script>
</body>
</html>
md.php

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

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); 

function sendMsg($event, $msg) {
  echo "event: $event" . PHP_EOL;
  echo "data: $msg" . PHP_EOL;
  echo PHP_EOL;
  ob_flush();
  flush();
};

$st = file_get_contents('http://192.168.0.14/sec/?pt=1&cmd=get');

sendMsg("p1", $st);

if ( $_GET['pt'] == "21" )
{
sendMsg("p21", "randomdata");
};


?>

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

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

Сообщение Andrey_B » 15 мар 2017, 16:37

Vadim, у меня все описанное ассоциируется вот с чем. При проведении краш-теста автомобиля наткнулся на такую ситуацию (понятно, что пример не совсем корректный с точки зрения типичного управления автомобилем, это скорее пример "Мало ли какая "кирпичная стенка" решит образоваться на дороге"). Капот смялся, стекло треснуло, манекен, кажется, труп. Подмечено, что двигатель уходить в салон, если делать это на большой скорости.

Но, впрочем, это все шутка и давайте по порядку, ибо я мало что понял.
Какой конкретно вход вы замыкаете? P8? Обращаете ли вы внимание, что стоит флажок, а значит Act 21:2 будет выполняться при каждом событии независимо от наличия/ответа сервера?

md.php - или я ничего не понимаю или вы хотите сделать что-то очень хитрое. То, что написано у вас, работать не будет.
md.php для index.php должен висеть постоянно, не закрывая соединение.
Скрипт для обработки сообщений устройств должен быть отдельным, закрываться каждый раз и тем или иным способом (через любое межскриптовое взаимодействие, хотя бы через временный файл) передавать сообщение в md.php, который, в свою очередь, передаст данные клиенту.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

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

Сообщение Vadim » 15 мар 2017, 17:37

Andrey_B писал(а):Vadim, у меня все описанное ассоциируется вот с чем. При проведении краш-теста автомобиля наткнулся на такую ситуацию (понятно, что пример не совсем корректный с точки зрения типичного управления автомобилем, это скорее пример "Мало ли какая "кирпичная стенка" решит образоваться на дороге"). Капот смялся, стекло треснуло, манекен, кажется, труп. Подмечено, что двигатель уходить в салон, если делать это на большой скорости.
С этим я не спорю. Даже, скорее согласен, чем нет. :-)
Я обратил на это внимание, не с точки зрения написания кода (я изначально понял, что с подобным подходом генерации событий сервером есть проблема), а с точки зрения того, что возврат неформатного ответа в адрес меги приводит к ее "управлению", в отличии от ожидания, что это не прозойдет\не происходит.
Andrey_B писал(а):Какой конкретно вход вы замыкаете? P8? Обращаете ли вы внимание, что стоит флажок, а значит Act 21:2 будет выполняться при каждом событии независимо от наличия/ответа сервера?
Замечал конечно.
Только, на мой взгляд, это не повод при нажатии P8, например, включать все 4 выхода.
Более того, в таком состоянии, например при нажатии P9, могут включиться все 4 выхода (p21-24),
при следующем нажатии P9, выключиться 2 выхода
при следующем нажатии P9, инвертироваться состояния всех 4 выходов.
Описывать состояния бессмысленно, т.к. они разные.
Andrey_B писал(а):md.php - или я ничего не понимаю или вы хотите сделать что-то очень хитрое. То, что написано у вас, работать не будет.
md.php для index.php должен висеть постоянно, не закрывая соединение.
Это реализация Server-Sent Events https://www.w3schools.com/html/html5_se ... events.asp (ну или ее попытки).
Сервер (md.php) в рамках механизма Server-Sent Events (если не ошибась, по умолчанию раз в 3 секунды запускает md.php) и генерирует в данном случае именованное событие
На стороне клиента (index.php) мы делаем анализ событий и их обработку, которые генерирует сервер (md.php).
По сути это сервер сам отдает данные клиентам при изменении его состояния.
Не будет клиента, просто не будут отображаться в них данные.
С обычным опросом портов (p1) работало прекрасно.
Попытался обработать событие от Меги (тут косяк, я его сознаю :-), md.php генерирует событие для WEB клиентов, но вместе с ними и мега получает ответ на свое сообщение об изменеении статуса порта).
Понятно, что подход\код кривой, но ок мега получила в ответ типа
или (если в md.php отработал блок с температурой с p1)
echo "event: p1\n";
echo "data: temp:19.52\n\n";
или (если в md.php отработал блок по событию P21)
echo "event: p21\n";
echo "data: randomdata\n\n";

По идее, мега не должна была изменять состояния выходов при подобных ответах, тем не менее это происходит, на что я и обратил внимание.

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

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

Сообщение Andrey_B » 15 мар 2017, 17:51

Vadim писал(а):возврат неформатного ответа в адрес меги приводит к ее "управлению", в отличии от ожидания, что это не прозойдет\не происходит.
"e:p1 " - "неформатный" ответ? Вероятно, да, но как об этом узнает устройство? Ведь все этим символы вполне себе используются в сценариях...
Конечно, можно встроить в микроконтроллер продвинутый анализатор синтаксиса, как в настоящем языке программирования, но стоит ли это делать?
Если вернуться к аналогии с автомобилем. Современный автомобиль вполне может на скорости 110 км/ч блокировать попытку пользователя неформатно резко повернуть руль в сторону. Только такие штуки никто не закладывает. Вдруг юзеру очень надо?
Можно попытаться сделать какие-то простые вещи типа остановки выполнения сценария в случае обнаружения некорректного символа. Это, пожалуй, да.

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

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

Сообщение Andrey_B » 15 мар 2017, 18:25

http://ab-log.ru/files/File/megad-2561/ ... a9-hex.zip

- Выведены в интерфейс порты P14 и P29

Известно (а если кому неизвестно, то узнают), что в каждом из разъемов XP1/XP2 не 14 портов, а 15.
Так сложилось исторически. Да и в существующих исполнительных модулях 14 портов. Но фактически в разъеме, который выведен в контроллере портов на один больше.
megad-2561-p14-1.gif
megad-2561-p14-1.gif (12.75 КБ) 7299 просмотров
В текущей версии документации этот дополнительный порт обозначен как "нет". Но это неправда. Он "есть". И называется P14 для XP1 и P29 для XP2.
megad-2561-p14-2.gif
megad-2561-p14-2.gif (6.64 КБ) 7299 просмотров
Вывод в интерфейс этих портов связан с тем, что в обозримом будущем появятся модули, которые смогут его использовать.
Почему через черточку? Для того, чтобы эти порты не смущали пользователей тех исполнительных модулей, где они не используются.

alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

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

Сообщение alex946 » 15 мар 2017, 18:32

Напрашивается проверка максимальной длины, и проверка на "<" - то есть сбойный ответ в HTML формате.
Больше, вроде, ничего и не требуется. Косяки реализации каждый пусть сам ловит :)

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

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

Сообщение Vadim » 15 мар 2017, 18:49

Я просто обратил внимание, на определенные проблемы в определнной ситуации, которые не прогнозировались. ;-)
Считать это багом или особенностью, это уже отдельная тема.
Что с этим делать уже третья. Я сознательно эти вопросы не поднимал. Ну раз зашла речь....

Основных подхода три, на мой взгляд:
1. Самое простое, если другое невозможно (да даже, если возможно..):
Нужно осознать, принять ситуацию и заменить "Никакое другое управление устройством через такие ответы невозможно (не заложено в прошивку). Только команды управления выходами. Не конфигурирование, не изменение параметров, только управление выходами через стандартные команды. И это логично. Мало ли какой "мусор" решит вернуть сервер по ошибке..." на что-то типа "не пишите мусор в командах контроллеру, результат непредсказуем!".
Вести актуальный полный список команд (API) для контролера.
Т.е. отдать все проверки на сторону сервера, кто налажал - его проблемы. Главное - предупредили. :-)
При этом желательно конечно понять, что же так коробит контроллер (какая последовательность) и зафиксировать, как особенность, которую повторять не стоит.

2. Полноценный синтаксический разбор на стороне контроллера конечно сделать весьма затруднительно, это не полноценная ОС.
Применять какие-либо варианты : маски, списки допустимых портов и команд, это уже Вам виднее, что можно сделать, что нельзя, что имеет смысл, а что нет. В зависимости от возможности, желания и наличия аппаратных ресурсов.

3. Вместе с прошивками выпускать "прослойку" (библиотеку) с допустимыми и проверенными для работы с контроллером функциями, там реализовывать необходимые проверки параметров.
И рекомендовать пользователям работать через нее.
Понимаю, что этот вариант так же весьма сомнительный в текущей ситуации.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

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

Сообщение Vadim » 15 мар 2017, 18:54

Andrey_B писал(а): - Выведены в интерфейс порты P14 и P29
То-то я вчера пытался понять, что это за порты постоянно выдают "скачущие" значения ON\OFF на запрос get=all :-)
Они "скачут", а в документации их "нет".

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

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

Сообщение Alex_Jet » 15 мар 2017, 20:12

Andrey_B писал(а):Только прошивку используйте b8.
Обновился до b9. Пока потестирую с si7021. Кстати, обратил внимания что как только вместо htu21d ставлю si7021 в списке адресов появляется 0x0! C htu21d такого адреса нет. Вижу, что прописали адрес для bmp/bme280 - планируется их поддержка?

nevkon
Сообщения: 268
Зарегистрирован: 23 апр 2014, 14:48

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

Сообщение nevkon » 16 мар 2017, 10:09

Будут модули 15IN? Если да, то я первый на очереди после запуска разветвителя на 16 портов :).

fedos
Сообщения: 108
Зарегистрирован: 06 окт 2016, 15:40

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

Сообщение fedos » 16 мар 2017, 11:11

Так там уже места под 15-й клеммник и джампер нету, вроде.

captain
Сообщения: 18
Зарегистрирован: 29 дек 2013, 13:51

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

Сообщение captain » 16 мар 2017, 13:55

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

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

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

Сообщение Andrey_B » 19 мар 2017, 22:00

http://ab-log.ru/files/File/megad-2561/ ... a2-hex.zip

- Добавлена поддержка датчиков температуры/давления/(влажности) Bosch BMP280/BME280
megad-2561-bmx280.gif
megad-2561-bmx280.gif (5.87 КБ) 7075 просмотров
Команды для считывания отдельных значений (примеры):
Атмосферное давление (мм.рт.ст.)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280
Температура
http://192.168.0.14/sec/?pt=31&scl=30&i ... &i2c_par=1
Влажность
http://192.168.0.14/sec/?pt=31&scl=30&i ... &i2c_par=2
Атмосферное давление, температура, (влажность)
http://192.168.0.14/sec/?pt=31&cmd=get

Ввиду необходимости хранения калибровочных коэффициентов, на одной шине не должно висеть одновременно BMP180 и BMx280 не смотря на то, что у них разные адреса.

Ответить