Added timed buzzing
This commit is contained in:
parent
7bf0e8539d
commit
2a6d8ff370
67
bluesleep.py
67
bluesleep.py
|
@ -8,6 +8,7 @@ import sleepdata
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import re
|
import re
|
||||||
|
import random
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
|
@ -19,6 +20,11 @@ csv_filename = "sleep_data.csv"
|
||||||
|
|
||||||
band = None
|
band = None
|
||||||
|
|
||||||
|
buzz_timer = time.time()
|
||||||
|
buzz_minutes = 45
|
||||||
|
buzz_delay = buzz_minutes * 60
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------#
|
#-------------------------------------------------------------------------#
|
||||||
|
|
||||||
class regex_patterns():
|
class regex_patterns():
|
||||||
|
@ -61,16 +67,62 @@ def process_data(data, tick_time):
|
||||||
elif data[0] == "HR":
|
elif data[0] == "HR":
|
||||||
sleepdata.process_heartrate_data(data[1], tick_time)
|
sleepdata.process_heartrate_data(data[1], tick_time)
|
||||||
|
|
||||||
|
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 timed_buzzing(buzz_delay, buzz_duration):
|
||||||
|
buzz_timer = time.time()
|
||||||
|
tick_time = time.time()
|
||||||
|
while True:
|
||||||
|
elapsed_time = tick_time - buzz_timer
|
||||||
|
if elapsed_time >= buzz_delay:
|
||||||
|
print("Buzz timer expired, buzzing")
|
||||||
|
vibrate_random(buzz_duration)
|
||||||
|
buzz_timer = tick_time
|
||||||
|
else:
|
||||||
|
tick_time = time.time()
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
def generate_random_vibration_pattern(count):
|
||||||
|
pulse_pattern = []
|
||||||
|
pulse_range = [120, 240]
|
||||||
|
pulse_interval_range = [1, 8]
|
||||||
|
for _ in range(count):
|
||||||
|
buzz_pulse = random.randrange(pulse_range[0], pulse_range[1])
|
||||||
|
buzz_delay = random.randrange(pulse_interval_range[0], pulse_interval_range[1])/10
|
||||||
|
pulse_pattern.append([buzz_pulse, buzz_delay])
|
||||||
|
return pulse_pattern
|
||||||
|
|
||||||
|
def vibrate_random(duration):
|
||||||
|
print("Sending random vibration...")
|
||||||
|
duration_start = time.time()
|
||||||
|
|
||||||
|
pulse_pattern = generate_random_vibration_pattern(20)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
if (time.time() - duration_start) >= duration:
|
||||||
|
print ("Stopping vibration")
|
||||||
|
band.vibrate(0)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
for pattern in pulse_pattern:
|
||||||
|
if (time.time() - duration_start) >= duration:
|
||||||
|
break
|
||||||
|
vibrate_ms = pattern[0]
|
||||||
|
vibro_delay = pattern[1]
|
||||||
|
band.vibrate(vibrate_ms)
|
||||||
|
time.sleep(vibro_delay)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def sleep_monitor_callback(data):
|
def sleep_monitor_callback(data):
|
||||||
tick_time = time.time()
|
tick_time = time.time()
|
||||||
if not sleepdata.last_tick_time:
|
if not sleepdata.last_tick_time:
|
||||||
sleepdata.last_tick_time = time.time()
|
sleepdata.last_tick_time = time.time()
|
||||||
|
|
||||||
process_data(data, tick_time)
|
process_data(data, tick_time)
|
||||||
|
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 connect(mac_filename, auth_key_filename):
|
def connect(mac_filename, auth_key_filename):
|
||||||
global band
|
global band
|
||||||
|
@ -129,9 +181,8 @@ def vibrate_rolling():
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
connect(mac_filename, auth_key_filename)
|
connect(mac_filename, auth_key_filename)
|
||||||
#vibrate_pattern(10)
|
threading.Thread(target=start_data_pull).start()
|
||||||
data_gather_thread = threading.Thread(target=start_data_pull)
|
threading.Thread(target=timed_buzzing, args=([buzz_delay, 15])).start()
|
||||||
data_gather_thread.start()
|
|
||||||
sleepdata.init_graph()
|
sleepdata.init_graph()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue