diff --git a/CHANGELOG.md b/CHANGELOG.md
index 813461e1..6e4c40e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,14 @@
All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
+## [3.8.1](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v3.8.1) (2024-09-13)
+
+### What's Changed
+- Improved logging mechanism to avoid repetitive logs.
+- Housekeeping and updated dependencies.
+
+**Full Changelog**: https://github.com/OpenWonderLabs/homebridge-switchbot/compare/v3.8.0...v3.8.1
+
## [3.8.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v3.8.0) (2024-09-11)
### What's Changed
diff --git a/README.md b/README.md
index be9e2434..c12ed480 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
[![discord-switchbot](https://badgen.net/discord/online-members/5wYTbwP4ha?icon=discord&label=discord)](https://discord.gg/5wYTbwP4ha)
The Homebridge SwitchBot plugin allows you to access your SwitchBot Device(s) from HomeKit with
- Homebridge.
+ Homebridge.
@@ -56,10 +56,12 @@
1. `bluetoothctl` must be installed on the device, otherwise it cannot communicate via Bluetooth. Enable it with `sudo bluetoothctl power on`.
2. If errors occur, while enabling it, restart the process:
+
- `rfkill block bluetooth`
- `rfkill unblock bluetooth`
- 3. Also make sure, that the computer can discover the SwitchBot device:
+ 3. Also make sure, that the computer can discover the SwitchBot device:
+
- `sudo bluetoothctl`
- `scan on`
@@ -67,9 +69,9 @@
- ### If using MacOS
1. Manually grant Bluetooth access in System Settings UI for `Security & Privacy -> Privacy` to the node executable, eg `/usr/local/bin/node`
- ![Security & Privacy -> Privacy](assets/security-privacy-bluetooth.png)
- (This is what is intended in documentation for the noble bluetooth package [prerequisites](https://github.com/abandonware/noble#prerequisites) by "Add terminal app", however for HomeBridge it is `node` that needs the permission granted, not `terminal`.
- Without this step, then you will receive the following error when the swichbot plugin launches, which will cause Homebridge or the child bridge process to restart:
+ ![Security & Privacy -> Privacy](assets/security-privacy-bluetooth.png)
+ (This is what is intended in documentation for the noble bluetooth package [prerequisites](https://github.com/abandonware/noble#prerequisites) by "Add terminal app", however for HomeBridge it is `node` that needs the permission granted, not `terminal`.
+ Without this step, then you will receive the following error when the swichbot plugin launches, which will cause Homebridge or the child bridge process to restart:
```
Error: Failed to initialize the Noble object: unauthorized
at Noble. (file:///usr/local/lib/node_modules/@switchbot/homebridge-switchbot/node_modules/node-switchbot/src/switchbot.ts:244:19)
diff --git a/eslint.config.js b/eslint.config.js
index 5a64bd75..6fd1113f 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -14,7 +14,6 @@ export default antfu(
'import/order': 0,
'jsdoc/check-alignment': 'error',
'jsdoc/check-line-alignment': 'error',
- 'no-undef': 'error',
'perfectionist/sort-exports': 'error',
'perfectionist/sort-imports': [
'error',
diff --git a/package-lock.json b/package-lock.json
index 4e2b6d4b..0e24dcf2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@switchbot/homebridge-switchbot",
- "version": "3.8.0",
+ "version": "3.8.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@switchbot/homebridge-switchbot",
- "version": "3.8.0",
+ "version": "3.8.1",
"funding": [
{
"type": "Paypal",
@@ -23,21 +23,21 @@
"async-mqtt": "^2.6.3",
"fakegato-history": "^0.6.5",
"homebridge-lib": "^7.0.8",
- "node-switchbot": "2.3.0",
+ "node-switchbot": "2.4.0",
"rxjs": "^7.8.1",
"undici": "^6.19.8"
},
"devDependencies": {
- "@antfu/eslint-config": "^3.5.1",
+ "@antfu/eslint-config": "^3.6.0",
"@types/aes-js": "^3.1.4",
"@types/debug": "^4.1.12",
"@types/fs-extra": "^11.0.4",
- "@types/jest": "^29.5.12",
+ "@types/jest": "^29.5.13",
"@types/mdast": "^4.0.4",
"@types/node": "^22.5.4",
"@types/semver": "^7.5.8",
"@types/source-map-support": "^0.5.10",
- "@vitest/coverage-v8": "^2.0.5",
+ "@vitest/coverage-v8": "^2.1.0",
"eslint": "^9.10.0",
"eslint-plugin-format": "^0.1.2",
"homebridge": "^1.8.4",
@@ -50,7 +50,7 @@
"typedoc": "^0.26.7",
"typescript": "^5.6.2",
"typescript-axios-wb": "^1.0.3",
- "vitest": "^2.0.5"
+ "vitest": "^2.1.0"
},
"engines": {
"homebridge": "^1.8.4 || ^2.0.0 || ^2.0.0-beta.11 || ^2.0.0-alpha.10",
@@ -72,9 +72,9 @@
}
},
"node_modules/@antfu/eslint-config": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-3.5.1.tgz",
- "integrity": "sha512-zSQs+1B1/rw/gdM1959e/tmNORibN1nLYdysV3qnH7qOD4c5spi1C9ogJbwXJ49dFD56GZw+Eue8FJ2HQx0hKA==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-3.6.0.tgz",
+ "integrity": "sha512-37gp57en8gaLllXmpyOMOpAjC75DoOH+8iX7WZqkeOW4oVgI3qtw9Ay1lvbzliRR3a6doBiWMWFXHyX8LTa9Tg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1692,9 +1692,9 @@
}
},
"node_modules/@fastify/middie/node_modules/path-to-regexp": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz",
- "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
"dev": true,
"license": "MIT"
},
@@ -2896,9 +2896,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz",
- "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz",
+ "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==",
"cpu": [
"arm"
],
@@ -2910,9 +2910,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz",
- "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz",
+ "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==",
"cpu": [
"arm64"
],
@@ -2924,9 +2924,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz",
- "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz",
+ "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==",
"cpu": [
"arm64"
],
@@ -2938,9 +2938,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz",
- "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz",
+ "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==",
"cpu": [
"x64"
],
@@ -2952,9 +2952,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz",
- "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz",
+ "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==",
"cpu": [
"arm"
],
@@ -2966,9 +2966,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz",
- "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz",
+ "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==",
"cpu": [
"arm"
],
@@ -2980,9 +2980,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz",
- "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz",
+ "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==",
"cpu": [
"arm64"
],
@@ -2994,9 +2994,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz",
- "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz",
+ "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==",
"cpu": [
"arm64"
],
@@ -3008,9 +3008,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz",
- "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz",
+ "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==",
"cpu": [
"ppc64"
],
@@ -3022,9 +3022,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz",
- "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz",
+ "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==",
"cpu": [
"riscv64"
],
@@ -3036,9 +3036,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz",
- "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz",
+ "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==",
"cpu": [
"s390x"
],
@@ -3050,9 +3050,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz",
- "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz",
+ "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==",
"cpu": [
"x64"
],
@@ -3064,9 +3064,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz",
- "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz",
+ "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==",
"cpu": [
"x64"
],
@@ -3078,9 +3078,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz",
- "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz",
+ "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==",
"cpu": [
"arm64"
],
@@ -3092,9 +3092,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz",
- "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz",
+ "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==",
"cpu": [
"ia32"
],
@@ -3106,9 +3106,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz",
- "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz",
+ "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==",
"cpu": [
"x64"
],
@@ -3410,47 +3410,46 @@
"optional": true
},
"node_modules/@shikijs/core": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.0.tgz",
- "integrity": "sha512-Mkk4Mp4bNnW1kytU8I7S5PK5teNSe0iKlfqxPss4sdwnlcU8a2N62Z3te2gVmZfU9t1HF6L3wyWuM43IvEeEsg==",
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.5.tgz",
+ "integrity": "sha512-JDgFZbJvfZ1g0lRVHtPTv6n2MwWnbTSGwncL/Qmlg7BZBzHCcDY2CxYGkNUm7k+lljOrFzXFGh38s8CRRZH+TQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@shikijs/engine-javascript": "1.17.0",
- "@shikijs/engine-oniguruma": "1.17.0",
- "@shikijs/types": "1.17.0",
+ "@shikijs/engine-javascript": "1.17.5",
+ "@shikijs/engine-oniguruma": "1.17.5",
+ "@shikijs/types": "1.17.5",
"@shikijs/vscode-textmate": "^9.2.2",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.2"
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.0.tgz",
- "integrity": "sha512-EiBVlxmzJZdC2ypzn8k+vxLngbBNgHLS4RilwrFOABGRc72kUZubbD/6Chrq2RcVtD3yq1GtiiIdFMGd9BTX3Q==",
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.5.tgz",
+ "integrity": "sha512-129knB7yGxq51i5f9ci1lsrC/9rJwo7yzOmHVjQIRk+e1C0caaSwzm4mhLJ506ui0vEmQZ9LzY6a/crW1UsReA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@shikijs/types": "1.17.0",
- "oniguruma-to-js": "0.3.3",
- "regex": "4.3.2"
+ "@shikijs/types": "1.17.5",
+ "oniguruma-to-js": "0.4.0"
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.0.tgz",
- "integrity": "sha512-nsXzJGLQ0fhKmA4Gwt1cF7vC8VuZ1HSDrTRuj48h/qDeX/TzmOlTDXQ3uPtyuhyg/2rbZRzNhN8UFU4fSnQfXg==",
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.5.tgz",
+ "integrity": "sha512-GcuDWdUcs06sCoRS/JwbcO8M55MOvirTs3wIR7E6pMoePJWgAxhIYDQHURvSrgKgyUrTl3EKwujHljivS5BJVA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@shikijs/types": "1.17.0",
+ "@shikijs/types": "1.17.5",
"@shikijs/vscode-textmate": "^9.2.2"
}
},
"node_modules/@shikijs/types": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.0.tgz",
- "integrity": "sha512-Tvu2pA69lbpXB+MmgIaROP1tio8y0uYvKb5Foh3q0TJBTAJuaoa5eDEtS/0LquyveacsiVrYF4uEZILju+7Ybg==",
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.5.tgz",
+ "integrity": "sha512-xDIczjZ7QB6opNrCObX/6/78Jb/BFglRPo7E7f9swd1TCabhumOLsv23103pNUOMZrJYARUkHJpEx7ryFLM3FA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3531,6 +3530,7 @@
"integrity": "sha512-m+ktaIV4EEtBIvAaPZKD8Z48PlCwKgdvP/nYvxkW6xfaJ6XPimxqsA02gXyobEUFUeXrvaS1JBy3qDzWQhXL0Q==",
"hasInstallScript": true,
"license": "MIT",
+ "optional": true,
"dependencies": {
"debug": "^4.3.4",
"napi-thread-safe-callback": "^0.0.6",
@@ -3737,9 +3737,9 @@
}
},
"node_modules/@types/jest": {
- "version": "29.5.12",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
- "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
+ "version": "29.5.13",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz",
+ "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4067,20 +4067,20 @@
"license": "ISC"
},
"node_modules/@vitest/coverage-v8": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.5.tgz",
- "integrity": "sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.0.tgz",
+ "integrity": "sha512-yqCkr2nrV4o58VcVMxTVkS6Ggxzy7pmSD8JbTbhbH5PsQfUIES1QT716VUzo33wf2lX9EcWYdT3Vl2MMmjR59g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.3.0",
"@bcoe/v8-coverage": "^0.2.3",
- "debug": "^4.3.5",
+ "debug": "^4.3.6",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-report": "^3.0.1",
"istanbul-lib-source-maps": "^5.0.6",
"istanbul-reports": "^3.1.7",
- "magic-string": "^0.30.10",
+ "magic-string": "^0.30.11",
"magicast": "^0.3.4",
"std-env": "^3.7.0",
"test-exclude": "^7.0.1",
@@ -4090,13 +4090,19 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "vitest": "2.0.5"
+ "@vitest/browser": "2.1.0",
+ "vitest": "2.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@vitest/browser": {
+ "optional": true
+ }
}
},
"node_modules/@vitest/eslint-plugin": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.0.tgz",
- "integrity": "sha512-Ur80Y27Wbw8gFHJ3cv6vypcjXmrx6QHfw+q435h6Q2L+tf+h4Xf5pJTCL4YU/Jps9EVeggQxS85OcUZU7sdXRw==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.3.tgz",
+ "integrity": "sha512-EKcwtabnZQtf/f6apYzlbYY4lag0qDbMBb6U3O6hBKSXvftPLhLTEMvHcpSSdumeDxzWovh1Avx3Q1Az2xd9lA==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -4118,14 +4124,14 @@
}
},
"node_modules/@vitest/expect": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz",
- "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.0.tgz",
+ "integrity": "sha512-N3/xR4fSu0+6sVZETEtPT1orUs2+Y477JOXTcU3xKuu3uBlsgbD7/7Mz2LZ1Jr1XjwilEWlrIgSCj4N1+5ZmsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "2.0.5",
- "@vitest/utils": "2.0.5",
+ "@vitest/spy": "2.1.0",
+ "@vitest/utils": "2.1.0",
"chai": "^5.1.1",
"tinyrainbow": "^1.2.0"
},
@@ -4133,10 +4139,48 @@
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/@vitest/mocker": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.0.tgz",
+ "integrity": "sha512-ZxENovUqhzl+QiOFpagiHUNUuZ1qPd5yYTCYHomGIZOFArzn4mgX2oxZmiAItJWAaXHG6bbpb/DpSPhlk5DgtA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "^2.1.0-beta.1",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.11"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@vitest/spy": "2.1.0",
+ "msw": "^2.3.5",
+ "vite": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/mocker/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
"node_modules/@vitest/pretty-format": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz",
- "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.0.tgz",
+ "integrity": "sha512-7sxf2F3DNYatgmzXXcTh6cq+/fxwB47RIQqZJFoSH883wnVAoccSRT6g+dTKemUBo8Q5N4OYYj1EBXLuRKvp3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4147,13 +4191,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz",
- "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.0.tgz",
+ "integrity": "sha512-D9+ZiB8MbMt7qWDRJc4CRNNUlne/8E1X7dcKhZVAbcOKG58MGGYVDqAq19xlhNfMFZsW0bpVKgztBwks38Ko0w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "2.0.5",
+ "@vitest/utils": "2.1.0",
"pathe": "^1.1.2"
},
"funding": {
@@ -4161,14 +4205,14 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz",
- "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.0.tgz",
+ "integrity": "sha512-x69CygGMzt9VCO283K2/FYQ+nBrOj66OTKpsPykjCR4Ac3lLV+m85hj9reaIGmjBSsKzVvbxWmjWE3kF5ha3uQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.0.5",
- "magic-string": "^0.30.10",
+ "@vitest/pretty-format": "2.1.0",
+ "magic-string": "^0.30.11",
"pathe": "^1.1.2"
},
"funding": {
@@ -4176,9 +4220,9 @@
}
},
"node_modules/@vitest/spy": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz",
- "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.0.tgz",
+ "integrity": "sha512-IXX5NkbdgTYTog3F14i2LgnBc+20YmkXMx0IWai84mcxySUDRgm0ihbOfR4L0EVRBDFG85GjmQQEZNNKVVpkZw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4189,14 +4233,13 @@
}
},
"node_modules/@vitest/utils": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz",
- "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.0.tgz",
+ "integrity": "sha512-rreyfVe0PuNqJfKYUwfPDfi6rrp0VSu0Wgvp5WBqJonP+4NvXHk48X6oBam1Lj47Hy6jbJtnMj3OcRdrkTP0tA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.0.5",
- "estree-walker": "^3.0.3",
+ "@vitest/pretty-format": "2.1.0",
"loupe": "^3.1.1",
"tinyrainbow": "^1.2.0"
},
@@ -4204,16 +4247,6 @@
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vitest/utils/node_modules/estree-walker": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0"
- }
- },
"node_modules/@vue/compiler-core": {
"version": "3.5.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.4.tgz",
@@ -6092,9 +6125,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.19",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.19.tgz",
- "integrity": "sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==",
+ "version": "1.5.22",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz",
+ "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==",
"dev": true,
"license": "ISC"
},
@@ -6526,9 +6559,9 @@
}
},
"node_modules/eslint-plugin-command": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-command/-/eslint-plugin-command-0.2.4.tgz",
- "integrity": "sha512-IbZnQY21pOanbcCh/bAWWl+1BynV2HuDE75URMmk/28Tdn+PM7CoKeibXtPGrL7KQdIEHMgUEnRwwI8qmggVMA==",
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-command/-/eslint-plugin-command-0.2.5.tgz",
+ "integrity": "sha512-mbCaSHD37MT8nVJnJUz2oeDfhz0wdOjfrqQVWkSpXuj3uU8m7/FK/niV2bL922af3M1js5x7Xcu3PwqWsrahfA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6611,9 +6644,9 @@
}
},
"node_modules/eslint-plugin-jsdoc": {
- "version": "50.2.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz",
- "integrity": "sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==",
+ "version": "50.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.3.tgz",
+ "integrity": "sha512-aNh/dz3wSkyo53y2KWDCrA8fDuXDMtMVflcbesd8AFPgcF8ugOv9mJxC7qKB95R96nzCB91iEwU7MMznh/7okQ==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -6857,9 +6890,9 @@
}
},
"node_modules/eslint-plugin-unused-imports": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.3.tgz",
- "integrity": "sha512-lqrNZIZjFMUr7P06eoKtQLwyVRibvG7N+LtfKtObYGizAAGrcqLkc3tDx+iAik2z7q0j/XI3ihjupIqxhFabFA==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz",
+ "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -7859,9 +7892,9 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz",
- "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==",
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
+ "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11598,7 +11631,8 @@
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/napi-thread-safe-callback/-/napi-thread-safe-callback-0.0.6.tgz",
"integrity": "sha512-X7uHCOCdY4u0yamDxDrv3jF2NtYc8A1nvPzBQgvpoSX+WB3jAe2cVNsY448V1ucq7Whf9Wdy02HEUoLW5rJKWg==",
- "license": "ISC"
+ "license": "ISC",
+ "optional": true
},
"node_modules/natural-compare": {
"version": "1.4.0",
@@ -11641,7 +11675,8 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
"integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
- "license": "MIT"
+ "license": "MIT",
+ "optional": true
},
"node_modules/node-cache": {
"version": "5.1.2",
@@ -11681,6 +11716,7 @@
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz",
"integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==",
"license": "MIT",
+ "optional": true,
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@@ -11728,15 +11764,13 @@
}
},
"node_modules/node-switchbot": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/node-switchbot/-/node-switchbot-2.3.0.tgz",
- "integrity": "sha512-Auqp3ejbeIbJkb2e5v5S0qSXTBNUCYig69Gh3Gain4mrMQL8Rkg4PvWxM+F41IpKa0qk9scyfTid1kV7JPpYRg==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/node-switchbot/-/node-switchbot-2.4.0.tgz",
+ "integrity": "sha512-Szhia/QFoHfPluB93xEDRB2hwk5WtXWXZCoUgLYXH2QaZ1m0B/kDPq8yeOfB6PjtlMd7daIZFspfaZjftT5LVw==",
"license": "MIT",
- "dependencies": {
- "@stoprocent/noble": "^1.14.1"
- },
"optionalDependencies": {
- "@stoprocent/bluetooth-hci-socket": "^1.2.1"
+ "@stoprocent/bluetooth-hci-socket": "^1.2.1",
+ "@stoprocent/noble": "^1.14.1"
}
},
"node_modules/nodemon": {
@@ -12017,11 +12051,14 @@
}
},
"node_modules/oniguruma-to-js": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.3.3.tgz",
- "integrity": "sha512-m90/WEhgs8g4BxG37+Nu3YrMfJDs2YXtYtIllhsEPR+wP3+K4EZk6dDUvy2v2K4MNFDDOYKL4/yqYPXDqyozTQ==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.0.tgz",
+ "integrity": "sha512-GwNFPQygkpDjO9MOr54Rqi01dGS+h9VAS//Qxz9lTN5B09CxqiIc7rydvdV+Ex2Z8Vk+zqfHH7hU6ePn8uf+Mg==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "regex": "^4.3.2"
+ },
"funding": {
"url": "https://github.com/sponsors/antfu"
}
@@ -13330,9 +13367,9 @@
"license": "MIT"
},
"node_modules/rollup": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz",
- "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
+ "version": "4.21.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz",
+ "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13346,22 +13383,22 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.21.2",
- "@rollup/rollup-android-arm64": "4.21.2",
- "@rollup/rollup-darwin-arm64": "4.21.2",
- "@rollup/rollup-darwin-x64": "4.21.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.21.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.21.2",
- "@rollup/rollup-linux-arm64-gnu": "4.21.2",
- "@rollup/rollup-linux-arm64-musl": "4.21.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.21.2",
- "@rollup/rollup-linux-s390x-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-musl": "4.21.2",
- "@rollup/rollup-win32-arm64-msvc": "4.21.2",
- "@rollup/rollup-win32-ia32-msvc": "4.21.2",
- "@rollup/rollup-win32-x64-msvc": "4.21.2",
+ "@rollup/rollup-android-arm-eabi": "4.21.3",
+ "@rollup/rollup-android-arm64": "4.21.3",
+ "@rollup/rollup-darwin-arm64": "4.21.3",
+ "@rollup/rollup-darwin-x64": "4.21.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.21.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.21.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.21.3",
+ "@rollup/rollup-linux-arm64-musl": "4.21.3",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.21.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.21.3",
+ "@rollup/rollup-linux-x64-gnu": "4.21.3",
+ "@rollup/rollup-linux-x64-musl": "4.21.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.21.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.21.3",
+ "@rollup/rollup-win32-x64-msvc": "4.21.3",
"fsevents": "~2.3.2"
}
},
@@ -13667,14 +13704,16 @@
}
},
"node_modules/shiki": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.0.tgz",
- "integrity": "sha512-VZf8cPShRwfzPcaswv81+YP7qJEoFwRT+Ehy6bizim7M0zG9bk8Egug550C+xS9g7rKIOPhzAlp2uEyuCxbk/A==",
+ "version": "1.17.5",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.5.tgz",
+ "integrity": "sha512-8i4+fbTlnJPUYkgBEZ92QKmK3Gr23n2YVwqwyz0e+VmXqKpJZuV6P/CY00gSGHDXXjXT5l0BLwsMfO2Pe52TLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@shikijs/core": "1.17.0",
- "@shikijs/types": "1.17.0",
+ "@shikijs/core": "1.17.5",
+ "@shikijs/engine-javascript": "1.17.5",
+ "@shikijs/engine-oniguruma": "1.17.5",
+ "@shikijs/types": "1.17.5",
"@shikijs/vscode-textmate": "^9.2.2",
"@types/hast": "^3.0.4"
}
@@ -15220,9 +15259,9 @@
}
},
"node_modules/vite": {
- "version": "5.4.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.4.tgz",
- "integrity": "sha512-RHFCkULitycHVTtelJ6jQLd+KSAAzOgEYorV32R2q++M6COBjKJR6BxqClwp5sf0XaBDjVMuJ9wnNfyAJwjMkA==",
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz",
+ "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15280,16 +15319,15 @@
}
},
"node_modules/vite-node": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz",
- "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.0.tgz",
+ "integrity": "sha512-+ybYqBVUjYyIscoLzMWodus2enQDZOpGhcU6HdOVD6n8WZdk12w1GFL3mbnxLs7hPtRtqs1Wo5YF6/Tsr6fmhg==",
"dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
- "debug": "^4.3.5",
+ "debug": "^4.3.6",
"pathe": "^1.1.2",
- "tinyrainbow": "^1.2.0",
"vite": "^5.0.0"
},
"bin": {
@@ -15303,30 +15341,30 @@
}
},
"node_modules/vitest": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz",
- "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.0.tgz",
+ "integrity": "sha512-XuuEeyNkqbfr0FtAvd9vFbInSSNY1ykCQTYQ0sj9wPy4hx+1gR7gqVNdW0AX2wrrM1wWlN5fnJDjF9xG6mYRSQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@ampproject/remapping": "^2.3.0",
- "@vitest/expect": "2.0.5",
- "@vitest/pretty-format": "^2.0.5",
- "@vitest/runner": "2.0.5",
- "@vitest/snapshot": "2.0.5",
- "@vitest/spy": "2.0.5",
- "@vitest/utils": "2.0.5",
+ "@vitest/expect": "2.1.0",
+ "@vitest/mocker": "2.1.0",
+ "@vitest/pretty-format": "^2.1.0",
+ "@vitest/runner": "2.1.0",
+ "@vitest/snapshot": "2.1.0",
+ "@vitest/spy": "2.1.0",
+ "@vitest/utils": "2.1.0",
"chai": "^5.1.1",
- "debug": "^4.3.5",
- "execa": "^8.0.1",
- "magic-string": "^0.30.10",
+ "debug": "^4.3.6",
+ "magic-string": "^0.30.11",
"pathe": "^1.1.2",
"std-env": "^3.7.0",
- "tinybench": "^2.8.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.0",
"tinypool": "^1.0.0",
"tinyrainbow": "^1.2.0",
"vite": "^5.0.0",
- "vite-node": "2.0.5",
+ "vite-node": "2.1.0",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -15341,8 +15379,8 @@
"peerDependencies": {
"@edge-runtime/vm": "*",
"@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "2.0.5",
- "@vitest/ui": "2.0.5",
+ "@vitest/browser": "2.1.0",
+ "@vitest/ui": "2.1.0",
"happy-dom": "*",
"jsdom": "*"
},
@@ -15367,137 +15405,6 @@
}
}
},
- "node_modules/vitest/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/vitest/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=16.17.0"
- }
- },
- "node_modules/vitest/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/vue-eslint-parser": {
"version": "9.4.3",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
diff --git a/package.json b/package.json
index e46978de..aaac7ea3 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "@switchbot/homebridge-switchbot",
"displayName": "SwitchBot",
"type": "module",
- "version": "3.8.0",
+ "version": "3.8.1",
"description": "The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.",
"author": "SwitchBot (https://github.com/SwitchBot)",
"contributors": [
@@ -81,21 +81,21 @@
"async-mqtt": "^2.6.3",
"fakegato-history": "^0.6.5",
"homebridge-lib": "^7.0.8",
- "node-switchbot": "2.3.0",
+ "node-switchbot": "2.4.0",
"rxjs": "^7.8.1",
"undici": "^6.19.8"
},
"devDependencies": {
- "@antfu/eslint-config": "^3.5.1",
+ "@antfu/eslint-config": "^3.6.0",
"@types/aes-js": "^3.1.4",
"@types/debug": "^4.1.12",
"@types/fs-extra": "^11.0.4",
- "@types/jest": "^29.5.12",
+ "@types/jest": "^29.5.13",
"@types/mdast": "^4.0.4",
"@types/node": "^22.5.4",
"@types/semver": "^7.5.8",
"@types/source-map-support": "^0.5.10",
- "@vitest/coverage-v8": "^2.0.5",
+ "@vitest/coverage-v8": "^2.1.0",
"eslint": "^9.10.0",
"eslint-plugin-format": "^0.1.2",
"homebridge": "^1.8.4",
@@ -108,7 +108,7 @@
"typedoc": "^0.26.7",
"typescript": "^5.6.2",
"typescript-axios-wb": "^1.0.3",
- "vitest": "^2.0.5"
+ "vitest": "^2.1.0"
},
"directories": {
"doc": "docs"
diff --git a/src/device/curtain.ts b/src/device/curtain.ts
index cdc86d2f..7e43372d 100644
--- a/src/device/curtain.ts
+++ b/src/device/curtain.ts
@@ -69,6 +69,7 @@ export class Curtain extends deviceBase {
serviceData!: curtainServiceData | curtain3ServiceData
// Target
+ hasLoggedStandby!: boolean
setNewTarget!: boolean
setNewTargetTimer!: NodeJS.Timeout
@@ -202,7 +203,7 @@ export class Curtain extends deviceBase {
accessory.context.OpenModeSwitch = this.OpenModeSwitch as object
// Initialize Open Mode Switch Service
- this.OpenModeSwitch.Service.setCharacteristic(this.hap.Characteristic.Name, this.OpenModeSwitch.Name).getCharacteristic(this.hap.Characteristic.On).onGet(() => {
+ this.OpenModeSwitch.Service.setCharacteristic(this.hap.Characteristic.Name, this.OpenModeSwitch.Name).setCharacteristic(this.hap.Characteristic.ConfiguredName, this.OpenModeSwitch.Name).getCharacteristic(this.hap.Characteristic.On).onGet(() => {
return this.OpenModeSwitch?.On ?? false
})
@@ -230,7 +231,7 @@ export class Curtain extends deviceBase {
accessory.context.CloseModeSwitch = this.CloseModeSwitch as object
// Initialize Close Mode Switch Service
- this.CloseModeSwitch.Service.setCharacteristic(this.hap.Characteristic.Name, this.CloseModeSwitch.Name).getCharacteristic(this.hap.Characteristic.On).onGet(() => {
+ this.CloseModeSwitch.Service.setCharacteristic(this.hap.Characteristic.Name, this.CloseModeSwitch.Name).setCharacteristic(this.hap.Characteristic.ConfiguredName, this.CloseModeSwitch.Name).getCharacteristic(this.hap.Characteristic.On).onGet(() => {
return this.CloseModeSwitch?.On ?? false
})
@@ -401,37 +402,7 @@ export class Curtain extends deviceBase {
await this.debugLog(`(slidePosition, battery, version) = OpenAPI:(${this.deviceStatus.slidePosition}, ${this.deviceStatus.battery}, ${this.deviceStatus.version}), current:(${this.WindowCovering.CurrentPosition}, ${this.Battery.BatteryLevel}, ${this.accessory.context.version})`)
// CurrentPosition
this.WindowCovering.CurrentPosition = 100 - this.deviceStatus.slidePosition
- await this.setMinMax()
- await this.debugLog(`CurrentPosition: ${this.WindowCovering.CurrentPosition}`)
- if (this.setNewTarget || this.deviceStatus.moving) {
- await this.infoLog('Checking Status ...')
- this.curtainMoving = true
- await this.setMinMax()
- if (Number(this.WindowCovering.TargetPosition) > this.WindowCovering.CurrentPosition) {
- await this.debugLog(`Closing, CurrentPosition: ${this.WindowCovering.CurrentPosition}`)
- this.WindowCovering.PositionState = this.hap.Characteristic.PositionState.INCREASING
- this.WindowCovering.Service.getCharacteristic(this.hap.Characteristic.PositionState).updateValue(this.WindowCovering.PositionState)
- await this.debugLog(`Increasing, PositionState: ${this.WindowCovering.PositionState}`)
- } else if (Number(this.WindowCovering.TargetPosition) < this.WindowCovering.CurrentPosition) {
- await this.debugLog(`Opening, CurrentPosition: ${this.WindowCovering.CurrentPosition}`)
- this.WindowCovering.PositionState = this.hap.Characteristic.PositionState.DECREASING
- this.WindowCovering.Service.getCharacteristic(this.hap.Characteristic.PositionState).updateValue(this.WindowCovering.PositionState)
- await this.debugLog(`Decreasing, PositionState: ${this.WindowCovering.PositionState}`)
- } else {
- await this.debugLog(`Standby, CurrentPosition: ${this.WindowCovering.CurrentPosition}`)
- this.WindowCovering.PositionState = this.hap.Characteristic.PositionState.STOPPED
- this.WindowCovering.Service.getCharacteristic(this.hap.Characteristic.PositionState).updateValue(this.WindowCovering.PositionState)
- await this.debugLog(`Stopped, PositionState: ${this.WindowCovering.PositionState}`)
- }
- } else {
- await this.infoLog('Standby ...')
- this.curtainMoving = false
- await this.debugLog(`Standby, CurrentPosition: ${this.WindowCovering.CurrentPosition}`)
- this.WindowCovering.TargetPosition = this.WindowCovering.CurrentPosition
- this.WindowCovering.PositionState = this.hap.Characteristic.PositionState.STOPPED
- await this.debugLog(`Stopped, PositionState: ${this.WindowCovering.PositionState}`)
- }
- await this.debugLog(`CurrentPosition: ${this.WindowCovering.CurrentPosition}, TargetPosition: ${this.WindowCovering.TargetPosition}, PositionState: ${this.WindowCovering.PositionState},`)
+ await this.getCurrentPostion()
// Brightness
if (!this.device.curtain?.hide_lightsensor && this.LightSensor?.Service) {
@@ -848,10 +819,12 @@ export class Curtain extends deviceBase {
return { setPositionMode, Mode }
}
- async getCurrentPostion() {
+ async getCurrentPostion(): Promise {
await this.setMinMax()
await this.debugLog(`CurrentPosition ${this.WindowCovering.CurrentPosition}`)
- if (this.setNewTarget) {
+ this.hasLoggedStandby = this.hasLoggedStandby ?? false
+ if (this.setNewTarget || this.deviceStatus.moving) {
+ this.hasLoggedStandby = false
this.infoLog('Checking Status ...')
this.curtainMoving = true
await this.setMinMax()
@@ -872,7 +845,10 @@ export class Curtain extends deviceBase {
await this.debugLog(`Stopped, PositionState: ${this.WindowCovering.PositionState}`)
}
} else {
- await this.infoLog('Standby ...')
+ if (!this.hasLoggedStandby) {
+ await this.infoLog('Standby ...')
+ this.hasLoggedStandby = true
+ }
this.curtainMoving = false
await this.debugLog(`Standby, CurrentPosition: ${this.WindowCovering.CurrentPosition}`)
this.WindowCovering.TargetPosition = this.WindowCovering.CurrentPosition
diff --git a/src/device/hub.ts b/src/device/hub.ts
index 91c80576..c0ba0905 100644
--- a/src/device/hub.ts
+++ b/src/device/hub.ts
@@ -178,11 +178,11 @@ export class Hub extends deviceBase {
async BLEparseStatus(): Promise {
await this.debugLog('BLEparseStatus')
- await this.debugLog(`(temperature, humidity, lightLevel) = BLE:(${this.serviceData.temperature}, ${this.serviceData.humidity}, ${this.serviceData.lightLevel}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity}, ${this.LightSensor?.CurrentAmbientLightLevel})`)
+ await this.debugLog(`(temperature, humidity, lightLevel) = BLE:(${this.serviceData.celcius}, ${this.serviceData.humidity}, ${this.serviceData.lightLevel}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity}, ${this.LightSensor?.CurrentAmbientLightLevel})`)
// CurrentTemperature
if (!this.device.hub?.hide_temperature && this.TemperatureSensor?.Service) {
- this.TemperatureSensor.CurrentTemperature = this.serviceData.temperature.c
+ this.TemperatureSensor.CurrentTemperature = this.serviceData.celcius
await this.debugLog(`CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`)
}
diff --git a/src/device/iosensor.ts b/src/device/iosensor.ts
index 93089a9a..32e57db4 100644
--- a/src/device/iosensor.ts
+++ b/src/device/iosensor.ts
@@ -180,7 +180,7 @@ export class IOSensor extends deviceBase {
async BLEparseStatus(): Promise {
await this.debugLog('BLEparseStatus')
- await this.debugLog(`(battery, temperature, humidity) = BLE:(${this.serviceData.battery}, ${this.serviceData.temperature.c}, ${this.serviceData.humidity}), current:(${this.Battery.BatteryLevel}, ${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`)
+ await this.debugLog(`(battery, temperature, humidity) = BLE:(${this.serviceData.battery}, ${this.serviceData.celcius}, ${this.serviceData.humidity}), current:(${this.Battery.BatteryLevel}, ${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`)
// BatteryLevel
this.Battery.BatteryLevel = this.serviceData.battery
@@ -200,7 +200,7 @@ export class IOSensor extends deviceBase {
// Current Temperature
if (!this.device.meter?.hide_temperature && this.TemperatureSensor?.Service) {
- const CELSIUS = this.serviceData.temperature.c < 0 ? 0 : this.serviceData.temperature.c > 100 ? 100 : this.serviceData.temperature.c
+ const CELSIUS = this.serviceData.celcius < 0 ? 0 : this.serviceData.celcius > 100 ? 100 : this.serviceData.celcius
this.TemperatureSensor.CurrentTemperature = CELSIUS
await this.debugLog(`Temperature: ${this.TemperatureSensor.CurrentTemperature}°c`)
}
diff --git a/src/device/meter.ts b/src/device/meter.ts
index c8b9b57b..8906ab6e 100644
--- a/src/device/meter.ts
+++ b/src/device/meter.ts
@@ -173,7 +173,7 @@ export class Meter extends deviceBase {
async BLEparseStatus(): Promise {
await this.debugLog('BLEparseStatus')
- await this.debugLog(`(scale, temperature, humidity) = BLE:(${this.serviceData.fahrenheit}, ${this.serviceData.temperature.c}, ${this.serviceData.humidity}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`)
+ await this.debugLog(`(scale, temperature, humidity) = BLE:(${this.serviceData.fahrenheit}, ${this.serviceData.celcius}, ${this.serviceData.humidity}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`)
// CurrentRelativeHumidity
if (!this.device.iosensor?.hide_humidity && this.HumiditySensor?.Service) {
@@ -183,7 +183,7 @@ export class Meter extends deviceBase {
// Current Temperature
if (!this.device.meter?.hide_temperature && this.TemperatureSensor?.Service) {
- const CELSIUS = this.serviceData.temperature.c < 0 ? 0 : this.serviceData.temperature.c > 100 ? 100 : this.serviceData.temperature.c
+ const CELSIUS = this.serviceData.celcius < 0 ? 0 : this.serviceData.celcius > 100 ? 100 : this.serviceData.celcius
this.TemperatureSensor.CurrentTemperature = CELSIUS
await this.debugLog(`CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`)
}
diff --git a/src/device/meterplus.ts b/src/device/meterplus.ts
index 42208bad..28a89e3c 100644
--- a/src/device/meterplus.ts
+++ b/src/device/meterplus.ts
@@ -178,7 +178,7 @@ export class MeterPlus extends deviceBase {
async BLEparseStatus(): Promise {
await this.debugLog('BLEparseStatus')
- await this.debugLog(`(temperature, humidity) = BLE:(${this.serviceData.temperature.c}, ${this.serviceData.humidity}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`)
+ await this.debugLog(`(temperature, humidity) = BLE:(${this.serviceData.celcius}, ${this.serviceData.humidity}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`)
// CurrentRelativeHumidity
if (!this.device.iosensor?.hide_humidity && this.HumiditySensor?.Service) {
@@ -187,7 +187,7 @@ export class MeterPlus extends deviceBase {
}
// Current Temperature
if (!this.device.meter?.hide_temperature && this.TemperatureSensor?.Service) {
- const CELSIUS = this.serviceData.temperature.c < 0 ? 0 : this.serviceData.temperature.c > 100 ? 100 : this.serviceData.temperature.c
+ const CELSIUS = this.serviceData.celcius < 0 ? 0 : this.serviceData.celcius > 100 ? 100 : this.serviceData.celcius
this.TemperatureSensor.CurrentTemperature = CELSIUS
await this.debugLog(`CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`)
}
diff --git a/src/types/bledevicestatus.ts b/src/types/bledevicestatus.ts
index 727518d3..f9db5876 100644
--- a/src/types/bledevicestatus.ts
+++ b/src/types/bledevicestatus.ts
@@ -140,8 +140,9 @@ export type meterServiceData = serviceData & {
model: SwitchBotBLEModel.Meter
modelName: SwitchBotBLEModelName.Meter
modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter
- temperature: temperature
- fahrenheit: boolean
+ celcius: number
+ fahrenheit: number
+ fahrenheit_mode: boolean
humidity: number
battery: number
}
@@ -150,8 +151,9 @@ export type meterPlusServiceData = serviceData & {
model: SwitchBotBLEModel.MeterPlus
modelName: SwitchBotBLEModelName.MeterPlus
modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus
- temperature: temperature
- fahrenheit: boolean
+ celcius: number
+ fahrenheit: number
+ fahrenheit_mode: boolean
humidity: number
battery: number
}
@@ -160,8 +162,9 @@ export type outdoorMeterServiceData = serviceData & {
model: SwitchBotBLEModel.OutdoorMeter
modelName: SwitchBotBLEModelName.OutdoorMeter
modelFriendlyName: SwitchBotBLEModelFriendlyName.OutdoorMeter
- temperature: temperature
- fahrenheit: boolean
+ celcius: number
+ fahrenheit: number
+ fahrenheit_mode: boolean
humidity: number
battery: number
}
@@ -257,8 +260,9 @@ export type hub2ServiceData = serviceData & {
model: SwitchBotBLEModel.Hub2
modelName: SwitchBotBLEModelName.Hub2
modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub2
- temperature: temperature
- fahrenheit: boolean
+ celcius: number
+ fahrenheit: number
+ fahrenheit_mode: boolean
humidity: number
lightLevel: number
}
@@ -297,8 +301,3 @@ export type robotVacuumCleanerServiceData = serviceData & {
state: string
battery: number
}
-
-export interface temperature {
- c: number
- f: number
-}