Умный Дом по Ethernet

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
maxxir
Сообщения: 32
Зарегистрирован: 15 апр 2011, 12:42
Откуда: Тольятти

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

Сообщение maxxir » 18 апр 2011, 22:04

А чем не устраивает готовый модуль TRT-ETHERNET например на www.trt.ru. Сделать дешевле намного вряд ли выйдет, + там на плате
имеется разъем по SD карту, на которую можно сразу скидывать логи и держать содержимое микро - http(https) сервера. Стеки протокола
Ethernet и работа с FAT SD карты у Микрочипа бесплатны.

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

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

Сообщение Andrey_B » 18 апр 2011, 23:44

THK писал(а):Порт PB0 останется свободным? Может стоит его задействовать?
В текущей версии платы этот порт не выведен на разъем. В другой версии можно вывести.
В программе порты задаются следующим образом:

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

#define IO_SIZE 13
char *aio[IO_SIZE] = {"D0", "D1", "D3", "D4", "D5", "D6", "D7", "C0", "C1", "C2", "C3", "C4", "C5"};
Если будет какая-то иная реализация платы, достаточно просто указать нужный перечень свободных портов. Все остальное сработает автоматически.
THK писал(а):
Если сервер не ответил (он в дауне), то устройство будет в течение 3 секунд ждать ответа
3 секунды довольно долго... Возможно предусмотреть настройку этого параметра?
Это мысль. Хотя в целом сама по себе ситуация с отсутствием сервера в моем понимании является аварийной и тут не очень важно 1 или 3 секунды. Но одним байтом в EEPROM можно пожертвовать. ;)
THK писал(а): Тогда задача
Настройка в каких случаях отправлять информацию на доп. адрес (всегда или только когда основной сервер недоступен), сейчас всегда.
отпадает сама собой.
Если время = 0 отправить сразу, иначе подождать...
Я тут имел ввиду несколько другую логику. Вот, например, я считаю, что у меня сервер главный. И когда пришла информация с датчика протечки, сервер решает закрыть кран или нет. Сервер умный и он, например, может посчитать, что в ванной просто плещутся дети. Но вот сервер ушел покурить. МК не обладает всей полнотой картины и не может отличить шалости детей от шалостей стиральной машины или лопнувшего крана, тогда МК сам отправляет по сети команду приводу крана, на всякий пожарный. А сейчас получается, что URL, прописанный в поле Eth отправляется всегда. Если ориентироваться на описанный выше случай, отправлять сообщение на доп URL не нужно (так как сервер может принять одно решение, а МК противоположно). Но есть и другой момент. Например, мы хотим сделать систему, которая бы не завязывалась на сервер. Сервер осуществляет только сбор информации. Является, так сказать, большим братом, надзирателем, который все что-то пишет, конспектирует, но ничего не делает. В этом случае нужно отправить серверу команду для записи события в журнал, и обязательно отправить на доп. URL команду для выполнения нужного действия.
THK писал(а):
Вероятно придется парсить URL-доп. сервера, чтобы хранить IP-адрес в 4-х байтах вместо 15. и т.д.
Все устройства находятся в одной подсети с маской 255.255.255.0, можно отдельно хранить адрес сети (3 байта), а на хранение адреса устройства выделить 1 байт... ;)
Здравая мысль. Один минус - визуализация. Значит нужно где-то записать адрес сети (например в настройках). А в доп URL писать так: 15/sec/cmd=5:1. Здесь теряется читабельность, понятность. Можно подставлять в input адрес сети из настроек, но тогда пользователь может сильно расстроиться, если будет упорно писать один IP-адрес, а при сохранении у него будет выходить другой, забыв при этом о настройке адреса сети в основной конфигурации. В общем, подумать можно.

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

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

Сообщение Andrey_B » 19 апр 2011, 00:03

maxxir писал(а):А чем не устраивает готовый модуль TRT-ETHERNET
1. Умный дом своими руками.
2. Цена: 1414 руб. Atmega168+Enc28J60+MAGjack выйдут вдвое дешевле
3. Всю описанную выше логику точно также нужно было бы разрабатывать и для TRT-ETHERNET. TCP/IP стэк готовый был и у меня

Не вижу существенных преимуществ. Это вопрос не прошивки, а железа.
Единственный плюс - SD. Но, как можно убедиться, при желании можно обойтись и без него, ограничившись аскетичным "дизайном" страничек.
А можно потратить еще 50-100 руб и взять Atmega 328 или 644 и обойтись спокойно без SD.
Использовать же МК как полноценные хранилища данных с моей точки зрения совершенно неправильно.
Я же строю не автомат для полива огурцов, а систему Умного Дома - всего дома, со всем, что внутри, а также с гаражом и огородом. В моем понимании микродевайсы - это умные исполнители с ударением на слове исполнители. Да я много об этом писал. На микроустройствах невозможно и неинтересно строить сложные системы. Как ни крути, а головной мозг даже в человеке один, хотя почки, легкие, глаза, уши, руки, ноги (датчики и исполнители) - с запасом ;)

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

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

Сообщение THK » 19 апр 2011, 09:55

