edabe / dreo-headwind Goto Github PK
View Code? Open in Web Editor NEWPrototyping a "headwind-like" smart fan using Dreo, ANT+ and Node.js
License: MIT License
Prototyping a "headwind-like" smart fan using Dreo, ANT+ and Node.js
License: MIT License
During a training session, the app crashed due to API timeout (see below).
Two features to implement:
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
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×tamp=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}"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.