Протокол для Умного Дома

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Протокол для Умного Дома

Сообщение NStorm »

Я себе проложил витух. Под комп, под телевизоры... нах не нужно ) Всё по WiFi. Недавно перешел на 802.1ax (AKA WiFi 6). Роутер TP-Link Archer AX50 AX3000.
Реклама
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

Я себе проложил витух. Под комп, под телевизоры... WiFi нах не нужно ) Всё по Ethernet стабильно.
Только всё по плинтусам... Надо переделать... Убрать в стены))
:tea:
А ещё поставлю себе сервер в кладовке... и совсем всё будет хорошо))
1.jpg
(56.79 КБ) 112 скачиваний
Неее... не такой большой)) :)))
Думаю шкафчика будет достаточно.
шкафчик.jpg
(100.23 КБ) 104 скачивания
:tea:
WiFi хорошо, но слишком дофига он жрёт электричества))

Самодельный протокол работает нормально. Без ошибок. Уже передаю по витухе 10 метров. )) Потом проверю на большие расстояния.
Короче... надо придумать логику работы AVR (с ультранизким потреблением :)))) и пора уже всё тестить))
0_мастер_20_слейв_2.jpg
(58.82 КБ) 101 скачивание
Думаем)) :tea:
Реклама
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

roman.com,
1. Подумайте в сторону "централизации".
Небольшой щит на несколько помещений. Там одна АВР, на нее приходят линии от 8 выключателей, уходят линии на 8 симисторов/реле.
Там же - один мелкий БП на 5 вольт для АВР. Плюс диодная или транзисторная развязка питания от этого БП или от альтернативной линии питания.
Базовая программа в МК управляет выходными линиями (реле) сама, по сигналам от входных линий (выключателей). Дополнительно - управление реле по командам от мастера.
В результате, при отсутствии мастера у вас не нарушается управление освещением. Ибо есть свое локальное питалово и четкая логика управления выходами по входам, если не вмешивается мастер.

2. Из опыта моего мелкого умного дома - предпочтительней мультимастер. Когда нет одного ведущего устройства, которое раздает всем команды. И без него весь умный дом тупеет.
Каждое устройство отправляет свое состояние при любых изменениях в общую сеть. Плюс каждую минуту повторяет свое состояние. Ну и слушает сеть на предмет интересных ему сообщений. Условно - ночью на выходе из спальни сработал датчик движения. Он квакнул об этом. Его услышали устройства , отвечающие за свет по дороге в сортир. Но при этом выключатель света из спальни всем сообщил, что он включен или выключен. И блоки управления светом по дороге в сортир приняли решение -полный свет включать или слабый.
При этом все устройства работают автономно, но "прислушиваются ко мнению соседа".

3. Ппредусмотрите протокол обновления прошивки и бутлоадер в своих АВР. Иначе задолбаетесь бегать обновлять косяки.
Я сначала плюнул на бут, через некоторое время понял, что я не идальный программист и сделал автономный прошивальщик, на который сливал прошивку с ПК и ходил прошивать устройства.
После N-ного раза балансирования на стремянке для обновления прошивки у изделия под потолком - прошил бут и не парюсь.

4. И да, по поводу размера пакета. При правильном подходе можно иметь переменную длину пакетв, вплоть до 64 байт. У меня от одного из устройств пакет состояния - 8 байт данных. Так что лучше или сразу забиться на большой пакет, или в какой то момент прийти к тому , что нужно 2 пакета данных, в один не вмещаетесь.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

GoldenAndy Подумайте...
Да вот сидим и думаем)) как это всё будет работать... :tea:
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

roman.com, ну просто у меня уже сетка работает. И концепция пришла к децентрализованному управлению с повторяющимися пакетами, без подтверждений приема.
В особо критичных случаях необходимости подтверждения - поскольку каждое устройство после получения команды и выполнения каких-либо действий отчитывается в сеть пакетом состояния - можно отдельно обрабатывать пакет состояния на предмет "услышали нас?"
И я тоже раньше думал, что вот будет ремонт - протяну в каждый выключатель по витухе, поставлю там платы. Даже заказал 5 платок на jlcpcb.
Но вопрос питания этой хрени остается. Если городить свой БП - то нужна фаза и ноль в каждом подрозетнике. И иметь число мелких импульсников по числу выключателей - стрёмно.
Так что прихожу постепенно к концепции - от выключателя честные 0,75-1.5мм2 идут в щит, от щита провода к лампочкам. и так от группы выключателей и помещений. Плюс есть кабеля на 3-4-5-6 жил, оторые можно расключать на группы выключателей. А в щите уже - черновой вариант - коммутация выключателем 230 вольт, потом, когда будет блок управления - выключатели в блок, а блок коммутирует 230.
И там же - один небольшой БП 12 вольт + 12 вольт дежурки от аккума.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Реклама
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

