Умный Дом по Ethernet

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 08 фев 2013, 23:26

Luisa писал(а):Реализация не просто нужна, а мега необходима. Я тока начал общаться с данным устрйством, но начал общаться именно потому, чтобы не реализовывать необходимость опрашивать управляющим устройством датчики. К примеру на данные датчики пришёл сигнал , компьютер мгновенно получил событие, после регистрации события проверил, возможно ли выполнение каких либо действий. Так вот если реализовывать, что тото типа отопления, то необходимо чтобы инфа с датчиков оперативно поступала в систему. без доп опроса.
У меня реализовано в доме управление отоплением. Я могу заверить вас, что качественное управление отоплением невозможно на простой "термостатной" логике. Оно, конечно, будет работать, но очень "разнузданно". В регулировании отопления нужно а) иметь историю значений б) предугадывать тенденцию. Иначе с большой долей вероятности вы получите температурные качели. Я трижды переписывал код управления отоплением и до сих пор полностью не удовлетворен результатом.
А что касается опроса датчиков, то vtec абсолютно прав. Нет никакого практического смысла опрашивать их часто. Опрос по Ethernet датчика раз в минуту - это полкопейки на миллион. Этого более чем достаточно для всех алгоритмов управления и не создаст хоть сколько-нибудь ощутимой нагрузки в 100Мб/1Гб сети.

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 08 фев 2013, 23:38

dimonix писал(а):сразу появилась мысль касательно времени нажатия. раз уж при "отжатии" передается параметр m=1, то вместо "1" предлагаю передавать как раз время удержания в "нажатом" состоянии. его проще всего измерять в десятках тиков (прерываний) OCIE1A (т.е. с шагом 100 мс). при 8-битной переменной флажка m получается от 100 мс (m=1) до 25.5 секунд (m=255), что подходит для любых приложений. при больших временах будет всегда передаваться m=255.

UPD: очень желательно добавить в код конструкции ниже. спасибо!

#ifdef SMD_VERSION
специфика для версии smd
#endif
Начну с конца. Такая конструкция есть. См. исходный код прошивки
// Hardware version
#define MEGADHWV 4
* Для аппаратной ревизии 4 (MEGADHWV) с микропроцессором в корпусе TQFP
* доступны два дополнительных АЦП порта. В случае использования МК
* в корпусе DIP, установите значение директивы MEGADHWV "0".
Я тут привязываюсь не к SMD, а к аппаратной версии, так как и в рамках SMD могут быть в будущем вариации.

Что касается времени удержания, то мысль безусловно интересная, но резона особого не вижу. Дело в том, что если вы внимательно посмотрите код обработки "длинного" нажатия, то станет ясно, что нет никакой сложности определять время "отжатия" кнопки на стороне сервера. Какой смысл нагружать МК передачей лишней информации, когда это легко решается на сервере?
Вы можете возразить по поводу медлительности файловой системы, а я отвечу, что это только набросок, и что флаги можно хранить в ramdisk, что, скажем на Core i3/DDR3, бесспорно в разы быстрее любого счетчика в МК.

Luisa
Сообщения: 10
Зарегистрирован: 28 янв 2013, 09:33

Re: Умный Дом по Ethernet

Сообщение Luisa » 09 фев 2013, 00:28

Системы отопления должны иметь не просто термостат в батареи, а установленные датчики по комнатам, чем больше датчиков тем лучше. На котле обязательно автоматы. Именно такая система, Может адекватно реагировать на открыте двери, проветривание комнаты и т.д
Я реализовывал на сименсе. 390 квадратов. нет никаких проблем со скачками. А откуда они возьмутся?
Существует таблица действий, связанная один ко многим с таблицей датчиков, как только приходят данные с датчика, датчик находит, действия, и все действия проверяются на соответствия отработанных датчиков. После чего возвращает массив команд на выполнение, если необходимо. Это всего одна процедура базы данных, которую на сименсе можно выполнить на прямую, ну а в нашем случае делаем через ПК.
Лучше всего на мой взгляд написать мини веб сервер, который слушает 80й порт(юзать indy библиотеку), реагировать на команды, отвечать на них, и одновременно предоставлять интерфейс для пользователя.

У меня во власти ООП, я в общем по жизни враг тех кто программирует контроллеры(Я пишу софт для управления контроллерами и часто с ними спорю, вот надо и всё тут!), я не секу в контроллерах, датчиках, я делаю что могу. Поэтому и пишу чего не хватает. Контроллер, должен слать данные, и не просто слать, а отвечать за доставку(то есть ожидать ответа о доставке, при отсутствии повторять).

Если отвечать за доставку не так важно для такого уровня, то слать данные при изменении очень важно. Не лепите сюда опросы. Опросы, нужны на случай аварии, первого запуска и т.д., но не для постоянной работы.

Может кто пытается сделать тут толстых клиентов. То это сразу ошибка. Тонкий клиент, для фиксации данных контроллера, и СУБД, которая управляет логикой. Всё это можно впихнуть на устройство скажем на Андроиде(но я не парюсь, пока леплю для винды с использованием C++Builder + MS SQL)

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

И ещё раз просьба к автору данного девайса. Пожалуйста если не сложно добавьте туда возможность, генерировать действие при изменении на адц входе, с возможностью указания шага.

SAM-soft
Сообщения: 40
Зарегистрирован: 17 дек 2012, 11:32

Re: Умный Дом по Ethernet

Сообщение SAM-soft » 09 фев 2013, 02:02

Андрей БОЛЬШОЕ ОГРОМНОЕ СПАСИБО за добавление в 3.04 контроль за отпускание кнопки. Я уже голову сломал думая как можно реализовать просчет времени нажатой кнопки. Еще раз большое спасибо!
Вы мне не подскажите куда копать? Мега168, работает на внешнем кварце на 12МГц, Использовал прошивку 3.0 но откинул EEPROM, вобщем влезла. При первом запуске очень долго нету ЛИНИИ (зеленый светодиод LINK) не засвечивается. Спустя 1 минуту светодиод LINK и ACT начинают очень быстро мерца секунд 5-7. Потом все устаканивается, но нету ответа от устройства. При следующем включении ничего подобного нету и сразу же включается в роботу. Я подозреваю здесь что то связано с ARP таблицей. При начале работы немного мигаю светодиодами приблизительно 260 мс по времени.
Заранее большое спасибо!

dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Умный Дом по Ethernet

Сообщение dimonix » 09 фев 2013, 13:33

Andrey_B писал(а):
dimonix писал(а):сразу появилась мысль касательно времени нажатия. раз уж при "отжатии" передается параметр m=1, то вместо "1" предлагаю передавать как раз время удержания в "нажатом" состоянии. его проще всего измерять в десятках тиков (прерываний) OCIE1A (т.е. с шагом 100 мс). при 8-битной переменной флажка m получается от 100 мс (m=1) до 25.5 секунд (m=255), что подходит для любых приложений. при больших временах будет всегда передаваться m=255.

UPD: очень желательно добавить в код конструкции ниже. спасибо!

