Giter VIP home page Giter VIP logo

dreo-headwind's People

Contributors

edabe avatar

Stargazers

 avatar  avatar

Watchers

 avatar

dreo-headwind's Issues

feat: Implement Dreo API retry / recovery

During a training session, the app crashed due to API timeout (see below).
Two features to implement:

  1. Recover from errors like API timeout
  2. Auto restart app in case of a crash
2024-01-12 00:16:21.569	INFO	/src/HeartRateMode.ts:101	dreo-headwind-logger	Adjusting DREO profile to Zone 4 165.83333333333334 6
2024-01-12 00:16:30.227	DEBUG	/src/DreoAPI.ts:255	dreo-headwind-logger	DreoAPI getState 
2024-01-12 00:16:30.385	INFO	/src/HeartRateMode.ts:101	dreo-headwind-logger	Adjusting DREO profile to Zone 4 166 6
2024-01-12 00:16:40.076	DEBUG	/src/DreoAPI.ts:255	dreo-headwind-logger	DreoAPI getState 
2024-01-12 00:16:49.433	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:16:57.807	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:17:06.672	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:17:16.030	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:17:24.649	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:17:35.730	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:17:43.609	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:17:51.983	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:00.848	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:10.207	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:19.565	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:27.938	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:37.543	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:46.655	INFO	/src/HeartRateMode.ts:135	dreo-headwind-logger	Skipping DREO profile adjustment: busy
2024-01-12 00:18:49.497	ERROR	/src/DreoAPI.ts:298	dreo-headwind-logger	Error retrieving device state: AxiosError: connect ETIMEDOUT 18.216.142.249:443
2024-01-12 00:18:49.870	INFO	/src/index.ts:114	dreo-headwind-logger	Application exiting due to error:

 Error  Unable to retrieve device state
error stack:
  • DreoAPI.ts	
	/src/DreoAPI.ts:299
  • task_queues	processTicksAndRejections
	internal/process/task_queues:95
  • DreoAPI.ts	async DreoAPI.getState
	/src/DreoAPI.ts:258
  • HeartRateMode.ts	async HeartRateMode.adjustDreoProfile
	/src/HeartRateMode.ts:88

bug(regression): The app is turning on the fan when no ANT HR device is detected

When the app starts, the fan is turned on even when (apparently) no ANT devices are detected. After some time, the fan turns out with no device activity.

This is likely a regression.

Jan 13 20:33:36 rpi npm[3552]: > ts-node ./src/index.ts
Jan 13 20:33:45 rpi npm[3564]: 2024-01-14 01:33:45.932        INFO        /src/index.ts:57        dreo-headwind-logger        Initializing power meter sensor for device 
Jan 13 20:33:45 rpi npm[3564]: 2024-01-14 01:33:45.965        INFO        /src/index.ts:61        dreo-headwind-logger        Initializing fitness equimenent sensor for device  
Jan 13 20:33:45 rpi npm[3564]: 2024-01-14 01:33:45.970        INFO        /src/index.ts:65        dreo-headwind-logger        Initializing cadence sensor for device  
Jan 13 20:33:45 rpi npm[3564]: 2024-01-14 01:33:45.974        INFO        /src/index.ts:69        dreo-headwind-logger        Initializing heart rate sensor for device  
Jan 13 20:33:45 rpi npm[3564]: 2024-01-14 01:33:45.984        INFO        /src/HeartRateMode.ts:64        dreo-headwind-logger        Heart rate zones:  [
Jan 13 20:33:45 rpi npm[3564]:   0,
Jan 13 20:33:45 rpi npm[3564]:   118.57,
Jan 13 20:33:45 rpi npm[3564]:   146.96,
Jan 13 20:33:45 rpi npm[3564]:   160.32,
Jan 13 20:33:45 rpi npm[3564]:   167
Jan 13 20:33:45 rpi npm[3564]: ] 167
Jan 13 20:33:56 rpi npm[3564]: 2024-01-14 01:33:56.776        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.640        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.7 1
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.645        DEBUG        /src/DreoAPI.ts:348        dreo-headwind-logger        DreoAPI airCirculatorPowerOn <serial> true
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.651        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.861        DEBUG        /src/DreoAPI.ts:199        dreo-headwind-logger        Start web socket url: wss://wsb-us.dreo-cloud.com/websocket?accessToken=5ce4bde9-4c6e-4d13-8d5d-cfb16f62cd2c&timestamp=1705196037861
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.867        DEBUG        /src/DreoAPI.ts:226        dreo-headwind-logger        DreoAPI sendCommand "{\"devicesn\":\"<serial>\",\"method\":\"control\",\"params\":{\"poweron\":true},\"timestamp\":1705196037867}"
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.886        DEBUG        /src/DreoAPI.ts:371        dreo-headwind-logger        DreoAPI airCirculatorPosition <serial> [
Jan 13 20:33:57 rpi npm[3564]:   0,
Jan 13 20:33:57 rpi npm[3564]:   45
Jan 13 20:33:57 rpi npm[3564]: ]
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.891        DEBUG        /src/DreoAPI.ts:356        dreo-headwind-logger        DreoAPI airCirculatorOscillate <serial> 0
Jan 13 20:33:57 rpi npm[3564]: 2024-01-14 01:33:57.894        DEBUG        /src/DreoAPI.ts:226        dreo-headwind-logger        DreoAPI sendCommand "{\"devicesn\":\"<serial>\",\"method\":\"control\",\"params\":{\"oscmode\":0},\"timestamp\":1705196037894}"
Jan 13 20:33:58 rpi npm[3564]: 2024-01-14 01:33:58.068        DEBUG        /src/DreoAPI.ts:207        dreo-headwind-logger        WebSocket Opened
Jan 13 20:34:00 rpi npm[3564]: 2024-01-14 01:34:00.898        DEBUG        /src/DreoAPI.ts:226        dreo-headwind-logger        DreoAPI sendCommand "{\"devicesn\":\"<serial>\",\"method\":\"control\",\"params\":{\"fixedconf\":\"45,0\"},\"timestamp\":1705196040898}"
Jan 13 20:34:06 rpi npm[3564]: 2024-01-14 01:34:06.131        INFO        /src/HeartRateMode.ts:135        dreo-headwind-logger        Skipping DREO profile adjustment: busy
Jan 13 20:34:15 rpi npm[3564]: 2024-01-14 01:34:15.903        DEBUG        /src/DreoAPI.ts:413        dreo-headwind-logger        DreoAPI airCirculatorSpeed <serial> 1
Jan 13 20:34:15 rpi npm[3564]: 2024-01-14 01:34:15.909        DEBUG        /src/DreoAPI.ts:226        dreo-headwind-logger        DreoAPI sendCommand "{\"devicesn\":\"<serial>\",\"method\":\"control\",\"params\":{\"windlevel\":1},\"timestamp\":1705196055908}"
Jan 13 20:34:16 rpi npm[3564]: 2024-01-14 01:34:16.475        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:34:16 rpi npm[3564]: 2024-01-14 01:34:16.684        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119.33333333333333 1
Jan 13 20:34:26 rpi npm[3564]: 2024-01-14 01:34:26.818        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:34:27 rpi npm[3564]: 2024-01-14 01:34:27.048        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.8 1
Jan 13 20:34:37 rpi npm[3564]: 2024-01-14 01:34:37.161        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:34:37 rpi npm[3564]: 2024-01-14 01:34:37.329        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.86666666666666 1
Jan 13 20:34:48 rpi npm[3564]: 2024-01-14 01:34:47.997        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:34:48 rpi npm[3564]: 2024-01-14 01:34:48.243        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.76666666666667 1
Jan 13 20:34:58 rpi npm[3564]: 2024-01-14 01:34:58.341        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:34:58 rpi npm[3564]: 2024-01-14 01:34:58.522        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119.9 1
Jan 13 20:35:07 rpi npm[3564]: 2024-01-14 01:35:07.699        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:35:07 rpi npm[3564]: 2024-01-14 01:35:07.904        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119 1
Jan 13 20:35:17 rpi npm[3564]: 2024-01-14 01:35:17.057        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:35:17 rpi npm[3564]: 2024-01-14 01:35:17.300        INFO        /src/HeartRateMode.ts:122        dreo-headwind-logger        Adjusting DREO profile to Zone 1 118.5 1
Jan 13 20:35:26 rpi npm[3564]: 2024-01-14 01:35:26.169        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:35:26 rpi npm[3564]: 2024-01-14 01:35:26.394        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.8 1
Jan 13 20:35:38 rpi npm[3564]: 2024-01-14 01:35:37.990        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:35:38 rpi npm[3564]: 2024-01-14 01:35:38.218        INFO        /src/HeartRateMode.ts:122        dreo-headwind-logger        Adjusting DREO profile to Zone 1 117.93333333333334 1
Jan 13 20:35:50 rpi npm[3564]: 2024-01-14 01:35:50.550        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:35:50 rpi npm[3564]: 2024-01-14 01:35:50.718        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.96666666666667 1
Jan 13 20:36:01 rpi npm[3564]: 2024-01-14 01:36:01.386        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:36:01 rpi npm[3564]: 2024-01-14 01:36:01.562        INFO        /src/HeartRateMode.ts:122        dreo-headwind-logger        Adjusting DREO profile to Zone 1 118.43333333333334 1
Jan 13 20:36:10 rpi npm[3564]: 2024-01-14 01:36:10.006        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:36:10 rpi npm[3564]: 2024-01-14 01:36:10.166        INFO        /src/HeartRateMode.ts:122        dreo-headwind-logger        Adjusting DREO profile to Zone 1 118.56666666666666 1
Jan 13 20:36:22 rpi npm[3564]: 2024-01-14 01:36:22.073        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:36:22 rpi npm[3564]: 2024-01-14 01:36:22.265        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119 1
Jan 13 20:36:32 rpi npm[3564]: 2024-01-14 01:36:32.663        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:36:32 rpi npm[3564]: 2024-01-14 01:36:32.840        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119 1
Jan 13 20:36:42 rpi npm[3564]: 2024-01-14 01:36:42.513        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:36:42 rpi npm[3564]: 2024-01-14 01:36:42.731        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119 1
Jan 13 20:36:52 rpi npm[3564]: 2024-01-14 01:36:52.611        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:36:52 rpi npm[3564]: 2024-01-14 01:36:52.822        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119.06666666666666 1
Jan 13 20:37:01 rpi npm[3564]: 2024-01-14 01:37:01.723        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:37:01 rpi npm[3564]: 2024-01-14 01:37:01.881        INFO        /src/HeartRateMode.ts:122        dreo-headwind-logger        Adjusting DREO profile to Zone 1 116.5 1
Jan 13 20:37:11 rpi npm[3564]: 2024-01-14 01:37:11.081        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:37:11 rpi npm[3564]: 2024-01-14 01:37:11.255        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.66666666666667 1
Jan 13 20:37:20 rpi npm[3564]: 2024-01-14 01:37:20.932        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:37:21 rpi npm[3564]: 2024-01-14 01:37:21.178        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 118.8 1
Jan 13 20:37:31 rpi npm[3564]: 2024-01-14 01:37:31.275        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:37:31 rpi npm[3564]: 2024-01-14 01:37:31.488        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119 1
Jan 13 20:37:42 rpi npm[3564]: 2024-01-14 01:37:42.604        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:37:42 rpi npm[3564]: 2024-01-14 01:37:42.841        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119.06666666666666 1
Jan 13 20:37:52 rpi npm[3564]: 2024-01-14 01:37:52.701        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:37:52 rpi npm[3564]: 2024-01-14 01:37:52.861        INFO        /src/HeartRateMode.ts:115        dreo-headwind-logger        Adjusting DREO profile to Zone 2 119 1
Jan 13 20:40:57 rpi npm[3564]: 2024-01-14 01:40:57.889        INFO        /src/HeartRateMode.ts:164        dreo-headwind-logger        No sensor activity - turning DREO off
Jan 13 20:40:57 rpi npm[3564]: 2024-01-14 01:40:57.896        DEBUG        /src/DreoAPI.ts:348        dreo-headwind-logger        DreoAPI airCirculatorPowerOn <serial> false
Jan 13 20:40:57 rpi npm[3564]: 2024-01-14 01:40:57.902        DEBUG        /src/DreoAPI.ts:291        dreo-headwind-logger        DreoAPI getState <serial>
Jan 13 20:40:58 rpi npm[3564]: 2024-01-14 01:40:58.086        DEBUG        /src/DreoAPI.ts:226        dreo-headwind-logger        DreoAPI sendCommand "{\"devicesn\":\"<serial>\",\"method\":\"control\",\"params\":{\"poweron\":false},\"timestamp\":1705196458086}"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.