Easyelectronics.ru

Электроника для всех
Текущее время: 24 янв 2021, 12:08

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 13:20 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 окт 2015, 15:48
Сообщения: 102
Откуда: Краскоярск
Пишу длинно, чтобы объяснить весь контекст ситуации, допускаю что я придумываю велосипед, но не знаю какой.

Дано:
Разрабатывается интернет-вещь, построенная на симбиозе raspberry pi и микроконтроллера.
Контроллер в режиме реального времени собирает показания с датчиков и выполняет заложенную автоматическую программу, например стабилизации температуры в помещении.
Малина используется для взаимодействия с пользователем через интернет, передачи команд контроллеру(зашифрованных), приема показаний контроллера и передачи их удаленному серверу(сервер тоже из "дано"), а также для обновления прошивки контроллера.
Устройство монолитное, неразборное. Лишь кнопка включения/выключения/перезапуска.
Необходимо реализовать надежную и удобную процедуру первоначальной настройки и последующего управления этой вещи у пользователя, после её приобретения.
Предполагается что управлять вещью можно как в локальной сети, так и по глобальной.
Юзер управляет вещью или через приложения, или через бразуер.
Говоря о "надежности" я подразумеваю как стабильность соединения, так и его безопасность.
Говоря об удобстве, я подразумеваю как скорость отклика девайса, так и минимум телодвижений юзера для приведения девайса к работоспособности.

Излагаю свой вариант, исходя из своих поверхностных познаний в области интернет-сетей.

Первый запуск:
После распакови вещи и подаче питания, малина настраевается как точка доступа, защищенная паролем. SSID уникален для каждого девайса, и соответствующий пароль находятся в базе данных сервера.
Юзер, прочитав инструкцию, скачивает приложение на смартфон.
Приложение требует от юзера как-то идентифицировать себя, например через google или facebook.
Далее приложение требует от смартфона все разрешения для сканирования окружающих wifi-сетей, находит SSID "вещи", и загружает из удаленного сервера пароль для этого SSID, соединяется с малиной.
Теперь малина передает смартфону список доступных ей wifi-соединений(он может не совпадать со списком смартфона, но это не так важно), смартфон предлагает юзеру ввести пароль для какой-нибудь. Перезапустив wifi в обычном режиме, малина получает доступ к локальной сети юзера и, возможно, к интернету.
Также малина сохраняет в себе идентификатор пользователя, и теперь только он сможет с ней соединиться, и перенастроить, если ей снова придется перейти в режим точки доступа.
База данных на удаленном сервере также запоминает, что этот девайс теперь привязан к этому пользователю.

Штатный режим работы:
На данном этапе мы получили устройство имеющее доступ к интернету и локальной сети роутера пользователя.
Допустим на малине запущен веб-сервер, однако в этом случае(насколько я знаю) даже зная глобальный ip девайса, законнектиться с малиной из приложения(браузера) получится только в локальной сети,
ведь заводские настройки роутера не пропускают входящие соединения извне. Это я о том что не имею представления как напрямую соединиться с девайсом из интернета, кроме как удосужив объяснить пользователю как сделать проброс портов его роутера. Что, разумеется, колхоз.
Взаимодействовать через удаленный сервер тоже не вариант, т.к. получим жуткое время отклика, учитывая что девайсы будут в разных точках планеты, а сервер хочется один.
Уверен что можно как-то использовать удаленный сервер как посредника при установке соединения, а дальше устройства будут общаться напрямую, но не имею представления как это сделать, и какие инструменты для этого уже есть.
Я иногда пользуюсь программой Team Viewer, мне кажется что она работает по такому принципу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 16:23 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2140
А еще в телефоне есть Bluetooth, а на устройстве может быть наклеен QR код.
Что сильно упрощает логику работы с устройством.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 17:10 
Старожил

Зарегистрирован: 28 янв 2015, 16:31
Сообщения: 253
LittleIronMan писал(а):
Теперь малина передает смартфону список доступных ей wifi-соединений...
Посмотрите как это делается у больших дядек вроде Гугла и Яндекса или любых wifi роутеров, задача очень нетривиальная. По непонятным причинам они не используют включение устройства в виде беспроводной точки доступа, а предлагают всякие извращения в виде езернет шнурков в разъём или даже звуковых команд по воздуху... https://youtu.be/OaHzvcz8ncM?t=459

ЗЫ. Блютуф тоже редко используют


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 17:27 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
Коли вы называете это IoT:

1) Никогда не переключайте за пользователя его подключения к WiFi сети. Делайте уникальный SSID (Название+2-3 последних байта MACа вполне достаточно) и при желании можно уникальный пароль, который можно писать на девайсе. Всё уже придумано до вас. Все ус-ва так настраиваются. Есть логин и пароль по-умолчанию. У роутеров, у репитеров и прочих WiFi ус-в так сделано. Не усложняйте.
2) Не привязывайте девайс к учетке так жестко. Пользователи имеют обыкновения забывать логины, пароли и почты. После сброса ус-во должно всё забыть. На то он и сброс. Для сброса нужен физический доступ к ус-ву. Если такой доступ получен, то все ваши подобные привязки уже не нужны.
3) Если преследуется цель ограничить доступ пользователя - делайте этот при работе в штатном режиме. Когда пройдена регистрация. Вы всё-равно видите данные и некий серийный номер/идентификатор вашей железки в базе. Понадобится "забанить" железку целиком - сделаете это по этим данным.
4) Забудьте про проброс портов. Уже многие провайдеры не выдают пользователям даже динамического белого IP. Сейчас многие за NATом. Причем у меня домашний пров например за двойным, "непробиваемым" даже через UDP NAT Traversal'ом. Чтобы управлять девайсами из инета и существуют "облака" - ваш сервер в инете уже с белым IP. Пусть железка подключается к нему и взаимодействует с пользователем через него. Для железки это будет исходящее соединение в инет. Причем можно обычный HTTPS + WebSockets сделать. Опять же именно так и реализуются подобные вещи у всяких IoT штук. Вам придется арендовать и поддерживать сервис в облаке. Хотя нынче это очень недорого.
Схема примерно вот такая (первая попавшаяся картинка):
Изображение
Т.е. железка подключается к вашему сервису в инете ("облаку"). И отправляет туда данные и ждем команд. Пользователь прогой или браузером также заходят на ваш сайт, через ваш сервер. И видят все эти данные. Если пользователь передает команду, она прежде всего уходит в облако, откуда уходит на железку по уже установленному каналу.
5) Раз о методе изложенном в п.4. вы не знали сами - вам нужен человек, разбирающийся в сетях и подобных вещах. Кто сможет настроить вам сервис на Linux (как вариант самого частоиспользуемого и дешевого) и т.д.

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

Не будет это работать по изложенным выше причинам. Есть механизмы NAT-T, я писал выше, что у меня, к примеру такое не работает. Время отклика для IoT с каких пор важно? Что у вас там такого, что надо большой поток в реальном времени гнать? Тогда это напоминает анекдот "серьезная фирма примет в аренду дырокол". Тогда сервера нужны в разных точках планеты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 18:38 
Старожил

Зарегистрирован: 22 июн 2010, 21:53
Сообщения: 1181
Откуда: Brussels
Гуглить 0-day provisioning.

Добавлю еще несколько центов:

- клиент может хотеть поставить девайс в сети за прокси - т.е. нужно уметь прокси
- безопасное соединение к облаку это https - а значит tls, сертификаты и вот это всё... как от собственно устройства так и от пользователя
- ваше облако может запросто сменить ip-адрес и даже домен (перехали в другой хостинг, внедрили load-balancer, прикрылись CDN или DDoS защитой) - подумайте как вы будите делать discovery облака
- клиенты меняют свои внешнии IP и вовсе как попало
- связь и питалово пропадает в процессе апдейта - загрузка с рековери прошивки, дисковери облака и обновления
- устройства ломаются - загрузка с рековери, далее см выше ...
- устройство пару лет лежало в коробке и бац - его решили использовать, казалось бы какая нам печаль - а тут вот у сертификатов срок действия есть... и 2х пунктов выше это тоже касается (особенно там где рековери прошивка)
- терминал клиента и устройство могут быть в разных сетях - во время провижининга вы можете заставить клиента прицепиться к домашнему wifi - но так то он сидит в 4g всегда
- hardware reset to factory defaults
- все вот эти авторизации через гугл - это зачем? У клиента в руках устройство - пароль для первичной настройки наклеен или qr-code. Зачем вам знать какой у него акк в гугле для провижининга....

Это всё не то что бы сложно - скорее муторно. Много разных нюансов, которые сразу не вспомнишь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 20:24 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2446
Откуда: Киев
Немного оффтоп по коментам выше.
А как реализуется режим 'ждем' за Нат?
Ну то есть с передачей все понятно. А как с приёмом, типа устройство разорвало сессию, и до него не достучаться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 21:12 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 03 окт 2015, 15:48
Сообщения: 102
Откуда: Краскоярск
Миха писал(а):
Посмотрите как это делается у больших дядек вроде Гугла и Яндекса или любых wifi роутеров

Миха, спасибо за совет. Задал подобный вопрос на другом ресурсе - ответили подобно, мол смотри на Яндекс.Станцию. Уже выбираю микрофон) Это однозначно очень эффектное решение

//Mt писал(а):
Добавлю еще несколько центов:

Очень добротные центы, низкий поклон

x893 писал(а):
А еще в телефоне есть Bluetooth, а на устройстве может быть наклеен QR код. Что сильно упрощает логику работы с устройством.

Уже взял на вооружение, иногда кажется что только что из пещеры вылез.

NStorm писал(а):
Никогда не переключайте за пользователя его подключения к WiFi сети.

Я так понимаю, это может вызвать последующее недопонимание пользователя. Мол куда пропал мой тырнет? Или еще есть причины?
А вообще уже принято серьезное решение - вообще не настраивать точку доступа. Звуком приложение будет посылать SSID и пароль к сети, к которой разрешено соединиться. Это выглядит очень эффектно, и вписывается в тематику устройства. И лишний раз не придется лезть в дебри конфигурации wifi адаптера малины.

NStorm писал(а):
Раз о методе изложенном в п.4. вы не знали сами

Возможно, я не так выразился. Именно этот способ я и имел в виду когда писал о "взаимодействовать через удаленный сервер". На другом ресурсе также дали понять, что пытаться обойти NAT - скорее седину вырастить. На задержку уже забил, просто допускал существование серебрянной пули. Буду делать классический сервер на веб-сокетах. Так или иначе, низкий вам поклон за такой подробный ответ)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 04 фев 2020, 22:16 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
Signaller писал(а):
Немного оффтоп по коментам выше.
А как реализуется режим 'ждем' за Нат?
Ну то есть с передачей все понятно. А как с приёмом, типа устройство разорвало сессию, и до него не достучаться?

Девайс постоянно должен поддерживать соединение с сервером. И в определенные разумные интервалы слать некие Keep-Alive пакеты, чтобы поддерживать соединение. Трафик копеечный, даже если он какой-нибудь платный.

Цитата:
Я так понимаю, это может вызвать последующее недопонимание пользователя. Мол куда пропал мой тырнет? Или еще есть причины?

Ну как минимум. Это некорректно. У него может быть запущено важное приложение, которое требует сети. Внезапная смена сети может попортить нервы. А если с ноута рабочего кто подключаться будет - так это тоже может сильно помешать. Как минимум _спросить_ пользователя разрешение на смену сети надо. Ну и всякое бывает. У меня к примеру маршруты и правила фаерволла слетят при смене сети. Я буду очень негодовать при этом. Это частный случай, но любых подобных случаев, когда что-то "отвалится" при смене сети может быть не мало. Поэтому лучше так не делать автоматом.
Но вы уже вроде придумали альтернативу. Хотя привязка к приложению тоже не очень имхо. Я вот не люблю ставить чужие приложения без лишней необходимости. Если есть веб, то я бы лично всегда хотел возможность просто подключиться к AP и через браузер вбить данные моего AP для подключения.

Цитата:
На другом ресурсе также дали понять, что пытаться обойти NAT - скорее седину вырастить. На задержку уже забил, просто допускал существование серебрянной пули

Просто иногда NAT обойти нельзя совсем, без полного проноса трафика через свой сервер. Есть всякие STUN и т.п. Но реально оно не всегда работает. Есть очень крутой обход NAT у проекта VPN SoftEther. Ну на самом деле почти тот же STUN, только умнее. Все эти штуки реализуют одно в итоге - сначала стороны А и B обмениваются видимыми белыми IP через некий свой сервер. Потом UDP пакет со стороны A уходит на некий порт в сторону B. Он не доходит, т.к. упирается в маршрутизатор провайдера. Но порты исходящий/входящий через сервер передаются стороне B. При этом B не получив пакет от A, отправляет от себя UDP пакет обратно в сторону A, при этом Source Port выставляя в тот, что был нужен. Когда этот псевдо-ответный пакет приходит до маршрутизатора стороны A, он думает что это ответные пакеты, т.к. src/dst порты попадают под запомненный NATом. И пропускает этот пакет. Ну и в обратную сторону также. Это пробивает большинство stateful NAT'ы. Но не все такие. Иногда не пробивает. Можно использовать такую "пулю". Но только если в логику заложено "если соединение всё-таки не установилось, работаем полностью проксируя трафик через свой сервер". Кстати у того же SoftEther есть помимо обхода NAT-T и режим проксирования через облако Azure. И всё совершенно бесплатно пока. Посмотрите софтину эту - может интересно будет. Там код открытый вроде почти полностью.

Но всё зависит от целей. Для большинства IoT проще классику с WebSocket'ами сделать и не заморачиваться.

Еще многие крупные провайдеры предоставляют гео-распределенные балансировщики и т.п. сервисы. У всяких AWS, OVH, Aruba, Google Cloud, (на вскидку, не смотрел у кого из них есть сервисы подобные) и т.д можно посмотреть варианты. Или вот еще например очень недорогой вариант с Anycast: https://buyvm.net/anycast-vps/ Всего 3 точки правда, но VPS начинаются от $2 в месяц. Т.е. за $6 можно получить микро-ферму из 3х VPS с Anycast IP адресом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 05 фев 2020, 01:52 
Старожил

Зарегистрирован: 22 июн 2010, 21:53
Сообщения: 1181
Откуда: Brussels
Облака сейчас черта лысого не могут разве что....

LittleIronMan, исходя из ваших вопросов: найдите кто вам будет писать облачный сервис - он вам объяснит как и что работает в современном стеке технологий.
Проработайте основные use-cases. А после первой одной (двух) тысяч устройств станет веселее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 05 фев 2020, 01:57 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2140
//Mt писал(а):
Облака сейчас черта лысого не могут разве что....

LittleIronMan, исходя из ваших вопросов: найдите кто вам будет писать облачный сервис - он вам объяснит как и что работает в современном стеке технологий.
Проработайте основные use-cases. А после первой одной (двух) тысяч устройств станет веселее.

Боюсь пишущий сопьётся, пока объяснять будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 05 фев 2020, 10:44 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1688
Занимаюсь схожей тематикой после года испытаний и разных вариантов остановился на таком решении:
1) выбросил к чертям собачим прокладки в виде Raspberry Pi (Orange Pi)
2) собрал сборщик данных на STM32F207 + физика (ну точней перепрограмировал под свои нужды готовые платы) для управления рекламными модулями.
3) в устройстве прошиты адреса 2х моих серверов жестко, номера устройств соотвествуют их UNIC-ID
Устройство подсоеденяется шнурком к роутеру, само ломится на сервак и получает начальные параметры, после этого один раз в 10 минут начинает швырять данные в базу MySQL.
Все датчики подключаемые к сборщику по RS485 и по радио имеют идентификаторы устройств где четко прописано для чего они предназначены.

P\S Если Unic Id нет в базе - значит устройство идет лесом.
Lan часть (LWIP) мне писал гуру (сам не осилил) там слишком дохрена надо знать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 05 фев 2020, 11:07 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3808
Откуда: Китай, Пекин
sed_alex
поддерживаю, все эти https с сертификатами идут лесом, кому нахрен нужна вся эта телеметрия вашей сычивальни...

однако
Цитата:
швырять данные в базу MySQL

надеюсь не прям текстовыми sql запросами это делается... ибо sql injection можно хапнуть запросто.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 05 фев 2020, 11:56 
Старожил
Аватара пользователя

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1659
Откуда: Курск
Вот лекция по теме. Ну и остальные можно посмотреть
Не реклама


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Базовые принципы настройки и последующей работы тырнет-вещи
СообщениеДобавлено: 05 фев 2020, 12:00 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
Вообще не вижу никаких проблем нынче TLS поднимать.
Плюс человеку нужна беспроводка, что нынче очень даже актуально для домов. WiFi роутеры у всех есть, а провод лишний тянуть мало кто захочет.
Да и фиксированные IP серверов плохо - их в любой момент может не стать, о чем справдливо выше замечал //Mt. Уже лучше пару доменов сделать в разных зонах. Всю общую "bootstrap" инфу можно прям в DNS в TXT и SRV записях передавать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: wyfinger


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB