Да, фактически «датчик присутствия» это одно из маркетинговых обозначений датчика движения. Встречал также утверждение, что под этим подразумевают датчик движения с «хорошей чувствительностью» (например, способный замечать небольшую моторику рук).
В принципе, есть много способов определить наличие человека в помещении. Самый, пожалуй, распространенный — именно датчики движения (часто инфракрасные для помещений, ультразвуковые для улицы). Можно — пол (напольная платформа) на тензодатчике веса (как в лифте, меняет сопротивление под физической нагрузкой). Можно видеокамерой — фактически тоже детектор движения по изменению картинки (но вряд ли это понравится посетителям туалета). Или сетью оптопар (излучатель-приемник) — как, например, в турникетах метро или в дверях тех же лифтов.
Но для этого случая (приходилось решать аналогичную задачу надежного определения наличия человека в помещении) все-таки самый простой и практичный способ — датчик движения + геркон открывания двери + несложная логика «запирания» активности датчика до срабатывания геркона (наверное, и подходящую микросхему несложно сделать — особенно если это более-менее серийное использование). Не знаю, честно говоря, почему такую штуку не встраивают как опцию в сами датчики (можно же не только на геркон ее вешать, но и, например, на те же оптопары в проходе и так далее).
И да: измерители объема существуют. Сетка излучателей-приемников (например, 3x3, 4x4), встраивается или вешается на потолок. Датчики работают, насколько я знаю на разнесенных частотах и умеют «узнавать» другие. Алгоритмом запоминается что-то вроде определителя матрицы сигналов датчиков отправленных/принятых для «пустого» пространства и текущее (если внутри появляется человек или бочка воды — сигнал падает и число результата уменьшается). Если разница выше порога — значит, человек есть. Но все стенки и пол должны быть металлизированными (и стекло с напылением, например, К-стекло). Плюс будут проблемы с тем, чтобы внутри переставить что-то (не знаю, например, как на закрывание/открывание крышки унитаза будет реагировать), нужна будет перекалибровка. И алгоритм не очень простой, может понадобиться много экспериментов, отладки…
Ну и дорого это будет.
Как показал опыт, даже самые хорошие датчики движения грешат тем, что если движения малые, или редкие или медленные, они их регулярно не замечают. Обычно это (частично) компенсируется выставлением «временного порога» на датчике: некоторое настроенное время после обнаружения движения датчик остается активным. Но это не решение проблемы, а лишь костыль.
Однако все меняется если добавить немного логики: если было замечено движение при закрытой двери, то помещение считается занятым до открывания двери (определяется по сигналу геркона). Ведь человек не может покинуть помещение не открыв дверь (эвакуация через окно не в счет). При этом сам датчик может быть и самым простым и временной порог — минимальным. При открытой двери (по тому же датчику открывания) помещение в данном случае логично считать занятым. Сигнал датчика движения после закрывания двери в течение «временного порога» следует игнорировать (он остается активным после вышедшего человека), и начинать проверку показаний датчика лишь после завершения этого порога.
Это можно реализовать хоть на arduino uno.
Можно попробовать привязаться и к сигналу датчика запертости (он, видимо, есть — для отображения сигнала «занято»), но это представляется ненадежным: человек может забыть запереться, дверь может быть заперта снаружи.
Единственная очевидная в этом уязвимость: заходят двое, выходит один, оставшийся в задумчивости не шевелится. Так что на практике должно работать хорошо. Уж точно лучше, чем самый распрекрасный датчик движения.
Внимание: в формуле коэффициентов Блэкмена — ошибка (и в картинке и в программе), вместо исходного плюса (перед вторым слагаемым) указан минус.
Правильный вариант:
W [i] = 0.42 + 0.5 * cosl((2*M_PI*i) /( N-1)) + 0.08 * cosl((4*M_PI*i) /( N-1));
У Айчифера в источниках — все правильно.
Ответил ниже: habr.com/ru/company/bright-box/blog/436220/#comment_19630530
То, что повышенный тариф (вероятно, будет по формальным параметрам езды, без указания цели) не будет означать отказ от штрафа за ДТП не учел. В этом случае, конечно ответственность увеличится и количество «агрессоров» должно упасть.
Хорошие примеры. В них действительно ответственность (штрафы) назначаются даже без причинения прямого ущерба.
Насколько я понимаю, при этом используется концепция ущерба «общественным интересам» (всему обществу в целом). То есть той самой статистике: пьяные чаще создают ДТП, чем обычные водители (хотя, вероятно, далеко не все пьяные попадут в аварию); а соблюдение правил (порядка) увеличивает общую скорость передвижения.
На эту группу водителей стоит обращать внимание операторам каршеринга, т.к. для них ДТП — это всегда убытки.
Раз компания (как уже уточнили выше, в моих рассуждениях это не учитывалось) в случае ДТП все равно взымает стоимость ремонта и, вероятно, судебных/оперативных издержек (и будет взымать и после введения повышенного тарифа), то и в этом случае речь не идет об ущербе экономическом или покрытии убытков (это скорее маркетинговое оправдание).
По сути их цели:
— уменьшить количество аварий в целом (снизив вероятность для «проблемных» водителей с небольших 5% до исчезающе малых 0,07%)
— а, главное, дополнительно заработать на этом (все-таки бизнес это про прибыль, а повышенные тарифы будут, вероятно, одобрены из-за благовидной социальной первой цели подавляющим большинством клиентов, которые ездят нормально).
В итоге, кажется, действительно получается:
Т.о., наказывая, пусть и невиновных, вы в пределе снижаете вероятность аварий в сотню раз.
Фактически давление (навязывание поведения) «мирного» большинства на «более агрессивное» меньшинство из-за того, что единичные представители меньшинства создают большинство имеющихся проблем. Кажется, очень типовая ситуация, много чего напоминает.
Логика в этом есть (всем в целом должно стать лучше). Но, все равно очень смущает необходимость ущемления большой невиновной группы из-за очень немногих ее «нехороших» представителей. Что-то про свободу и ответственность без вины.
Количество агрессивно ездящих, как ни парадоксально, может вырасти от такой процедуры. А с ней и количество и вероятность аварий.
Ведь обосновывая увеличение стоимости платой за аварии для агрессивных водителей компания или не будет взыскивать с них стоимость ущерба (зачем ей лишние движения? она уже не в убытке) или предоставит им дополнительный аргумент для суда/переговоров: ущерб возмещать не нужно, так как он уже заложен в тарифы.
То есть размер наказания (повышенный тариф) для того, кто попал в аварию может оказаться недостаточным и его не будут бояться. И при этом ты знаешь, что куча народу это наказание вообще ни за что платит, так что вообще не обидно.
Такое уменьшение ответственности (за аварии) может привести к росту агрессивных ездоков — особенно, если определение «опасного» вождения системой будет давать ложные тревоги и в эту категорию можно будет легко попасть по ошибке.
Действительно, всего 43 000 человек, из них:
— 38 475 безопасно ездят, не попали в аварию
— 25 безопасно ездят и попали в аварию
— 4 275 агрессивно ездят, не попали в аварию
— 225 агрессивно ездят и попали в аварию
Шанс попасть в аварию произвольного человека (без дополнительных данных): 250/43 000 = 0,581%
Шанс попасть в аварию того, кто ездит безопасно: 25/(25+38475) = 0,065%
Шанс попасть в аварию того, кто ездит агрессивно: 225/(225+4275) = 5,000%
То есть если ты ездишь агрессивно, то сравнению с тем, кто ездит безопасно — твои шансы попасть в аварию шансы действительно в 77 раз выше.
По сравнению с тем, о ком неизвестно ничего — шансы выше в 10 раз (у него — один из двухсот).
Однако, даже если ты ездашь агрессивно, скорее всего ты не попадешь в аварию. То есть обосновывать это «платой за аварию» — нечестно. Так и будем говорить: это наказание за агрессивную езду, потому что с такими аварии происходят чаще.
Таким образом подход введения платы за агрессивное вождение накажет почти всех виновных (225 человек, которые поучаствует в авариях). Но куда большее количество невиновных также будет наказано (4 275 человек). На каждого наказанного виновного придется 19 наказанных невинных. Очень прокурорский подход получается.
Что еще хуже: эти 4275 невиновных в авариях, но наказанных, фактически оплатят действия всего 250 человек (и из них 25 создадут аварии без финансового ущерба для себя).
Может, стоить просто наказывать тех, кто попал в аварии (суд и взыскания)? Это если смотреть на вопрос принципиальный и философский.
В деньгах все не так грозно получается: если авария обходится в 1000 рублей (то есть общий ущерб 250 аварий составит 250 тыс. руб.), то разделив их на всех 4500 «опасно ездящих» получим прибавку по 55 рублей. При этом ожидаемый ущерб для тебя (если ты опасный водитель) ожидается 1000*5% = 50 рублей. Оставшиеся 5 рублей — солидарная ответственность группы за отдельных индивидов.
Впрочем те, кто опасно ездят и попали-таки в аварию могут быть счастливы. Из 1000 рублей они заплатили всего 55! Целых 945 рублей экономии (скидка 95%!) за счет общества. Таким образом, введение коллективной ответственности (что-то типа страховки) стимулирует еще более опасное поведение: аварии тебе обходятся с отличной скидкой и больше не страшны. Жми на газ/тормоз вволю.
Хотя догадываюсь, что и «штрафы» будут (обоснованные стоимостью аварий) и в суд подадут. Даже прибыльное дело получится для каршеринга.
Водители с агрессивным стилем вождения чаще всего являются виновниками ДТП, 80% виновных в ДТП попадают в группу агрессивных по значению максимальных оборотов при старте движения.
Неверно. Большинство попадающих в ДТП (80%) — действительно обладают агрессивным стилем вождения, судя по статистике.
Но: подавляющее большинство водителей с агрессивным стилем вождения — (95%) не попадают в ДТП, исходя из ваших данных. То есть на этот параметр НЕ СЛЕДУЕТ обращать внимания при оценке потенциального риска вождения.
Грубо говоря, это, «необходимое» условие (ну или «очень нужное», «рекомендуемое для ДТП»). Но настолько недостаточное (несущественное), что обращая на него, вы будете наказывать финансово 95% тех, кто не создаст проблем, несмотря на свой стиль вождения.
В Вашем примере — наказаны будут 4550 человек, из них 250 — за дело, 4275 — ни за что. Думаю, это несправедливо.
К сожалению, указанная статистка малопригодна для скоринга (как и практически любой другой параметр в данном случае) из-за исключительной редкости событий ДТП. И в данном случае лишь вводит в заблуждение.
Дело в том, что для скоринга приходится иметь дело с условными вероятностями (формула Байеса, см. ru.wikipedia.org/wiki/Теорема_Байеса). То есть у нас есть тот или иной профиль вождения или параметр и по нему мы пытаемся оценить степень риска.
Для ваших данных: всего 43 000 водителей, из них 250 — виновники, т.е. оставшиеся 42 750 хорошие.
Пусть среди хороших вероятность «опасного» профиля 10%, среди виновников — 90%.
В абсолютных цифрах: опасным профилем обладают 42750*0,1=4275 хороших человек, среди виновников их 250*0,9=225. На каждого виновного с опасным профилем приходится 19 хороших. Иначе говоря, вероятность того, что некто с опасным профилем — «виновник» = 225/(225+4275)=4,7%, а 95,3% — что он хороший. То есть если, увидев опасный профиль, мы считаем человека потенциальным виновником, то в 95% мы ошибаемся, а правы лишь в 5%. Лучше кидать монетку — там вероятность ошибки только 50%. Или считать всех хорошими — вероятность ошибки 5%.
Конечно, можно посмотреть не один критерий, а несколько — но вряд ли что-то выйдет.
Для того, чтобы некий количественный параметр на таком исключительном событии (вероятность участия водителя ДТП = 250/43000 = 0,5%) можно было использовать, отношение его вероятности у хороших и опасных должно быть в данном случае не менее 20:1 (то есть даже если 100% виновников ДТП ездят таким образом, не более 5% хороших должны допускать такое вождение, если не все участники ДТП ездят так — то процент хороших с такой манерой должен быть соответственно меньше). А лучше — в разы или на порядок выше. Но такой параметр, бюсь, был лы очевиден и без статистики, на бытовом уровне: едешь так — (почти) гарантированно попадаешь в аварию. Не едешь так — не в жизни не попадешь.
Видимо, теоретически возможно и заложено в идею: в спецификации много рассуждений о роуминге (переходе конечного устройства между сетями) и ограничений параметров для его обеспечения.
Например, это может быть разумно если для ПО какой-то системы учета аналогичное оборудование развернуто на производствах в разных регионах и использовать один сервер неудобно. Или если устройство, работающее с приложением, установлено на транспорте, едущем из региона в регион — с разными провайдерами.
По итогу размышлений (насколько я понимаю эту систему): в любом случае секретный ключ шифрования AppKey «клону» при лобовом копировании неизвестен, а сессионные ключи шифрования напрямую не передаются, но генерируются с обеих сторон с использованием этого AppKey. Причем каждый раз — разные (благодаря случайному AppNonce). То есть кроме подключения через другой сервер «клон» сделать ничего дальше не сможет.
Но не будет ли при таком подключении через сторонний сервер отключен оригинал (и снова попробует сделать подключение, которое опять можно скопировать для его отключения)?
Поэтому вопрос сводится к тому, только ли сервер отслеживает попытку подключения (учет DevNonce) или и приложение за ним тоже его может и должно делать?
Действительно, задача «на второй БС регистрируется фейковое, которое копирует запросы настоящего» может описывать и такую ситуацию.
В этом случае «клон» фактически будет уже не фейковым устройством, так как обладает всей информацией, что и исходное. Но считыванием эфира или копированием считанных запросов эти параметры не получить (по крайней без взлома криптографии).
Видимо, полный ответ на исходный вопрос должен звучать так: БС выступают только передатчиками, регистрацию в одной сети (и дальнейшее общение с кодированием) осуществляет один сетевой сервер. То есть нет нескольких «точек регистрации», которые могли бы зарегистрировать по копиям корректного запроса разные устройства.
Противодействие повторной передаче записанного запроса серверу также предусмотрено.
Если же изготовлена точная копия-злоумышленник устройства (знающая все его параметры, в том числе секретный ключ), то они с оригиналом будут бороться, отключая друг друга.
Но тут вопрос уже у меня: а если подключаться таким образом к разным сетевым серверам (то есть к серверам разных провайдеров, работающих с одним приложением) конфликта не возникнет? То есть может ли определить сервер приложений от какого из сетевых серверов запрос действительно настоящий (например, ему также транслируется и DevNonce)?
Не совсем: насколько я понимаю, имелась в виду попытка регистрации на сетевом сервере воспроизведением прослушанного и записанного join-request настоящего устройства.
В этом случае все параметры (AppEUI, DevEUI, DevNonce и MIC), конечно, будут корректными, так как являются точной копией настоящего запроса join-request.
Но сетевой сервер хранит «некоторое» количество ранее полученных DevNonce для каждого устройства и повторное обращение с тем же DevNonce игнорирует. Поэтому простое воспроизведение пакета присоединения (и далее) не даст подключиться к сети (например. отключив первое настоящее устройство).
В принципе, есть много способов определить наличие человека в помещении. Самый, пожалуй, распространенный — именно датчики движения (часто инфракрасные для помещений, ультразвуковые для улицы). Можно — пол (напольная платформа) на тензодатчике веса (как в лифте, меняет сопротивление под физической нагрузкой). Можно видеокамерой — фактически тоже детектор движения по изменению картинки (но вряд ли это понравится посетителям туалета). Или сетью оптопар (излучатель-приемник) — как, например, в турникетах метро или в дверях тех же лифтов.
Но для этого случая (приходилось решать аналогичную задачу надежного определения наличия человека в помещении) все-таки самый простой и практичный способ — датчик движения + геркон открывания двери + несложная логика «запирания» активности датчика до срабатывания геркона (наверное, и подходящую микросхему несложно сделать — особенно если это более-менее серийное использование). Не знаю, честно говоря, почему такую штуку не встраивают как опцию в сами датчики (можно же не только на геркон ее вешать, но и, например, на те же оптопары в проходе и так далее).
И да: измерители объема существуют. Сетка излучателей-приемников (например, 3x3, 4x4), встраивается или вешается на потолок. Датчики работают, насколько я знаю на разнесенных частотах и умеют «узнавать» другие. Алгоритмом запоминается что-то вроде определителя матрицы сигналов датчиков отправленных/принятых для «пустого» пространства и текущее (если внутри появляется человек или бочка воды — сигнал падает и число результата уменьшается). Если разница выше порога — значит, человек есть. Но все стенки и пол должны быть металлизированными (и стекло с напылением, например, К-стекло). Плюс будут проблемы с тем, чтобы внутри переставить что-то (не знаю, например, как на закрывание/открывание крышки унитаза будет реагировать), нужна будет перекалибровка. И алгоритм не очень простой, может понадобиться много экспериментов, отладки…
Ну и дорого это будет.
Однако все меняется если добавить немного логики: если было замечено движение при закрытой двери, то помещение считается занятым до открывания двери (определяется по сигналу геркона). Ведь человек не может покинуть помещение не открыв дверь (эвакуация через окно не в счет). При этом сам датчик может быть и самым простым и временной порог — минимальным. При открытой двери (по тому же датчику открывания) помещение в данном случае логично считать занятым. Сигнал датчика движения после закрывания двери в течение «временного порога» следует игнорировать (он остается активным после вышедшего человека), и начинать проверку показаний датчика лишь после завершения этого порога.
Это можно реализовать хоть на arduino uno.
Можно попробовать привязаться и к сигналу датчика запертости (он, видимо, есть — для отображения сигнала «занято»), но это представляется ненадежным: человек может забыть запереться, дверь может быть заперта снаружи.
Единственная очевидная в этом уязвимость: заходят двое, выходит один, оставшийся в задумчивости не шевелится. Так что на практике должно работать хорошо. Уж точно лучше, чем самый распрекрасный датчик движения.
Правильный вариант:
W [i] = 0.42 + 0.5 * cosl((2*M_PI*i) /( N-1)) + 0.08 * cosl((4*M_PI*i) /( N-1));
У Айчифера в источниках — все правильно.
То, что повышенный тариф (вероятно, будет по формальным параметрам езды, без указания цели) не будет означать отказ от штрафа за ДТП не учел. В этом случае, конечно ответственность увеличится и количество «агрессоров» должно упасть.
Насколько я понимаю, при этом используется концепция ущерба «общественным интересам» (всему обществу в целом). То есть той самой статистике: пьяные чаще создают ДТП, чем обычные водители (хотя, вероятно, далеко не все пьяные попадут в аварию); а соблюдение правил (порядка) увеличивает общую скорость передвижения.
Раз компания (как уже уточнили выше, в моих рассуждениях это не учитывалось) в случае ДТП все равно взымает стоимость ремонта и, вероятно, судебных/оперативных издержек (и будет взымать и после введения повышенного тарифа), то и в этом случае речь не идет об ущербе экономическом или покрытии убытков (это скорее маркетинговое оправдание).
По сути их цели:
— уменьшить количество аварий в целом (снизив вероятность для «проблемных» водителей с небольших 5% до исчезающе малых 0,07%)
— а, главное, дополнительно заработать на этом (все-таки бизнес это про прибыль, а повышенные тарифы будут, вероятно, одобрены из-за благовидной социальной первой цели подавляющим большинством клиентов, которые ездят нормально).
В итоге, кажется, действительно получается:
Фактически давление (навязывание поведения) «мирного» большинства на «более агрессивное» меньшинство из-за того, что единичные представители меньшинства создают большинство имеющихся проблем. Кажется, очень типовая ситуация, много чего напоминает.
Логика в этом есть (всем в целом должно стать лучше). Но, все равно очень смущает необходимость ущемления большой невиновной группы из-за очень немногих ее «нехороших» представителей. Что-то про свободу и ответственность без вины.
Ведь обосновывая увеличение стоимости платой за аварии для агрессивных водителей компания или не будет взыскивать с них стоимость ущерба (зачем ей лишние движения? она уже не в убытке) или предоставит им дополнительный аргумент для суда/переговоров: ущерб возмещать не нужно, так как он уже заложен в тарифы.
То есть размер наказания (повышенный тариф) для того, кто попал в аварию может оказаться недостаточным и его не будут бояться. И при этом ты знаешь, что куча народу это наказание вообще ни за что платит, так что вообще не обидно.
Такое уменьшение ответственности (за аварии) может привести к росту агрессивных ездоков — особенно, если определение «опасного» вождения системой будет давать ложные тревоги и в эту категорию можно будет легко попасть по ошибке.
Действительно, всего 43 000 человек, из них:
— 38 475 безопасно ездят, не попали в аварию
— 25 безопасно ездят и попали в аварию
— 4 275 агрессивно ездят, не попали в аварию
— 225 агрессивно ездят и попали в аварию
Шанс попасть в аварию произвольного человека (без дополнительных данных): 250/43 000 = 0,581%
Шанс попасть в аварию того, кто ездит безопасно: 25/(25+38475) = 0,065%
Шанс попасть в аварию того, кто ездит агрессивно: 225/(225+4275) = 5,000%
То есть если ты ездишь агрессивно, то сравнению с тем, кто ездит безопасно — твои шансы попасть в аварию шансы действительно в 77 раз выше.
По сравнению с тем, о ком неизвестно ничего — шансы выше в 10 раз (у него — один из двухсот).
Однако, даже если ты ездашь агрессивно, скорее всего ты не попадешь в аварию. То есть обосновывать это «платой за аварию» — нечестно. Так и будем говорить: это наказание за агрессивную езду, потому что с такими аварии происходят чаще.
Таким образом подход введения платы за агрессивное вождение накажет почти всех виновных (225 человек, которые поучаствует в авариях). Но куда большее количество невиновных также будет наказано (4 275 человек). На каждого наказанного виновного придется 19 наказанных невинных. Очень прокурорский подход получается.
Что еще хуже: эти 4275 невиновных в авариях, но наказанных, фактически оплатят действия всего 250 человек (и из них 25 создадут аварии без финансового ущерба для себя).
Может, стоить просто наказывать тех, кто попал в аварии (суд и взыскания)? Это если смотреть на вопрос принципиальный и философский.
В деньгах все не так грозно получается: если авария обходится в 1000 рублей (то есть общий ущерб 250 аварий составит 250 тыс. руб.), то разделив их на всех 4500 «опасно ездящих» получим прибавку по 55 рублей. При этом ожидаемый ущерб для тебя (если ты опасный водитель) ожидается 1000*5% = 50 рублей. Оставшиеся 5 рублей — солидарная ответственность группы за отдельных индивидов.
Впрочем те, кто опасно ездят и попали-таки в аварию могут быть счастливы. Из 1000 рублей они заплатили всего 55! Целых 945 рублей экономии (скидка 95%!) за счет общества. Таким образом, введение коллективной ответственности (что-то типа страховки) стимулирует еще более опасное поведение: аварии тебе обходятся с отличной скидкой и больше не страшны. Жми на газ/тормоз вволю.
Хотя догадываюсь, что и «штрафы» будут (обоснованные стоимостью аварий) и в суд подадут. Даже прибыльное дело получится для каршеринга.
Неверно. Большинство попадающих в ДТП (80%) — действительно обладают агрессивным стилем вождения, судя по статистике.
Но: подавляющее большинство водителей с агрессивным стилем вождения — (95%) не попадают в ДТП, исходя из ваших данных. То есть на этот параметр НЕ СЛЕДУЕТ обращать внимания при оценке потенциального риска вождения.
Грубо говоря, это, «необходимое» условие (ну или «очень нужное», «рекомендуемое для ДТП»). Но настолько недостаточное (несущественное), что обращая на него, вы будете наказывать финансово 95% тех, кто не создаст проблем, несмотря на свой стиль вождения.
В Вашем примере — наказаны будут 4550 человек, из них 250 — за дело, 4275 — ни за что. Думаю, это несправедливо.
Дело в том, что для скоринга приходится иметь дело с условными вероятностями (формула Байеса, см. ru.wikipedia.org/wiki/Теорема_Байеса). То есть у нас есть тот или иной профиль вождения или параметр и по нему мы пытаемся оценить степень риска.
Для ваших данных: всего 43 000 водителей, из них 250 — виновники, т.е. оставшиеся 42 750 хорошие.
Пусть среди хороших вероятность «опасного» профиля 10%, среди виновников — 90%.
В абсолютных цифрах: опасным профилем обладают 42750*0,1=4275 хороших человек, среди виновников их 250*0,9=225. На каждого виновного с опасным профилем приходится 19 хороших. Иначе говоря, вероятность того, что некто с опасным профилем — «виновник» = 225/(225+4275)=4,7%, а 95,3% — что он хороший. То есть если, увидев опасный профиль, мы считаем человека потенциальным виновником, то в 95% мы ошибаемся, а правы лишь в 5%. Лучше кидать монетку — там вероятность ошибки только 50%. Или считать всех хорошими — вероятность ошибки 5%.
Конечно, можно посмотреть не один критерий, а несколько — но вряд ли что-то выйдет.
Для того, чтобы некий количественный параметр на таком исключительном событии (вероятность участия водителя ДТП = 250/43000 = 0,5%) можно было использовать, отношение его вероятности у хороших и опасных должно быть в данном случае не менее 20:1 (то есть даже если 100% виновников ДТП ездят таким образом, не более 5% хороших должны допускать такое вождение, если не все участники ДТП ездят так — то процент хороших с такой манерой должен быть соответственно меньше). А лучше — в разы или на порядок выше. Но такой параметр, бюсь, был лы очевиден и без статистики, на бытовом уровне: едешь так — (почти) гарантированно попадаешь в аварию. Не едешь так — не в жизни не попадешь.
Например, это может быть разумно если для ПО какой-то системы учета аналогичное оборудование развернуто на производствах в разных регионах и использовать один сервер неудобно. Или если устройство, работающее с приложением, установлено на транспорте, едущем из региона в регион — с разными провайдерами.
По итогу размышлений (насколько я понимаю эту систему): в любом случае секретный ключ шифрования AppKey «клону» при лобовом копировании неизвестен, а сессионные ключи шифрования напрямую не передаются, но генерируются с обеих сторон с использованием этого AppKey. Причем каждый раз — разные (благодаря случайному AppNonce). То есть кроме подключения через другой сервер «клон» сделать ничего дальше не сможет.
Но не будет ли при таком подключении через сторонний сервер отключен оригинал (и снова попробует сделать подключение, которое опять можно скопировать для его отключения)?
Поэтому вопрос сводится к тому, только ли сервер отслеживает попытку подключения (учет DevNonce) или и приложение за ним тоже его может и должно делать?
В этом случае «клон» фактически будет уже не фейковым устройством, так как обладает всей информацией, что и исходное. Но считыванием эфира или копированием считанных запросов эти параметры не получить (по крайней без взлома криптографии).
Видимо, полный ответ на исходный вопрос должен звучать так: БС выступают только передатчиками, регистрацию в одной сети (и дальнейшее общение с кодированием) осуществляет один сетевой сервер. То есть нет нескольких «точек регистрации», которые могли бы зарегистрировать по копиям корректного запроса разные устройства.
Противодействие повторной передаче записанного запроса серверу также предусмотрено.
Если же изготовлена точная копия-злоумышленник устройства (знающая все его параметры, в том числе секретный ключ), то они с оригиналом будут бороться, отключая друг друга.
Но тут вопрос уже у меня: а если подключаться таким образом к разным сетевым серверам (то есть к серверам разных провайдеров, работающих с одним приложением) конфликта не возникнет? То есть может ли определить сервер приложений от какого из сетевых серверов запрос действительно настоящий (например, ему также транслируется и DevNonce)?
В этом случае все параметры (AppEUI, DevEUI, DevNonce и MIC), конечно, будут корректными, так как являются точной копией настоящего запроса join-request.
Но сетевой сервер хранит «некоторое» количество ранее полученных DevNonce для каждого устройства и повторное обращение с тем же DevNonce игнорирует. Поэтому простое воспроизведение пакета присоединения (и далее) не даст подключиться к сети (например. отключив первое настоящее устройство).