我想知道我的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地址。)
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,下面的命令也不起作用:
[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
发布于 2019-02-19 19:28:16
要通过蓝牙唤醒设备,我只需连接到"RFCOMM“端口2,设备就会被唤醒。用Python编写的示例代码(只需将host更改为设备的设备地址):
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()我确实连接超时,但设备正在唤醒:
bluetooth.btcommon.BluetoothError: (110, 'Connection timed out')或者,如果设备已经是唤醒状态,则为拒绝连接:
bluetooth.btcommon.BluetoothError: (111, 'Connection refused')https://stackoverflow.com/questions/54162833
复制相似问题