Подожди... не так быстро)) завалил меня информацией)) :)))
GoldenAndy писал(а):ну просто у меня уже сетка работает.
На чём у тебя всё работает ? Схемку кинь.
GoldenAndy писал(а):концепция пришла к децентрализованному управлению с повторяющимися пакетами, без подтверждений приема.
Лучше (надёжней) с подтверждением пактов (ACK).
GoldenAndy писал(а):каждое устройство после получения команды и выполнения каких-либо действий отчитывается в сеть пакетом состояния
Это уже есть в приложении.
Приложение отправляет пакет с командами и ждёт подтверждение выполнения команды (ACK).
Можно добавит в приложение повтор пакетов - если подтверждение (ACK) не пришло, то приложение отправляет повторно пакет с командами.
Это всё не проблема.
GoldenAndy писал(а):раньше думал, что вот будет ремонт - протяну в каждый выключатель по витухе, поставлю там платы.
Уже сделал ? Или передумал ?))
GoldenAndy писал(а):от выключателя честные 0,75-1.5мм2 идут в щит, от щита провода к лампочкам
От каждой лампочки протянуть в щит полтора квадрата - это идеальный вариант.
Но это уже будет капитальный ремонт в доме))
Я пока не готов делать капитальный ремонт)) :)))
Пока максимум могу протянуть витуху в каждый выключатель (когда буду переклеивать обои).

Давайте разберём всё спокойно не спеша и по порядку. Ремонт пока только в планах.. А пока займёмся протоколом.

1. допустим протянули витуху в каждый выключатель и розетку. Поставили МК в каждый выключатель и розетку.
Как будем подключать витуху ? У витухи 8 жил.

Думаю так:
-жёлтый и зелёный будет Ethernet с PoE
-синий для связи МК
-коричневый питание МК
витуха.jpg
(58.16 КБ) 94 скачивания
Хочу ещё в каждую розетку по Ethernet (для телевизора и компьютера).
раздельно.jpg
(120.15 КБ) 90 скачиваний
PoE ещё будет как дополнительное питание потребителей с большим током потребления (краны и задвижки всякие).

И так...
Количество выводов МК ограничено.
Количество жил витухи ограничено.
Поэтому для связи МК выделим два вывода. Думаю достаточно.

Собственно синий изначально предназначался для телефона. Потому такая схема у RJ-45.
распиновка.jpg
(22.34 КБ) 94 скачивания
У нас "телефонный" протокол. Поэтому всё логично))

Если замечаний нет, то будем считать схему подключения утверждённой))

2. USART или самодельный протокол ? Для USART нужен мультиплексор... Нафиг надо)) Проще сделать переключение выводов МК программно. Тогда мультиплексор не нужен))
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4042785#p4042785"]roman.com,
1. Подумайте в сторону "централизации".
Небольшой щит на несколько помещений. Там одна АВР, на нее приходят линии от 8 выключателей, уходят линии на 8 симисторов/реле.
Там же - один мелкий БП на 5 вольт для АВР. Плюс диодная или транзисторная развязка питания от этого БП или от альтернативной линии питания.
Базовая программа в МК управляет выходными линиями (реле) сама, по сигналам от входных линий (выключателей). Дополнительно - управление реле по командам от мастера.
В результате, при отсутствии мастера у вас не нарушается управление освещением. Ибо есть свое локальное питалово и четкая логика управления выходами по входам, если не вмешивается мастер.[/uquote]
Буду делать ещё лучше. Выключатели можно будет переключать как вручную так и удалённо. Типа проходного выключателя.
-При переключении вручную выключатель просто будет передавать на сервер статус выключателя.
-При переключении удалённо выключатель будет включать/выключать лампочку и передавать подтверждение выполнения команды.
Базовая программа в МК не будет управляет выходными линиями (реле) сама, по сигналам от входных линий (выключателей).
Поэтому даже если вся сеть ляжет (и все МК сдохнут) выключатели будут работать дальше в ручном режиме.
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4042785#p4042785"]2. Из опыта моего мелкого умного дома - предпочтительней мультимастер. Когда нет одного ведущего устройства, которое раздает всем команды. И без него весь умный дом тупеет.
Каждое устройство отправляет свое состояние при любых изменениях в общую сеть. Плюс каждую минуту повторяет свое состояние. Ну и слушает сеть на предмет интересных ему сообщений. Условно - ночью на выходе из спальни сработал датчик движения. Он квакнул об этом. Его услышали устройства , отвечающие за свет по дороге в сортир. Но при этом выключатель света из спальни всем сообщил, что он включен или выключен. И блоки управления светом по дороге в сортир приняли решение -полный свет включать или слабый.[/uquote]
Когда нет одного ведущего устройства, которое раздает всем команды ? А как все устройства общаются между собой ? Видимо резе главное устройство ? У нас же топология "звезда".
Управление всем через главное устройство или все устройства общаются между собой напрямую - это уже мелкие подробности))
тут можно делать как угодно. Согласно программе и сценариям...
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4042785#p4042785"]roman.com,
3. Ппредусмотрите протокол обновления прошивки и бутлоадер в своих АВР. Иначе задолбаетесь бегать обновлять косяки.
Я сначала плюнул на бут, через некоторое время понял, что я не идальный программист и сделал автономный прошивальщик, на который сливал прошивку с ПК и ходил прошивать устройства.
После N-ного раза балансирования на стремянке для обновления прошивки у изделия под потолком - прошил бут и не парюсь.[/uquote]
Это я вообще без понятия что это такое.)) Никогда не работал с бутлоадером...
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4042785#p4042785"]roman.com,
4. И да, по поводу размера пакета. При правильном подходе можно иметь переменную длину пакетв, вплоть до 64 байт. У меня от одного из устройств пакет состояния - 8 байт данных. Так что лучше или сразу забиться на большой пакет, или в какой то момент прийти к тому , что нужно 2 пакета данных, в один не вмещаетесь.[/uquote]
Переменная длина пакетов - неудобно принимать, передавать, шифровать и т.д.
Сейчас фиксированный размер всех пакетов - 32 байт - этого достаточно для всего умного дома. ))