#ifdef SMD_VERSION
специфика для версии smd
#endif
Начну с конца. Такая конструкция есть. См. исходный код прошивки
// Hardware version
#define MEGADHWV 4
* Для аппаратной ревизии 4 (MEGADHWV) с микропроцессором в корпусе TQFP
* доступны два дополнительных АЦП порта. В случае использования МК
* в корпусе DIP, установите значение директивы MEGADHWV "0".
Я тут привязываюсь не к SMD, а к аппаратной версии, так как и в рамках SMD могут быть в будущем вариации.
это вопрос чисто идеологический, просто правила "хорошего тона" в программировании ;) безусловно существующая конструкция с MEGADHWV работает. но как с условием if (MEGADHWV) определить массив соответствия портов? с условной компиляцией это делается без проблем.
далее, этот проект безусловно успешный и будет развиваться в будущем. код будет только усложняться, уже сейчас есть как минимум три аппаратные платформы. хорошо бы с самого начала облегчить людям жизнь при сборке под свое железо и свои нужды.
конструкция с if (MEGADHWV) не делает условной компиляции, код компилируется всегда и съедает память, даже если он не используется. по мере развития проекта у меги может элементарно кончиться память. и пользователю придется выбирать, какие функции ему нужны, а какие нет. сейчас такой возможности нет.
в качестве примера могу привести проект от comparator'а из соседней ветки - используется один код под три разных аппаратных модуля, и пользователь сам может выбирать набор нужных ему функций, т.к. некоторые из них используют одни и те же пины и друг с другом несовместимы.
Andrey_B писал(а):
Что касается времени удержания, то мысль безусловно интересная, но резона особого не вижу. Дело в том, что если вы внимательно посмотрите код обработки "длинного" нажатия, то станет ясно, что нет никакой сложности определять время "отжатия" кнопки на стороне сервера. Какой смысл нагружать МК передачей лишней информации, когда это легко решается на сервере?
Вы можете возразить по поводу медлительности файловой системы, а я отвечу, что это только набросок, и что флаги можно хранить в ramdisk, что, скажем на Core i3/DDR3, бесспорно в разы быстрее любого счетчика в МК.
дополнительной нагрузки на МК не будет: после обнаружения "нажатия" счетчик m сбрасывается, в обработке прерывания считается каждый десятый тик и увеличивается счетчик m. вроде все. просто и "красиво". все таки линух - это не RTOS.

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 09 фев 2013, 23:01

dimonix писал(а): это вопрос чисто идеологический, просто правила "хорошего тона" в программировании ;) безусловно существующая конструкция с MEGADHWV работает. но как с условием if (MEGADHWV) определить массив соответствия портов? с условной компиляцией это делается без проблем.
далее, этот проект безусловно успешный и будет развиваться в будущем. код будет только усложняться, уже сейчас есть как минимум три аппаратные платформы. хорошо бы с самого начала облегчить людям жизнь при сборке под свое железо и свои нужды.
конструкция с if (MEGADHWV) не делает условной компиляции, код компилируется всегда и съедает память, даже если он не используется. по мере развития проекта у меги может элементарно кончиться память. и пользователю придется выбирать, какие функции ему нужны, а какие нет. сейчас такой возможности нет.
Это неправда.
Со значением директивы MEGADHWV равным 4
Program: 19906 bytes (60.7% Full)
Со значением директивы MEGADHWV равным 0
Program: 19772 bytes (60.3% Full)
Есть еще аргументы?
dimonix писал(а): дополнительной нагрузки на МК не будет: после обнаружения "нажатия" счетчик m сбрасывается, в обработке прерывания считается каждый десятый тик и увеличивается счетчик m. вроде все. просто и "красиво". все таки линух - это не RTOS.
Счетчик придется объявлять для каждого входа, так как вполне реальна ситуация одновременного удержания нескольких входов, а это минус 14 байт RAM. Вроде бы и мелочи, но RAM в МК - дефицитная вещь. Я в целом не против вашего предложения, но пока считаю, что если что-то можно сделать на сервере, то лучше это сделать там. Это сервисные фичи и таких штук можно придумать массу, стоит ли все пихать в МК? Не знаю. А что до RTOS - не того поля задачи... Если уж сервер настолько загружен, что не может быстро считать атрибут файла (тем более если мы работаем с ramdisk), то передача времени нажатия на скорость общей обработки алгоритма никак не повлияет - это тысячные доли процента. Но, повторюсь, вашу идею не отвергаю.

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 11 фев 2013, 02:26

Andrey_B писал(а): http://www.ab-log.ru/files/File/ip_mana ... 4_beta.zip
Когда происходит срабатывание входа на "отжатие", то передается дополнительный параметр m=1 (примерно так: /megad.php?pt=0&m=1)
Я правильно понимаю,что для включения нагрузки (на исполнительном модуле) только на период удержания кнопки (на командном модуле), то строка
NetAction должна иметь вид : "192.168.0.64/s/?cmd=12:2&m=1" ?
но после сохранения параметров, значение &m=1 исчезает.
А если параметр NetAction указан просто как 192.168.0.64/s/?cmd=12:2,то при длительной работе и частых нажатиях, частенько наблюдается сбой, когда исполнительный модуль может пропустить одну из команд, и тогда все дальнейшие команды приобретают инверсный вид....
Конечно, я не исключаю, что этот сбой мог быть связан и с загрузкой роутера, но надежность всей системы от этого очень страдает...

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 11 фев 2013, 09:49

