首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过蓝牙唤醒处于蓝牙待机状态的设备(如avr Sony STR-DN1080)

如何通过蓝牙唤醒处于蓝牙待机状态的设备(如avr Sony STR-DN1080)
EN

Stack Overflow用户
提问于 2019-01-13 02:51:13
回答 1查看 1.1K关注 0票数 2

我想知道我的AVR STR-DN1080是如何通过蓝牙而不是我的android手机被树莓派唤醒的。让我解释一下:-我的AVR索尼STR-DN1080可以进入蓝牙待机模式。在这种情况下,我可以使用我的安卓手机,在配对的设备中搜索,找到我的"STR AVR“设备,简单地点击它,手机开始做一些事情,几秒钟后,我的DN1080唤醒并打开。-所以我想我可以使用我的Raspberry PI 3B +来使用它的蓝牙,并在需要的时候远程唤醒我的AVR。-我的PI正在运行Stretch,它的蓝牙似乎工作正常(见下文)。但是,一旦我把我的AVR置于待机状态,我就不能使用PI命令连接到设备(它看不到设备)。我还注意到,当AVR处于待机状态时,我的手机在活动设备中看不到它,所以它必须使用“配对设备”中的信息。

所以我相信我对蓝牙唤醒的工作原理有一些不理解的地方。

在我的Raspberry PI上,当AVR打开并激活时,我可以执行并检查以下操作:

(我使用sudo,因为在我的伸展中,只有sudo才能使bluetoothctl工作,否则,我会收到类似“没有默认控制器可用”的错误消息。为了保密,我更改了MAC地址。)

代码语言:javascript
复制
sudo bluetoothctl
[bluetooth]# pair AA:BB:CC:DD:EE:FF
Attempting to pair with AA:BB:CC:DD:EE:FF
[CHG] Device AA:BB:CC:DD:EE:FF Connected: yes
[CHG] Device AA:BB:CC:DD:EE:FF Modalias: bluetooth:v0046p0802d0903
[CHG] Device AA:BB:CC:DD:EE:FF UUIDs: 0000110a-0000-1000-8000-00805f9f9f9b
[CHG] Device AA:BB:CC:DD:EE:FF UUIDs: 0000110b-0000-1000-8000-00805f9f9f9b
[CHG] Device AA:BB:CC:DD:EE:FF UUIDs: 0000110c-0000-1000-8000-00805f9f9f9b
[CHG] Device AA:BB:CC:DD:EE:FF UUIDs: 0000110e-0000-1000-8000-00805f9f9f9b
[CHG] Device AA:BB:CC:DD:EE:FF UUIDs: 00001200-0000-1000-8000-00805f9f9f9b
[CHG] Device AA:BB:CC:DD:EE:FF UUIDs: 00001800-0000-1000-8000-00805f9f9f9b
[CHG] Device AA:BB:CC:DD:EE:FF ServicesResolved: yes
[CHG] Device AA:BB:CC:DD:EE:FF Paired: yes
Pairing successful

因此,它似乎是工作的和配对的。但是一旦我把它放到待机状态,"scan on“命令就不会显示我的AVR,下面的命令也不起作用:

代码语言:javascript
复制
[bluetooth]# connect AA:BB:CC:DD:EE:FF
Attempting to connect to AA:BB:CC:DD:EE:FF
Failed to connect: org.bluez.Error.Failed
[bluetooth]# pair AA:BB:CC:DD:EE:FF
Attempting to pair with AA:BB:CC:DD:EE:FF
Failed to pair: org.bluez.Error.AlreadyExists

同时,在我的android手机上,AVR没有列在手机的活动蓝牙设备中,但如果我点击我的AVR的记忆中的“配对设备”,它就会正常唤醒它。

所以我很有兴趣了解蓝牙唤醒是如何工作的..是否还有其他要运行的命令(如WOL机制?)?我怎么能在树莓派上做到这一点呢?

非常感谢,Ricorico94

EN

回答 1

Stack Overflow用户

发布于 2019-02-19 19:28:16

要通过蓝牙唤醒设备,我只需连接到"RFCOMM“端口2,设备就会被唤醒。用Python编写的示例代码(只需将host更改为设备的设备地址):

代码语言:javascript
复制
import bluetooth

name = "STR-DN 1080 EU"
host = "AA:BB:CC:DD:EE:FF"
port = 2

print(f"connecting to \"{name}\" on {host}")

sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((host, port))
sock.close()

我确实连接超时,但设备正在唤醒:

代码语言:javascript
复制
bluetooth.btcommon.BluetoothError: (110, 'Connection timed out')

或者,如果设备已经是唤醒状态,则为拒绝连接:

代码语言:javascript
复制
bluetooth.btcommon.BluetoothError: (111, 'Connection refused')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54162833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档