Откуда взялось число 32 ? Да просто изначально всё делалось под радиомодуль nrf24. А он максимум за один раз может передавать пакеты по 32 байт. без фрагментации пакетов. Отсюда все пакеты по 32 байта.

Почему крайне не рекомендуется передавать пакеты по 7 байт (как предлагали выше) ? Да потому что у нас симметричное блочное шифрование пакетов. А при таком шифровании нужно чтобы пакеты были кратны блокам шифрования 8/16/24/32...
Можно конечно при шифровании дополнять пакеты нулями (0000000000) для выравнивания блоков при шифровании... Но это будет не логично))

И так...
У нас есть один мастер и куча слейвов.
Если слейвов больше чем выводом МК мастер, то можно добавить в схему второй МК в качестве коммутатора пакетов.
Все МК общаются по двух проводной линии данных - TX и RX:
0_мастер_20_слейв.jpg
(77.33 КБ) 92 скачивания
Теперь надо думать про синхронизацию...
:tea:
Реклама
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

roman.com писал(а):На чём у тебя всё работает ? Схемку кинь.
Вроде как брудершафта я с вами не пил...

Самопальный протокол по идеологии 1-Wire авторства Cluster'а с некоторыми изменениями.
Таймслот 128мкс, старт -10Т, лог.1 -3Т, лог.0 - 1Т.
Пакет - 1 байт адрес источника, 1 байт адрес приемника или FF-бродкаст, 1 байт команды, 1 байт - число байт данных, данные, 1 байт контрольной суммы.
Подключено сейчас всё телефонной витухой (2 пары). Плюс отдельно к мощным потребителям 12 вольт разведено полутора квадратами. У меня на случай отключения э/энергии везде есть аварийный свет в виде отрезков светодиодной ленты и старый аккум от авто.
Схемка приемопередатчика:
СпойлерИзображение
и да, вообще не проблема посчитать КС по переменной длине пакета. Я не понимаю, что вызывает такие трудности в переменной длине пакета. Длина же есть. Ну да ваше право.
roman.com писал(а):Лучше (надёжней) с подтверждением пактов (ACK).
Ну если вы построите такую хилую сетку, у которой в пределах квартиры будут теряться пакеты - то делайте подтверждение. Меня устраивает и так, как есть - пакет состояния при изменениях, кому надо - те слушают. Из зависимых устройств у меня - отключение бойлера (2 кВ) при наличии других мощных потребителей в сети (чайник, духовка, стиралка, посудомойка), что бы не превысить выделенную мощность по входу. Отдельное устройство следит за трансформаторами тока, при появлении нагрузки рассказывает в сеть, что появилась или пропала нагрузка. Управлятор бойлера следит за данными о потребителях и командует мощным реле. Плюс по времени включает/отключает бойлер (ночью дешевле).
Ну и сценарии управления дневным/ночным светом (захардкореные в прошивках).
roman.com писал(а):Можно добавит в приложение повтор пакетов - если подтверждение (ACK) не пришло, то приложение отправляет повторно пакет с командами.
См. выше. если вы сетку нормально сделаете - пропадания пакетов не должно быть. А то вдруг вы отключите одно из изделий, а кто то в него будет долбиться до посинения, не дожидаясь ответа, и сетку положит.

Я пришел к концепции не командной сети, а событийной. Произошло событие - ответственный блок сообщил всем. Кому надо - прореагировал. Т.е. минимум директного управления, только там, где не обойтись.
Если кому то надо состояние конкретного устройства для принятия решения - тут можно запросить. Если за секунду ответ не пришел - то или еще пару раз спросить, ну или работать по дефолтному сценарию.

