{"id":273413,"date":"2016-02-02T13:37:03","date_gmt":"2016-02-02T10:37:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=273413"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=273413","title":{"rendered":"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u043e\u043c \u0432 \u0440\u0438\u0442\u043c\u0435 BlueZ"},"content":{"rendered":"<p>       \u0412 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u043f\u0443\u043b\u044c\u0441, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u0430, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0437\u0430\u0440\u044f\u0434\u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0438 \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441. \u0422\u0430\u043a\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433 \u0441\u0442\u0430\u0442\u044c \u0438 \u0444\u0438\u0442\u043d\u0435\u0441-\u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u0441\u043e \u0441\u0442\u0430\u0446\u0438\u043e\u043d\u0430\u0440\u043d\u044b\u043c \u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c. \u0422\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 Xiaomi mi band 1S Pulse (<a href=\"https:\/\/geektimes.ru\/company\/madrobots\/blog\/265886\/\">\u043e\u0431\u0437\u043e\u0440<\/a> \u043d\u0430 Geektimes) \u0441 \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0441\u0435\u0440\u0434\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0438\u0442\u043c\u0430.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u044b\u0431\u043e\u0440 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430 \u0431\u044b\u043b \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0435\u0433\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0446\u0435\u043d\u043e\u0439, \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0438 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043f\u0443\u043b\u044c\u0441\u0430 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430, \u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438. <\/p>\n<p>  \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u044f \u043d\u0430\u0447\u0430\u043b \u0441 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 Bluetooth 4.0 (\u0438\u043b\u0438 Bluetooth Low Energy, \u0434\u0430\u043b\u0435\u0435 \u2014 BLE). \u041a\u043e\u0435-\u0447\u0442\u043e \u043d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"http:\/\/allmydroids.blogspot.ru\/2014\/12\/xiaomi-mi-band-ble-protocol-reverse.html\">\u0441\u0435\u0442\u0438<\/a>, \u0438 \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433\u043b\u0430, \u043d\u043e \u043e\u043d\u0430 \u043a\u0430\u0441\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0431\u0435\u0437 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u043d\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0447\u0430\u043b \u0441 BLE-\u0441\u043a\u0430\u043d\u0435\u0440\u0430. <\/p>\n<p>  \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0438, \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0435\u0441\u0442\u044c \u0443 Nordic Semiconductor. \u042d\u0442\u043e Master Control Panel \u0438\u043b\u0438 <a href=\"https:\/\/www.nordicsemi.com\/eng\/Products\/Nordic-mobile-Apps\/nRF-Master-Control-Panel-application\">nRF MCP<\/a> \u0434\u043b\u044f Android 4.3+. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u201cSCAN\u201d, \u044f \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 mi band \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0435\u0433\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u2013 C8:0F:10:11:1B:6E:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a9c\/cf5\/e90\/a9ccf5e90e4e454780fb3c17f04e41ad.jpg\"\/><\/p>\n<p>  \u041d\u0430\u0436\u0430\u0432 \u043d\u0430 \u201cOPEN TAB\u201d \u0438 \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u201cCONNECT\u201d, \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430\u0431\u043e\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/318\/05c\/55d\/31805c55d2744086a370c5f20784c299.jpg\"\/><\/p>\n<p>  \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044f \u043f\u0443\u043b\u044c\u0441\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u2014 <a href=\"https:\/\/developer.bluetooth.org\/gatt\/services\/Pages\/ServicesHome.aspx\">0x180D<\/a>. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0434\u043e\u0432\u0430\u043b\u0441\u044f \u044f \u0440\u0430\u043d\u043e.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/en.wikipedia.org\/wiki\/Raspberry_Pi\">Raspberry Pi<\/a> (\u043c\u043e\u0434\u0435\u043b\u044c B) \u0438 BLE-usb-\u0430\u0434\u0430\u043f\u0442\u0435\u0440 BT400 \u043e\u0442 ASUS. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c <a href=\"http:\/\/www.bluez.org\/\">BlueZ<\/a> \u2013 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u043d\u043e\u0436 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Bluetooth \u043f\u043e\u0434 Linux \u0438 \u043f\u0430\u0440\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f Python.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 Raspberry Pi<\/b><\/p>\n<div class=\"spoiler_text\">\u0414\u043b\u044f Raspberry Pi \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0437 <a href=\"https:\/\/www.raspberrypi.org\/downloads\">Raspbian<\/a>. \u041f\u043e\u0441\u043b\u0435 apt-get update \u0438 apt-get upgrade \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0430\u0434\u0430\u043f\u0442\u0435\u0440:  <\/p>\n<pre><code class=\"bash\">pi@raspberrypi:~ $ lsusb Bus 001 Device 006: ID 0b05:17cb ASUSTek Computer, Inc.  Bus 001 Device 005: ID 046d:c077 Logitech, Inc.  Bus 001 Device 004: ID 04d9:1602 Holtek Semiconductor, Inc. <\/code><\/pre>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043c\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u2014 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b BlueZ. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0430\u0440\u0445\u0438\u0432 \u043a\u043e\u0434\u0430, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u0431\u044b\u043b BlueZ 5.37, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u042f \u0436\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u043b\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u0435\u0439 5.23, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 apt-get. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 gatttool \u2013help. <br \/>  Gatttool \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 BlueZ \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 <a href=\"https:\/\/developer.bluetooth.org\/TechnologyOverview\/Pages\/GATT.aspx\">GATT<\/a>, \u043e\u0431\u0449\u0438\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 BLE \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 gatttool \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u00ab\u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c\u00bb \u0440\u0443\u043a\u0430\u043c\u0438, \u043d\u043e \u0437\u0434\u0435\u0441\u044c help \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438 \u0437\u043d\u0430\u0447\u0438\u0442, \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u043e\u043c. \u0427\u0435\u0440\u0435\u0437 pip \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b <a href=\"https:\/\/pexpect.readthedocs.org\/en\/stable\/\">Pexpect<\/a> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BlueZ \u0438\u0437 Python. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b Raspberry \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0430\u0434\u0430\u043f\u0442\u0435\u0440. \u0421\u0442\u0430\u0442\u0443\u0441 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 hciconfig:  <\/p>\n<pre><code class=\"bash\">pi@raspberrypi:~ $ hciconfig hci0:\tType: BR\/EDR  Bus: USB \tBD Address: 5C:F3:70:71:7E:F5  ACL MTU: 1021:8  SCO MTU: 64:1 \tDOWN  \tRX bytes:616 acl:0 sco:0 events:34 errors:0 \tTX bytes:380 acl:0 sco:0 commands:34 errors:0 <\/code><\/pre>\n<p>  \u0424\u043b\u0430\u0433 DOWN \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d, \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<br \/>  sudo hciconfig hci0 up  <\/div>\n<\/div>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f Raspberry, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043c\u043d\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b (\u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0443\u043b\u044c\u0441\u0430, \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0440\u044f\u0434\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u0432\u0438\u0431\u0440\u043e\u0437\u0432\u043e\u043d\u043e\u043a) \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0437 BlueZ.<br \/>  \u041f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b BLE \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430\u0448\u0435\u043b \u0431\u0440\u0430\u0441\u043b\u0435\u0442:<\/p>\n<pre><code class=\"bash\">pi@raspberrypi:~ $ sudo hcitool -i hci0 lescan LE Scan ... C8:0F:10:11:1B:6E (unknown) C8:0F:10:11:1B:6E MI1S <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043a \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 connect, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 gatttool \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (\u043a\u043b\u044e\u0447 I):<\/p>\n<pre><code class=\"bash\">pi@raspberrypi:~ $ sudo gatttool -i hci0 -b C8:0F:10:11:1B:6E -I [C8:0F:10:11:1B:6E][LE]&gt; connect Attempting to connect to C8:0F:10:11:1B:6E Connection successful [C8:0F:10:11:1B:6E][LE]&gt; <\/code><\/pre>\n<p>  \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0435\u0437 \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u0438\u0442\u0441\u044f \u0441\u0435\u043a\u0443\u043d\u0434 20. \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 primary:<\/p>\n<pre><code class=\"bash\">[C8:0F:10:11:1B:6E][LE]&gt; primary attr handle: 0x0001, end grp handle: 0x0009 uuid: 00001800-0000-1000-8000-00805f9b34fb attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb attr handle: 0x0010, end grp handle: 0x0039 uuid: 0000fee0-0000-1000-8000-00805f9b34fb attr handle: 0x003a, end grp handle: 0x0048 uuid: 0000fee1-0000-1000-8000-00805f9b34fb attr handle: 0x0049, end grp handle: 0x004e uuid: 0000180d-0000-1000-8000-00805f9b34fb attr handle: 0x004f, end grp handle: 0x0051 uuid: 00001802-0000-1000-8000-00805f9b34fb <\/code><\/pre>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0446\u0438\u0444\u0440\u0430\u043c \u043f\u043e\u0441\u043b\u0435 uuid. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u043e\u0431\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (generic), \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c (fee0 \u0438 fee1), HRM \u0441\u0435\u0440\u0432\u0438\u0441 (180d) \u0438 \u0430\u043b\u0435\u0440\u0442\u0438\u043d\u0433 (1802). <br \/>  \u041f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 char-desc \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 (handles). \u041d\u0430\u0448\u0435\u043b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0443 \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c ff0c:<br \/>  handle: 0x002c, uuid: 0000ff0c-0000-1000-8000-00805f9b34fb,<br \/>  \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c 0x002c \u0434\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0440\u044f\u0434\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u044b\u043b \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 char-read-hnd (\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b16\/daf\/c3a\/b16dafc3a3324adf96aa02cd0d63fc8b.png\"\/><\/p>\n<p>  \u0411\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0430 \u00ab\u0441\u0434\u0430\u043b\u0430\u0441\u044c\u00bb \u043f\u0435\u0440\u0432\u043e\u0439. \u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0440\u044f\u0434\u0430, \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u0432 hex (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u043d\u0430\u043a\u0430\u043d\u0443\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b 70%), \u043d\u043e \u0438 \u043f\u043e\u043b\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0437\u0430\u0440\u044f\u0434\u043a\u0435: \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u043a\u043b\u043e\u0432, \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0437\u0430\u0440\u044f\u0434\u043a\u0438, \u0441\u0442\u0430\u0442\u0443\u0441 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u0435\u043d\u044c.<\/p>\n<p>  \u0412\u0442\u043e\u0440\u044b\u043c \u00ab\u043f\u043e\u043a\u043e\u0440\u0438\u043b\u0441\u044f\u00bb \u0432\u0438\u0431\u0440\u043e\u0437\u0432\u043e\u043d\u043e\u043a. \u041f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 MCP \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e Immediate Alert, \u0430 Alert Level \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 0x2A06:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/542\/b2a\/8b1\/542b2a8b1ce044dea41ab0bd2250c6fe.jpg\"\/><\/p>\n<p>  \u0412 \u0441\u043f\u0438\u0441\u043a\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a, \u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0430:<br \/>  handle: 0x0051, uuid: 00002a06-0000-1000-8000-00805f9b34fb<br \/>  \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c 0x0051 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 01:<\/p>\n<pre><code class=\"bash\">[C8:0F:10:11:1B:6E][LE]&gt; char-write-cmd 0x0051 01 <\/code><\/pre>\n<p>  \u0411\u0440\u0430\u0441\u043b\u0435\u0442 \u043e\u0442\u043e\u0437\u0432\u0430\u043b\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0441\u043b\u0430\u0431\u044b\u043c\u0438 \u0436\u0443\u0436\u0436\u0430\u043d\u0438\u044f\u043c\u0438, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 02 \u044d\u0442\u043e \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u043e 01, \u0442.\u0435. \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u0430 03 \u2014 \u0434\u0432\u0430, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0445. \u0421 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u0443\u043b\u044c\u0441\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. MCP \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8be\/1a3\/628\/8be1a3628f6b4f1d8e84e73e25232869.jpg\"\/><\/p>\n<p>  \u0421\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u044d\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438:<\/p>\n<pre><code class=\"bash\">handle: 0x004b, uuid: 00002a37-0000-1000-8000-00805f9b34fb handle: 0x004c, uuid: 00002902-0000-1000-8000-00805f9b34fb handle: 0x004d, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x004e, uuid: 00002a39-0000-1000-8000-00805f9b34fb <\/code><\/pre>\n<p>  \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0443\u043b\u044c\u0441\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u0435\u0451 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0440\u044f\u0434\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u041d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0437\u0430\u043f\u0438\u0441\u0430\u0432 \u0432 CCC (Client Characteristic Configuration) \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c 0x004\u0441 (\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443 CCC \u0432\u0441\u0435\u0433\u0434\u0430 2902) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0100 \u0438 \u0436\u0434\u0430\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f. <\/p>\n<p>  \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0448\u043b\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u043b\u043e, \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434. \u0417\u0430\u043f\u0443\u0441\u043a gatttool \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u2013listen \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0434\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, gatttool \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0437\u0430\u0432\u0438\u0441\u0430\u043b\u00bb \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438. \u0417\u0430\u0433\u0430\u0434\u043a\u0430, \u043e\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c BLE-\u0441\u043d\u0438\u0444\u0444\u0435\u0440 (\u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0441 Windows 8). \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0442\u044b\u0439 BLE-usb-\u0434\u043e\u043d\u0433\u043b \u043d\u0430 \u0447\u0438\u043f\u0435 \u0421\u04212540 \u043e\u0442 Texas Instruments \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"http:\/\/processors.wiki.ti.com\/index.php\/BLE_sniffer_guide\">Smart Packet Sniffer<\/a> \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0412\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440, \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u043b \u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"http:\/\/www.ti.com\/tool\/packet-sniffer\">TI<\/a>.<\/p>\n<p>  \u0412\u0430\u0436\u043d\u043e! \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043d\u0438\u0444\u0444\u0435\u0440 \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (advertising mode), \u0442.\u0435. \u0434\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u043c. \u0418\u043d\u0430\u0447\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043b\u0438\u0448\u043d\u0438\u0435 BLE-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442 \u0441\u043d\u0438\u0444\u0444\u0435\u0440\u0430, \u0430 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u043e\u0433\u0435.<\/p>\n<p>  \u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u0441\u043d\u0438\u0444\u0444\u0435\u0440\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0a8\/1af\/2f5\/0a81af2f5bc74ea6ad6deb68c668e805.png\"\/><\/p>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u043e\u0439 \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043f\u043e \u043f\u043e\u043b\u044e AdvA (Advertising Address). \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438 \u0441\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u043c, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 GATT-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/57b\/ea2\/3fb\/57bea23fbc644a6b9581465c0f713733.png\"\/><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0100 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 CCC \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c 0x004C, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043f\u0443\u043b\u044c\u0441\u0430.<\/p>\n<p>  \u041e\u0434\u0438\u043d \u0438\u0437 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430 \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u043b\u043e\u0433\u0435 <a href=\"http:\/\/0110.be\/posts\/Access_Mi_Band_from_Android_-_Notes_on_the_Bluetooth_LE_Protocol\">\u043d\u0430\u043f\u0438\u0441\u0430\u043b<\/a>, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0441\u043c\u043e\u0433 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0441 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u043e\u043c, \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0445\u0435\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043f\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0438 \u0441\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u043c. <\/p>\n<p>  \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 20 \u0431\u0430\u0439\u0442, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0443 \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c 0x0019 \u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438. \u041f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0430\u0439\u0442\u0430 \u2013 \u044d\u0442\u043e uid \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430, \u0434\u0430\u043b\u0435\u0435, \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0431\u0430\u0439\u0442\u044b \u043f\u043e\u043b\u0430, \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430, \u0440\u043e\u0441\u0442\u0430, \u0432\u0435\u0441\u0430, \u0431\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 (\u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c 00) \u0438 10 \u0431\u0430\u0439\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0445\u043e\u0436\u0435\u0439 \u043d\u0430 \u0445\u0435\u0448. \u0421\u0447\u0438\u0442\u0430\u0442\u044c user info \u0438\u0437 \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. <\/p>\n<p>  \u041f\u0440\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<ol>\n<li>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u0432 \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 (CCC \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c 2902)<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c, \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e 0x0028 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u0440\u044f\u0434\u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0438 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0437\u0430 \u0434\u0435\u043d\u044c \u0448\u0430\u0433\u043e\u0432<\/li>\n<li>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043f\u0443\u043b\u044c\u0441\u0430 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e 0x004E, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0435 \u00ab\u0442\u043e\u0447\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0443\u043b\u044c\u0441\u0430\u00bb \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 0x15 0x00 0x00 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0431\u0440\u043e\u0441)<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u0442\u0443\u0434\u0430 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f 0x15 0x02 0x01, \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0435\u0432\u043e\u0439 \u0440\u0443\u043a\u0435<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u0447\u0435\u0440\u0435\u0437 15-20 \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u0443\u043b\u044c\u0441\u0430 \u0432 \u0434\u0432\u0443\u0445 \u0431\u0430\u0439\u0442\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 06 40. \u0412\u0442\u043e\u0440\u043e\u0439 \u0431\u0430\u0439\u0442 \u0438 \u0435\u0441\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0443\u043b\u044c\u0441\u0430 \u0432 hex<\/li>\n<\/ol>\n<p>  \u0412 \u0442\u0435\u043e\u0440\u0438\u0438, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043f\u0443\u043b\u044c\u0441\u0430, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0432 3-\u0439 \u0438 4-\u0439 \u043f\u0443\u043d\u043a\u0442\u044b. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u0441\u0431\u0440\u043e\u0441\u0430. \u0412\u0440\u0443\u0447\u043d\u0443\u044e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u0431\u044b \u0440\u0430\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u044f \u0431\u044b \u0443\u0441\u043f\u0435\u043b \u0432\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b Python-\u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"python\">import sys, pexpect from time import sleep gatt=pexpect.spawn('gatttool -I') gatt.logfile = open(&quot;pylog.txt&quot;, &quot;w&quot;) gatt.sendline('connect C8:0F:10:11:1B:6E') gatt.expect('Connection successful') # Check battery level gatt.sendline('char-read-hnd 0x002c') gatt.expect('Characteristic value.*') batt = gatt.after batt = int(batt.split()[2],16) print 'Battery level:', batt, '%' # Send alert gatt.sendline('char-write-cmd 0x0051 01') sleep(5) # Allow notification gatt.sendline('char-write-req 0x004c 0100') gatt.expect('Characteristic value.*') # Send user data gatt.sendline('char-write-req 0x0019 F8663A5F0126B45500040049676F7200000000DC') gatt.expect('Characteristic value.*') # Set control point gatt.sendline('char-write-req 0x004e 150201') # Waiting for notification try:     gatt.expect('Notification handle.*')     hrm = gatt.after     hrm = int(hrm.split()[6], 16)     print 'HRM:', hrm except:     print 'Bad control point or timeout' sys.exit(0) <\/code><\/pre>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e, \u043e\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e 0x001D. \u041e\u0442\u0432\u0435\u0442 \u2013 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u0430\u0439\u0442\u0430, \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e. <\/p>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u0440\u044f\u0434\u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0438, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435, \u0436\u0434\u0435\u0442 \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043f\u0443\u043b\u044c\u0441\u0430. \u0417\u0430\u0433\u0430\u0434\u043a\u0430 \u0440\u0435\u0448\u0435\u043d\u0430, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/thingspeak.com\/\">Thingspeak<\/a>. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u043c API \u0438 \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Thingspeak \u0437\u0430\u043d\u044f\u043b\u0430 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u044f\u0442\u0438 \u043c\u0438\u043d\u0443\u0442. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0432\u043e\u0439\u0442\u0438 \u0432 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u0414\u0430\u043b\u0435\u0435, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043a\u0430\u043d\u0430\u043b\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u043a\u0438 \u043f\u043e\u043b\u0435\u0439. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 API Keys. \u0422\u0430\u043c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c API-\u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 (Write API Key):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/178\/cb8\/fe6\/178cb8fe65854ea9884c21f5b67b715f.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Private View (\u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u201cMake Public\u201d).<\/p>\n<p>  \u0417\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Thingspeak \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043d\u0430 Python:<\/p>\n<pre><code class=\"python\">baseURL = 'https:\/\/api.thingspeak.com\/update?api_key=%s'%YOUR_API_KEY f = urllib2.urlopen(baseURL + &quot;&field1=%s&field2=%s&quot; % (batt, hrm)) print f.read() f.close() <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">import sys, pexpect from time import sleep import urllib2  sample_interval = 180 #sec sample_qty = 8 api_key = 'YOUR_API_KEY' baseURL = 'https:\/\/api.thingspeak.com\/update?api_key=%s'%api_key  def getData():     try:         gatt=pexpect.spawn('gatttool -I')         # gatt.logfile = open(&quot;pylog.txt&quot;, &quot;w&quot;) # for debug only          gatt.sendline('connect C8:0F:10:11:1B:6E')         gatt.expect('Connection successful', timeout=60)          # Get battery level         gatt.sendline('char-read-hnd 0x002c')         gatt.expect('Characteristic value.*')         batt = gatt.after         batt = int(batt.split()[2],16)          # Send alert         gatt.sendline('char-write-cmd 0x0051 01')         sleep(5)          # Allow notification         gatt.sendline('char-write-req 0x004c 0100')         gatt.expect('Characteristic value.*')          # Send user data         gatt.sendline('char-write-req 0x0019 F8663A5F0126B45500040049676F7200000000DC')         gatt.expect('Characteristic value.*')          # Set control point         gatt.sendline('char-write-req 0x004e 150201')          # Waiting for notification         gatt.expect('Notification handle.*', timeout=60)         hrm = gatt.after         hrm = int(hrm.split()[6], 16)     except:         hrm = 0         batt = 0     return (str(batt), str(hrm))  def main():     sample_count = 0     while True:         try:             batt, hrm = getData()             f = urllib2.urlopen(baseURL + &quot;&field1=%s&field2=%s&quot; % (batt, hrm))             print f.read()             f.close()             sample_count = sample_count + 1             if (sample_count &gt;= sample_qty): break             sleep(sample_interval)         except:             print 'Connection error'             break  if __name__ == '__main__':     main()     sys.exit(0) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0412 \u0448\u0442\u0430\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u0420\u0430\u0434\u0438\u0443\u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440\u0430 3-4 \u043c\u0435\u0442\u0440\u0430 \u0432 \u043f\u0440\u044f\u043c\u043e\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0439 \u043f\u0430\u043b\u0430\u0442\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043b\u0435\u0433\u043a\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043b\u0430\u0434\u043e\u043d\u044c\u044e.<\/p>\n<p>  \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u0432\u0435\u043b\u043e\u0442\u0440\u0435\u043d\u0430\u0436\u0435\u0440\u0435, 20 \u043c\u0438\u043d\u0443\u0442. \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u2013 3 \u043c\u0438\u043d\u0443\u0442\u044b, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u2013 8. \u0411\u0440\u0430\u0441\u043b\u0435\u0442 \u0441\u043a\u043b\u043e\u043d\u0435\u043d \u0437\u0430\u0432\u044b\u0448\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043f\u0443\u043b\u044c\u0441\u0430 \u043f\u0440\u0438 \u043d\u0435\u043f\u043b\u043e\u0442\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0441 \u043a\u043e\u0436\u0435\u0439, \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b \u0434\u0430\u0442\u0447\u0438\u043a \u0441 \u0442\u044b\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0437\u0430\u043f\u044f\u0441\u0442\u044c\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 Thingspeak:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/0db\/bd4\/198\/0dbbd419847e4f4a8eaa165bb87e6ba9.png\"\/><br \/>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430, 8 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u0438 \u043d\u0430 \u0437\u0430\u0440\u044f\u0434 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u0414\u0443\u043c\u0430\u044e, \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u041e\u0415\u041c.<\/p>\n<h4>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:<\/h4>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/processors.wiki.ti.com\/index.php\/BLE_sniffer_guide\">\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e<\/a> \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 CC2540 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e BLE \u0441\u043d\u0438\u0444\u0444\u0435\u0440\u0430<\/li>\n<li><a href=\"http:\/\/www.jaredwolff.com\/blog\/get-started-with-bluetooth-low-energy\/\">Get started<\/a> with Bluetooth Low Energy<\/li>\n<li><a href=\"https:\/\/learn.adafruit.com\/reverse-engineering-a-bluetooth-low-energy-light-bulb\/overview\">Reverse Engineering<\/a> a Bluetooth Low Energy Light Bulb<\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/company\/intel\/blog\/267763\/\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/a> GATT \u0432 Bluetooth LE \u043d\u0430 Intel Edison<\/li>\n<\/ul>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/276343\/\"> https:\/\/habrahabr.ru\/post\/276343\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0412 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0431\u0440\u0430\u0441\u043b\u0435\u0442\u0430. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u043f\u0443\u043b\u044c\u0441, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u0430, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0437\u0430\u0440\u044f\u0434\u0430 \u0431\u0430\u0442\u0430\u0440\u0435\u0438 \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441. \u0422\u0430\u043a\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433 \u0441\u0442\u0430\u0442\u044c \u0438 \u0444\u0438\u0442\u043d\u0435\u0441-\u0431\u0440\u0430\u0441\u043b\u0435\u0442 \u0441\u043e \u0441\u0442\u0430\u0446\u0438\u043e\u043d\u0430\u0440\u043d\u044b\u043c \u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c. \u0422\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 Xiaomi mi band 1S Pulse (<a href=\"https:\/\/geektimes.ru\/company\/madrobots\/blog\/265886\/\">\u043e\u0431\u0437\u043e\u0440<\/a> \u043d\u0430 Geektimes) \u0441 \u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0441\u0435\u0440\u0434\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0438\u0442\u043c\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-273413","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=273413"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/273413\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=273413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=273413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=273413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}