умные bluetooth весы

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: умные bluetooth весы

Сообщение directman66 » Ср май 09, 2018 6:09 am

Можете в блоге конекта или сюда статью с последовательностями действий написать ?
Железо/софт/интеграция?

У меня на команду
gatttool --device=0C:B2:B7:02:3C:3F --adapter=hci0 --listen
выводит help gatttool.

По инициализации устройства команды можно посмотреть тут https://bbs.archlinux.org/viewtopic.php?id=126603
Команды https://stackoverflow.com/questions/156 ... s-in-linux
https://stackoverflow.com/questions/342 ... l-gatttool
Последний раз редактировалось directman66 Ср май 09, 2018 7:36 am, всего редактировалось 2 раза.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: умные bluetooth весы

Сообщение directman66 » Ср май 09, 2018 7:22 am

Найти мак можно так:

Код: Выделить всё

pi@dmsserver:~$ sudo hcitool lescan
LE Scan ...
49:54:1A:7B:6C:3A (unknown)
49:54:1A:7B:6C:3A (unknown)
A4:C1:38:C7:0C:A3 QN-Scale
49:54:1A:7B:6C:3A (unknown)
49:54:1A:7B:6C:3A (unknown)
A4:C1:38:C7:0C:A3 QN-Scale
A4:C1:38:C7:0C:A3 QN-Scale
A4:C1:38:C7:0C:A3 QN-Scale
49:54:1A:7B:6C:3A (unknown)
49:54:1A:7B:6C:3A (unknown)
А дальше процесс застопорился.

В интерактивном режиме тишина

Код: Выделить всё

 gatttool -b A4:C1:38:C7:0C:A3  -t random -I       
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: умные bluetooth весы

Сообщение directman66 » Ср май 09, 2018 8:12 am

Даже не знаю теперь куда смотреть. Ищу нормальный снифер ble для андройд
СпойлерПоказать
ИзображениеИзображениеИзображение
Нашел какойто протокол
Pally-Smart-Scale-Specification-v4.pdf
(483.53 КБ) 163 скачивания
Нашел инструкцию как анализировать HCI_LOG
The general procedure of reverse engineering a Bluetooth 4.x scale is as follow:

1. Acquiring some Bluetooth traffic
Delete first on your smartphone any old btsnoop_hci.log
Turn on the Bluetooth HCI Snoop Log developer option on the smartphone
Weight yourself with the original app and note down the corresponding exact true date/time with all other information (e.g. weight, water percentage, bone mass and so on).
Turn off the Bluetooth HCI Snoop Log developer option
Save the btsnoop_hci.log with a meaningful filename
Do step 1-5 at least three times again but with different weights (e.g. weight yourself while holding a crate of beer)
2. Find out the Bluetooth services and characteristic
Install BLE Scanner App by Bluepixel Technology LLP
Scan and connect to the scale with this app
Note down all UUID numbers of services and characteristic which are not Device Information, Generic Access and, Generic Attribute
Additionally note down for every characteristic UUID if it readable (R), writeable (W) and/or have an indication flag (I)
3. Analyse the Bluetooth protocol
Open your first btsnoop_hci.log with wireshark version > 1.10
Search for the true values in the log files. A good starting point is to search for the weight
Convert your decimal weight into a hex value (ignore any comma. The value is divided by 100 or 10 afterwards) for example if the weight is 75,3 kg then the hex value is 02F1 in big-endian or F102 in little endian
Look for the weight value in little endian format which is send from the scale to the app (source should be remote() and destination localhost())
If you have found a value string that contains the weight try to find in this string other values as well (e.g. water percentage and date/time)
Decoding the date/time is the most difficult part because the format is unknown. It could be a unix time stamp or something different. A good free tool to help you to identify the used time format is DCode by digital detective
Next we have to find out which steps are needed for the scale configuration to trigger the scale to send us the values
Search in wireshark for the first data package from the scale which contains your weight value
Now analyse previous data packages and see and note down what values was written to which characteristic UUID (source should be localhost() and destination remote())
Note also down which UUID notification flag or indication flag was set enabled
https://github.com/oliexdev/openScale/w ... -4.x-scale
СпойлерПоказать
Безымянный.png
Безымянный.png (135.86 КБ) 3285 просмотров
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: умные bluetooth весы

Сообщение smart_g » Ср май 09, 2018 9:12 am

Мне очень помогла ссылка https://gist.github.com/conoro/f0c1d96c ... 846c3686c4. В ней собственно описаны основные команды. Думаю что их больше. Усть так называемая magic 0d 05 13 00 16, которая инициализирует процесс отдачи измерений. В моем случае команда gatttool полностью выглядит так: gatttool --device=0C:B2:B7:02:3C:3F --char-write-req --handle=0x0017 --value=0d05130016 --adapter=hci0 --listen >> yunmai.log & . Это запускает полинг и при взвешивании происходит коннест(на весах загорается символ BT) и выдается пачка измерений пока вес не застабилизиируется.
Nиotificиation handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 10 13 86 85
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 10 20 1c 2c
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 11 1f d2 dc
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 11 20 ad 9c
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 11 20 d7 e6
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 11 21 19 29
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 11 21 01 31
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 12 20 f5 c7
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 12 20 f6 c4
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 12 20 ee dc
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 12 20 f9 cb
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 12 20 f9 cb
Notification handle = 0x0012 value: 0d 1e 0b 01 5a f1 bf 13 21 01 33
Notification handle = 0x0012 value: 0d 1e 14 02 00 5a f1 bf 13 00 00 00 02 20 f4 00 00 00 00 d9
Notification handle = 0x0012 value: 0d 1e 14 02 00 5a f1 bf 13 00 00 00 02 20 f4 00 00 00 00 d9

Попробуйте запустить gatttool -I интнрактивный режим. Далее connect свой mac address весов, primary, characteristics. Посмотрите что выдаст.
Судя по всему, в ссылке на MiScale не все написано. Или написано неправильно. Yunmai вроде каким то боком относится к Mi. Так как MiHome знает про модель весов Yunmai mini.

Инструкцию по Yunmai напишу чуть позже.
За это сообщение автора smart_g поблагодарил:
directman66 (Ср май 09, 2018 9:34 am)
Рейтинг: 1.16%
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: умные bluetooth весы

Сообщение directman66 » Ср май 09, 2018 9:34 am

Реверс инжиниринга на газон в инете не встречал еще ) Но они самые дешевые (1500 руб), а по способностям ничем не хуже сяоми.

Ваершарком мы их победим!
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: умные bluetooth весы

Сообщение smart_g » Ср май 09, 2018 9:36 am

Все китайские бренды как правило из одной бочки. Шильды разные. Надо пробовать. Хотя Ваш лог отличается от лога по yunmai.
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: умные bluetooth весы

Сообщение directman66 » Ср май 09, 2018 9:42 am

А как вы начинаете полинг? Каждые сколько то секунд посылаете --value=0d05130016 в цикле?

Кстати, легко передавать данные сразу в mqtt и разбирать уже на php.

Пример:

Код: Выделить всё

$cmd='/home/pi/rtl_433_rcswitch/build/src/rtl_433 -f 433920000 -s 250000 -F json|mosquitto_pub -h localhost -t /home/rtl_433 -l';
$answ=shell_exec($cmd);
echo $answ;
или аналогично дергать гетом изменение свойств объекта.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: умные bluetooth весы

Сообщение smart_g » Ср май 09, 2018 10:29 am

gatttool --device=0C:B2:B7:02:3C:3F --char-write-req --handle=0x0017 --value=0d05130016 --adapter=hci0 --listen >> yunmai.log &
Запускаю в командгой строке эту команду. Ключ --listen и включает полинг. Процесс висит в фоне систему не нагружает совсем. Только в момент коннекта с весами активизируется. Данную команду надо добавить в автостарт, чтобы при перезагруке системы не вводить по новой.
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: умные bluetooth весы

Сообщение directman66 » Ср май 09, 2018 3:45 pm

А как в мд передаёте?

Вытащил из варшака приветственную команду

Код: Выделить всё

01030c00
, по аналогии отправляю весам, но в ответ какая-то ошибка.

Код: Выделить всё

pi@dmsserver:~$ gatttool --device=A4:C1:38:C7:0C:A3 --char-write-req --handle=0x0017 --value=01030c00  --listen
connect error: Device or resource busy (16)
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: умные bluetooth весы

Сообщение smart_g » Ср май 09, 2018 8:07 pm

php скрипт, который парсит файл yunmai.log вызывает setglobal. Этот скрипт вызывается из цикла OneMinute MD. Предварительно создан класс Scale со свойствами weight, fat,resistance. Обекты соответствуют ID юзеров заведенных в весы.
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
Ответить