Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

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

Вс июн 06, 2021 19:20:18

roman.com, Вы спросили совета - вам посоветовали несколько вариантов, от теоретических до практических. Но если вы продолжаете настаиивать на звезде - я только рад за вас.
А если где то замкнет - то у вас ляжет МК-коммутатор. А если повезет - то он положит и вашего мастера.
И учтите - понятие "если замкнет" в нормальной сетке не должно быть. А если будет - то не должно ничего фатального случаться.
dixi.

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

Вс июн 06, 2021 20:22:19

Ну значит поставлю высоковольтный конденсатор)) Или трансформатор... или оптопару...
Да даже если дома случится потоп (не дай Бог) и зальёт водой проводку... Да даже если фаза попадёт на сигнальный провод - моему коммутатору будет пофигу)) Более того... он даже может продолжит работу))

:))

Добавлено after 1 minute 42 seconds:
Ладно... осталось решить последний опрос - управление потоком пакетов...
А может просто поставить буфера и не мучиться)) Пока не знаю.
:tea:

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

Пн июн 07, 2021 00:11:14

т.е. ethernet на дифф. парах и самотактирующимися кодами выдумали лохи? надо всё на spi переводить. а чо?

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

Пн июн 07, 2021 09:17:02

parovoZZ, ну не мешайте человеку придумывать себе трудности :)

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

Пн июн 07, 2021 10:07:22

ethernet на дифф. парах - самый лучший протокол.
один минус - много жрёт электричества.
поэтому надо всё на spi переводить.

в том то и дело, я всё продумываю на стадии разработки (согласно концепции IoT) чтоб в будущем не было трудностей))
:tea:

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

Ср июн 09, 2021 16:14:11

Короче будем делать по этой схеме. Стандартная проверенная схема.
схема_1.jpg
(196.87 KiB) Скачиваний: 140

Только надо заменить всё роутеры и коммутаторы на AVR и повысить скорость...
:roll:

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

Чт июн 10, 2021 19:41:54

GoldenAndy писал(а):По коллизиям все просто.
В процессе приема все устройства знают, что шина занята, ибо пакет принимают все.
В процессе передачи перед прижатием линии к 0 МК контролирует наличие 1 на линии. После передачи очередного бита и отпускания линии МК так же контролирует - а поднялась ли линия в 1.
И в случае, если вдруг 2 устройства одновременно проверили наличие 1 на линии и начинают передавать что то - то в какой то момент наступит ситуация, что кто то линию отпустил, а она осталась прижата к 0. Обычно это происходит на этапе передачи адреса - у кого он больше, тот и единичку (3Т) держит дольше.
Тогда тот, кто отпустил, понимает, что он уже не один и затыкается до окончания передачи пакета.
При этом, поскольку приемник независим от передатчика - он так же принимает и свою посылку, и знает, когда завершится передача пакета. И потом повторит свою попытку через случайный период задержки после завершения пакета.

А у меня "звезда". У меня нет коллизий в обычном понимании...))
Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
Ключевое слово "одновременно"))
Если два слейва начнут одновременно передавать пакеты, то будет ошибка в программе мастера.
0_мастер_20_слейв_2_коллизии.jpg
(58.82 KiB) Скачиваний: 127

Значит добавим "автовыбор слейва".
Мастер в режиме "автовыбор слейва":
1-матер выходит из глубокой спячки в момент приёма пакета.
2-мастер определяет от какого слейва началась передача.
3-мастер переключает свой приёмник на слейв от которого началась передача.
Или по простому - какой слейв первый начинает передачу, от того пакет и получит мастер.
0_мастер_20_слейв_2_коллизии_1.jpg
(58.84 KiB) Скачиваний: 124

Конечно, полностью это не устраняет коллизии, но зато сокращает количество потерянных пакетов.
От какого то одного слейва пакет мастер всё таки получит)) А второй слейв просто повторит передачу через случайный период задержки.
Прикольно получилось))

А чтоб полностью устранить потерю пакетов в сети и полностью избавиться от коллизий надо ставить буфера.
:tea:
Только это потребует добавления в схему ещё 40 штук AVR...
А ещё из-за буферов увеличится время передачи пакетов...
:roll:

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

Сб июн 12, 2021 15:52:16

roman.com писал(а):Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
Ключевое слово "одновременно"))
Если два слейва начнут одновременно передавать пакеты, то будет ошибка в программе мастера.
Вы начинаете путать понятия.
При построении сети мастер-слейвы никаких коллизий не может быть в принципе.
Ибо обмен инициирует только мастер. И вашему мастеру нужно постоянно опрашивать всех слейвов. И слейв отвечает только тогда, когда к нему обратятся.
А если слейв начинает передавать сам - то такого непослушного слейва нужно ответси на конюшню и пороть плетьми, что бы знал, что рабы молчат, пока хозяин не спросит.
Либо это уже получается мультимастер. И тогда ваша звезда - излишняя сложность. Ибо геркон на входной двери не может сказать выключателю в прихожей включить на 1 минутуу свет. Он может только сообщить об этом главному контроллеру. А главный контроллер уже будет думать - а надо ли скомандовать свету включиться?
Хотя эта задача должна решаться без участия главного контроллера, на сценариях поведения.

Вообще, у меня складывается такое ощущение, что вы накопали где то всяких примеров обмена по определённым протоколам и используете их. И не хотите делать что то свое. Отсюда и упорное желание городить звезду, потратив на нее вагон витухи. Или ставить всякие коммутаторы.

roman.com писал(а):Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
тогда это хреново сделанный мастер. Или мультиприём делать (даже та же Атмега328 умеет прерывания по изменению уровня на каждом пине), или какой то дуплексный протокол, когда кто то обращается к центральному контроллеру и, пока контроллер не ответит, что готов слушать, ждет. Как контроллер ответил - этот кто то начинает слать данные.

Добавлено after 8 minutes 39 seconds:
Развивая тему вашей звезды.
Каждый луч - Rx и Tx. 2 линии. Подтянуты к питанию.
TX--->RX
RX<---TX
Инициатор прижимает свой ТХ к земле и ждет. Как получатель увидел на своем RX низкий уровень и готов его слушать - начинает отправлять тактовые импульсы по своему ТХ.
По этим тактовым импульсам, приходящим на RX, инициатор отдает свои данные. Размер данных должно быть или заранее известен, или передаваться в пакете. Как только получатель получил всё, он прекращает тактирование линии.
Соответственно, ваш центральный контроллер сидит как паук и смотрит на эти все линии и ждет, пока кто то не попросит.
Вот такая фигня получается, чем то похожая на смесь ужа и ежа помесь SPI и I2C.

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

Сб июн 12, 2021 18:23:30

Ура ! Всех с праздником ! )) :beer:
GoldenAndy писал(а):Вы начинаете путать понятия.

Точно)) На самом деле не будет там никаких мастер-слейвы... Там будет типа клиент-сервер)) И мастеру не нужно постоянно опрашивать всех слейвов.
GoldenAndy писал(а):вы накопали где то всяких примеров обмена по определённым протоколам и используете их.

Ну так не первый год в связи)) :)
GoldenAndy писал(а):не хотите делать что то свое.

Так всё давно придумали уже)) Осталось только выбрать/слепить своё из готового...
:roll:
GoldenAndy писал(а):(даже та же Атмега328 умеет прерывания по изменению уровня на каждом пине

С ATmega8 уже наигрался... Сейчас играюсь ATmega328

ATmega8
3,3 V ток в активном режиме (по приборам) 6 мА.
3,3 V ток в режиме спячки (по приборам) ~0,5 мкА.

ATmega328
3,3 V ток в активном режиме (по приборам) 4 мА.
3,3 V ток в режиме спячки (по приборам) ~0,1 мкА.

Будет супер экономно))

Даташиты нам не врут))
:roll:
GoldenAndy писал(а):или какой то дуплексный протокол

Вопрос какой ? Я знаю кучу протоколов... не первый год в связи)) :)
Осталось выбрать для себя какой-то один... или выбрать/слепить своё из готового...
:)
GoldenAndy писал(а):Каждый луч - Rx и Tx. 2 линии. Подтянуты к питанию.
TX--->RX
RX<---TX

GoldenAndy писал(а):Инициатор прижимает свой ТХ к земле и ждет. Как получатель увидел на своем RX низкий уровень и готов его слушать - начинает отправлять тактовые импульсы по своему ТХ.

Допустим... Есть и такой... Что-то типа между RS-232 и SPI...
GoldenAndy писал(а):Как только получатель получил всё, он прекращает тактирование линии.

:tea:
GoldenAndy писал(а):Соответственно, ваш центральный контроллер сидит как паук и смотрит на эти все линии и ждет, пока кто то не попросит.

Можно. Но не хочу тактирование. Лучше самосинхронизирующиеся протоколы... Типа Ethernet самосинхронизирующийся.
GoldenAndy писал(а):Хотя эта задача должна решаться без участия главного контроллера, на сценариях поведения.

Вопрос спорный и интересный...
:roll:

Добавлено after 7 minutes 56 seconds:
roman.com писал(а):Проблема в другом... Мастер не может принимать одновременно пакеты от более чем одного слейва.
тогда это хреново сделанный мастер.

Нет. Мастер в порядке. Он моет принимать одновременно пакеты от всех слейвов, то тогда скорость передачи пакетов будет в десятки раз меньше (1...3 кБит/c и куча слейвов или 20...30 кбит/с и один слейв).
А мне нужна минимальная задержка. Поэтому и скорость нужна максимальная. Поэтому этот вариант не подходит.

Не забывайте...
МК типа AVR всего с одним ядром. И ресурсы ограничены.
МК типа AVR это вам не 4-x ядерный процессор Intel с распределением потоков ))
Поэтому исходим из того что имеем))
:tea:

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

Сб июн 12, 2021 19:54:51

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

