Vyvýjíme bezpečnou kapesní e-rousku, která nepotřeuje mobilní telefon.
e-rouska je mobilní aplikace, která vznikla rámci iniciativy COVID19CZ a je součástí chytré karantény.
https://github.com/covid19cz/erouska-android/wiki/Technical-documentation
Petrova úvaha: „pokud chci pomoct zdarma v projektu o nějakém kontrolovaném pohybu osob, fajn, ale pak nevím proč by jim mé zařízení mělo posílat telefonní číslo, model, výrobce, bluetooth MAC adresu a další OSOBNÍ údaje.“
Pracujeme na open-source platformě, postavené na ESP32 a s použitím Micropython – BLE:
pomocný link:
https://github.com/micropython/micropython/blob/master/extmod/nimble/modbluetooth_nimble.c
technické střípky: 128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID ??? mam nachytane pakety co vysilaj telefony z eRousky >>> b.gattc_write(0, 15, "Hello from micropython\r") GATT procedure initiated: write no rsp; att_handle=15 len=23 NimBLE discovery ESP32 LE advertising report. len=32 num=1 evtype=0 addrtype=1 addr=47.70.71.e6.14.81 advlen=21 rssi=-63 02 01 1a 11 07 03 00 13 ac 42 02 55 bc ea 11 e4 67 68 dd 40 14 flags=0x1a uuids128(complete)=1440dd68-67e4-11ea-bc55-0242ac130003 takhle to vidi (ten paket) ESP32 NimBLE (kompilovanej z Ccka a DEBUG) Advertising Data Service Data - 16 bit UUID Length: 13 Type: Service Data - 16 bit UUID (0x16) UUID 16: Unknown (0xdd68) Service Data: 0474fd463eabd7da1182 RSSI: -48dBm musi se teda prepsat uPy knihovna (zmenit pasivni scan za aktivni) pak zacnou chodit i ty chybejici data ??? takze jako super, ze MAC se meni, ale staci si z service 0x1800 a descriptoru 0x2a00 precist jmeno a to je stejny, mimo to v service 0x1800 je tech descriptoru asi 5, takze tam budou jeste dalsi zajimave veci ...
import bluetooth erouska_service_uuid = b'\x02\x01\x1a\x11\x07\x03\x00\x13\xacB\x02U\xbc\xea\x11\xe4g\x68\xdd@\x14' erouska_service_uuid16 = b'\x68\xdd' ble = bluetooth.BLE() ble.active(1) > GAP procedure initiated: stop advertising. MPY: soft reboot MicroPython v1.12-360-g16c6c3bca-BLE-activescan on 2020-04-18; ESP32 module with ESP32 Type "help()" for more information. import bluetooth erouska_service_uuid = b'\x02\x01\x1a\x11\x07\x03\x00\x13\xacB\x02U\xbc\xea\x11\xe4g\x68\ erouska_service_uuid16 = b'\x68\xdd' ble = bluetooth.BLE() ble.active(1) True response_data = b'\x0d\x16\x68\xddahojc19\x12\x34\x56' ble.gap_advertise(100000, erouska_service_uuid, resp_data=response_data) GAP procedure initiated: advertise; disc_mode=2 adv_channel_map=7 own_addr_type=0 adv_filter_policy=0 adv_itvl_min=160 adv_itvl_max=160