Я тут имел ввиду несколько другую логику. Вот, например, я считаю, что у меня сервер главный. И когда пришла информация с датчика протечки, сервер решает закрыть кран или нет. Сервер умный и он, например, может посчитать, что в ванной просто плещутся дети. Но вот сервер ушел покурить.
Вы меня не совсем поняли... Я имел ввиду, что команда в поле "Eth" выполняется, если сервер не ответил или время ожидания = 0. А если ответ есть, то ее игнорируем.
Сервер осуществляет только сбор информации. Является, так сказать, большим братом, надзирателем, который все что-то пишет, конспектирует, но ничего не делает. В этом случае нужно отправить серверу команду для записи события в журнал, и обязательно отправить на доп. URL команду для выполнения нужного действия.
Вы правы, сообщение серверу обо всех событиях должно отправляться в любом случае, даже если устройства работаю автономно, без его участия (ИМХО)... А обрабатывать событие Eth или нет можно ориентируясь на время ожидания и наличие ответа сервера.

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

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

Сообщение Andrey_B » 19 апр 2011, 11:21

THK писал(а):
Вы меня не совсем поняли... Я имел ввиду, что команда в поле "Eth" выполняется, если сервер не ответил или время ожидания = 0. А если ответ есть, то ее игнорируем.
Тут есть несколько возражений.
1. Таймаут определяет не только время, после которого отправляется сообщение на Eth, но и работу сценария, прописанного в Cmd (если сервер не ответил, включим лампочку). Когда таймаут равен 0 - то здесь может быть конфликт, когда основной сервер может выдать свой набор команд, а по умолчанию отработает свой. Понятно, что в этой ситуации нужно настраивать основной сервер так, чтобы он не выдавал какие-либо команды. Или же программировать прошивку так, чтобы при таймауте 0 обращение к основному серверу вообще не производилось. Но при таком подходе невозможно отправить информацию на 2 адреса, что может быть иногда полезным. Или же при при таймауте 0 игнорируем любые команды с сервера.
2. Мне видится все же намного более гибким другая настройка. Настройка таймаута общая (но не нулевая). Но у каждого входа индивидуально есть чекбокс. Отправлять Eth всегда или только при отсутствии сервера. Мне кажется это наиболее оптимальный и понятный подход. Если под чекбокс использовать не байт, а бит, это займет только 2 лишних байта в EEPROM.

maxxir
Сообщения: 32
Зарегистрирован: 15 апр 2011, 12:42
Откуда: Тольятти

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

Сообщение maxxir » 19 апр 2011, 15:58

Andrey_B писал(а):
maxxir писал(а):А чем не устраивает готовый модуль TRT-ETHERNET
1. Умный дом своими руками.
2. Цена: 1414 руб. Atmega168+Enc28J60+MAGjack выйдут вдвое дешевле
3. Всю описанную выше логику точно также нужно было бы разрабатывать и для TRT-ETHERNET. TCP/IP стэк готовый был и у меня

Не вижу существенных преимуществ. Это вопрос не прошивки, а железа.
Единственный плюс - SD. Но, как можно убедиться, при желании можно обойтись и без него, ограничившись аскетичным "дизайном" страничек.
А можно потратить еще 50-100 руб и взять Atmega 328 или 644 и обойтись спокойно без SD.
Использовать же МК как полноценные хранилища данных с моей точки зрения совершенно неправильно.
Я же строю не автомат для полива огурцов, а систему Умного Дома - всего дома, со всем, что внутри, а также с гаражом и огородом. В моем понимании микродевайсы - это умные исполнители с ударением на слове исполнители. Да я много об этом писал. На микроустройствах невозможно и неинтересно строить сложные системы. Как ни крути, а головной мозг даже в человеке один, хотя почки, легкие, глаза, уши, руки, ноги (датчики и исполнители) - с запасом
;)
Позвольте если мы говорим о собственноручном изготовлении устройства невопрос - то что стоит в TRT-ETHERNET обойдется мне по себестоимости рублей в 300. ;)
Ну то что ВЫ пока наконструировали "ляжет" при любом отказе мастера PC. Отказоустойчивость вашей системы равна 0 - все Ваши "исполнители" не имеют сценариев независимой работы. Или вот например захотел я поуправлять какими-то оконечными устройствами с IR или радио-пульта или некоего пульта местного управления из ЛЮБОГО места в доме - ВЫ тоже будуте "заводить" их обработку через PC? Не гибко получается ИМХО..

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

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

Сообщение Andrey_B » 19 апр 2011, 17:52