Кстати, о сценариях. Я хочу в новой сети хотя бы в управлении светом предусмотреть загружаемые удаленно в ЕЕПРОМ сценарии. Т.е. каждый блок управления светом, кроме типовых сценариев директного включения-выключения света, отключения света по уходу всех из дому (там еще и половина розеток у меня гасится), еще были и индивидуальные сценарии, завязанные на датчики движения и состояние соседних каналов света.
Я уже настолько привык, что когда я ночью топаю в сортир, у меня по дороге включается дежурный свет. а если зарулю на кухню - то еще и там будет дежурка на минутку.
roman.com писал(а):Уже сделал ? Или передумал ?))
Ремонт еще не делал. Дом старый деревянный и ремонт тут - вынести всю штукатурку и дранку со стен до досок, зашить гипсом с минватой. Причем это придется сразу во всей квартире делать. Это вагон денех, которые я еще не насобирал. Еще и жить где то надо будет. Вон у нас в соседней квартире ремонт третий месяц длится. Засрали всё. Но в каждом выключателе я ставить не буду блок. Будут два или три центральных.
roman.com писал(а):Когда нет одного ведущего устройства, которое раздает всем команды ? А как все устройства общаются между собой ? Видимо резе главное устройство ? У нас же топология "звезда".
Управление всем через главное устройство или все устройства общаются между собой напрямую - это уже мелкие подробности))
Децентрализованная схема - все устройства на одной шине. Коллизии решаются на программном уровне. Если вдруг линия занята - передача откладывается до окончания пакета данных + некий промежуток времени в мкс - численно равен адресу устройства.
roman.com писал(а):Теперь надо думать про синхронизацию...
Синхронизацию чего с чем?

И да, будете делать сетку - сразу продумайте, какой физический протокол передачи данных у вас будет. ибо тот же UART +/-2% частоты - и гудбай. Т.е. каждое изделие придется кварцевать.
(Я тут как то раз криво проинициализировал СТМку, не 32 МГц тактовой включил, а 24. И обнаружил это по неправильной работе функционала устройства. При этом по сети устройство успешно отправляло и принимало данные, имея 25%-перекос в тактовой частоте)
roman.com писал(а):Никогда не работал с бутлоадером...
Это на самом деле удобная вещь. Попробуйте с этим разобраться.
поверьте, реально очень неудобно обновлять прошивку в устройстве, которое хрен знает где находится. А обновлять прошивку придется, ибо идеальных программистов не существует. А хотелки приходят во время еды. Ну или если нужно поменять прибитый в прошивке гвоздями сценарий.

П.С. Если интересно - вот лог сетки за пару минут.
Спойлер

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

