Беспроводная сеть для умного дома. Выбор железа.

Тема в разделе "Проводная и беспроводная связь", создана пользователем vladgen-nk, 5 мар 2015.

?

Выбор аппаратной части сети.

  1. 433Mhz

    7,7%
  2. nRF24L01+

    53,8%
  3. ESP8266

    30,8%
  4. RS-485 (провода)

    38,5%
  5. I2C (провода)

    7,7%
Можно выбрать сразу несколько вариантов.
  1. vladgen-nk

    vladgen-nk Нуб

    Добрый день.
    У меня идет строительство двухэтажного дома. Хочу рассмотреть возможность построения "умного дома" на arduino.
    Сам в прошлом программист АСУТП, но опыта работы с arduino еще нет. Только начинаю осваивать.
    Планирую, что будет одно головное устройство (master) и множество мелких ардуин (slave). Количество еще не просчитывал, думаю около 20 надо будет.
    Дальность между мастером и слевами будет не более 10 метров.
    В начале хотел делать проводную сеть. Сейчас подумываю о беспроводной.
    В интернете нашел три бюджетных варианта построения сети.
    - 433Mhz RF transmitter and receiver kit - 100 руб.
    - nRF24L01+ - 2.4 Ггц. - 100 руб.
    - ESP8266 - WiFi - 200 руб.

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

    С Уважением, Владимир.
     
  2. geher

    geher Гуру

    Первое, если выбирать радио, то, как мне кажется, лучше все-таки nRF24L01, несмотря на то, что данные радиомодули весьма капризны и не самые простые в использовании.
    433Mhz сильно зашумлен, в нем работает куча всего, от метеодатчиков до детских игрушек.
    WiFi тоже нормальное решение, особенно если в доме уже есть WiFi сеть. Но оно дороже и, если не ошибаюсь, жрет больше энергии. Да и управляется, как мне кажется, немного сложнее. Кстати, у заявленных WiFi устройств на борту есть собственный микроконтроллер, так что если устройство достаточно простое, то дополнительная ардуина может не понадобиться. Другой вопрос, как это дело программировать, есть ли доступные средства.
    Можно взять nRF24LE1, та же nRF24L01, но с МК на борту. Правда, не AVR.

    Второе, шифрование сделать можно. Какой-нибудь серьезный алгоритм (AES, ГОСТ) ардуина, скорее всего, не потянет. Но закрыть простенькой псевдослучайной последовательностью завсегда можно. Конечно, специалисты взломают на раз, но простым "пионерам" без шансов.
    Если использовать WiFi, то при использовании WPA2 шифрования радио будет по жизни достаточно хорошо зашифровано.
    Сканирование устройств в сети сделать можно. Простым периодическим опросом по адресам. Или периодической диагностической посылкой со стороны исполнительного устройства на центральное.
    Елинственное, что потребуется, назначать каждому устройству уникальный адрес.

    Третье. Провода тоже неслабо излучают. Их, правда, можно экранировать. И разводку лучше спланировать в самом начале строительства. А по поводу радио, если у вас уже есть WiFi роутер, и мобильный телефон, то можно не беспокоиться. Другие устройства намного больше не добавят. Если все-таки провода, то I2C не стоит. Оно не рассчитано на длинные коммуникации. Лучше старый добрый RS-485.
     
    Последнее редактирование: 5 мар 2015
    dealpa нравится это.
  3. cod678

    cod678 Нуб

    Шифровать команду на открытие двери не только бесполезно но в принципе особо и незачем. Скажем смотрите, Вы посылаете с брелка-ключа команду OPEN чтобы открыть дверь. Её можно перехватить и послать дому и двери откроются. Теперь, если Вы зашифруете OPEN скажем вот так NEPO, послав такую команду ваш дом её расшифрует в OPEN и откроет дверь, но и взломщику не надо знать что же там зашифровано в NEPO и каким алгоритмом, достаточно просто перехватить ваше зашифрованное сообщение NEPO и его же подсунуть вашему дому, ваш дом сам его расшифрует и откроет двери.
    На открытие дверей надо делать типа имобилайзера в машине. Вы посылаете команду с брелка-ключа дому OPEN, а ваш дом спросит, а скажи мне пароль под номером 345, то есть пошлёт запрос брелку-ключу типа GET_PASS_345 и уже ваш ключ брелок пошлёт пароль PASS_12345.
    Тогда дом узнает что это точно Вы и откроет двери. В таком случае даже если я перехвачу команду на открытие двери и пошлю её, дом в другой раз уже может и должен запросить пароль под другим номером, например 236, а я его не зная ничего уже не смогу сделать, ну разве что послать что-то надеясь что попаду пальцем в небо.
    + ещё сделать что если ключ 3 раза отвечает неверно, то приостанавливать запрос у ключа пароля на 10 или 20 минут. Таким образом нельзя будет и перебирать пароли очень быстро, а только по нескольку в день, и если таких паролей в брелке-ключе несколько тысяч, то уже такой взлом почти нереален.
    И ничего не надо шифровать всё прозрачно перехватывай смотри.
    То есть все команды на выполнение в доме каких либо действий бесполезно и незачем шифровать, последовательность сигналов вроде единичек и ноликов всегда можно перехватить и сымитировать, лучше делать ответные запросы на устройства которые их посылают и запрашивать пароли (причём чтобы они подолгу не повторялись как уже написано выше, не один пароль на все операции, иначе его тоже можно просто перехватить и потом послать), просто чтобы знать свой или чужой что-то хочет в доме включить, выключить или открыть. А вот данные температуры, или фотографии комнаты с камер надо шифровать. То есть те данные, которые никуда не подставляются, и которыми ничего не выполняется в доме, а которые сами представляют большую ценность.
    Во всяком случая я свою систему умного дома делаю по такому принципу.
     
    Последнее редактирование: 5 май 2017
  4. rkit

    rkit Гуру

    Это обфускация, а не шифрование. С настоящим шифрованем шифротекст не повторяется.
     
  5. cod678

    cod678 Нуб

    А какая разница повторяется или нет, Вы не поняли сути, поэтому объясню для непонятливых что я хотел донести.
    Хорошо ))))))))))) что Вы там сказали, не повторяется шифрование ну ладно, смотрите.
    Опять берём ситуацию чтобы открыть двери надо послать дому зашифрованную команду OPEN. Ваш ключ её сегодня зашифровал как FGHR и послал. Дом расшифровал и открыл двери. Завтра ваш ключ пошлёт эту команду зашифрованную как DGFT и дом снова расшифрует и откроет двери. Но я могу перехватить и это FGHR и всегда слать и оно будет прекрасно домом расшифровано и DGFT могу подсовывать.
    Суть в том, что бесполезно шифровать то, что мне по сути и не надо расшифровывать.
    Даже наоборот, зная заранее команду на открытия дверей OPEN, но не зная алгоритма как она зашифрована, я не смогу послать OPEN и открыть двери, так как дом будет пытаться расшифровать OPEN в нечто другое и уже потом сравнивать это нечто другое с командой.
    Но вот перехватив саму зашифрованную последовательность в единичках и ноликах (которая может быть успешно расшифрована домом) я смогу открыть всё что угодно, и при этом мне не надо смотреть что там внутри зашифрованного сообщения, главное чтобы это сообщение расшифровывалось алгоритмами дома, даже если там у вас будет супер навороченное шифрование, но вы не будете проверять подлинность того, кто шлёт вам эти команды.
    Получается что шифровать по сути команды управления незачем, куда более важнее механизм проверки подлинности того кто шлёт эти команды, а вот другие данные лучше шифровать.
     
    Последнее редактирование: 5 май 2017
  6. rkit

    rkit Гуру

    Нет. Вы опять говорите об обфускации. Простейший вызов-ответ полностью решает эту проблему. не говоря уж о более сложных схемах. Не надо пытаться рассуждать, не имея никаких познаний в ИБ.
     
  7. cod678

    cod678 Нуб

    Ну тогда приведите вы 2-3 примера шифрования текста OPEN в какие либо последовательности настоящего шифрования.
    И второе я всего лишь пытался сказать что команды управления сайтами, машинами или ещё чем что можно перехватывать и подсовывать и их незачем шифровать вообще.
    Просто некоторые думают что шифровать надо всё и типа если это всё зашифровано, то всё сразу становится безопасным и надёжным, и выше расписал что шифрование команд управления умным домом да и чем угодно, особо ничего не даёт.
     
  8. rkit

    rkit Гуру

    Вы расписали обфускацию, а не шифрование. Правильную схему я уже привел. Поскольку вы не читаете, что я вам пишу, разговор считаю закрытым.
     
  9. serg_admin

    serg_admin Гик

    Если так в лоб подходить то Wi Fi сети будут полной дыркой.

    Почитайте простейшие алгоритмы передачи/генерации сессионных ключей (5-10 минут).

    https://ru.wikipedia.org/wiki/Протокол_Диффи_—_Хеллмана
     
    Федоров Александр нравится это.
  10. Если выбирать ESP8266, для усиления безопасности нужно устанавливать Blynk сервер. Он поддерживает SSL/TLS шифрование на ключах(сертификатах).
    Или XBee радиомодули. Наверное еще проще использовать автомобильную сигнализацию.
     
    Последнее редактирование: 5 май 2017
  11. Radius

    Radius Гик

    Дискуссия пошла о шифровании, а клиенту важно на чем сделать. Самое простое в плане программирования NRF24L01. Но у него свои минусы: мощность всего 0 дБм (1 мВт). Всего три скорости передачи: 250 кБит/с, 1 МБит/с, и 2 МБит/с , есть ограничения на длину пакета - 32 байта. Есть ограничения по количеству устройств в сети. Мне нравятся модули построенные на чипах СС1100 или СС1101. Можно работать в разрешенном диапазоне 433 МГц или 868 МГц, мощность до 10 дБм (10 мВт). Длина пакета не ограничена как у NRF24L01. Количество адресов (устройств в сети) - 255. Дальность несколько сотен метров. Чем ниже скорость, тем выше чувствительность и соответственно дальность. Можно быстро прыгать по частотам тем самым обеспечивая скрытность и помехозащищенность. Делать на ESP8266 - самое сложное в плане программирования, но плюс в том что все в одном модуле - Wi-Fi и микроконтроллер с достаточным количеством памяти. Не заморачивайтесь с шифрованием. Пионеры все равно не взломают, а опытные просто заглушат вашу радиосеть.
     
  12. На мой взгляд. Если человек интересуется решением Arduino. То мой опыт подсказывает, что нужно использовать "заменитель" Blynk. Это и Wi-Fi и Arduino. Извините, не в рекламных целях дам ссылку на свой сайт. Возможно человек определится принципиально. Наверняка при постройке 2х этажного дома раскошелится на ZigBee решения от коммерческих фирм. Возможно он захочет делать все своими руками. Могу сказать, что это очень хлопотно. Хобби, Да.
     
  13. Жить вредно. От этого иногда умирают.
     
  14. ИгорьК

    ИгорьК Гуру

    Snap_2017.05.05_11h32m10s_002.jpg
     
    alp69 нравится это.
  15. Richard

    Richard Нерд

    Позвольте вклиниться в ваше обсуждение (мимокрокодил, все норм), если вы не против:

    Я люблю esp. Она идеальна, даже без вай фаев всяких, хотя бы из-жа размера. Та версия которая 01 это просто идеал для супер мелких проектов.
    НО ЧЕРТ ВОЗЬМИ! Wi-Fi как эффективное решение при огромном объеме устройств (20, 20, карл!) даже в качестве слейвов, это убъет любую сеть. Под ноль. Даааа они дешевые, дааааа wi-fi сам по себе жутко прост и крут, но в рот мне ноги! Не надо пихать esp или что-либо другое с вай фаем в любую дырку. Есть LoRa. Шикарная штука, есть просто радиомодули мелкие. Есть провода, это идеально, но мы тут про беспроводное решение говорим. Так вот, просто выскажусь и убегу:
    Пожалейте частоту! Она бедная разрывается от такого количества устройств и устройства сами страдают от этого. Пользуйтесь лорой ну или чем то похожим для именно большого кол-ва слэйвов, ну правда.
     
  16. ИгорьК

    ИгорьК Гуру

    Пить свое не вредно. Вредно завидовать чужому питью :)
     
  17. Удачи. И здоровья. Но вопрошать стыдно для мастера. Если сочтут то нальют и так. А пока форум ...
     
    Последнее редактирование: 5 май 2017
  18. ИгорьК

    ИгорьК Гуру

    Согласен, так делать для мастера стыдно: