new: write to file when screen has been turned on
This commit is contained in:
parent
3990431395
commit
fc90854e5c
|
@ -49,7 +49,6 @@
|
||||||
* add a "power nap" mode that wakes you as soon as there has been no movement for 5 minutes OR (like steelball) when your heart rate drops
|
* add a "power nap" mode that wakes you as soon as there has been no movement for 5 minutes OR (like steelball) when your heart rate drops
|
||||||
* implement a simple Neural Network or decision tree to compute best wake up time, using one found in the scientific literature.
|
* implement a simple Neural Network or decision tree to compute best wake up time, using one found in the scientific literature.
|
||||||
* implement downsampling to 15 minutes precision to compute best wake up time
|
* implement downsampling to 15 minutes precision to compute best wake up time
|
||||||
* if self.foreground is called, record the time. Use it to cancel smart alarm if you woke up too many times (more than 2 times in more than 20 minutes apart).
|
|
||||||
|
|
||||||
* log smart alarm data to file? log user rating of how well he/she felt fresh at wake?
|
* log smart alarm data to file? log user rating of how well he/she felt fresh at wake?
|
||||||
* ability to send in real time to Bluetooth device the current sleep stage you're probably in. For use in Targeted Memory Reactivation?
|
* ability to send in real time to Bluetooth device the current sleep stage you're probably in. For use in Targeted Memory Reactivation?
|
||||||
|
|
10
SleepTk.py
10
SleepTk.py
|
@ -167,6 +167,7 @@ class SleepTkApp():
|
||||||
if self._page == _RINGING:
|
if self._page == _RINGING:
|
||||||
self._try_stop_alarm()
|
self._try_stop_alarm()
|
||||||
elif self._page == _TRACKING:
|
elif self._page == _TRACKING:
|
||||||
|
self._was_touched = 1
|
||||||
# disable pressing to exit, use swipe up instead
|
# disable pressing to exit, use swipe up instead
|
||||||
self._draw()
|
self._draw()
|
||||||
else:
|
else:
|
||||||
|
@ -202,6 +203,7 @@ class SleepTkApp():
|
||||||
mute(False)
|
mute(False)
|
||||||
self._last_touch = int(wasp.watch.rtc.time())
|
self._last_touch = int(wasp.watch.rtc.time())
|
||||||
if self._page == _TRACKING:
|
if self._page == _TRACKING:
|
||||||
|
self._was_touched = 1
|
||||||
if self._conf_view is _OFF:
|
if self._conf_view is _OFF:
|
||||||
if self.btn_off.touch(event):
|
if self.btn_off.touch(event):
|
||||||
self._conf_view = widgets.ConfirmationView()
|
self._conf_view = widgets.ConfirmationView()
|
||||||
|
@ -396,6 +398,7 @@ class SleepTkApp():
|
||||||
self._last_checkpoint = 0 # to know when to save to file
|
self._last_checkpoint = 0 # to know when to save to file
|
||||||
self._track_start_time = int(wasp.watch.rtc.time()) # makes output more compact
|
self._track_start_time = int(wasp.watch.rtc.time()) # makes output more compact
|
||||||
self._last_HR_printed = "?"
|
self._last_HR_printed = "?"
|
||||||
|
self._was_touched = 0
|
||||||
wasp.watch.accel.reset()
|
wasp.watch.accel.reset()
|
||||||
|
|
||||||
# create one file per recording session:
|
# create one file per recording session:
|
||||||
|
@ -525,7 +528,8 @@ on.".format(h, m, _BATTERY_THRESHOLD)})
|
||||||
"""save data to csv with row order:
|
"""save data to csv with row order:
|
||||||
1. average arm angle
|
1. average arm angle
|
||||||
2. elapsed times
|
2. elapsed times
|
||||||
3. heart rate if present
|
3/4. heart rate if present, and/or -1 if screen was woken up
|
||||||
|
by user during that time
|
||||||
arm angle formula from https://www.nature.com/articles/s41598-018-31266-z
|
arm angle formula from https://www.nature.com/articles/s41598-018-31266-z
|
||||||
note: math.atan() is faster than using a taylor serie
|
note: math.atan() is faster than using a taylor serie
|
||||||
"""
|
"""
|
||||||
|
@ -544,7 +548,8 @@ on.".format(h, m, _BATTERY_THRESHOLD)})
|
||||||
f.write("{:7f},{}{}\n".format(
|
f.write("{:7f},{}{}\n".format(
|
||||||
math.atan(buff[2] / (buff[0]**2 + buff[1]**2))*180/3.1415926535, # estimated arm angle
|
math.atan(buff[2] / (buff[0]**2 + buff[1]**2))*180/3.1415926535, # estimated arm angle
|
||||||
int(wasp.watch.rtc.time() - self._track_start_time),
|
int(wasp.watch.rtc.time() - self._track_start_time),
|
||||||
bpm
|
bpm,
|
||||||
|
",-1" if self._was_touched else ""
|
||||||
).encode())
|
).encode())
|
||||||
f.close()
|
f.close()
|
||||||
del f
|
del f
|
||||||
|
@ -552,6 +557,7 @@ on.".format(h, m, _BATTERY_THRESHOLD)})
|
||||||
buff[1] = 0
|
buff[1] = 0
|
||||||
buff[2] = 0
|
buff[2] = 0
|
||||||
self._last_checkpoint = self._data_point_nb
|
self._last_checkpoint = self._data_point_nb
|
||||||
|
self._was_touched = 0
|
||||||
wasp.gc.collect()
|
wasp.gc.collect()
|
||||||
|
|
||||||
def _activate_ticks_to_ring(self):
|
def _activate_ticks_to_ring(self):
|
||||||
|
|
Loading…
Reference in a new issue