05_06_2021   19:28:12 :    23  FF  01  01    00  
05_06_2021   19:28:17 :    22  FF  01  01    00  
05_06_2021   19:28:20 :    21  FF  01  07    00  00  00  00  00  00  FF  
05_06_2021   19:28:22 :    23  FF  01  01    00  
05_06_2021   19:28:27 :    22  FF  01  01    00  
05_06_2021   19:28:28 :    29  14  02  00    
05_06_2021   19:28:28 :    14  29  01  01    0D  
05_06_2021   19:28:29 :    15  FF  01  03    01  70  01  
05_06_2021   19:28:32 :    23  FF  01  01    00  
05_06_2021   19:28:37 :    22  FF  01  01    00  
05_06_2021   19:28:38 :    0F  FF  71  00    
05_06_2021   19:28:38 :    10  FF  01  01    11  
05_06_2021   19:28:40 :    17  21  81  03    00  29  00  
05_06_2021   19:28:42 :    23  FF  01  01    00  
05_06_2021   19:28:42 :    1A  FF  01  01    01  
05_06_2021   19:28:44 :    26  14  02  00    
05_06_2021   19:28:44 :    14  26  01  01    0D  
05_06_2021   19:28:44 :    21  FF  01  07    00  00  00  00  00  00  FF  
05_06_2021   19:28:45 :    15  14  02  00    
05_06_2021   19:28:45 :    14  15  01  01    0D  
05_06_2021   19:28:47 :    22  FF  01  01    00  
05_06_2021   19:28:47 :    28  14  02  00    
05_06_2021   19:28:47 :    14  28  01  01    0D  
05_06_2021   19:28:51 :    23  FF  01  01    00  
05_06_2021   19:28:54 :    01  FF  10  07    00  29  19  06  05  06  21  
05_06_2021   19:28:55 :    29  0F  02  00    
05_06_2021   19:28:55 :    0F  29  01  07    42  02  00  05  05  BC  00  
05_06_2021   19:28:56 :    17  14  02  00    
05_06_2021   19:28:56 :    14  17  01  01    0D  
05_06_2021   19:28:57 :    22  FF  01  01    00  
05_06_2021   19:29:01 :    23  FF  01  01    00  
05_06_2021   19:29:06 :    22  FF  01  01    00  
05_06_2021   19:29:08 :    21  FF  01  07    00  00  00  00  00  00  FF  
05_06_2021   19:29:11 :    23  FF  01  01    00  
05_06_2021   19:29:16 :    22  FF  01  01    00  
05_06_2021   19:29:16 :    29  14  02  00    
05_06_2021   19:29:16 :    14  29  01  01    0D  
05_06_2021   19:29:16 :    17  21  81  03    29  00  52  
05_06_2021   19:29:21 :    23  FF  01  01    00  
05_06_2021   19:29:26 :    22  FF  01  01    00  
05_06_2021   19:29:28 :    15  FF  01  03    01  6E  01  
05_06_2021   19:29:31 :    23  FF  01  01    00  
05_06_2021   19:29:32 :    21  FF  01  07    00  00  00  00  00  00  FF  
05_06_2021   19:29:36 :    22  FF  01  01    00  
05_06_2021   19:29:37 :    28  14  02  00    
05_06_2021   19:29:37 :    14  28  01  01    0D  
05_06_2021   19:29:38 :    0F  FF  71  00    
05_06_2021   19:29:38 :    10  FF  01  01    11  
05_06_2021   19:29:40 :    1A  FF  01  01    01  
05_06_2021   19:29:41 :    23  FF  01  01    00  
05_06_2021   19:29:43 :    29  0F  02  00    
05_06_2021   19:29:43 :    0F  29  01  07    40  02  00  05  05  C3  00  
05_06_2021   19:29:46 :    22  FF  01  01    00  
05_06_2021   19:29:47 :    26  14  02  00    
05_06_2021   19:29:47 :    14  26  01  01    0D  
05_06_2021   19:29:50 :    23  FF  01  01    00  
05_06_2021   19:29:54 :    01  FF  10  07    00  30  19  06  05  06  21  
05_06_2021   19:29:56 :    22  FF  01  01    00  
05_06_2021   19:29:56 :    21  FF  01  07    00  00  00  00  00  00  FF  
05_06_2021   19:29:56 :    15  14  02  00    
05_06_2021   19:29:56 :    14  15  01  01    0D  
05_06_2021   19:29:57 :    17  14  02  00    
05_06_2021   19:29:57 :    14  17  01  01    0D  
05_06_2021   19:30:00 :    23  FF  01  01    00  
05_06_2021   19:30:00 :    17  21  81  03    F7  FF  00  
05_06_2021   19:30:05 :    29  14  02  00    
05_06_2021   19:30:05 :    14  29  01  01    0D  
05_06_2021   19:30:06 :    22  FF  01  01    00  
И коллизии успешно решаются....
Вложения
net.jpg
(46.44 КБ) 111 скачиваний
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

А выход в Интернет есть ? По Wi-Fi или по Интернет с телефона/компа всем управлять можно ?
GoldenAndy писал(а):все устройства на одной шине.
GoldenAndy писал(а):Самопальный протокол по идеологии 1-Wire
Ясно)) Тоже думал так сделать. Но потом передумал))
Неее... не нравится мне сама идеология 1-Wire.
GoldenAndy писал(а):сразу продумайте, какой физический протокол передачи данных у вас будет. ибо тот же UART +/-2% частоты - и гудбай. Т.е. каждое изделие придется кварцевать.
Выше уже придумал и подробно расписал.
https://www.radiokot.ru/forum/download/ ... ?id=366193
https://www.radiokot.ru/forum/download/ ... ?id=366218
https://www.radiokot.ru/forum/download/ ... ?id=366219
https://www.radiokot.ru/forum/download/ ... ?id=366220
...
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043140#p4043140"]тот же UART +/-2% частоты - и гудбай[/uquote]
т.к. таймер у нас перезапускается при каждом прерывании INT0 (Mode: Any change), то соответственно и требования к стабильности калиброванного RC генератора передатчика и приёмника у нас значительно ниже по сравнению с USART.
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043140#p4043140"]и да, вообще не проблема посчитать КС по переменной длине пакета. Я не понимаю, что вызывает такие трудности в переменной длине пакета.[/uquote]
При чём тут КС... Речь про шифрование.
Никаких трудностей с переменной длинной нет. Просто не удобно и всё.
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043140#p4043140"]Отдельное устройство следит за трансформаторами тока, при появлении нагрузки рассказывает в сеть, что появилась или пропала нагрузка.[/uquote]
Какое отдельное ? У меня AVR в каждой розетке будет это делать))
GoldenAndy писал(а):Синхронизацию чего с чем?
Мастера и слейвов (20 штук).

Синхронизация.
Т.к. мастер у нас работает в симплексе и не может принимать одновременно пакеты от всех слейвов, то нам нужна в схеме синхронизация работы передатчиков (TX) всех слейвов.