maxxir писал(а):Позвольте если мы говорим о собственноручном изготовлении устройства невопрос - то что стоит в TRT-ETHERNET обойдется мне по себестоимости рублей в 300. ;)
Если не трудно, дайте ссылки на российский прайс (желательно в одном магазине), где можно купить все комплектующие (в наличии, а не под заказ +12 недель), которые используются в TRT-ETHERNET за 300 руб. Обратите внимание, что в устройстве используется RG45 PulseJack, позволяющий обходится без внешнего трансформатора. Стоимость только одного разъема, судя по информации Digi-Key обойдется в $6.44 (примерно 186 руб). Это больше половины обозначенной суммы. А еще МК, конденсаторы, кварцевый генератор, стабилизатор питания, разъем для SD, плата, комплектующие для изготовления платы.
PIC18F67J60, использующийся в TRT-ETHERNET стоит в розницу порядка 250-320 руб. Можно купить за 180 в партиях от 8-10 штук, но мне нужен один. У меня никак не получается 300 руб. Возможно, я просто не знаю дешевых магазинов или не умею считать.
maxxir писал(а):Ну то что ВЫ пока наконструировали "ляжет" при любом отказе мастера PC. Отказоустойчивость вашей системы равна 0 - все Ваши "исполнители" не имеют сценариев независимой работы. Или вот например захотел я поуправлять какими-то оконечными устройствами с IR или радио-пульта или некоего пульта местного управления из ЛЮБОГО места в доме - ВЫ тоже будуте "заводить" их обработку через PC? Не гибко получается ИМХО..
Я бы не хотел, чтобы этот сайт и форум превращался из дискуссии по существу в треп на тему у кого что "ляжет" и когда "встанет".
Приводите пожалуйста весомые доводы и аргументы.

ПК - это образное понятие. Можно использовать высоконадежные промышленные контроллеры - те же самые ПК, но разработанные специально для работы в тяжелых условиях (высокие или низкие температуры, нагрузка на систему) круглосуточно. Можно использовать безвентиляторные системы, твердотельные накопители, ОС реального времени, зеркалирование, дублирование, резервирование. Обязательно предусматривается резервирование электропитания.
Отказоустойчивость - это оценка конкретной реализации, а не подхода в целом. Низкая отказоустойчивость может быть даже у молотка, если сделать ему ручку из трухлявого дерева.
Вы, видимо, очень невнимательно читаете эту тему. Исполнитель, который мы здесь обсуждаем как раз имеет сценарий независимой работы и вполне может обходиться без центрального сервера. Более того, исполнители могут по сети давать команды друг другу в случае, когда сервер не доступен. Прочитайте пожалуйста, ветку еще раз.
Центральное управление как раз и предполагает максимальную гибкость системы, ибо логика отдельных элементов всегда ограничена а) аппаратными ресурсами элемента б) информацией, с которой работает элемент. Если центральный процессор (назовем его так) имеет полное представление о системе, то конкретный элемент всегда оперирует в каких-то определенных жестких рамках.
Например, я хочу, чтобы управление освещением у меня зависело от времени суток, времени года, от количества людей в помещении, от моего настроения в конце концов. Центральный процессор, используя сложные экспертные алгоритмы, данные в БД, видео и аудио данные может выявить даже настроение людей или определить состояние праздника в доме. В этом случае он может включить праздничный сценарий освещения, сформировать соответствующий настроению плей-лист и т.д.
Все это можно теоретически реализовать и в распределенных системах, но это в значительной степени более сложная и нетривиальная задача. Работая же с ПК, используя Linux, скриптовые языки программирования, все это делается даже обычным пользователем со знанием компьютера чуть выше среднего (типа как я). Поэтому я и сказал, при этом подчеркнул, что именно для меня, создавать такую систему интереснее.

Насчет "IR", "радио пульта" и т.д. С моей (подчеркиваю, с моей) точки зрения технологии 20-летней давности уходят в прошлое. Полагаю, очень скоро мы будем иметь возможность полноценного управления системой с помощью русской речи. Также, не будет миллионов пультов (тем более IR). Будет один планшет или тот же коммуникатор. С помощью которого по какому-либо настоящему или будущему стандарту 802.* (например, сейчас это Wi-Fi) будет управляться все в доме. От телевизора до системы отопления, водоснабжения и освещения. Причем управление будет не слепым, как это было всегда, а визуальным. Один прибор - и многофункциональный пульт и телефон и телевизор (IPTV) и браузер. Все сейчас интегрируется вокруг Интернет-технологий. Вот мой спутниковый ресивер уже сейчас легко управляется через Ethernet. Извините, но делать устройства на архаичных технологиях я лично считаю пустой тратой времени.
Я не знаю что в вашем понимании "заводить обработку через PC". Я множество раз говорил, что мне интересна система в целом. ПК в этой системе только часть. Средства коммуникации между элементами системы - еще одна часть. В системе могут использоваться разные сети, разные технологии, разные топологии и идеологии. Но все это так или иначе должно быть связано между собой. В этой ветке мы обсуждаем возможность применения сети Ethernet (в том числе ее радиоверсий) в системах Умный Дом. Преимущества Ethernet, в отличие от 1-wire является то, что устройства могут передавать сообщения без участия мастера, контроллера. Здесь обсуждаются варианты, когда ПК вовсе нет или когда ПК выступает лишь в роли логгера, журнала, при этом сам не отдает никаких указаний. Где вы тут увидели "негибкость" я не знаю.

maxxir
Сообщения: 32
Зарегистрирован: 15 апр 2011, 12:42
Откуда: Тольятти

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

Сообщение maxxir » 19 апр 2011, 22:44