Хотите - мутите самосинхру, но с тактированием от принимающей стороны можно параллельно обрабатывать сразу всех клиентов. Главное, предусмотреть буферы в памяти.
Или допустим, 4 буфера - и принимать до 4х посылок одновременно. 5й клиент - в очереди.
Но тут да, придется немножко посидеть и пописать код. Что б он красивый был. Ибо прием по внешеней синхре - тупой КА.
А самосинхронизирующийся код требует, как мне кажется, чуть больше телодвижений и ресурсов. Но и его можно принимать одновременно.
Вдумайтесь, МК выполняет до 16 миллионов операций в секунду. Вам хватит на несколько потоков. Но писать придется руками.

А по минимальной задержке - исходите от того, что после щелчка выключателя до включения лампочки может пройти до 250-300 мс. Все что выше - уже ощущаемая человеком задержка. А до 200 мс - практически незаметно.

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

Сб июн 12, 2021 21:14:23

А если эта лампа - сберегайка, за сколько времени она разгорится? Да та же лед за каких 0,3 секунд разгорится.

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

Вс июн 13, 2021 09:49:51

dgrett, и причем тут это?
(И, кстати, ледовские у меня дома нормальные включаются сразу. Задержка между нажатием на выключатель и зажиганием лампы незаметна. Так что в топку тормозные сберегайки. Я 6 лет назад поменял все лампочки, кроме двух сберегаек, на леды. Пока проблем не ведаю. А две сберегайки в коридоре просто не используются, ибо там 2 ледовских света на датчиках движения с адаптивной яркостью. Каждая со своим сценарием.)
Я к тому, что время реакции на воздействие не должно превышать 200 мс. А даже в такой странной топологии и идеологии, как придумал ТС, даже на 10 кбит/с пакет из 32 байт уйдет за 26 мс. И назад вернется за 26 мс.

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

Вс июн 13, 2021 13:40:56

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

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

Вс июн 13, 2021 18:42:27

если вы не планируете гонять аудио

Таких планов нет. Ардуино - для меня это тупые устройства))
даже в такой странной топологии и идеологии, как придумал ТС, даже на 10 кбит/с пакет из 32 байт уйдет за 26 мс. И назад вернется за 26 мс.

ТС просто хочет развернуть в своём доме локальную сеть (LAN) на МК типа AVR.
Последний раз редактировалось roman.com Пн июн 14, 2021 00:17:51, всего редактировалось 1 раз.

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

Вс июн 13, 2021 19:33:48

Далось вам это шифрование. Сделайте шифрование только на шлюзе в интернет, если уж на то пошло. А внутри изолированной локалки оно вам не нужно. Или хацкеры пробурят стенку, подключатся к витухе, отреверсят протокол и будут мигать лампочками?
И, кстати, вам хватит скорости коммутаторов?
У вас адресация будет как реализовываться? Х посылает пакет Y, коммутатор знает, на каком проводе этот Y живет и отправит туда пакет? Или это будет бродкаст, а Y уже сам поймает пакет?

По поводу самосинхры и тактирования - решать вам. Но как по мне , ресурсов на самосинхру уйдет тоже немало. А при зависании клиента тут уже пофиг протокол. По таймауту все должно разрешиться.

И, кстати, понятие зависшего МК - это бывает только в случае кривой программы. Или сильно китайского МК.

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

Вс июн 13, 2021 23:06:47

GoldenAndy писал(а):Далось вам это шифрование.

По умолчанию шифрование в локальной сети отключено.
вам хватит скорости коммутаторов?

Надо посчитать трафик в локальной сети.
При бродкасте все клиенты будут просыпаться при каждом пакете.
Поэтому будем делать современный коммутатор, который знает на каком порту какой сидит клиент.
Последний раз редактировалось roman.com Пн июн 14, 2021 00:06:08, всего редактировалось 3 раз(а).

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

Вс июн 13, 2021 23:13:42

Да делайте как хотите.
И обратите внимание, я вам нигде не говорил про аппаратный спи. Просто с внешней синхрой телодвижений в коде меньше. ИМХО.
Пионерский галстук и гамак вам в помощь.

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

Вс июн 13, 2021 23:25:50

GoldenAndy писал(а):Просто с внешней синхрой телодвижений в коде меньше.

А по моему одинаково )) плюс/минус пару строк кода ))

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

Пн июн 14, 2021 01:01:00

Ну тогда тема себя исчерпала.
Вы задали вопросы и сами себе на них ответили. И решили для себя.
Засим я вас покину в этой теме, не поминайте лихом.

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

Пн июн 14, 2021 12:39:25

Так вопрос был - "Кто делал Умный Дом ? Поделитесь опытом !"
Ждал интересных решений... Но видать не судьба)) Все делают по старинке - топология общая шина.))

Похоже один только GoldenAndy делал Умный Дом. Но без выхода в Интернет. Так не интересно.

Ещё sashamelja делал Умный Дом. С выходом в Интернет. Но у него всё по Wi-Fi на ESP32 и управление через браузер.
И через облачный сервер... С шифрованием и сертификатами...
Хотя у самого дома белый IP и мог бы управлять своим Домом напрямую. Вот такие странные люди))
:tea:
Короче будет один сервер (топология звезда).
Надо только добавить "умных" мультиплексоров (для TX и RX), а то у AVR портов мало.
Зато просто... удобно в обслуживании... минимальные задержки передачи пакетов... и т.д.
:roll:
Ответить