Olympus комплект камеры Bluetooth для пробуждения
Я работаю над сценарием Python, предназначенным для запуска на Raspberry Pi, который управляет камерой Olympus Air A01 удаленно через WiFi. Управление WiFi работает нормально, но я бы также хотел, чтобы скрипт мог включать камеру удаленно.
Насколько я могу судить, это можно сделать только через Bluetooth LE, но OPC SDK не дает подробных сведений о том, как это делается. Я думаю, что при разработке под iOS/Android для этой цели используется Java-метод "пробуждения", но опять же нет подробностей относительно того, что именно этот метод передает на камеру, чтобы включить его.
Я экспериментировал с Bluez/Gatttool и у меня есть список служб и дескрипторов камеры, но я понятия не имею, какой дескриптор делает, что и какие значения я должен записать в него, чтобы разбудить камеру.
Кто-нибудь смог включить эту камеру через Bluetooth LE без использования OPC SDK?
Спасибо!
1 ответ
Таким образом, я включил имитацию трафика между Android-приложением Olympus и камерой при включении, и теперь я могу разбудить камеру, используя Gatttool для отправки тех же значений.
Вот минимальная последовательность Gatttool, которая пробуждает камеру:
sudo gatttool -b 90:B6:86:XX:YY:ZZ -I
connect
primary
char-desc
char-write-req 0x0013 0001
char-write-req 0x0016 0001
char-write-req 0x0019 0001
char-write-req 0x0012 0101090c01023132333435364400
char-write-req 0x0015 0202000000
char-write-req 0x0012 0102040f0101021300
char-write-req 0x0015 0203000000
exit
Редактировать:
То же самое может быть достигнуто в Python так:
import os
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --primary')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-desc')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0013 -n 0001')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0016 -n 0001')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0019 -n 0001')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0012 -n 0101090c01023132333435364400')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0015 -n 0202000000')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0012 -n 0102040f0101021300')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0015 -n 02030000000; sleep 5')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0012 -n 010304140101011700')
os.system('gatttool -b 90:B6:86:XX:YY:ZZ --char-write-req --handle 0x0015 -n 02040000000')
Замена 90:B6:86:XX:YY:ZZ на ваш собственный MAC-адрес...
Сначала я попытался использовать Pygatt, но не смог выполнить основные операции и операции char-desc из Gatttool, поэтому я вернулся к вызову Gatttool напрямую через его неинтерактивный режим.