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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
rvv
Сообщения: 205
Зарегистрирован: 24 дек 2014, 16:32

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

Сообщение rvv » 22 авг 2016, 22:36

Тогда и вы, filippovsky, и alexsis_76, не поняли сути идеи.
Each Device Has a Unique 64-Bit Serial Code Stored in On-Board ROM
Именно этот уникальный адрес Андрей и планирует передавать в паре "адрес:значение".
Проблем с путаницей нет.
Андрей, я прав?

d.v.ermakov
Администратор
Сообщения: 2187
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

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

Сообщение d.v.ermakov » 22 авг 2016, 22:38

Поддерживаю вариант, названный "busy bus". Пусть сервер/программист думают, когда слать запросы и как интерпретировать ответы. А для термостата можно предусмотреть отдельный режим порта, поддерживающий только один датчик.

k_w_m
Сообщения: 98
Зарегистрирован: 19 июл 2013, 13:41

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

Сообщение k_w_m » 23 авг 2016, 00:53

Andrey_B писал(а): Как вы это себе представляете? Мы тут говорим, что жалко 2 байт RAM на датчик, а вы предлагаете тратить минимум 8-9 байт EEPROM'а на датчик? Вы же понимаете, что в этом случае нужно будет хранить не только настройку времени, но и адрес датчика?

Все еще жду дельных предложений от уважаемой общественности.
Предлагаю смешанное решение.
Запрос на конвертацию температуры отправлять не каждые 5 секунд, а каждые 30-60 секунд. Это позволит существенно снизить вероятность "попадания" на занятую шину. Но актуальность данных, считываемых прямым запросом будет ниже.
Реализовать функцию конвертации температуры по запросу сервера.

Таким образом сервер/пользователь либо сможет воспользоваться уже готовыми, но не совсем свежими данными с небольшой вероятностью попадания на занятую шину, либо забрать свежие данные за два такта.
- Отправляем запрос на конвертацию
- Ждем одну секунду
- Считываем данные
Понятно, что такая реализация на сервере абсолютно проста - не сложнее одного отдельного запроса.
На мой взгляд, правильное решение.
Я думаю, что можно даже не делать отдельного запроса на конвертацию, а запускать её периодически и после каждого запроса на температуру. Т.е. если нужна примерная температура, то получаем её сразу, а если точная, то через секунду делаем ещё один запрос.
Количество термостатов определяется не количеством датчиков, а количеством выходов и оно ограничено.
Я бы создал 4-10 термостатов в EEPROM'е и в них бы хранил адрес датчика, порт выхода, температуру термостата, гистерезис и знак

alexsis_76

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

Сообщение alexsis_76 » 23 авг 2016, 03:00

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

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

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

Сообщение Andrey_B » 23 авг 2016, 10:57

filippovsky писал(а):при подключении нового датчика в уже существующую сеть могут измениться адреса у тех датчиков, которые уже были подключены ранее и настроена их обработка на сервере.
Т.е. если у нас был датчик температуры с адресом 1...
Как правильно заметил rvv, у каждого DS18B20 есть заводской адрес, который жестко зашит в его память.
Этот заводской адрес состоит из кода семейства, 48 битового уникального адреса и контрольной суммы.
А так как каждый адрес уникален, не вижу никакого смысла придумывать какую-то еще "нумерацию". Вся адресация будет строится с использованием заводских уникальных адресов. Никакой кучи, путаницы, перестановок и прочего при этом быть не может в принципе.

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

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

Сообщение Andrey_B » 23 авг 2016, 11:10

k_w_m писал(а):
Andrey_B писал(а): Предлагаю смешанное решение.
На мой взгляд, правильное решение.
Я думаю, что можно даже не делать отдельного запроса на конвертацию, а запускать её периодически и после каждого запроса на температуру. Т.е. если нужна примерная температура, то получаем её сразу, а если точная, то через секунду делаем ещё один запрос.
Так и сделаем: признак busy в случае занятой шины, автоматические запросы со стороны контроллера раз в 30 секунд и возможность серверу при необходимости забрать свежие данные.
Тоже была мысль отправлять запрос на конвертацию после считывания температуры, но она мне не понравилась, так как не дает каких-либо преимуществ по сравнению со схемой, где отдельно передается запрос на конвертацию и считывание. У последней схемы больше гибкость и она, на мой взгляд, выглядит логичнее с точки зрения программиста.
k_w_m писал(а): Количество термостатов определяется не количеством датчиков, а количеством выходов и оно ограничено.
Я бы создал 4-10 термостатов в EEPROM'е и в них бы хранил адрес датчика, порт выхода, температуру термостата, гистерезис и знак
Это возможно, но потребует значительной переделки логики и кода. В этом случае термостат будет привязан не к порту, а к связке порт-адрес и на одном порту может быть несколько термостатов. Выглядит сложно.
Все же пока оставим "термостат" для тех портов, к которым подключен только один датчик. Конечно, есть еще вариант указать адрес датчика на конкретном порту/шине, к которому будет привязана логика термостата. То есть это позволит использовать логику термостата даже если к порту подключена шина.

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

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

Сообщение Andrey_B » 23 авг 2016, 15:55

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

В поле "Sen" теперь можно выбрать значение "1WBUS". (Поддержка подключения нескольких датчиков DS18B20 к одному порту)
1wbus-2561-1.gif
1wbus-2561-1.gif (3 КБ) 5144 просмотра
При нажатии на ссылку Device List или через запрос вида
http://192.168.0.14/sec/?pt=32&cmd=list
Можно получить в ответ примерно следующее

8aad6a070000:32.43;85a56a070000:32.43;
адрес:температура;адрес:температура;

Если шина занята конвертацией, то в ответ вернется просто "Busy"

Контроллер автоматически каждые 30 секунд отправляет в шину команду на конвертацию температуры.
Но можно отправить такой запрос и вручную, вызвав URL вида
http://192.168.0.14/sec/?pt=32&cmd=conv

Также вдвое увеличен размер буфера для srv-loop.

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

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

Сообщение Andrey_B » 23 авг 2016, 16:07

Да, у этой реализации есть как бы побочный эффект в виде потенциальной поддержки подключения DS2401 на одну шину.
Где это можно использовать. Например, таким образом можно подключать концевики дверей и окон (через DS2401) к одному порту и узнавать какие из них замкнуты и разомкнуты. Сейчас для этого требуется подключать каждый концевик к отдельному порту. Более того, можно точно также пробовать подключать к одному порту гроздь выключателей - теоретически быстродействия всей этой связки (замыкание - отправка запроса на сервер - проверка списка устройств на шине) должно хватить для обеспечения нормальной работы. Своего рода недорогой прием для экономии портов/проводов.

filippovsky
Сообщения: 75
Зарегистрирован: 30 авг 2015, 21:44

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

Сообщение filippovsky » 23 авг 2016, 22:40

Andrey_B, при прошивке произошло вот такое:
Изображение

С этим можно что-нибудь сделать, или теперь только присылать Вам на перепрошивку?

UPDATE: Вопрос снимается. С пятой попытки перепрошилось нормально

filippovsky
Сообщения: 75
Зарегистрирован: 30 авг 2015, 21:44

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

Сообщение filippovsky » 24 авг 2016, 01:44

Датчик температуры подключен к порту 28 (порт IN номер 13 на XP2, номер порта 28 взят из данных Configа Меги).
При включенном srv loop значение температуры передается в поле номер 29.
Почему так происходит?
00:40:05 TRACE [page.megad]: Got message from MegaDevice mdid=5Q7g7, all=OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON;ON;ON;ON;ON;ON;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;temp:24.37;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON;ON (at C:\_majordomo\htdocs\megad.php:31)

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

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

Сообщение Andrey_B » 24 авг 2016, 10:04

filippovsky, это происходит очевидно потому, что нумерация портов начинается с 0, а не с 1 (P0, P1, P2 и т.д.)

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

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

Сообщение nevkon » 25 авг 2016, 07:33

Андрей, я предлагаю все-таки вынести или в тему наподобие "Все о МегаДевайсе (MegaD-328)" или в первое сообщение темы всю важную информацию о МегаД-2561:
Ссылки на прошивку, скрипты.
Ссылки на документацию (или распиновку).
Например XT2 имеет подтяжку в 4.7к. К чему? К земле? К +3.3В?
И я был бы очень рад если бы вы добавили пунктик XP4. Кому оно нужно, то воспользуется, тем более в таблице он присутствует.

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

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

Сообщение Andrey_B » 25 авг 2016, 10:56

nevkon, более подробная информация о MegaD-2561 на сайте появится.
Порты, выведенные на XT2, имеют подтяжку 4,7К к +3,3В.
XP4 - это голые порты, которые в готовом изделии трудно использовать, так как к ним даже нет нормального доступа. Это вызовет массу вопросов у конечных пользователей, скажем так, обычного уровня. А таких пользователей 90%.
Кроме того, XP4 - это "резервные" порты, которые могут быть в любой момент использованы для сервисных возможностей. Например, надеюсь, что уже во второй версии контроллера один порт будет использован для функции "аппаратной" очистки EEPROM. Все это означает, что пока нет точного и устоявшегося видения того, что именно будет выведено на XP4 и как именно он будет и будет ли вообще использоваться. Включение этих портов в прошивку для большинства пользователей бесполезная трата ресурсов микроконтроллера. Зарезервированная для них память будет лежать мертвым грузом. Эти порты не планировалось вообще выводить, но это было сделано для пользователей уровня "эксперт", которые самостоятельно смогут модифицировать прошивку. Вот моя позиция по этому вопросу.

Haus
Сообщения: 227
Зарегистрирован: 28 апр 2015, 13:13

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

Сообщение Haus » 25 авг 2016, 15:58

Andrey_B писал(а):http://ab-log.ru/files/File/megad-2561/ ... a1-hex.zip

В поле "Sen" теперь можно выбрать значение "1WBUS". (Поддержка подключения нескольких датчиков DS18B20 к одному порту)
1wbus-2561-1.gif
При нажатии на ссылку Device List или через запрос вида
http://192.168.0.14/sec/?pt=32&cmd=list
Можно получить в ответ примерно следующее

8aad6a070000:32.43;85a56a070000:32.43;
адрес:температура;адрес:температура;

Если шина занята конвертацией, то в ответ вернется просто "Busy"

Контроллер автоматически каждые 30 секунд отправляет в шину команду на конвертацию температуры.
Но можно отправить такой запрос и вручную, вызвав URL вида
http://192.168.0.14/sec/?pt=32&cmd=conv

Также вдвое увеличен размер буфера для srv-loop.
Андрей два вопроса
1. Будет ли это реализовано в прошивке MegaD-328?
2. Будет ли доступен загрузчик для Atmega2561?

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

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

Сообщение Andrey_B » 25 авг 2016, 16:11

Haus, поддержки "1WBUS" в MegaD-328 не будет, так как прошивка с этой функцией не поместится в микроконтроллер atmega328. HEX загрузчика доступен будет, исходники пока не знаю. Исходники прошивки доступны будут в любом случае чуть позже.

Haus
Сообщения: 227
Зарегистрирован: 28 апр 2015, 13:13

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

Сообщение Haus » 25 авг 2016, 17:16

Andrey_B писал(а):Haus, поддержки "1WBUS" в MegaD-328 не будет, так как прошивка с этой функцией не поместится в микроконтроллер atmega328. HEX загрузчика доступен будет, исходники пока не знаю. Исходники прошивки доступны будут в любом случае чуть позже.
Спасибо за ответ, жду HEX загрузчика для Atmega-2561.

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

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

Сообщение Andrey_B » 25 авг 2016, 18:19


Dostoewskiy
Сообщения: 10
Зарегистрирован: 15 сен 2012, 17:52

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

Сообщение Dostoewskiy » 30 авг 2016, 10:59

Андрей добрый день.
Планируется ли поддержка подключения сервомашинок или иных приводов для управления системой вентиляции.
Существующая версия от ТНК урезана по количеству их подключения и прибор сам специфичен.
Спасибо.

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

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

Сообщение Andrey_B » 30 авг 2016, 11:19

Dostoewskiy, приведите для примера модели "сервомашинок" и приводов, чтобы было понятно о чем речь.

Dostoewskiy
Сообщения: 10
Зарегистрирован: 15 сен 2012, 17:52

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

Сообщение Dostoewskiy » 30 авг 2016, 12:05

Не ждал такого оперативного ответа)
Сервы самые обычные аналоговые типа SG90 Mini Servo как использовали пользователи сайта. Либо цифровые Сервоприводы TowerPro MG996R, что наверно самое лучшее. Или же готовый и самый дорогой из них привод заслонки с 3-точечным плавным регулированием DC 0...10 В.

Ответить