Andrey_B писал(а):
maxxir писал(а):Позвольте если мы говорим о собственноручном изготовлении устройства невопрос - то что стоит в TRT-ETHERNET обойдется мне по себестоимости рублей в 300. ;)
Если не трудно, дайте ссылки на российский прайс (желательно в одном магазине), где можно купить все комплектующие (в наличии, а не под заказ +12 недель), которые используются в TRT-ETHERNET за 300 руб. Обратите внимание, что в устройстве используется RG45 PulseJack, позволяющий обходится без внешнего трансформатора. Стоимость только одного разъема, судя по информации Digi-Key обойдется в $6.44 (примерно 186 руб). Это больше половины обозначенной суммы. А еще МК, конденсаторы, кварцевый генератор, стабилизатор питания, разъем для SD, плата, комплектующие для изготовления платы.
PIC18F67J60, использующийся в TRT-ETHERNET стоит в розницу порядка 250-320 руб. Можно купить за 180 в партиях от 8-10 штук, но мне нужен один. У меня никак не получается 300 руб. Возможно, я просто не знаю дешевых магазинов или не умею считать.
Ок считаю по ценам Тритона:
PIC18F67J60 - 138 р.
ENC28J60-I/SO - 86 р.
J00-0063NL Разъем RJ-45, встр. трансф-р 1СТ:2.5 / 1СТ:1, св-диоды G+Y - 106 р.
Кварцы, разьемы, текстолит не считаю у меня их полно от предыдущих наработок ну если их прибавить ~ 50 р.

Итого ~ 350 р. Пардон ошибся на 50 р. :D

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

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

Сообщение Andrey_B » 19 апр 2011, 23:18

maxxir писал(а): Ок считаю по ценам Тритона:
PIC18F67J60 - 138 р.
ENC28J60-I/SO - 86 р.
J00-0063NL Разъем RJ-45, встр. трансф-р 1СТ:2.5 / 1СТ:1, св-диоды G+Y - 106 р.
Кварцы, разьемы, текстолит не считаю у меня их полно от предыдущих наработок ну если их прибавить ~ 50 р.

Итого ~ 350 р. Пардон ошибся на 50 р. :D
Спасибо за ссылку на Тритон. Надо попробовать там что-нибудь заказать, если, конечно, они работают с регионами.
Вот вы и ответили на свой же вопрос: "А чем не устраивает готовый модуль TRT-ETHERNET. Сделать дешевле намного вряд ли выйдет". Получается, выйдет, в 4 раза.
Надеюсь в вышеперечисленном списке ENC28J60 указана справочно и вы не собираетесь ее использовать совместно с PIC18F67J60.

Но, впрочем, эта ветка совсем не об этом. Готового устройства, а точнее прошивки с обсуждаемым здесь функционалом нет. Никакой разницы PIC это будет или Atmega нет. Думаю, не составит большого труда переделать и скомпилировать прошивку для PIC. Да и переделать не успеем. Думаю, нужно активно смотреть в сторону RISC/ARM и 32-битных МК.

maxxir
Сообщения: 32
Зарегистрирован: 15 апр 2011, 12:42
Откуда: Тольятти

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

Сообщение maxxir » 20 апр 2011, 00:01

Andrey_B писал(а):
Спасибо за ссылку на Тритон. Надо попробовать там что-нибудь заказать, если, конечно, они работают с регионами.
Вот вы и ответили на свой же вопрос: "А чем не устраивает готовый модуль TRT-ETHERNET. Сделать дешевле намного вряд ли выйдет". Получается, выйдет, в 4 раза.
Надеюсь в вышеперечисленном списке ENC28J60 указана справочно и вы не собираетесь ее использовать совместно с PIC18F67J60.

Но, впрочем, эта ветка совсем не об этом. Готового устройства, а точнее прошивки с обсуждаемым здесь функционалом нет. Никакой разницы PIC это будет или Atmega нет. Думаю, не составит большого труда переделать и скомпилировать прошивку для PIC. Да и переделать не успеем. Думаю, нужно активно смотреть в сторону RISC/ARM и 32-битных МК.
Поэтому Тритон и рекомендую, что высылают все наложкой в регионы. Ко мне в Тольятти все доходит
без проблем. RISC/ARM - не вижу смысла на нижнем уровне ковыряться с шагом 0.5 мм - это не для
любительских разработок, избыточны они . Нижний уровень микросистемы на контроллерах (ATMEL или MicroChip), что-то посерьезнее проще
воткнуть сразу PC на Atom'e + ITX формфактор и тот же LINUX, правда пишу не на скриптах, а исторически сложилось
работал на Delphi - сейчас Lazarus.
А так что Атмел что Микрочип особой разницы нет - функционал контроллеров примерно одинаков, раньше везде применял AVR в связке с gcc.
Но последний год-два 8-ми битка у Атмела значительно подорожала, + поработал с PIC16,24 (до 40 MIPS - 16 бит SOIC и DIP наше все..)- понравилось
+ Тритон вот этот попался. В общем сейчас в новых разработках стараюсь применять PIC.

PS.
Еще одно уточнение:PIC18F67J60 уже содержит Ethernet контроллер на борту - ему ENC28J60 ненужен, так что вычитаем из цены платы еще 86 руб :D

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

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

Сообщение THK » 23 апр 2011, 10:10

Здравствуйте Андрей!
Есть новости по проекту?

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

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

Сообщение Andrey_B » 24 апр 2011, 11:12

Здравствуйте, Виктор!

Пока только был модифицирован испытательный стенд. Дело в том, что кнопки у меня были подключены к портам D0 и D1. А для того, чтобы проверить полноценную работы по опросу кнопок (регистров как PIND, так и PINC) были внесены изменения в конструкцию, позволяющие подключать любую кнопку/симистор/АЦП к любому из доступных портов. К сожалению установка и испытания Asterisk несколько вклинились в ход работ по данному направлению ;)