reff писал(а):Я правильно понимаю,что для включения нагрузки (на исполнительном модуле) только на период удержания кнопки (на командном модуле), то строка
NetAction должна иметь вид : "192.168.0.64/s/?cmd=12:2&m=1" ?
Параметр 'm' важен для сервера, который должен понимать какой событие на входе произошло. Мегадевайс входной параметр 'm' не обрабатывает, поэтому передавать его смысла нет. Кроме того, URL, прописанный в NetAction, будет запрашиваться независимо от того, произошло ли нажатие или "отжатие".
reff писал(а):но после сохранения параметров, значение &m=1 исчезает.
У поля NetAction ограничение по длине. EEPROM в МК не бесконечный. Но есть обширное и нераспаханное поле для оптимизации.
reff писал(а): А если параметр NetAction указан просто как 192.168.0.64/s/?cmd=12:2,то при длительной работе и частых нажатиях, частенько наблюдается сбой, когда исполнительный модуль может пропустить одну из команд, и тогда все дальнейшие команды приобретают инверсный вид....
По идее этого быть не должно. Необходимо дополнительное тестирование. (Хотя вы правы в том, что если по объективным причинам один пакет пропадет, то действия второго устройства будут инвертированы).
Но хочу заметить, что NetAction задумывался в большей степени как последний SOS, когда старший брат почил в бозе. В нормальной ситуации при наличии сервера, обрабатывающего "m", проблемы не будет. Конечно, еще остается вариант обработки параметра "m" самим Мегадевайсом, но тогда (если не делать два разных поля NetAction) Мегадевайс должен автоматически подставлять этот параметр, а это тоже палка о двух концах. Ведь могут быть URL, которые станут некорректными с таким аппендиксом.

dimonix
Сообщения: 368
Зарегистрирован: 19 фев 2012, 22:01
Откуда: Сколково

Re: Умный Дом по Ethernet

Сообщение dimonix » 11 фев 2013, 14:16

Andrey_B писал(а):
dimonix писал(а): это вопрос чисто идеологический, просто правила "хорошего тона" в программировании ;) безусловно существующая конструкция с MEGADHWV работает. но как с условием if (MEGADHWV) определить массив соответствия портов? с условной компиляцией это делается без проблем.
далее, этот проект безусловно успешный и будет развиваться в будущем. код будет только усложняться, уже сейчас есть как минимум три аппаратные платформы. хорошо бы с самого начала облегчить людям жизнь при сборке под свое железо и свои нужды.
конструкция с if (MEGADHWV) не делает условной компиляции, код компилируется всегда и съедает память, даже если он не используется. по мере развития проекта у меги может элементарно кончиться память. и пользователю придется выбирать, какие функции ему нужны, а какие нет. сейчас такой возможности нет.
Это неправда.
Со значением директивы MEGADHWV равным 4
Program: 19906 bytes (60.7% Full)
Со значением директивы MEGADHWV равным 0
Program: 19772 bytes (60.3% Full)
Есть еще аргументы?
горькая правда :? результат зависит от компилятора и включенных опций оптимизации кода. а данном случае компилятор без вашего ведома просто выкинул часть кода, на который никогда не передается управление. хорошо ли это? в данном конкретном случае да. но это не есть общее правило для всех случаев.

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 11 фев 2013, 16:11

Andrey_B писал(а):
reff писал(а):
По идее этого быть не должно. Необходимо дополнительное тестирование. (Хотя вы правы в том, что если по объективным причинам один пакет пропадет, то действия второго устройства будут инвертированы).
вчера весь вечер гонял Мегадевайсы, пытаясь выяснить какую-либо устойчивую зависимость при этих сбоях..... но пока ничего конкретного не выявил, хотя, вероятней всего, какое-то притормаживание все же есть в передающем блоке, возможно даже, дребезг контактов при отпускании кнопки.
Но, в любом случае, в импульсном режиме мы управляем нагрузками, которые не должны или не могут работать долго, значит, команда "отключить" должна иметь явный приоритет над командой "включить", иначе, это может привести к катастрофе. При данной ошибке мы не имеем возможности исправить ее аппаратно ( только через вэб браузер), а с учетом того, что у нас нет обратной связи, то мы и вовсе можем не знать, что удаленный механизм все еще работает.

alexsis_76

Re: Умный Дом по Ethernet

Сообщение alexsis_76 » 11 фев 2013, 16:27

if ( MEGADHWV == 4 )
{
plen=fill_tcp_data_p(buf,plen,PSTR("<a href=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/?pt=A6>ADC6</a><br>"));
plen=fill_tcp_data_p(buf,plen,PSTR("<a href=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/?pt=A7>ADC7</a>"));
}
если вы об этом то это не деректива условной компиляции, а обычное условие оно компилируется всегда, директивы условной компиляции начинаются с # т.е #if у вас их вообще нет
сразу появилась мысль касательно времени нажатия. раз уж при "отжатии" передается параметр m=1, то вместо "1" предлагаю передавать как раз время удержания в "нажатом" состоянии. его проще всего измерять в десятках тиков (прерываний) OCIE1A (т.е. с шагом 100 мс). при 8-битной переменной флажка m получается от 100 мс (m=1) до 25.5 секунд (m=255), что подходит для любых приложений. при больших временах будет всегда передаваться m=255
данное действо требует достаточно глубокой модернизации прошивки и изменения ее логики ,все задежки должны быть основаны на прерываниии , как сделано у меня вот сдесь http://ab-log.ru/forum/viewtopic.php?f=1&t=462 правда криво но работает исправно сейчас кстаит код исправлен (как у людей)там сделан примитивный диспетчер задач
вчера весь вечер гонял Мегадевайсы, пытаясь выяснить какую-либо устойчивую зависимость при этих сбоях..... но пока ничего конкретного не выявил
с таким подходом к делу Вы еще долго ничего не выявите мой Вам совет Если Вы хотите сделать что нибудь стоющее учите язык , пишите и компилируйте сами :)

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 11 фев 2013, 17:01

reff писал(а):вчера весь вечер гонял Мегадевайсы, пытаясь выяснить какую-либо устойчивую зависимость при этих сбоях..... но пока ничего конкретного не выявил, хотя, вероятней всего, какое-то притормаживание все же есть в передающем блоке, возможно даже, дребезг контактов при отпускании кнопки.
Сам по себе "дребезг" вряд ли является причиной. Каждое событие, которое было принято программой микроконтроллера за событие генерирует действия (в нашем случае вызов URL). Другое дело - поведение устройства (главным образом в сетевой части) в случае генерации большого количества событий за короткий промежуток времени. Попробую воспроизвести вашу ситуацию у себя.
reff писал(а):Но, в любом случае, в импульсном режиме мы управляем нагрузками, которые не должны или не могут работать долго, значит, команда "отключить" должна иметь явный приоритет над командой "включить", иначе, это может привести к катастрофе. При данной ошибке мы не имеем возможности исправить ее аппаратно ( только через вэб браузер), а с учетом того, что у нас нет обратной связи, то мы и вовсе можем не знать, что удаленный механизм все еще работает.
Мы не можем назначить какой-либо приоритет, потому что команды идут последовательно по мере совершения событий и ни передающее, ни принимающее устройство не знает когда будет "отжатие" кнопки.
А что вы конкретно предлагаете для решения этой проблемы? И возможно ли решение вообще? Ведь вполне реальна ситуация, когда всего из двух пакетов последний по объективным причинам (проблемы с маршрутизатором) не дойдет. Даже если мы будем тем или иным образом передавать состояния входа. Это проблема конкретной реализации, когда такая ситуация может привести к катастрофе.
Что по-вашему может решить эту проблему?
Чтобы остаться в идеологии универсальности необходимо два поля NetAction, потому что "переключение" (команда :2) - это совсем не то же самое что ":0" и ":1", то есть, к примеру, вам нужно, чтобы по "отжатию" выход выключался, а кому-то наоборот. А на два поля NetAction нет достаточно места в EEPROM (или пока нет). Все же в сложных системах нужен сервер.

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 11 фев 2013, 17:35

Andrey_B писал(а):
reff писал(а): А что вы конкретно предлагаете для решения этой проблемы? И возможно ли решение вообще? Ведь вполне реальна ситуация, когда всего из двух пакетов последний по объективным причинам (проблемы с маршрутизатором) не дойдет. Даже если мы будем тем или иным образом передавать состояния входа. Это проблема конкретной реализации, когда такая ситуация может привести к катастрофе.
Что по-вашему может решить эту проблему?
Чтобы остаться в идеологии универсальности необходимо два поля NetAction, потому что "переключение" (команда :2) - это совсем не то же самое что ":0" и ":1", то есть, к примеру, вам нужно, чтобы по "отжатию" выход выключался, а кому-то наоборот. А на два поля NetAction нет достаточно места в EEPROM (или пока нет). Все же в сложных системах нужен сервер.
Честно говоря, у меня туго с программированием,я скорее паяльщик ))))))) поэтому, предлагать непосредственные решения мне тяжело,
но, возможно, команда "включить" должна выполняться небольшой отрезок времени, например 100 мс., далее смотрим опять на входящие пакеты- если он не изменился, то продолжаем выполнение, если подтверждение не пришло, то выключаем .......возможно, добавить режим для конфигурации "OUT" и наряду с режимами "PWM" и "SW" ввести режим "IMPULS"
Последний раз редактировалось reff 11 фев 2013, 17:42, всего редактировалось 1 раз.

alexsis_76

Re: Умный Дом по Ethernet

Сообщение alexsis_76 » 11 фев 2013, 17:40

если подтверждение не пришло, то выключаем
если это может привести к аварии это нужно организовать в самом исполнительном устройстве, выполнили команду завели таймер ждем если по истечении некоторого времени не пришла команда на выключение (сеть пропала , роутер потерял пакет) выключаем сами, вообще такие системы должны посылать подтверждения друг другу , мол команда принята и выполнена (не выполненв)

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 11 фев 2013, 17:44

alexsis_76 писал(а):
если подтверждение не пришло, то выключаем
если это может привести к аварии это нужно организовать в самом исполнительном устройстве, выполнили команду завели таймер ждем если по истечении некоторого времени не пришла команда на выключение (сеть пропала , роутер потерял пакет) выключаем сами, вообще такие системы должны посылать подтверждения друг другу , мол команда принята и выполнена (не выполненв)
тогда это приведет к "щелканию" исполнительным механизмом каждые 100мс

alexsis_76

Re: Умный Дом по Ethernet

Сообщение alexsis_76 » 11 фев 2013, 17:49

Но, в любом случае, в импульсном режиме мы управляем нагрузками, которые не должны или не могут работать долго, значит, команда "отключить" должна иметь явный приоритет над командой "включить"
ну так вы посылаете команду на включение все включается если по прошествии времени не пришла комманда выключить выключаете сами , чем вам не приоритет мне кажется для вашей конкретной реализации Вам придется самим постараться

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 11 фев 2013, 17:57

alexsis_76 писал(а):
Но, в любом случае, в импульсном режиме мы управляем нагрузками, которые не должны или не могут работать долго, значит, команда "отключить" должна иметь явный приоритет над командой "включить"
ну так вы посылаете команду на включение все включается если по прошествии времени не пришла комманда выключить выключаете сами , чем вам не приоритет
Но команда на включение приходит только 1 раз, а время удержания кнопки может быть разным
К примеру, одно нажатие соответствует открытию окна на 1см, а при таком подходе, чтобы открыть окно на 20 см,мне придется 20 раз нажать на кнопку, вместо того, чтобы удержывать ее нужное мне время, а это, согласитесь, не одно и то же)))

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 11 фев 2013, 19:34