Выше предлагали чтобы мастер непрерывно опрашивал все слейвы. Но тогда будут большие задержки при передачи пакетов и самое главное - слейвы не смогут уйти в спячку, потому что они будут постоянно принимать пакеты от мастера.
Поэтому такой вариант нам не подходит.
:(

Идеальный вариант - поставить ещё по одному AVR (назовём его "модем") на каждую линию данных и тогда никакая синхронизация нам вообще не нужна. )) Получим полный дуплекс с максимальной скоростью приёма/передачи и без коллизий и с минимальным потреблением тока (все AVR в глубокой спячке и просыпаются только во время приёма и передачи пакетов).
С точки зрения коммутации пакетов - это просто идеальная схема))
0_мастер_2_слейв_модем.jpg
(48.82 КБ) 94 скачивания
Только есть одна проблема - придётся добавить в схему ещё 40 штук AVR к уже существующим 22.
Итого получим 62 штук AVR ! ))
0_мастер_20_слейв_модем.jpg
(78.93 КБ) 94 скачивания
:o

Есть ещё один вариант - более гуманный))
По одной линии можно передавать/принимать пакеты (назовём её TX-RX)
А вторую линию использовать для передачи событий (назовём её INT)
0_мастер_2_слейв_INT.jpg
(39.94 КБ) 98 скачиваний
INT будет работает точно так же как в любом заводской модуле (например в nrf24, w5100 и т.д).
На вывод INT назначим любое событие (включение кнопки, сработка датчика и т.д.).
В этом случае мастер будет только слушать слейвы по линии INT, а не опрашивать постоянно слейвы.
При этом задержки при передачи пакетов будут значительно меньше, чем если бы мастер опрашивал слейвы непрерывно.
При этом все слейвы будут в глубокой спячки до наступления события (включение кнопки, сработка датчика и т.д.).
Думаю это нормальный вариант.
:)
Последний раз редактировалось roman.com Сб июн 05, 2021 21:14:54, всего редактировалось 1 раз.
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

От вы блин как йуный пионэр - героически создаете себе трудности, дабы потом их преодолевать.
roman.com писал(а):Неее... не нравится мне сама идеология 1-Wire.
Так у меня не 1-wire.
Почитайте идею Кластера, сделайте что то своё на диф.паре и будет вам счастье.
roman.com писал(а):требования к стабильности калиброванного RC генератора передатчика и приёмника у нас значительно ниже по сравнению с USART
Если будете делать на USART - то даже на одном байте упретесь в 2%. Разве что приемник USART делать софтовый и подстраивать период по каждому перепаду. У меня дельта частоты 25% прошла и не подавилась.
roman.com писал(а):А выход в Интернет есть ? По Wi-Fi или по Интернет с телефона/компа всем управлять можно ?
Выхода в инет нету. Зачем?
С компом - отдельный гейт блютузовый. Иначе как бы я прошивки с компа обновлял и управлял вручную?
Если мне вдруг будет надо - можно сделать что то на эзернете или вифи, там уже организовать парольный доступ, вебморду и прочее... Мне пока не надо.
roman.com писал(а):Речь про шифрование.
Никаких трудностей с переменной длинной нет. Просто не удобно и всё.
А ЗАЧЕМ?
От кого прятаться в проводной изолированной сети? Ищете себе трудности....
Но дело ваше.
я поделился, как оно у меня есть и работает.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043210#p4043210"]Почитайте идею Кластера.[/uquote]
Только для авторизированных пользователей...
GoldenAndy писал(а):сделайте что то своё на диф.паре и будет вам счастье.
На малые расстояния (в пределах дома) диф.пара не нужна.))
GoldenAndy писал(а):Если будете делать на USART
Не буду я ничего делать на USART. В AVR один USART. А слейвов 20 штук. Значит нужен мультиплексор...
Нафиг надо))
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043210#p4043210"]От кого прятаться в проводной изолированной сети? Ищете себе трудности.....[/uquote]
В проводной изолированной сети шифрование отключено. Но можно включить (это по желанию). Достаточно на мастере нажать кнопочку "security". ))
А куда не дотянутся провода будет работать по радиоканалу.
Или вы хотите что бы какой-нибудь "Пионер-Ардуинщик" перехватил управлением вашим домом ?))
Нет уж... спасибо))
Всё что по Интернету и радио каналу - у меня обязательно шифруется.
:tea:
GoldenAndy писал(а):Выхода в инет нету. Зачем?
Зачем? Для удалённого управления домом по Интернету - у меня это обязательное условие.
Без удалённого управления по Интернету - мне такой "Умный Дом" не нужен))
:tea:
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

Я не пойму одного, нафига вы уперлись в эту звезду с главным мастером. И да, при правильном подходе одноранговая сетка на юарте делается без всяких мультиплексоров.
Но дело ваше. Замечания и мысли я вам изложил свои. Как оно у меня работает - описал. Как сделаете - покажете народу, если захотите.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Протокол для Умного Дома