Но я предполагаю, что как только будет смонтирован новый 19" шкаф с оборудованием, (думаю, ближе к лету, шкафы и комплектующие уже распакованы и ждут своей очереди) основными исполнителями будут именно эти модули. Тогда и можно будет проверить их в реальной работе.

А альфа-версию исходников выложить?

Датчик пришел. Большое спасибо! Буду думать как его теперь использовать.

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

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

Сообщение THK » 24 апр 2011, 18:08

К сожалению установка и испытания Asterisk несколько вклинились в ход работ по данному направлению ;)
Я до домашней АТС еще не дорос, но с интересом слежу за темой.
А альфа-версию исходников выложить?
Думаю, пока, преждевременно... Мои деталюшки еще в пути, к концу мая (с учетом праздников) приедут.
Датчик пришел. Большое спасибо! Буду думать как его теперь использовать.
Рад, что нормально доехал...

maxxir
Сообщения: 32
Зарегистрирован: 15 апр 2011, 12:42
Откуда: Тольятти

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

Сообщение maxxir » 02 май 2011, 11:12

Еще одно "сверхбюджетное"решение для Сети Ethernet:
детальки элементарный PIC18F1320 + К1554ЛП5 + RJ45 c трансформатором.
Как я понял чип не имеет аппаратного контроллера Ethernet - вся обработка
сетевых протоколов на программном уровне.

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

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

Сообщение Andrey_B » 19 май 2011, 00:11

Так как раньше у меня кнопки висели только на портах D, модифицировал прошивку для работы (именно с кнопками) как с портами D, так и портами C. Механизм debouncing'а требует памяти для хранения состояние кнопок. Для PINC пришлось пожертвовать еще 4 байтами оперативной памяти.
Теперь прошивка работает нормально с любыми портами.
Выкладываю исходники:
Прошивка для AVR-Ethernet

Сразу оговорюсь, я а) не профессионал; б) не знаток C; в) это первая программа для AVR
Но, черт побери, она работает!
Следующим шагом в планах, поддержка АЦП. Мне это крайне важно для работы с датчиком давления воды.

stanislav.l
Сообщения: 90
Зарегистрирован: 17 май 2011, 13:25
Откуда: СПб
Контактная информация:

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

Сообщение stanislav.l » 19 май 2011, 00:56

Может и не совсем кстати... Я не понял - а зачем понадобилось впихивать в AVRку целый веб-сервер ?! Разве что для тренировки ?
Ведь рядом, на этом же эзернете, живет полноценный апач, с пхп, мускулем, и любой другой требухой. (Причем логика работы системы такова, что если этот "большой" сервер ляжет - в конфигурировании платки по http-протоколу попросту не будет никакого практического смысла) Вопрос: почему бы не держать "главную страницу" (с птичками, цветочками и прочими флешками) на "большом" сервере, а из нее уже делать махонькие ссылочки на подопытную платку ?

А если пойти еще дальше - я бы вообще управление делал на UDP ... С ним проще! ACK сделать "на уровне приложений", там где оно необходимо, а чаще всего ведь достаточно просто послать одну команду 3 раза, чтоб быть уверенным, что она дойдет. От датчиков если сбор данных, та же температура - да наплевать если один пакет потеряется.

Хочется конфигурить через веб-личико - пишем один раз утилитку типа udp-send-data dest-ip:dest-port data-bytes-hex, и через скрипты с ней работаем. Защита: достаточно, чтоб контроллер слушался только тех команд, что пришли с IP "большого" сервера. (Ситуацию когда злобный хацкер подключился к локальной сети дома с целью вывода из строя отопления, считаем параноидальной и не рассматриваем)

И сколько памяти зато освободится ?! :)

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

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

Сообщение Andrey_B » 19 май 2011, 01:39

stanislav.l писал(а):Может и не совсем кстати... Я не понял - а зачем понадобилось впихивать в AVRку целый веб-сервер ?! Разве что для тренировки ?
Ведь рядом, на этом же эзернете, живет полноценный апач, с пхп, мускулем, и любой другой требухой. (Причем логика работы системы такова, что если этот "большой" сервер ляжет - в конфигурировании платки по http-протоколу попросту не будет никакого практического смысла) Вопрос: почему бы не держать "главную страницу" (с птичками, цветочками и прочими флешками) на "большом" сервере, а из нее уже делать махонькие ссылочки на подопытную платку ?
Когда-то я, возможно, также рассуждал. Зачем эта хрень? Ее надо отпилить, все равно не используется. А потом, когда настал крайний случай я понял, что такое универсальность, совместимость, взаимозаменяемость, гибкость. Конечно, будет работать на UDP, конечно, будет работать и без Ethernet, конечно, будет работать вообще на лапше с самописным протоколом и занимать 1Кб памяти.
Только у меня другая задача, у меня другая идеология, у меня другие принципы.
Я считаю, что в Умном Доме необходимы такие устройства, которые могут принимать команды с ЛЮБОГО устройства в доме (компьютер, телефон, смартфон, планшетный ПК, аналогичное другое устройство), посылать команды ЛЮБЫМ устройствам Дома (тот же список). Устройство должно управляться как без участия сервера (с любого усройства, из Интернет, из локальной сети БЕЗ какого-либо дополнительного ПО, скриптов и т.д.), так и с помощью команд с сервера. Устройство должно интегрироваться в ЛЮБУЮ систему, CMS, набор скриптов максимально стандартным способом. Устройство должно быть трансформером, который подстраивается под любые задачи, причем в режиме он-лайн и без переделки кода.
stanislav.l писал(а):Причем логика работы системы такова, что если этот "большой" сервер ляжет - в конфигурировании платки по http-протоколу попросту не будет никакого практического смысла
Совершенно неверная логика.
Если сервер ляжет, я могу с любого устройства, поддерживающего HTTP (а сейчас это практически все устройства) зайти на железку и управлять ей.
Если сервер ляжет, устройство отработает сценарий по умолчанию.
Если сервер ляжет, устройство может отослать по TCP/IP команды другому такому же устройству без участия сервера
Если сервер ляжет, устройство может работать с резервным сервером, который может располагаться как в локальной сети, так и в Интернет.
Если вы не видите практического смысла - это не значит, что его нет. Примеры с аварийными ситуациями я тут уже приводил несколько раз.
stanislav.l писал(а):А если пойти еще дальше - я бы вообще управление делал на UDP ... С ним проще! ACK сделать "на уровне приложений", там где оно необходимо, а чаще всего ведь достаточно просто послать одну команду 3 раза, чтоб быть уверенным, что она дойдет. От датчиков если сбор данных, та же температура - да наплевать если один пакет потеряется.
Вот я, к примеру, говорю, что захотел сделать автомобиль своими руками и сделал его согласно поставленному самому себе ТЗ. Вы говорите, дескать, а зачем мне, собственно автомобиль, прекрасная штука мотоцикл с коляской. И что мне прикажете делать? Переделать уже собранный автомобиль в мотоцикл с коляской, который к тому же не удовлетворяет никаким моим требованиям? ;)
Конечно, можно 3 раза UDP, конечно, можно и велосипед с четырьмя колесами. Ведь с ним проще, масло менять не надо, бензин не нужен, ТО проходить не надо и права не нужны, для здоровья, опять же полезно. А то, что в соседнюю область на нем надо ехать 2 недели вместо одного дня, и, случись чего, проще будет вызвать такси, чем крутить педали до аптеки, это "наплевать". Ну так вот у меня другие представления.
stanislav.l писал(а):И сколько памяти зато освободится ?! :)
Да-да, лучше пусть в МК будет 15Кб из 16Кб свободной памяти. Именно для этого ее туда производитель и поставил.

stanislav.l
Сообщения: 90
Зарегистрирован: 17 май 2011, 13:25
Откуда: СПб
Контактная информация:

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

Сообщение stanislav.l » 19 май 2011, 03:03

Andrey_B писал(а):
stanislav.l писал(а): Я считаю, что в Умном Доме необходимы такие устройства, которые могут принимать команды с ЛЮБОГО устройства в доме (компьютер, телефон, смартфон, планшетный ПК, аналогичное другое устройство), посылать команды ЛЮБЫМ устройствам Дома (тот же список). Устройство должно управляться как без участия сервера (с любого усройства, из Интернет, из локальной сети БЕЗ какого-либо дополнительного ПО, скриптов и т.д.), так и с помощью команд с сервера. Устройство должно интегрироваться в ЛЮБУЮ систему, CMS, набор скриптов максимально стандартным способом. Устройство должно быть трансформером, который подстраивается под любые задачи, причем в режиме он-лайн и без переделки кода.
Ну, тут у нас, похоже, неустранимые идеологические разногласия :)
Я - параноик по должности, наличие у любого устройства лишнего интеллекта (=превышающего сложность решаемой задачи), лишней сложности, лишней свободы действий - меня нервирует. Я, например, привык к тому, что нажатие на кнопку питания должно немедленно и безоговорочно обесточить устройство. А то что нынешние устройства в ответ начинают совершать массу операций, и только потом [может быть] отключают питание - меня нервирует, и нервировать будет пока не помру. Я понимаю, что это рационально для "среднего" пользователя, который по определению дурак (=глупее используемого им устройства), но это-то меня и нервирует - что устройство позволяет себе свое решение ставить выше моего :)

Просто я своими глазами видел и ощущаю что это такое - когда система начинает "вести себя". Просто случайное совпадение во времени - 1 аппаратная ошибка + 1 ошибка пользователя + 2 совершенно штатных события, случайно выпавших на этот момент - и, казалось бы, жестко детерминированная система совершает абсолютно непредсказуемую последовательность действий! А система, по нынешним меркам, примитивная, любой мобильник на порядок сложнее. Хорошо когда система может максимум испортить бумагу в принтере, либо разбудить хозяина ложным звонком. Но в Вашем случае система теоретически может устроить и потоп и пожар.

Только не говорите мне, что "вероятность сбоя учтена". Вы анализировали поведение системы при возникновении одного (любого) сбоя - в этом я не сомневаюсь. А анализировали ли Вы поведение системы при одновременном возникновении двух сбоев ? Нет - потому что число таких пар уже огромно и анализу не поддается. Если роль первого сбоя сыграет обрыв провода, то вторым "сбоем" может оказаться, например, необнаруженное вовремя неразличение "?" и "&", или нажатие с похмелья не на ту кнопку. Короче, вероятность непредсказуемого поведения системы и так есть всегда, но, наращивая сложность системы, Вы эту вероятность увеличиваете.

По поводу "демократии" между устройствами: я считаю, что должна быть жесточайшая иерархия; если командир убит - командование принимает заранее определенный заместитель, иначе - ни-ни! Демократию - душить на корню. Специально пресекать возможность слушать команды от кого-либо кроме заранее определенного списка. Любые неиспользуемые сегодня умения - давить.

Ну да бог с ним, моя паранойя - она моя личная, Вас за нее агитировать не собираюсь :)

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

Ладно, я сказал, что-то Вы услышали, больше эту тему затрагивать не буду :) Время нас рассудит :)

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

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

Сообщение THK » 19 май 2011, 07:42

Andrey_B писал(а):Так как раньше у меня кнопки висели только на портах D, модифицировал прошивку для работы (именно с кнопками) как с портами D, так и портами C. Механизм debouncing'а требует памяти для хранения состояние кнопок. Для PINC пришлось пожертвовать еще 4 байтами оперативной памяти.
Теперь прошивка работает нормально с любыми портами.
Выкладываю исходники:
Прошивка для AVR-Ethernet
Сразу хочу задать несколько вопросов:
В какой среде шла разработка?
Как сконфигурированы фьюзы?
С каким уровнем оптимизации компилировалась прошивка? (В некоторых случаях это влияет на ее работоспособность)
Тактирование МК от кварца или от ENC28J60 ?
И немного странный вопрос. :) Не могли бы Вы выложить бинарник прошивки?

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

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

Сообщение Andrey_B » 19 май 2011, 12:26

stanislav.l писал(а):Я - параноик по должности, наличие у любого устройства лишнего интеллекта (=превышающего сложность решаемой задачи), лишней сложности, лишней свободы действий - меня нервирует. Я, например, привык к тому, что нажатие на кнопку питания должно немедленно и безоговорочно обесточить устройство. А то что нынешние устройства в ответ начинают совершать массу операций, и только потом [может быть] отключают питание - меня нервирует, и нервировать будет пока не помру.
Понятие "лишний" интеллект в данном случае весьма условно. То, что вы считаете "лишним", другой пользователь посчитает удобным, а производитель технологичным.
С вашей психологией нужно воздержаться от управления современным автомобилем. Ведь в нем электронная педаль газа, электронный блок управления двигателем, напичканная электроникой тормозная система, роботизированная коробка передач. И поверьте, современный автомобиль со всем этим "лишним" интеллектом гораздо надежнее, экономичнее, удобнее и безопаснее доисторических карбюраторов, паровых машин и средств передвижения с ножным приводом (нажал - едешь). Вам не следует ездить в лифтах или пользоваться современными телевизорами, ведь любая ваша команда пройдет не одну микросхему, прежде чем достигнет цели.
Я с пониманием отношусь к любой точке зрения, но, тем не менее, не считаю целесообразным брать в руки каменный топор и переселяться в пещеру.
stanislav.l писал(а):Я понимаю, что это рационально для "среднего" пользователя, который по определению дурак (=глупее используемого им устройства), но это-то меня и нервирует - что устройство позволяет себе свое решение ставить выше моего :)
Не очень люблю абстрактно-философских рассуждений по поводу конкретных решений. Обсуждаемое здесь устройство очень простое по своей логике. Пользователь заранее задает поведение устройства. Если сработал выключатель, спросить сервер что делать. Если сервер не отвечает включить ассоциируемую с этим выключателем лампочку. Никакого "умнее" или "глупее". Все очень жестко и определенно.
stanislav.l писал(а): Просто я своими глазами видел и ощущаю что это такое - когда система начинает "вести себя". Просто случайное совпадение во времени - 1 аппаратная ошибка + 1 ошибка пользователя + 2 совершенно штатных события, случайно выпавших на этот момент - и, казалось бы, жестко детерминированная система совершает абсолютно непредсказуемую последовательность действий! А система, по нынешним меркам, примитивная, любой мобильник на порядок сложнее. Хорошо когда система может максимум испортить бумагу в принтере, либо разбудить хозяина ложным звонком. Но в Вашем случае система теоретически может устроить и потоп и пожар.
Каждый человек в своей жизни что-нибудь видел. Еще говорят "у страха глаза велики". Но давайте будем реалистами и смотреть на все трезвым взглядом. Вот я описал о своей системе на сайте максимально подробно. Скажите, как в моем случае система может устроить потоп или пожар? Возможно, я чего-то не учитываю и мне нужно срочно принять какие-то меры. Я всегда рад выслушать конкретные предложения и обоснованные возражения.
stanislav.l писал(а): может оказаться, например, необнаруженное вовремя неразличение "?" и "&", или нажатие с похмелья не на ту кнопку. Короче, вероятность непредсказуемого поведения системы и так есть всегда, но, наращивая сложность системы, Вы эту вероятность увеличиваете.
Я не понимаю что такое "сложность" системы. УЗО - это простое устройство или сложное? Микроволновая печь - это простое устройство или сложное? 28-ногая микросхема - это простая деталь или сложная? Intel Core i5 - это простой процессор или сложный? А котел отопления? А спутниковый ресивер? А наручные часы? А молекула ДНК? "Сложность" - это свойство объекта, которое описывается субъективными и, зачастую, мифологизированными представлениями человека, но не природой как таковой.
Моя система не делает ничего такого, что не мог бы делать человек. А если действия системы могут приводить к каким-то последствиям, то нужно смотреть не на электронную систему управления, а на "механику". Например, если ЭБУ автомобиля может на ходу заблокировать коленвал, то значит двигатель такой спроектирован неправильно и эксплуатации не подлежит. Если система Умный Дом может что-то спалить, вопросы надо задавать не системе Умного Дома, а тем устройствам, которыми она управляет.
stanislav.l писал(а): По поводу "демократии" между устройствами: я считаю, что должна быть жесточайшая иерархия; если командир убит - командование принимает заранее определенный заместитель, иначе - ни-ни! Демократию - душить на корню. Специально пресекать возможность слушать команды от кого-либо кроме заранее определенного списка. Любые неиспользуемые сегодня умения - давить.
Не бывает одного решения на все случаи жизни. Не бывает таблетки от всех болезней. Если пользователю нужно всего одно такое устройство для того, чтобы иметь возможность управлять/опрашивать устройство из локальной сети и Интернета, ему не нужен никакой сервер. Также многие пользователи не разделяют того мнения, что всем должен управлять сервер. Нужно отталкиваться от реальной задачи, имея ввиду, что подобное устройство может быть использовано в схемах как с сервером, так и без сервера, как одно единственное в сети, так и группами.
Простой пример с протечкой. Сервер вышел из строя, его заместитель тоже, но если устройство смогло определить протечку (стало быть оно еще работает) целесообразно при отсутствии сервера и его заместителя попытаться послать SOS (команду закрытия крана на подаче) другому аналогичному устройству. Эта логика настраивается пользователем посредством Web-интерефейса. Не вижу здесь существенных минусов. А вот плюс может быть очень большой.
stanislav.l писал(а): Если бы в качестве "аварийного интерфейса" Вы продемонстрировали жестяную коробку с рядами тумблеров - я бы это понял :) Но веб-интерфейс, для доступа к которому Вам все равно нужен компьютер (даже если он зовется "смартфон") - позвольте на это скорчить самую ехидную из моих ухмылок :)
Я не увидел в вашем ответе каких-либо серьезных аргументов или рациональных доводов. Ваш ответ строится на "интуитивных ощущениях" и "эмоциях".
Web-интерфейс, а соответственно поддержка стэка TCP/IP в данном типе устройств требуется:
1. Для конфигурирования устройства без изменениях исходных кодов, без перепрошивки. Любая настройка предполагает наличие интерфейса между пользователем и устройством, будь то HTTP или набор кнопок, диодов или звуковых сигналов. На текущий момент я не вижу ничего лучшего, чем Web. Он стандартизован, поддерживается массой устройств. Программатор может сломаться, я могу его потерять. Web-интерфейс доступен всегда.
2. Для управления устройством пользователем. Здесь аргументы такие же как в пункте 1. Например, я выключателем включил свет в кабинете на 2 этаже. А потом забыл выключить. Я могу сделать это с с 1 этажа любым "пультом" из Интернета напрямую, без всякого сервера. (если у меня его нет). owfs имеет owhttpd. Казалось бы, зачем? Однако в режиме разработки (а мы здесь говорим о постоянном развитии), отладки, каких-то непредвиденных ситуациях, первое, что часто наиболее доступно - это HTTP. Для SSH нужно искать и запускать клиент, заходить с нужными правами, писать команды. А здесь пару кликов, чтобы понять что к чему. Это просто удобно. Это из реального опыта.
3. Для управления устройством сервером. Сервер на самом деле получает и отправляет команды устройству также по HTTP. Во-первых, это TCP/IP. Во-вторых, это максимально облегчает разработку программных кодов на сервере. Можно посылать команды с помощью односложных PHP-скриптов, Perl, Python, а можно использовать обычные команды wget, curl, links. Отправить HTTP запрос из Linux можно десятками способов. В каждом языке программирования несколько библиотек, классов и т.д. для работы с HTTP. HTTP для PHP родная среда. Сервер, принимающий команды от устройства по протоколу HTTP - это пара строк совершенно элементарного кода. Это быстро, это удобно, это надежно, это просто.

Мне кажется я достаточно потратил времени и привел веские аргументы, что, надеюсь, позволит если и не разделять, то хотя бы относится к данному подходу без ехидных и не очень ухмылок.
stanislav.l писал(а):Ладно, я сказал, что-то Вы услышали, больше эту тему затрагивать не буду :) Время нас рассудит :)
Я не понял о чем должно судить время и мне непонятны такие аллегории. Но мне понятно, когда когда автомобиль комфортный и когда он хорошо едет, мне приятно пользоваться продуманными с эргономической и гибкими с функциональной точки зрения устройствами. Мне не нужно, чтобы меня судило время или другие идеалистические единицы. В то же время я в состоянии рассказать почему тот или иной предмет мне удобен.

Ответить