77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
"""
|
|
This example solicits that apple devices that provide notifications connect to it, initiates
|
|
pairing, then allows the user to use a CLUE board as a media remote through both the buttons
|
|
and capacitive touch pads.
|
|
|
|
This example requires the following additional libraries:
|
|
adafruit_ble
|
|
adafruit_ble_apple_media
|
|
"""
|
|
|
|
import time
|
|
import adafruit_ble
|
|
from adafruit_ble.advertising.standard import SolicitServicesAdvertisement
|
|
from adafruit_ble_apple_media import AppleMediaService
|
|
from adafruit_clue import clue
|
|
|
|
# PyLint can't find BLERadio for some reason so special case it here.
|
|
radio = adafruit_ble.BLERadio() # pylint: disable=no-member
|
|
a = SolicitServicesAdvertisement()
|
|
a.solicited_services.append(AppleMediaService)
|
|
radio.start_advertising(a)
|
|
|
|
while not radio.connected:
|
|
pass
|
|
|
|
print("connected")
|
|
|
|
known_notifications = set()
|
|
|
|
i = 0
|
|
if radio.connected:
|
|
for connection in radio.connections:
|
|
if not connection.paired:
|
|
connection.pair()
|
|
print("paired")
|
|
|
|
ams = connection[AppleMediaService]
|
|
|
|
while radio.connected:
|
|
if ams.playing:
|
|
play_str = "Playing"
|
|
else:
|
|
play_str = "Paused"
|
|
print("{} - {}, {}".format(ams.title, ams.artist, play_str))
|
|
|
|
# Capacitive touch pad marked 0 goes to the previous track
|
|
if clue.touch_0:
|
|
ams.previous_track()
|
|
time.sleep(0.25)
|
|
|
|
# Capacitive touch pad marked 1 toggles pause/play
|
|
if clue.touch_1:
|
|
ams.toggle_play_pause()
|
|
time.sleep(0.25)
|
|
|
|
# Capacitive touch pad marked 2 advances to the next track
|
|
if clue.touch_2:
|
|
ams.next_track()
|
|
time.sleep(0.25)
|
|
|
|
# If button B (on the right) is pressed, it increases the volume
|
|
if "B" in clue.were_pressed:
|
|
ams.volume_up()
|
|
time.sleep(0.30)
|
|
while "B" in clue.were_pressed:
|
|
ams.volume_up()
|
|
time.sleep(0.07)
|
|
|
|
# If button A (on the left) is pressed, the volume decreases
|
|
if "A" in clue.were_pressed:
|
|
ams.volume_down()
|
|
time.sleep(0.30)
|
|
while "A" in clue.were_pressed:
|
|
ams.volume_down()
|
|
time.sleep(0.07)
|
|
|
|
print("disconnected")
|