Andrey_B писал(а):
reff писал(а): А что вы конкретно предлагаете для решения этой проблемы? И возможно ли решение вообще? Ведь вполне реальна ситуация, когда всего из двух пакетов последний по объективным причинам (проблемы с маршрутизатором) не дойдет. Даже если мы будем тем или иным образом передавать состояния входа. Это проблема конкретной реализации, когда такая ситуация может привести к катастрофе.
Что по-вашему может решить эту проблему?
А если мы кнопку подключим не к общему проводу, а к выходу генератора, которые формирует меандр, в таком случае,при нажатии кнопки, на вход МК будет постоянно поступать команды 1:0:1:0 и он будет формировать пакеты (вкл/выкл) с приходом каждого импульса на время нажатия кнопки.
Исполнительный модуль должен отработать в импульсном режиме на время, чуть большее периода импульса генератора. Если поступил следующий импульс- продолжаем удерживать, если следующего импульса нет- выключились через время Т(мс).
Андрей, что вы думаете по поводу такого подхода?

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

Re: Умный Дом по Ethernet

Сообщение Andrey_B » 11 фев 2013, 22:19

reff, на своих модулях повторить вашу ошибку не получилось.
Использовал вместо кнопки два многожильных оголенных провода, чтобы попытаться имитировать ненадежный контакт и дребезг.
Общее количество включений/выключений несколько тысяч. Ни один пакет не пропал, даже при очень частом переключении, какое только доступно человеческой руке.
а) возможно проблема у вас в чем-то другом (Ethernet, аппаратная часть модулей, например обвязка входов. О своей я писал подробно), кстати, у меня использовался обычный старый 100Мбит коммутатор D-Link из дешевой серии.
б) при необходимости железно переключать выход, вход лучше делать на этом же устройстве
в) использовать сервер, хотя бы в виде мини-ПК. Это даст дополнительно массу функционала и главное - позволит обеспечить интеллектуальную защиту от нежелательных ситуаций.

Сервер на базе Мини-ПК - это такое крохотное и незаметное устройство. Я не понимаю, зачем всеми силами стараться избежать его использования. Это мне напоминает попытку во что бы то ни стало сохранить карбюратор вместо внедрения ЭБУ и впрыска.

reff
Сообщения: 42
Зарегистрирован: 27 авг 2012, 02:53

Re: Умный Дом по Ethernet

Сообщение reff » 13 фев 2013, 03:19

Andrey_B писал(а):reff, на своих модулях повторить вашу ошибку не получилось.
Использовал вместо кнопки два многожильных оголенных провода, чтобы попытаться имитировать ненадежный контакт и дребезг.
Общее количество включений/выключений несколько тысяч. Ни один пакет не пропал, даже при очень частом переключении, какое только доступно человеческой руке.
Спасибо,это обнадеживает))) попробую копать глубже у себя.))
Andrey_B писал(а):а) возможно проблема у вас в чем-то другом (Ethernet, аппаратная часть модулей, например обвязка входов. О своей я писал подробно),
Ну я использовал плату KAB c 39 стр.форума. Как по мне, она разведена по всем правилам с соблюдением всех требований Datasheet обеих микросхем.
Да и с предыдущей прошивкой у меня вроде как проблем не возникало особых.
Andrey_B писал(а):б) при необходимости железно переключать выход, вход лучше делать на этом же устройстве
Честно говоря,ничего не понял... что именно вы имели в виду?
Andrey_B писал(а):в) использовать сервер, хотя бы в виде мини-ПК. Это даст дополнительно массу функционала и главное - позволит обеспечить интеллектуальную защиту от нежелательных ситуаций.
Я двумя руками за минисервер, но главная сложность заключается в том, что мои познания в программировании закончились на уровне Бейсика, и если внести какие-то незначительные изменения в код я еще могу, то написать программу с нуля- точно нет..((( Вот потому мне проще спаять, чем выучить язык программирования)))
Andrey_B писал(а): Сервер на базе Мини-ПК - это такое крохотное и незаметное устройство.
Это что-то типа Raspberry??
Ткните пожалуйста на конкретные примеры таких устройств, буду очень благодарен )

Ответить