ProteGO-Safe / specs

Opis, specyfikacja i zadania. Zacznij tutaj.
GNU General Public License v3.0
117 stars 29 forks source link

Zasięg bluetooth #23

Closed darthkurak closed 4 years ago

darthkurak commented 4 years ago

Cała aplikacja ma działać używając bluetooth i wykryte przez niego urządzenia. Czy i w jaki sposób system będzie weryfikował i obliczał "realną" odległość pomiędzy urządzeniami? Czy wszyscy będą wrzucani do tego samego worka? W dzisiejszych czasach nowe bluetooth mają dosyć potężny zasięg (nawet do 400 m). Jeżeli założone zostanie, że wszystkie wykryte urządzenia są potencjalnymi zarażonymi, możemy wrzucać do worka bardzo dużą ilość osób, które w ogóle styczności z osobą zarażoną nie miały.

darthkurak commented 4 years ago

Tu ciekawy wątek na stackoverflow: https://stackoverflow.com/questions/3624945/how-to-measure-distance-between-two-iphone-devices-using-bluetooth

darthkurak commented 4 years ago

Dodatkowo, czy jest planowane do tego użycie BLE?

darthkurak commented 4 years ago

ibeacon wydaje się czymś co mogłoby o wiele bardziej zwiększyć dokładność: https://docs.microsoft.com/en-us/samples/xamarin/ios-samples/airlocate/

KoderFPV commented 4 years ago

Z tego co widze projekt wykorzystuje BLE.

Jest do tego osobny branch. https://github.com/ProteGO-app/android/pull/24

mkwiecinski commented 4 years ago

Poziom siły sygnału (RSSI) wysłanego z urządzenia A w identycznych warunkach i odbieranego na dwóch różnych urządzeniach B i C znajdujących się dokładnie w tym samym miejscu będzie inny. Może to nie będą duże różnice, pytanie do jakiej dokładności będzie dążył projekt.

Na pewno RSSI np. -50 będzie nieporywnywalne między użytkownikami (urządzeniami) tzn czasem będzie oznaczało 2 metry a czasem 10 metrów.

Ponadto nie jestem pewien czy iOS i Android mogą przy wysyłaniu sygnału sterować jego mocą, czyli TxPower. Jeśli nie, to robi się macierz NxN względnych kalibracji do wykonania, gdzie N to liczba rodzajów urządzeń :). Dla N=100... sami wiecie ;)

Dr-Kownacki commented 4 years ago

Zobaczcie, na Hackcrisis był taki projekt zgłoszony i obliczał odległość (Safe Distance, Vagiz Duseev)

https://www.guaana.com/challenge/SaxfAeTSiMWWAom6H/results/RzFjgXmEv7jipyeNT/h2DvwB7d7GXghFviR/main

On monitorował po BT czy telefony zbliżyły się na mniej niż 2m i robił alert wtedy. Może taki sam mechanizm jako jakiś "trigger" w ProteGO ?

On nakręcił taki filmik o ich appce: https://youtu.be/JQBV6jiAoHA

kierepka commented 4 years ago

No i na github sporo przykładów jak to zrobić: https://github.com/search?q=bluetooth+distance Tu gotowy manager z taką funkcjonalnością: https://github.com/AltBeacon/android-beacon-library/blob/master/lib/src/main/java/org/altbeacon/beacon/BeaconManager.java

mkwiecinski commented 4 years ago

Autor tego managera próbował 5 lat temu stworzyć tę bazę kalibracji urządzenie-dystans-RSSI o której piszę. Nie było chętnych do kontrybucji. https://altbeacon.github.io/android-beacon-library/distance-calculations.html

darthkurak commented 4 years ago

Może autorzy mogliby coś dodać? :)

jakublipinski commented 4 years ago

Będziemy wysyłać na serwer siłę odebranego sygnału (RSSI). Potrzebujemy wykonać więcej testów aby móc określić jak dobrze uda nam się tę siłę w odległość. Zapraszam do zaangażowania się w te testy.

matsobdev commented 4 years ago

Będziemy wysyłać na serwer siłę odebranego sygnału (RSSI). Potrzebujemy wykonać więcej testów aby móc określić jak dobrze uda nam się tę siłę w odległość. Zapraszam do zaangażowania się w te testy.

Nie tylko można mierzyć moc sygnału odebranego, ale też umieścić w transmisji wartość sygnału wysyłanego przez telefon. Choć poziomy transmisji oferowane przez Androida (tylko o Andku się będę wypowiadał) są z góry skwantyfikowane, to jest taka opcja w ustawieniach rozgłaszania beacona. Tylko jest ale, że nie we wszystkich telefonach działa i przy odczycie ramki, wartość ma same zera. Bugi... nie tylko tutaj, jeśli chodzi o BLE

potiuk commented 4 years ago

Polecam lekturę protokołu Google + Apple:

https://www.blog.google/documents/58/Contact_Tracing_-_Bluetooth_Specification_v1.1_RYGZbKW.pdf

Dokładnie tak jak @matsobdev pisze - w tym rozwiązaniu (z resztą podobnie było z ProteGO) RSSI może być umieszczone w ramce rozgłaszanej przez urządznie. Clue jest dokładnie to co zrobiłi badacze w Trace Together - czyli skalibrować system, obejść bugi etc. w zależności od tego jakie urządzenia sie komunikują. To wszystko jest na szczęście ogarnialne (bo liczba urządzeń jest ograniczona) i z zasobami Google i Apple na pewno da się to bardzo dobrze skalibrować. Choćby w taki sposób żeby wynająć do testów firmę taką jak na przykład Applause.

Ta firma (która już współpracuje z Google z tego co wiem) współpracuje z kikuset tysiacami ludzi z róznymi telefonami na całym świecie i może zorganizować takie testy w ciągu paru dni. Kwestia tylko i wyłącznie zapłacenia za to (zakładam że G + A mają na to trochę funduszy).

Po inżyniersku - można bardzo wiele różnych tego rodzaju sytuacji zamodelować i przeprowadzić zorganizowane testy, które umożliwią odpowiednią kalibrację.

To będzie o wiele bardziej miarodajne niż teoretyczne dywagacje na ten temat i "indywidualne" testy robione przez pojedyncze osoby na wybranych modelach telefonów. I dlatego też uważam że G+A mają najlepsze na świecie doświadczenie i największe fundusze żeby zrobić to bardzo dobrze.

KoderFPV commented 4 years ago

Z powodu dłuższej nieaktywności w tym wątku, zostanie on automatycznie zamknięty w najbliższym czasie.