Сообщение Ivanoff-iv »

для одноранговой сети хорошо пойдёт и2с, но при увеличении расстояний максимальная скорость сильно падает...
ещё можно применить УАРТ/УСАРТ, у всех мк соединяются RX и клок (при наличии) все настраиваются на слейв. тот, кто хочет передать - передает программно, остальные ловят, по прерыванию приема просыпаются (из режима sleep). для защиты от колизий применить эту- же шину клок - пока она прижата - всем молчать, кроме того, кто прижал, а дальше по регистру пустого буфера приема (д.ш. под рукой нет, но вроде он существует).
а как реализована защита от коллизий на проводе (когда один передает 1, а другой 0) в самодельном протоколе? или там не допускается общая шина?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

Ivanoff-iv, я за основу взял проект Кластера и несколько его допилил (я выше давал ссыль на его ЖЖ, там можно войти, имея аккаунт ФБ или ВК). Где то оптимизировал, выкинул приоритеты, увеличил длительность единицы времени до 128 мкс. Портировал на STM32, включая бутлоадер. (Точнеее, бут пришлось полностью писать с нуля :) )
Шина на всех одна.
Достаточно трех проводов. Но поскольку у меня был в свое время доступ к нашим телефонистам - я разжился бухтой телефонной витухи - там 2 пары. Я не знаю, насколько правильно пускать сигнал такого плана по витой паре, второй провод которой является нулем (там же емкость, наверное, должна быть высокая?) - но пока работает. В идеале надо взять бухту метров в 200 и проверить. Но столько витухи у меня нет...
Физически шина чем то похожа на 1-Wire - подтянута к питанию резисторами, передача выполняется прижатием линии на 0.

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

                  1T   1T  1T
________          _     _   _            ______________  
        |________| |___| |_| |___|......|
           10T      3T    1T  3T
           
idle       Start     1    0    1             idle
Если кто то начинает передавать - все слушают и принимают весь пакет.
По завершению приема смотрят КС. Если совпала - смотрят кому. Если всем или совпал целевой адрес - вызывается процедура приема. Если не адресату - пакет забывается.
По коллизиям все просто.
В процессе приема все устройства знают, что шина занята, ибо пакет принимают все.
В процессе передачи перед прижатием линии к 0 МК контролирует наличие 1 на линии. После передачи очередного бита и отпускания линии МК так же контролирует - а поднялась ли линия в 1.
И в случае, если вдруг 2 устройства одновременно проверили наличие 1 на линии и начинают передавать что то - то в какой то момент наступит ситуация, что кто то линию отпустил, а она осталась прижата к 0. Обычно это происходит на этапе передачи адреса - у кого он больше, тот и единичку (3Т) держит дольше.
Тогда тот, кто отпустил, понимает, что он уже не один и затыкается до окончания передачи пакета.
При этом, поскольку приемник независим от передатчика - он так же принимает и свою посылку, и знает, когда завершится передача пакета. И потом повторит свою попытку через случайный период задержки после завершения пакета.
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043262#p4043262"]Я не пойму одного, нафига вы уперлись в эту звезду с главным мастером.[/uquote]
Просто и главное надёжно. Легко в обслуживании.
Спрятал от посторонних глаз щит в кладовке и туда завёл все витухи.
Всё))
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043262#p4043262"]при правильном подходе одноранговая сетка на юарте делается без всяких мультиплексоров.[/uquote]
Так и не нашли такое решение...))
Ivanoff-iv писал(а):ещё можно применить УАРТ/УСАРТ, у всех мк соединяются RX и клок (при наличии) все настраиваются на слейв.
Выше уже обсуждали... и с клоком... и с отдельной линией управления потоком (как в RS-232)...
GoldenAndy писал(а):я за основу взял проект Кластера и несколько его допилил
Да всё стандартно...
Screenshot_1.jpg
(104.75 КБ) 102 скачивания
Короче... пока что ничего нового))
:tea:

Добавлено after 13 minutes 17 seconds:
P.S.
Ivanoff-iv писал(а):у всех мк соединяются RX и клок (при наличии) все настраиваются на слейв.
В таком случае проще собрать всё по SPI и гонять пакеты туда-сюда ))
spi.png
(79.83 КБ) 100 скачиваний
AVR до 5 Мбит/c
STM32 до 18 Мбит/c
))
:tea:
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Протокол для Умного Дома

Сообщение parovoZZ »

5МБит по одному проводу по всей квартире???
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Протокол для Умного Дома

Сообщение GoldenAndy »

roman.com, Со звездой вы упретесь в то, что в какой то момент у вашего хаба не хватит портов, если вдруг вы захотите что то добавить.
И без хаба нихрена не будет работать выше локального функционала без взаимодействия с соседями.
Оптимальным считаю подключение всех устройств на одну шину параллельно. Функционал локальный в каждом устройстве свой. И должен работать в пределах своей логики вообще без внешнего управления.
Интерфейс в инет, связь с ПК, мониторинг, логи, глобальное управление климатконтролем, зонами освещения, электропитания и т.д. - на большом устройстве - хабе.
Но хаб не должен быть мастером, без которого все упадет. Он должен быть равноправным членом сетки. И без него все должно работать.
Мало того, при условии извне загружаемых сценариев в локальные устройства (через тот же хаб), эти сценарии должны уметь работать без участия хаба. Только на основании статусных сообщений от датчиков и соседних устройств.
А что касается физической линии - чем меньше проводов - тем лучше. С учетом витухи - удобно пользовать четное число линий. И не забывайте про защиту от помех и наводок. У меня это - супрессоры на питании и сигнальной линии. А коллизии - мне кажется, идея подтяжки линии к питанию резисторами и притягивание её к земле каждым устройством - безопасный вариант, если несколько устройств захотят передавать данные одновременно. Коллизии - придется решать программно, на уровне программного драйвера приемо-передатчика.
Но дело ваше, вы вправе сделать как вам это кажется удобным. Вобщем, удачи!

parovoZZ, Да хоть 100 Мбит, это дело топикстартера, выбирать скорость физики и ее принцип работы. Может, ТС захочет расставить цифровую акустику по углам комнаты и по локалке гнать 5+1 канал звука 16 бит 44.1 кГц от ресивера :)
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Протокол для Умного Дома

Сообщение parovoZZ »

Я к тому, что ему придётся вводить избыточные коды, ибо 5 МБит не по дифф. паре - это заявка на успех.
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

GoldenAndy писал(а):Функционал локальный в каждом устройстве свой. И должен работать в пределах своей логики вообще без внешнего управления.
У меня всё так и работает.
Допустим через приложение мы задаём температуру электрокамина. Температура записывается в EEPROM.
Дальше электрокамин поддерживает эту температуры автономно. Без внешнего управления)) И если пропадёт питание 220V то камин вспомнит какая была температура)).
И т.д.
У меня все так работает (автономно и через EEPROM).
:tea:
GoldenAndy писал(а):в какой то момент у вашего хаба не хватит портов
Выше писал что делать - дополнительный МК - расширитель портов))
roman.com писал(а):Если слейвов больше чем выводом МК мастер, то можно добавить в схему второй МК в качестве коммутатора пакетов.
0_мастер_1_коммутатор_20_слейв.jpg
(83.63 КБ) 99 скачиваний
Я не пойму... мои сообщения тут вообще никто не читает ? )) :)))

Добавлено after 3 minutes 18 seconds:
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043487#p4043487"]Оптимальным считаю подключение всех устройств на одну шину параллельно[/uquote]
Не самый лучший вариант. А если замкнет что... ляжет вся сеть.
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043487#p4043487"]идея подтяжки линии к питанию резисторами и притягивание её к земле каждым устройством - безопасный вариант[/uquote]
Безопасный но медленный... ))
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4043487#p4043487"]А что касается физической линии - чем меньше проводов - тем лучше.[/uquote]
Не факт. Когда все устройства синят на одной витухе тоже не супер.
Неудобно их коммутировать. Витуха под полом и в стенах. При перекоммутации вскрывать пол ? Или долбить стены ?
Удобней когда все витухи приходят в один щит. Для перекоммутации достаточно переключить порт в щитке.
Тут знаете ли вопрос не однозначный...
:tea:

Добавлено after 6 minutes 10 seconds:
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4043518#p4043518"]придётся вводить избыточные коды, ибо 5 МБит не по дифф. паре - это заявка на успех.[/uquote]
Какие ещё коды ? )) SPI или работает или нет. Если не работает - значит уменьшаем скорость и/или уменьшаем длину проводов.
Другого не дано))

А вот кстати интересно... А кто-нибудь проверял максимальную скорость и расстояние на которую будет стабильно работать SPI ?
Думаю надо будет как-нибудь проверить... :roll:

У SPI есть явные преимущества - он не боится прерывания и можно SPI сделать программно (в прошлой теме делали до 100 Кбит/c).
Но по витухе не проверяли.))
:tea:
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Протокол для Умного Дома

Сообщение Ivanoff-iv »

ещё... может не совсем в тему... можно использовать трансы от сетевух для гальваноразвязки, а для передачи применить манчестерский код - чтобы трансформаторы не насыщались
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Протокол для Умного Дома

Сообщение roman.com »

Да всё мы уже пробовали (см. выше)...

Добавлено after 1 minute 44 seconds:
roman.com писал(а):в прошлой теме мы разгоняли AVR на Ассемблере до скорости 10 МБит/с и более... Когда делали самодельный Ethernet на AVR
Ethernet-Atmega8-тр.jpg
(200.93 КБ) 95 скачиваний
Трансформатор - идеальное решение. Лучше только оптика))
Ответить

Вернуться в «Умные мысли»