parent
bca9e148fa
commit
c3bc050593
@ -0,0 +1,164 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
import time, re, threading |
||||
from bluepy.btle import BTLEDisconnectError |
||||
from miband import miband |
||||
import sleepdata |
||||
from vibrate import Vibrate |
||||
|
||||
|
||||
|
||||
|
||||
auth_key_filename = 'auth_key.txt' |
||||
mac_filename = 'mac.txt' |
||||
|
||||
maximize_graph = False |
||||
|
||||
vibration_settings = { |
||||
<<<<<<< Updated upstream |
||||
<<<<<<< Updated upstream |
||||
<<<<<<< Updated upstream |
||||
'interval_minutes': 0.1, |
||||
'duration_seconds': 5, |
||||
'type': 'random' |
||||
======= |
||||
======= |
||||
>>>>>>> Stashed changes |
||||
'interval_minutes': 20, |
||||
'duration_seconds': 10, |
||||
'type': 'random', |
||||
'heartrate_alarm_pct': 17 |
||||
<<<<<<< Updated upstream |
||||
>>>>>>> Stashed changes |
||||
======= |
||||
>>>>>>> Stashed changes |
||||
||||||| constructed merge base |
||||
'interval_minutes': 45, |
||||
'duration_seconds': 5, |
||||
'type': 'random' |
||||
======= |
||||
'interval_minutes': 20, |
||||
'duration_seconds': 10, |
||||
'type': 'random', |
||||
'heartrate_alarm_pct': 17 |
||||
>>>>>>> Stashed changes |
||||
} |
||||
|
||||
band = None |
||||
|
||||
#-------------------------------------------------------------------------# |
||||
|
||||
|
||||
class regex_patterns(): |
||||
mac_regex_pattern = re.compile(r'([0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5})') |
||||
authkey_regex_pattern = re.compile(r'([0-9a-fA-F]){32}') |
||||
|
||||
|
||||
def get_mac_address(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
hwaddr_search = re.search(regex_patterns.mac_regex_pattern, f.read().strip()) |
||||
if hwaddr_search: |
||||
MAC_ADDR = hwaddr_search[0] |
||||
else: |
||||
print ("No valid MAC address found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("MAC file not found: {}".format(filename)) |
||||
exit(1) |
||||
return MAC_ADDR |
||||
|
||||
|
||||
def get_auth_key(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
key_search = re.search(regex_patterns.authkey_regex_pattern, f.read().strip()) |
||||
if key_search: |
||||
AUTH_KEY = bytes.fromhex(key_search[0]) |
||||
else: |
||||
print ("No valid auth key found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("Auth key file not found: {}".format(filename)) |
||||
exit(1) |
||||
return AUTH_KEY |
||||
|
||||
|
||||
def average_data(tick_time): |
||||
if (tick_time - sleepdata.last_tick_time) >= sleepdata.tick_seconds: |
||||
sleepdata.average_raw_data(tick_time) |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
|
||||
def sleep_monitor_callback(data): |
||||
tick_time = time.time() |
||||
|
||||
if not sleepdata.last_tick_time: |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
if data[0] == "GYRO_RAW": |
||||
sleepdata.process_gyro_data(data[1], tick_time) |
||||
elif data[0] == "HR": |
||||
sleepdata.process_heartrate_data(data[1], tick_time) |
||||
|
||||
average_data(tick_time) |
||||
|
||||
vibration.heartrate_increase_pct = sleepdata.analyze_heartrate(10) |
||||
print("HR increase percent: {}".format(vibration.heartrate_increase_pct)) |
||||
|
||||
|
||||
def connect(): |
||||
global band |
||||
success = False |
||||
timeout = 3 |
||||
msg = 'Connection to the band failed. Trying again in {} seconds' |
||||
|
||||
MAC_ADDR = get_mac_address(mac_filename) |
||||
AUTH_KEY = get_auth_key(auth_key_filename) |
||||
|
||||
while not success: |
||||
try: |
||||
band = miband(MAC_ADDR, AUTH_KEY, debug=True) |
||||
success = band.initialize() |
||||
except BTLEDisconnectError: |
||||
print(msg.format(timeout)) |
||||
time.sleep(timeout) |
||||
except KeyboardInterrupt: |
||||
print("\nExit.") |
||||
exit() |
||||
|
||||
|
||||
def start_data_pull(): |
||||
while True: |
||||
try: |
||||
band.start_heart_and_gyro(sensitivity=1, callback=sleep_monitor_callback) |
||||
except BTLEDisconnectError: |
||||
band.gyro_started_flag = False |
||||
connect() |
||||
|
||||
|
||||
def start_vibration(): |
||||
while True: |
||||
try: |
||||
#vibration.timed_vibration(vibration_settings) |
||||
vibration.heartrate_alarm(vibration_settings) |
||||
|
||||
except BTLEDisconnectError: |
||||
print("Vibration thread waiting for band reconnect...") |
||||
time.sleep(1) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
connect() |
||||
vibration = Vibrate(band) |
||||
threading.Thread(target=start_data_pull).start() |
||||
threading.Thread(target=start_vibration).start() |
||||
sleepdata.init_graph(maximize=maximize_graph, graph_displaytime_mins=5) |
||||
|
||||
|
||||
|
||||
#import simpleaudio as sa |
||||
# comfort_wav = 'comfort.wav' |
||||
# wave_obj = sa.WaveObject.from_wave_file(comfort_wav) |
||||
# comfort_delay = 30 |
||||
# comfort_lasttime = time.time() |
@ -0,0 +1,153 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
import time, re, threading |
||||
from bluepy.btle import BTLEDisconnectError |
||||
from miband import miband |
||||
import sleepdata |
||||
from vibrate import Vibrate |
||||
|
||||
|
||||
|
||||
|
||||
auth_key_filename = 'auth_key.txt' |
||||
mac_filename = 'mac.txt' |
||||
|
||||
maximize_graph = False |
||||
|
||||
vibration_settings = { |
||||
<<<<<<< Updated upstream |
||||
<<<<<<< Updated upstream |
||||
'interval_minutes': 0.1, |
||||
'duration_seconds': 5, |
||||
'type': 'random' |
||||
======= |
||||
======= |
||||
>>>>>>> Stashed changes |
||||
'interval_minutes': 20, |
||||
'duration_seconds': 10, |
||||
'type': 'random', |
||||
'heartrate_alarm_pct': 17 |
||||
<<<<<<< Updated upstream |
||||
>>>>>>> Stashed changes |
||||
======= |
||||
>>>>>>> Stashed changes |
||||
} |
||||
|
||||
band = None |
||||
|
||||
#-------------------------------------------------------------------------# |
||||
|
||||
|
||||
class regex_patterns(): |
||||
mac_regex_pattern = re.compile(r'([0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5})') |
||||
authkey_regex_pattern = re.compile(r'([0-9a-fA-F]){32}') |
||||
|
||||
|
||||
def get_mac_address(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
hwaddr_search = re.search(regex_patterns.mac_regex_pattern, f.read().strip()) |
||||
if hwaddr_search: |
||||
MAC_ADDR = hwaddr_search[0] |
||||
else: |
||||
print ("No valid MAC address found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("MAC file not found: {}".format(filename)) |
||||
exit(1) |
||||
return MAC_ADDR |
||||
|
||||
|
||||
def get_auth_key(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
key_search = re.search(regex_patterns.authkey_regex_pattern, f.read().strip()) |
||||
if key_search: |
||||
AUTH_KEY = bytes.fromhex(key_search[0]) |
||||
else: |
||||
print ("No valid auth key found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("Auth key file not found: {}".format(filename)) |
||||
exit(1) |
||||
return AUTH_KEY |
||||
|
||||
|
||||
def average_data(tick_time): |
||||
if (tick_time - sleepdata.last_tick_time) >= sleepdata.tick_seconds: |
||||
sleepdata.average_raw_data(tick_time) |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
|
||||
def sleep_monitor_callback(data): |
||||
tick_time = time.time() |
||||
|
||||
if not sleepdata.last_tick_time: |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
if data[0] == "GYRO_RAW": |
||||
sleepdata.process_gyro_data(data[1], tick_time) |
||||
elif data[0] == "HR": |
||||
sleepdata.process_heartrate_data(data[1], tick_time) |
||||
|
||||
average_data(tick_time) |
||||
|
||||
vibration.heartrate_increase_pct = sleepdata.analyze_heartrate(10) |
||||
print("HR increase percent: {}".format(vibration.heartrate_increase_pct)) |
||||
|
||||
|
||||
def connect(): |
||||
global band |
||||
success = False |
||||
timeout = 3 |
||||
msg = 'Connection to the band failed. Trying again in {} seconds' |
||||
|
||||
MAC_ADDR = get_mac_address(mac_filename) |
||||
AUTH_KEY = get_auth_key(auth_key_filename) |
||||
|
||||
while not success: |
||||
try: |
||||
band = miband(MAC_ADDR, AUTH_KEY, debug=True) |
||||
success = band.initialize() |
||||
except BTLEDisconnectError: |
||||
print(msg.format(timeout)) |
||||
time.sleep(timeout) |
||||
except KeyboardInterrupt: |
||||
print("\nExit.") |
||||
exit() |
||||
|
||||
|
||||
def start_data_pull(): |
||||
while True: |
||||
try: |
||||
band.start_heart_and_gyro(sensitivity=1, callback=sleep_monitor_callback) |
||||
except BTLEDisconnectError: |
||||
band.gyro_started_flag = False |
||||
connect() |
||||
|
||||
|
||||
def start_vibration(): |
||||
while True: |
||||
try: |
||||
#vibration.timed_vibration(vibration_settings) |
||||
vibration.heartrate_alarm(vibration_settings) |
||||
|
||||
except BTLEDisconnectError: |
||||
print("Vibration thread waiting for band reconnect...") |
||||
time.sleep(1) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
connect() |
||||
vibration = Vibrate(band) |
||||
threading.Thread(target=start_data_pull).start() |
||||
threading.Thread(target=start_vibration).start() |
||||
sleepdata.init_graph(maximize=maximize_graph, graph_displaytime_mins=5) |
||||
|
||||
|
||||
|
||||
#import simpleaudio as sa |
||||
# comfort_wav = 'comfort.wav' |
||||
# wave_obj = sa.WaveObject.from_wave_file(comfort_wav) |
||||
# comfort_delay = 30 |
||||
# comfort_lasttime = time.time() |
@ -0,0 +1,135 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
import time, re, threading |
||||
from bluepy.btle import BTLEDisconnectError |
||||
from miband import miband |
||||
import sleepdata |
||||
from vibrate import Vibrate |
||||
|
||||
|
||||
|
||||
|
||||
auth_key_filename = 'auth_key.txt' |
||||
mac_filename = 'mac.txt' |
||||
|
||||
maximize_graph = False |
||||
|
||||
vibration_settings = { |
||||
'interval_minutes': 45, |
||||
'duration_seconds': 5, |
||||
'type': 'random' |
||||
} |
||||
|
||||
band = None |
||||
|
||||
#-------------------------------------------------------------------------# |
||||
|
||||
|
||||
class regex_patterns(): |
||||
mac_regex_pattern = re.compile(r'([0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5})') |
||||
authkey_regex_pattern = re.compile(r'([0-9a-fA-F]){32}') |
||||
|
||||
|
||||
def get_mac_address(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
hwaddr_search = re.search(regex_patterns.mac_regex_pattern, f.read().strip()) |
||||
if hwaddr_search: |
||||
MAC_ADDR = hwaddr_search[0] |
||||
else: |
||||
print ("No valid MAC address found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("MAC file not found: {}".format(filename)) |
||||
exit(1) |
||||
return MAC_ADDR |
||||
|
||||
|
||||
def get_auth_key(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
key_search = re.search(regex_patterns.authkey_regex_pattern, f.read().strip()) |
||||
if key_search: |
||||
AUTH_KEY = bytes.fromhex(key_search[0]) |
||||
else: |
||||
print ("No valid auth key found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("Auth key file not found: {}".format(filename)) |
||||
exit(1) |
||||
return AUTH_KEY |
||||
|
||||
|
||||
def average_data(tick_time): |
||||
if (tick_time - sleepdata.last_tick_time) >= sleepdata.tick_seconds: |
||||
sleepdata.average_raw_data(tick_time) |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
|
||||
def sleep_monitor_callback(data): |
||||
tick_time = time.time() |
||||
|
||||
if not sleepdata.last_tick_time: |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
if data[0] == "GYRO_RAW": |
||||
sleepdata.process_gyro_data(data[1], tick_time) |
||||
elif data[0] == "HR": |
||||
sleepdata.process_heartrate_data(data[1], tick_time) |
||||
|
||||
average_data(tick_time) |
||||
|
||||
|
||||
def connect(): |
||||
global band |
||||
success = False |
||||
timeout = 3 |
||||
msg = 'Connection to the band failed. Trying again in {} seconds' |
||||
|
||||
MAC_ADDR = get_mac_address(mac_filename) |
||||
AUTH_KEY = get_auth_key(auth_key_filename) |
||||
|
||||
while not success: |
||||
try: |
||||
band = miband(MAC_ADDR, AUTH_KEY, debug=True) |
||||
success = band.initialize() |
||||
except BTLEDisconnectError: |
||||
print(msg.format(timeout)) |
||||
time.sleep(timeout) |
||||
except KeyboardInterrupt: |
||||
print("\nExit.") |
||||
exit() |
||||
|
||||
|
||||
def start_data_pull(): |
||||
while True: |
||||
try: |
||||
band.start_heart_and_gyro(sensitivity=1, callback=sleep_monitor_callback) |
||||
except BTLEDisconnectError: |
||||
band.gyro_started_flag = False |
||||
connect() |
||||
|
||||
|
||||
def start_vibration(): |
||||
while True: |
||||
try: |
||||
vibration.timed_vibration(vibration_settings) |
||||
except BTLEDisconnectError: |
||||
print("Vibration thread waiting for band reconnect...") |
||||
time.sleep(1) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
connect() |
||||
vibration = Vibrate(band) |
||||
threading.Thread(target=start_data_pull).start() |
||||
threading.Thread(target=start_vibration).start() |
||||
sleepdata.init_graph(maximize=maximize_graph, graph_displaytime_mins=5) |
||||
|
||||
|
||||
|
||||
#import simpleaudio as sa |
||||
# comfort_wav = 'comfort.wav' |
||||
# wave_obj = sa.WaveObject.from_wave_file(comfort_wav) |
||||
# comfort_delay = 30 |
||||
# comfort_lasttime = time.time() |
@ -0,0 +1,147 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
import time, re, threading |
||||
from bluepy.btle import BTLEDisconnectError |
||||
from miband import miband |
||||
import sleepdata |
||||
from vibrate import Vibrate |
||||
|
||||
|
||||
|
||||
|
||||
auth_key_filename = 'auth_key.txt' |
||||
mac_filename = 'mac.txt' |
||||
|
||||
maximize_graph = False |
||||
|
||||
vibration_settings = { |
||||
<<<<<<< Updated upstream |
||||
'interval_minutes': 0.1, |
||||
'duration_seconds': 5, |
||||
'type': 'random' |
||||
======= |
||||
'interval_minutes': 20, |
||||
'duration_seconds': 10, |
||||
'type': 'random', |
||||
'heartrate_alarm_pct': 17 |
||||
>>>>>>> Stashed changes |
||||
} |
||||
|
||||
band = None |
||||
|
||||
#-------------------------------------------------------------------------# |
||||
|
||||
|
||||
class regex_patterns(): |
||||
mac_regex_pattern = re.compile(r'([0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5})') |
||||
authkey_regex_pattern = re.compile(r'([0-9a-fA-F]){32}') |
||||
|
||||
|
||||
def get_mac_address(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
hwaddr_search = re.search(regex_patterns.mac_regex_pattern, f.read().strip()) |
||||
if hwaddr_search: |
||||
MAC_ADDR = hwaddr_search[0] |
||||
else: |
||||
print ("No valid MAC address found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("MAC file not found: {}".format(filename)) |
||||
exit(1) |
||||
return MAC_ADDR |
||||
|
||||
|
||||
def get_auth_key(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
key_search = re.search(regex_patterns.authkey_regex_pattern, f.read().strip()) |
||||
if key_search: |
||||
AUTH_KEY = bytes.fromhex(key_search[0]) |
||||
else: |
||||
print ("No valid auth key found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("Auth key file not found: {}".format(filename)) |
||||
exit(1) |
||||
return AUTH_KEY |
||||
|
||||
|
||||
def average_data(tick_time): |
||||
if (tick_time - sleepdata.last_tick_time) >= sleepdata.tick_seconds: |
||||
sleepdata.average_raw_data(tick_time) |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
|
||||
def sleep_monitor_callback(data): |
||||
tick_time = time.time() |
||||
|
||||
if not sleepdata.last_tick_time: |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
if data[0] == "GYRO_RAW": |
||||
sleepdata.process_gyro_data(data[1], tick_time) |
||||
elif data[0] == "HR": |
||||
sleepdata.process_heartrate_data(data[1], tick_time) |
||||
|
||||
average_data(tick_time) |
||||
|
||||
vibration.heartrate_increase_pct = sleepdata.analyze_heartrate(10) |
||||
print("HR increase percent: {}".format(vibration.heartrate_increase_pct)) |
||||
|
||||
|
||||
def connect(): |
||||
global band |
||||
success = False |
||||
timeout = 3 |
||||
msg = 'Connection to the band failed. Trying again in {} seconds' |
||||
|
||||
MAC_ADDR = get_mac_address(mac_filename) |
||||
AUTH_KEY = get_auth_key(auth_key_filename) |
||||
|
||||
while not success: |
||||
try: |
||||
band = miband(MAC_ADDR, AUTH_KEY, debug=True) |
||||
success = band.initialize() |
||||
except BTLEDisconnectError: |
||||
print(msg.format(timeout)) |
||||
time.sleep(timeout) |
||||
except KeyboardInterrupt: |
||||
print("\nExit.") |
||||
exit() |
||||
|
||||
|
||||
def start_data_pull(): |
||||
while True: |
||||
try: |
||||
band.start_heart_and_gyro(sensitivity=1, callback=sleep_monitor_callback) |
||||
except BTLEDisconnectError: |
||||
band.gyro_started_flag = False |
||||
connect() |
||||
|
||||
|
||||
def start_vibration(): |
||||
while True: |
||||
try: |
||||
#vibration.timed_vibration(vibration_settings) |
||||
vibration.heartrate_alarm(vibration_settings) |
||||
|
||||
except BTLEDisconnectError: |
||||
print("Vibration thread waiting for band reconnect...") |
||||
time.sleep(1) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
connect() |
||||
vibration = Vibrate(band) |
||||
threading.Thread(target=start_data_pull).start() |
||||
threading.Thread(target=start_vibration).start() |
||||
sleepdata.init_graph(maximize=maximize_graph, graph_displaytime_mins=5) |
||||
|
||||
|
||||
|
||||
#import simpleaudio as sa |
||||
# comfort_wav = 'comfort.wav' |
||||
# wave_obj = sa.WaveObject.from_wave_file(comfort_wav) |
||||
# comfort_delay = 30 |
||||
# comfort_lasttime = time.time() |
@ -0,0 +1,141 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
import time, re, threading |
||||
from bluepy.btle import BTLEDisconnectError |
||||
from miband import miband |
||||
import sleepdata |
||||
from vibrate import Vibrate |
||||
|
||||
|
||||
|
||||
|
||||
auth_key_filename = 'auth_key.txt' |
||||
mac_filename = 'mac.txt' |
||||
|
||||
maximize_graph = False |
||||
|
||||
vibration_settings = { |
||||
'interval_minutes': 20, |
||||
'duration_seconds': 10, |
||||
'type': 'random', |
||||
'heartrate_alarm_pct': 17 |
||||
} |
||||
|
||||
band = None |
||||
|
||||
#-------------------------------------------------------------------------# |
||||
|
||||
|
||||
class regex_patterns(): |
||||
mac_regex_pattern = re.compile(r'([0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5})') |
||||
authkey_regex_pattern = re.compile(r'([0-9a-fA-F]){32}') |
||||
|
||||
|
||||
def get_mac_address(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
hwaddr_search = re.search(regex_patterns.mac_regex_pattern, f.read().strip()) |
||||
if hwaddr_search: |
||||
MAC_ADDR = hwaddr_search[0] |
||||
else: |
||||
print ("No valid MAC address found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("MAC file not found: {}".format(filename)) |
||||
exit(1) |
||||
return MAC_ADDR |
||||
|
||||
|
||||
def get_auth_key(filename): |
||||
try: |
||||
with open(filename, "r") as f: |
||||
key_search = re.search(regex_patterns.authkey_regex_pattern, f.read().strip()) |
||||
if key_search: |
||||
AUTH_KEY = bytes.fromhex(key_search[0]) |
||||
else: |
||||
print ("No valid auth key found in {}".format(filename)) |
||||
exit(1) |
||||
except FileNotFoundError: |
||||
print ("Auth key file not found: {}".format(filename)) |
||||
exit(1) |
||||
return AUTH_KEY |
||||
|
||||
|
||||
def average_data(tick_time): |
||||
if (tick_time - sleepdata.last_tick_time) >= sleepdata.tick_seconds: |
||||
sleepdata.average_raw_data(tick_time) |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
|
||||
def sleep_monitor_callback(data): |
||||
tick_time = time.time() |
||||
|
||||
if not sleepdata.last_tick_time: |
||||
sleepdata.last_tick_time = time.time() |
||||
|
||||
if data[0] == "GYRO_RAW": |
||||
sleepdata.process_gyro_data(data[1], tick_time) |
||||
elif data[0] == "HR": |
||||
sleepdata.process_heartrate_data(data[1], tick_time) |
||||
|
||||
average_data(tick_time) |
||||
|
||||
vibration.heartrate_increase_pct = sleepdata.analyze_heartrate(10) |
||||
print("HR increase percent: {}".format(vibration.heartrate_increase_pct)) |
||||
|
||||
|
||||
def connect(): |
||||
global band |
||||
success = False |
||||
timeout = 3 |
||||
msg = 'Connection to the band failed. Trying again in {} seconds' |
||||
|
||||
MAC_ADDR = get_mac_address(mac_filename) |
||||
AUTH_KEY = get_auth_key(auth_key_filename) |
||||
|
||||
while not success: |
||||
try: |
||||
band = miband(MAC_ADDR, AUTH_KEY, debug=True) |
||||
success = band.initialize() |
||||
except BTLEDisconnectError: |
||||
print(msg.format(timeout)) |
||||
time.sleep(timeout) |
||||
except KeyboardInterrupt: |
||||
print("\nExit.") |
||||
exit() |
||||
|
||||
|
||||
def start_data_pull(): |
||||
while True: |
||||
try: |
||||
band.start_heart_and_gyro(sensitivity=1, callback=sleep_monitor_callback) |
||||
except BTLEDisconnectError: |
||||
band.gyro_started_flag = False |
||||
connect() |
||||
|
||||
|
||||
def start_vibration(): |
||||
while True: |
||||
try: |
||||
#vibration.timed_vibration(vibration_settings) |
||||
vibration.heartrate_alarm(vibration_settings) |
||||
|
||||
except BTLEDisconnectError: |
||||
print("Vibration thread waiting for band reconnect...") |
||||
time.sleep(1) |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
connect() |
||||
vibration = Vibrate(band) |
||||
threading.Thread(target=start_data_pull).start() |
||||
threading.Thread(target=start_vibration).start() |
||||
sleepdata.init_graph(maximize=maximize_graph, graph_displaytime_mins=5) |
||||
|
||||
|
||||
|
||||
#import simpleaudio as sa |
||||
# comfort_wav = 'comfort.wav' |
||||
# wave_obj = sa.WaveObject.from_wave_file(comfort_wav) |
||||
# comfort_delay = 30 |
||||
# comfort_lasttime = time.time() |
Loading…
Reference in new issue