@switchbot/homebridge-switchbot 4.3.2-beta.9 → 4.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +328 -0
- package/.github/scripts/npm-version-script-esm-auto.js +207 -0
- package/.github/workflows/beta-release.yml +8 -12
- package/.github/workflows/release.yml +54 -22
- package/CHANGELOG.md +11 -1
- package/README.md +13 -10
- package/config.schema.json +248 -5
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +15847 -0
- package/coverage/coverage-final.json +42 -0
- package/coverage/docs/assets/dmt/dmt-component-data.js.html +85 -0
- package/coverage/docs/assets/dmt/dmt-components.js.html +286 -0
- package/coverage/docs/assets/dmt/index.html +131 -0
- package/coverage/docs/assets/hierarchy.js.html +85 -0
- package/coverage/docs/assets/icons.js.html +136 -0
- package/coverage/docs/assets/index.html +146 -0
- package/coverage/docs/assets/main.js.html +265 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +191 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/src/device/blindtilt.ts.html +3238 -0
- package/coverage/src/device/bot.ts.html +2803 -0
- package/coverage/src/device/ceilinglight.ts.html +2338 -0
- package/coverage/src/device/colorbulb.ts.html +2824 -0
- package/coverage/src/device/contact.ts.html +1465 -0
- package/coverage/src/device/curtain.ts.html +2869 -0
- package/coverage/src/device/device.ts.html +2500 -0
- package/coverage/src/device/fan.ts.html +2242 -0
- package/coverage/src/device/hub.ts.html +1408 -0
- package/coverage/src/device/humidifier.ts.html +2116 -0
- package/coverage/src/device/index.html +416 -0
- package/coverage/src/device/iosensor.ts.html +1375 -0
- package/coverage/src/device/lightstrip.ts.html +2617 -0
- package/coverage/src/device/lock.ts.html +1963 -0
- package/coverage/src/device/meter.ts.html +1372 -0
- package/coverage/src/device/meterplus.ts.html +1384 -0
- package/coverage/src/device/meterpro.ts.html +1618 -0
- package/coverage/src/device/motion.ts.html +1264 -0
- package/coverage/src/device/plug.ts.html +1372 -0
- package/coverage/src/device/relayswitch.ts.html +2284 -0
- package/coverage/src/device/robotvacuumcleaner.ts.html +1810 -0
- package/coverage/src/device/waterdetector.ts.html +1294 -0
- package/coverage/src/homebridge-ui/index.html +116 -0
- package/coverage/src/homebridge-ui/server.ts.html +229 -0
- package/coverage/src/index.html +161 -0
- package/coverage/src/index.ts.html +124 -0
- package/coverage/src/irdevice/airconditioner.ts.html +1687 -0
- package/coverage/src/irdevice/airpurifier.ts.html +844 -0
- package/coverage/src/irdevice/camera.ts.html +475 -0
- package/coverage/src/irdevice/fan.ts.html +766 -0
- package/coverage/src/irdevice/index.html +251 -0
- package/coverage/src/irdevice/irdevice.ts.html +1117 -0
- package/coverage/src/irdevice/light.ts.html +826 -0
- package/coverage/src/irdevice/other.ts.html +2458 -0
- package/coverage/src/irdevice/tv.ts.html +1222 -0
- package/coverage/src/irdevice/vacuumcleaner.ts.html +466 -0
- package/coverage/src/irdevice/waterheater.ts.html +469 -0
- package/coverage/src/platform.ts.html +8776 -0
- package/coverage/src/settings.ts.html +934 -0
- package/coverage/src/utils.ts.html +2092 -0
- package/dist/device/blindtilt.d.ts.map +1 -1
- package/dist/device/blindtilt.js +12 -4
- package/dist/device/blindtilt.js.map +1 -1
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js +12 -4
- package/dist/device/bot.js.map +1 -1
- package/dist/device/ceilinglight.d.ts.map +1 -1
- package/dist/device/ceilinglight.js +18 -7
- package/dist/device/ceilinglight.js.map +1 -1
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +18 -7
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/contact.d.ts.map +1 -1
- package/dist/device/contact.js +6 -2
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.d.ts.map +1 -1
- package/dist/device/curtain.js +12 -4
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/device.d.ts +5 -7
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +11 -5
- package/dist/device/device.js.map +1 -1
- package/dist/device/fan.d.ts.map +1 -1
- package/dist/device/fan.js +16 -6
- package/dist/device/fan.js.map +1 -1
- package/dist/device/hub.d.ts +2 -2
- package/dist/device/hub.d.ts.map +1 -1
- package/dist/device/hub.js +8 -3
- package/dist/device/hub.js.map +1 -1
- package/dist/device/humidifier.d.ts.map +1 -1
- package/dist/device/humidifier.js +16 -6
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/iosensor.d.ts.map +1 -1
- package/dist/device/iosensor.js +6 -2
- package/dist/device/iosensor.js.map +1 -1
- package/dist/device/lightstrip.d.ts.map +1 -1
- package/dist/device/lightstrip.js +16 -6
- package/dist/device/lightstrip.js.map +1 -1
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +12 -4
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js +6 -2
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts.map +1 -1
- package/dist/device/meterplus.js +6 -2
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/meterpro.d.ts.map +1 -1
- package/dist/device/meterpro.js +7 -4
- package/dist/device/meterpro.js.map +1 -1
- package/dist/device/motion.d.ts.map +1 -1
- package/dist/device/motion.js +6 -2
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.d.ts.map +1 -1
- package/dist/device/plug.js +12 -4
- package/dist/device/plug.js.map +1 -1
- package/dist/device/presence.d.ts +42 -0
- package/dist/device/presence.d.ts.map +1 -0
- package/dist/device/presence.js +349 -0
- package/dist/device/presence.js.map +1 -0
- package/dist/device/relayswitch.d.ts.map +1 -1
- package/dist/device/relayswitch.js +12 -4
- package/dist/device/relayswitch.js.map +1 -1
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js +14 -5
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/device/waterdetector.d.ts.map +1 -1
- package/dist/device/waterdetector.js +6 -2
- package/dist/device/waterdetector.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js +2 -1
- package/dist/irdevice/airconditioner.js.map +1 -1
- package/dist/irdevice/airpurifier.d.ts +1 -1
- package/dist/irdevice/airpurifier.d.ts.map +1 -1
- package/dist/irdevice/airpurifier.js +6 -5
- package/dist/irdevice/airpurifier.js.map +1 -1
- package/dist/irdevice/camera.d.ts.map +1 -1
- package/dist/irdevice/camera.js +2 -1
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js +2 -1
- package/dist/irdevice/fan.js.map +1 -1
- package/dist/irdevice/irdevice.d.ts +2 -6
- package/dist/irdevice/irdevice.d.ts.map +1 -1
- package/dist/irdevice/irdevice.js.map +1 -1
- package/dist/irdevice/light.d.ts.map +1 -1
- package/dist/irdevice/light.js +2 -1
- package/dist/irdevice/light.js.map +1 -1
- package/dist/irdevice/other.d.ts.map +1 -1
- package/dist/irdevice/other.js +2 -1
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js +2 -1
- package/dist/irdevice/tv.js.map +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
- package/dist/irdevice/vacuumcleaner.js +2 -1
- package/dist/irdevice/vacuumcleaner.js.map +1 -1
- package/dist/irdevice/waterheater.d.ts.map +1 -1
- package/dist/irdevice/waterheater.js +2 -1
- package/dist/irdevice/waterheater.js.map +1 -1
- package/dist/platform.d.ts +2 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +77 -78
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +6 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +1 -0
- package/dist/settings.js.map +1 -1
- package/docs/index.html +20 -11
- package/docs/variables/default.html +1 -1
- package/eslint.config.js +0 -1
- package/package.json +9 -10
- package/src/device/blindtilt.ts +10 -4
- package/src/device/bot.ts +10 -4
- package/src/device/ceilinglight.ts +16 -7
- package/src/device/colorbulb.ts +16 -7
- package/src/device/contact.ts +5 -2
- package/src/device/curtain.ts +12 -6
- package/src/device/device.ts +14 -8
- package/src/device/fan.ts +14 -6
- package/src/device/hub.ts +10 -6
- package/src/device/humidifier.ts +14 -6
- package/src/device/iosensor.ts +5 -2
- package/src/device/lightstrip.ts +14 -6
- package/src/device/lock.ts +10 -4
- package/src/device/meter.ts +6 -3
- package/src/device/meterplus.ts +5 -2
- package/src/device/meterpro.ts +7 -5
- package/src/device/motion.ts +5 -2
- package/src/device/plug.ts +10 -4
- package/src/device/presence.ts +393 -0
- package/src/device/relayswitch.ts +10 -4
- package/src/device/robotvacuumcleaner.ts +12 -5
- package/src/device/waterdetector.ts +5 -2
- package/src/homebridge-ui/public/index.html +1 -1
- package/src/irdevice/airconditioner.ts +2 -1
- package/src/irdevice/airpurifier.ts +6 -5
- package/src/irdevice/camera.ts +2 -1
- package/src/irdevice/fan.ts +2 -1
- package/src/irdevice/irdevice.ts +2 -2
- package/src/irdevice/light.ts +2 -1
- package/src/irdevice/other.ts +2 -1
- package/src/irdevice/tv.ts +2 -1
- package/src/irdevice/vacuumcleaner.ts +2 -1
- package/src/irdevice/waterheater.ts +2 -1
- package/src/platform.ts +80 -88
- package/src/settings.ts +7 -0
- package/.github/npm-version-script-esm.js +0 -97
- package/.github/workflows/build.yml +0 -18
- package/.github/workflows/changerelease.yml +0 -11
- package/.github/workflows/labeler.yml +0 -16
- package/.github/workflows/release-drafter.yml +0 -14
- package/dist/device/airpurifier.d.ts +0 -54
- package/dist/device/airpurifier.d.ts.map +0 -1
- package/dist/device/airpurifier.js +0 -527
- package/dist/device/airpurifier.js.map +0 -1
- package/src/device/airpurifier.ts +0 -563
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
|
|
4
4
|
|
|
5
|
+
## [4.3.2](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v4.3.2) (2025-12-17)
|
|
6
|
+
|
|
7
|
+
## What's Changed
|
|
8
|
+
* Add Presence Sensor Support by @Donavan Becker in https://github.com/OpenWonderLabs/homebridge-switchbot/commit/169d0b2
|
|
9
|
+
* Add proper SwitchBot Hub 3 support with latest node-switchbot dependency by @Copilot in https://github.com/OpenWonderLabs/homebridge-switchbot/pull/1264
|
|
10
|
+
* Fix error logging by @Dave Nicolson in https://github.com/OpenWonderLabs/homebridge-switchbot/pull/1266
|
|
11
|
+
* Add comprehensive GitHub Copilot instructions for homebridge-switchbot development by @Copilot in https://github.com/OpenWonderLabs/homebridge-switchbot/pull/1262
|
|
12
|
+
|
|
13
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/homebridge-switchbot/compare/v4.3.1...v4.3.2
|
|
14
|
+
|
|
5
15
|
## [4.3.1](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v4.3.1) (2025-03-04)
|
|
6
16
|
|
|
7
17
|
# *No New Releases During Lent*
|
|
@@ -94,7 +104,7 @@ All notable changes to this project will be documented in this file. This projec
|
|
|
94
104
|
## [4.1.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v4.1.0) (2024-10-21)
|
|
95
105
|
|
|
96
106
|
### What's Changed
|
|
97
|
-
- Add `
|
|
107
|
+
- Add `Meter Pro` deviceType Support
|
|
98
108
|
- Fix `node-switchbot` noble issue.
|
|
99
109
|
- Housekeeping and updated dependencies.
|
|
100
110
|
|
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
- [SwitchBot Indoor/Outdoor Thermo-Hygrometer](https://www.switch-bot.com/products/switchbot-indoor-outdoor-thermo-hygrometer)
|
|
95
95
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
96
96
|
- If using OpenAPI:
|
|
97
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
97
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
98
98
|
- Enable Cloud Services for Device on SwitchBot App
|
|
99
99
|
- If using Bluetooth Low Energy (BLE) only:
|
|
100
100
|
- Must supply `deviceId` & `deviceName` to Device Config
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
- [SwitchBot Motion Sensor](https://www.switch-bot.com/products/motion-sensor)
|
|
103
103
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
104
104
|
- If using OpenAPI:
|
|
105
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
105
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
106
106
|
- Enable Cloud Services for Device on SwitchBot App
|
|
107
107
|
- If using Bluetooth Low Energy (BLE) only:
|
|
108
108
|
- Must supply `deviceId` & `deviceName` to Device Config
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
- [SwitchBot Contact Sensor](https://www.switch-bot.com/products/contact-sensor)
|
|
111
111
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
112
112
|
- If using OpenAPI:
|
|
113
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
113
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
114
114
|
- Enable Cloud Services for Device on SwitchBot App
|
|
115
115
|
- If using Bluetooth Low Energy (BLE) only:
|
|
116
116
|
- Must supply `deviceId` & `deviceName` to Device Config
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
- [SwitchBot Curtain 3](https://www.switch-bot.com/products/switchbot-curtain-3)
|
|
120
120
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
121
121
|
- If using OpenAPI:
|
|
122
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
122
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
123
123
|
- Enable Cloud Services for Device on SwitchBot App
|
|
124
124
|
- If using Bluetooth Low Energy (BLE) only:
|
|
125
125
|
- Must supply `deviceId` & `deviceName` to Device Config
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
- [SwitchBot Blind Tilt](https://us.switch-bot.com/products/switchbot-blind-tilt)
|
|
128
128
|
- Supports OpenAPI & partial Bluetooth Low Energy (BLE) Connections
|
|
129
129
|
- If using OpenAPI:
|
|
130
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
130
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
131
131
|
- Enable Cloud Services for Device on SwitchBot App
|
|
132
132
|
- [SwitchBot Bulb](https://www.switch-bot.com/products/switchbot-color-bulb)
|
|
133
133
|
- [SwitchBot Ceiling Light](https://www.switchbot.jp/collections/all/products/switchbot-ceiling-light)
|
|
@@ -135,13 +135,13 @@
|
|
|
135
135
|
- [SwitchBot Light Strip](https://www.switch-bot.com/products/switchbot-light-strip)
|
|
136
136
|
- Supports OpenAPI & partial Bluetooth Low Energy (BLE) Connections
|
|
137
137
|
- If using OpenAPI:
|
|
138
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
138
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
139
139
|
- Enable Cloud Services for Device on SwitchBot App
|
|
140
140
|
- [SwitchBot Lock](https://us.switch-bot.com/products/switchbot-lock)
|
|
141
141
|
- [SwitchBot Lock Pro](https://www.switchbot.jp/products/switchbot-lock-pro)
|
|
142
142
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
143
143
|
- If using OpenAPI:
|
|
144
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
144
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
145
145
|
- Enable Cloud Services for Device on SwitchBot App
|
|
146
146
|
- US: [SwitchBot Mini Robot Vacuum K10+](https://www.switch-bot.com/products/switchbot-mini-robot-vacuum-k10)
|
|
147
147
|
- US: [SwitchBot Floor Cleaning Robot S10](https://www.switch-bot.com/products/switchbot-floor-cleaning-robot-s10)
|
|
@@ -153,12 +153,12 @@
|
|
|
153
153
|
- [SwitchBot Plug Mini (JP)](https://www.switchbot.jp/products/switchbot-plug-mini)
|
|
154
154
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
155
155
|
- If using OpenAPI:
|
|
156
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
156
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
157
157
|
- Enable Cloud Services for Device on SwitchBot App
|
|
158
158
|
- [SwitchBot Bot](https://www.switch-bot.com/products/switchbot-bot)
|
|
159
159
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
160
160
|
- If using OpenAPI:
|
|
161
|
-
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini)
|
|
161
|
+
- [SwitchBot Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini), [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), or [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3) Required
|
|
162
162
|
- Enable Cloud Services for Device on SwitchBot App
|
|
163
163
|
- You must set your Bot's Device ID for either Press Mode or Switch Mode in Plugin Config (SwitchBot Device Settings > Bot Settings)
|
|
164
164
|
- Press Mode - Turns on then instantly turn it off
|
|
@@ -171,6 +171,9 @@
|
|
|
171
171
|
- [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2)
|
|
172
172
|
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
173
173
|
- Enables Humidity, Temperature, and Light Sensor
|
|
174
|
+
- [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3)
|
|
175
|
+
- Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
|
|
176
|
+
- Enables Humidity, Temperature, and Light Sensor
|
|
174
177
|
- [SwitchBot Battery Circulator Fan](https://us.switch-bot.com/products/switchbot-battery-circulator-fan)
|
|
175
178
|
- Supports OpenAPI Connection Only
|
|
176
179
|
- [SwitchBot Water Leak Detector](https://us.switch-bot.com/products/switchbot-water-leak-detector)
|
|
@@ -178,7 +181,7 @@
|
|
|
178
181
|
|
|
179
182
|
## Supported IR Devices
|
|
180
183
|
|
|
181
|
-
### _(All IR Devices require [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2) or [Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini))_
|
|
184
|
+
### _(All IR Devices require [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3), or [Hub Mini](https://www.switch-bot.com/products/switchbot-hub-mini))_
|
|
182
185
|
|
|
183
186
|
- TV
|
|
184
187
|
- Allows for On/Off and Volume Controls
|
package/config.schema.json
CHANGED
|
@@ -246,6 +246,12 @@
|
|
|
246
246
|
"Motion Sensor"
|
|
247
247
|
]
|
|
248
248
|
},
|
|
249
|
+
{
|
|
250
|
+
"title": "Presence Sensor",
|
|
251
|
+
"enum": [
|
|
252
|
+
"Presence Sensor"
|
|
253
|
+
]
|
|
254
|
+
},
|
|
249
255
|
{
|
|
250
256
|
"title": "Plug",
|
|
251
257
|
"enum": [
|
|
@@ -606,7 +612,7 @@
|
|
|
606
612
|
"title": "Hide Light Sensor",
|
|
607
613
|
"type": "boolean",
|
|
608
614
|
"condition": {
|
|
609
|
-
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
|
|
615
|
+
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Presence Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId);"
|
|
610
616
|
}
|
|
611
617
|
},
|
|
612
618
|
"hide_motionsensor": {
|
|
@@ -700,7 +706,7 @@
|
|
|
700
706
|
"type": "number",
|
|
701
707
|
"placeholder": "1",
|
|
702
708
|
"condition": {
|
|
703
|
-
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
|
|
709
|
+
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Presence Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
|
|
704
710
|
}
|
|
705
711
|
},
|
|
706
712
|
"set_maxlux": {
|
|
@@ -708,7 +714,7 @@
|
|
|
708
714
|
"type": "number",
|
|
709
715
|
"placeholder": "6001",
|
|
710
716
|
"condition": {
|
|
711
|
-
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
|
|
717
|
+
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Presence Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Blind Tilt' || model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Curtain3' || model.options.devices[arrayIndices].configDeviceType === 'WoRollerShade' || model.options.devices[arrayIndices].configDeviceType === 'Roller Shade') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_lightsensor);"
|
|
712
718
|
}
|
|
713
719
|
},
|
|
714
720
|
"setOpenMode": {
|
|
@@ -838,7 +844,7 @@
|
|
|
838
844
|
"logging": {
|
|
839
845
|
"title": "Device Logging Override Setting",
|
|
840
846
|
"type": "string",
|
|
841
|
-
"default": "",
|
|
847
|
+
"default": "standard",
|
|
842
848
|
"condition": {
|
|
843
849
|
"functionBody": "return (model.options && model.options.devices && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].configDeviceType);"
|
|
844
850
|
},
|
|
@@ -3940,6 +3946,215 @@
|
|
|
3940
3946
|
}
|
|
3941
3947
|
}
|
|
3942
3948
|
},
|
|
3949
|
+
"Presence Sensor": {
|
|
3950
|
+
"type": "object",
|
|
3951
|
+
"properties": {
|
|
3952
|
+
"hide_device": {
|
|
3953
|
+
"title": "Hide All Presence Sensors",
|
|
3954
|
+
"type": "boolean",
|
|
3955
|
+
"description": "If true, device will be removed or hidden from HomeKit."
|
|
3956
|
+
},
|
|
3957
|
+
"hide_lightsensor": {
|
|
3958
|
+
"title": "Hide Light Sensor",
|
|
3959
|
+
"type": "boolean",
|
|
3960
|
+
"condition": {
|
|
3961
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Motion Sensor'].hide_device);"
|
|
3962
|
+
}
|
|
3963
|
+
},
|
|
3964
|
+
"set_minlux": {
|
|
3965
|
+
"title": "Set Min Lux",
|
|
3966
|
+
"type": "number",
|
|
3967
|
+
"placeholder": "1",
|
|
3968
|
+
"condition": {
|
|
3969
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Motion Sensor'].hide_device);"
|
|
3970
|
+
}
|
|
3971
|
+
},
|
|
3972
|
+
"set_maxlux": {
|
|
3973
|
+
"title": "Set Max Lux",
|
|
3974
|
+
"type": "number",
|
|
3975
|
+
"placeholder": "6001",
|
|
3976
|
+
"condition": {
|
|
3977
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Motion Sensor'].hide_device);"
|
|
3978
|
+
}
|
|
3979
|
+
},
|
|
3980
|
+
"connectionType": {
|
|
3981
|
+
"title": "Connection Type",
|
|
3982
|
+
"type": "string",
|
|
3983
|
+
"description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
|
|
3984
|
+
"condition": {
|
|
3985
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
3986
|
+
},
|
|
3987
|
+
"oneOf": [
|
|
3988
|
+
{
|
|
3989
|
+
"title": "BLE",
|
|
3990
|
+
"enum": [
|
|
3991
|
+
"BLE"
|
|
3992
|
+
]
|
|
3993
|
+
},
|
|
3994
|
+
{
|
|
3995
|
+
"title": "BLE/OpenAPI",
|
|
3996
|
+
"enum": [
|
|
3997
|
+
"BLE/OpenAPI"
|
|
3998
|
+
]
|
|
3999
|
+
},
|
|
4000
|
+
{
|
|
4001
|
+
"title": "Disable",
|
|
4002
|
+
"enum": [
|
|
4003
|
+
"Disabled"
|
|
4004
|
+
]
|
|
4005
|
+
},
|
|
4006
|
+
{
|
|
4007
|
+
"title": "OpenAPI",
|
|
4008
|
+
"enum": [
|
|
4009
|
+
"OpenAPI"
|
|
4010
|
+
]
|
|
4011
|
+
}
|
|
4012
|
+
]
|
|
4013
|
+
},
|
|
4014
|
+
"disablePlatformBLE": {
|
|
4015
|
+
"title": "Disable Platform BLE",
|
|
4016
|
+
"type": "boolean",
|
|
4017
|
+
"condition": {
|
|
4018
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Motion Sensor'] && !model.options.deviceConfig['Motion Sensor'].hide_device && model.options.deviceConfig['Motion Sensor'].connectionType !== 'Disabled');"
|
|
4019
|
+
}
|
|
4020
|
+
},
|
|
4021
|
+
"scanDuration": {
|
|
4022
|
+
"title": "Scan Duration (Default is 1 Second) for BLE",
|
|
4023
|
+
"type": "number",
|
|
4024
|
+
"placeholder": 1,
|
|
4025
|
+
"condition": {
|
|
4026
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'BLE' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
|
|
4027
|
+
}
|
|
4028
|
+
},
|
|
4029
|
+
"webhook": {
|
|
4030
|
+
"title": "Enable Webhook for all Presence Sensors",
|
|
4031
|
+
"type": "boolean",
|
|
4032
|
+
"condition": {
|
|
4033
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
|
|
4034
|
+
}
|
|
4035
|
+
},
|
|
4036
|
+
"external": {
|
|
4037
|
+
"title": "External Accessory",
|
|
4038
|
+
"type": "boolean",
|
|
4039
|
+
"condition": {
|
|
4040
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4041
|
+
}
|
|
4042
|
+
},
|
|
4043
|
+
"maxRetry": {
|
|
4044
|
+
"title": "Max Retries for BLE",
|
|
4045
|
+
"type": "number",
|
|
4046
|
+
"placeholder": "5",
|
|
4047
|
+
"condition": {
|
|
4048
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'BLE' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
|
|
4049
|
+
}
|
|
4050
|
+
},
|
|
4051
|
+
"maxRetries": {
|
|
4052
|
+
"title": "Device Max Retries for OpenAPI",
|
|
4053
|
+
"type": "number",
|
|
4054
|
+
"placeholder": 5,
|
|
4055
|
+
"condition": {
|
|
4056
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
|
|
4057
|
+
}
|
|
4058
|
+
},
|
|
4059
|
+
"delayBetweenRetries": {
|
|
4060
|
+
"title": "Device Delay Between Retries for OpenAPI (In Seconds)",
|
|
4061
|
+
"type": "number",
|
|
4062
|
+
"placeholder": 3,
|
|
4063
|
+
"condition": {
|
|
4064
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device && (model.options.deviceConfig['Water Detector'].connectionType === 'OpenAPI' || model.options.deviceConfig['Water Detector'].connectionType === 'BLE/OpenAPI'));"
|
|
4065
|
+
}
|
|
4066
|
+
},
|
|
4067
|
+
"disableCaching": {
|
|
4068
|
+
"title": "Disable Caching",
|
|
4069
|
+
"type": "boolean",
|
|
4070
|
+
"condition": {
|
|
4071
|
+
"functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Water Detector'] && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4072
|
+
}
|
|
4073
|
+
},
|
|
4074
|
+
"offline": {
|
|
4075
|
+
"title": "Offline as Off",
|
|
4076
|
+
"type": "boolean",
|
|
4077
|
+
"condition": {
|
|
4078
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4079
|
+
}
|
|
4080
|
+
},
|
|
4081
|
+
"history": {
|
|
4082
|
+
"title": "EVE History",
|
|
4083
|
+
"type": "boolean",
|
|
4084
|
+
"condition": {
|
|
4085
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4086
|
+
}
|
|
4087
|
+
},
|
|
4088
|
+
"firmware": {
|
|
4089
|
+
"title": "Firmware Override",
|
|
4090
|
+
"type": "string",
|
|
4091
|
+
"placeholder": "1.2.8",
|
|
4092
|
+
"condition": {
|
|
4093
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4094
|
+
}
|
|
4095
|
+
},
|
|
4096
|
+
"logging": {
|
|
4097
|
+
"title": "Logging by Device Type",
|
|
4098
|
+
"type": "string",
|
|
4099
|
+
"default": "",
|
|
4100
|
+
"condition": {
|
|
4101
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4102
|
+
},
|
|
4103
|
+
"oneOf": [
|
|
4104
|
+
{
|
|
4105
|
+
"title": "Debug Logging",
|
|
4106
|
+
"enum": [
|
|
4107
|
+
"debug"
|
|
4108
|
+
]
|
|
4109
|
+
},
|
|
4110
|
+
{
|
|
4111
|
+
"title": "Default Logging",
|
|
4112
|
+
"enum": [
|
|
4113
|
+
""
|
|
4114
|
+
]
|
|
4115
|
+
},
|
|
4116
|
+
{
|
|
4117
|
+
"title": "No Logging",
|
|
4118
|
+
"enum": [
|
|
4119
|
+
"none"
|
|
4120
|
+
]
|
|
4121
|
+
},
|
|
4122
|
+
{
|
|
4123
|
+
"title": "Standard Logging",
|
|
4124
|
+
"enum": [
|
|
4125
|
+
"standard"
|
|
4126
|
+
]
|
|
4127
|
+
}
|
|
4128
|
+
]
|
|
4129
|
+
},
|
|
4130
|
+
"refreshRate": {
|
|
4131
|
+
"title": "Device Refresh Rate",
|
|
4132
|
+
"type": "number",
|
|
4133
|
+
"placeholder": 5,
|
|
4134
|
+
"condition": {
|
|
4135
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4136
|
+
}
|
|
4137
|
+
},
|
|
4138
|
+
"updateRate": {
|
|
4139
|
+
"title": "Update Rate",
|
|
4140
|
+
"type": "number",
|
|
4141
|
+
"minimum": 1,
|
|
4142
|
+
"placeholder": 5,
|
|
4143
|
+
"description": "Indicates the number of seconds before refreshing status while updating progress.",
|
|
4144
|
+
"condition": {
|
|
4145
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4146
|
+
}
|
|
4147
|
+
},
|
|
4148
|
+
"pushRate": {
|
|
4149
|
+
"title": "Device Push Rate",
|
|
4150
|
+
"type": "number",
|
|
4151
|
+
"placeholder": 360,
|
|
4152
|
+
"condition": {
|
|
4153
|
+
"functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Water Detector'].hide_device);"
|
|
4154
|
+
}
|
|
4155
|
+
}
|
|
4156
|
+
}
|
|
4157
|
+
},
|
|
3943
4158
|
"Contact Sensor": {
|
|
3944
4159
|
"type": "object",
|
|
3945
4160
|
"properties": {
|
|
@@ -9358,7 +9573,7 @@
|
|
|
9358
9573
|
{
|
|
9359
9574
|
"title": "Meter Pro",
|
|
9360
9575
|
"enum": [
|
|
9361
|
-
"
|
|
9576
|
+
"Meter Pro"
|
|
9362
9577
|
]
|
|
9363
9578
|
},
|
|
9364
9579
|
{
|
|
@@ -13566,6 +13781,34 @@
|
|
|
13566
13781
|
"options.deviceConfig['Motion Sensor'].pushRate"
|
|
13567
13782
|
]
|
|
13568
13783
|
},
|
|
13784
|
+
{
|
|
13785
|
+
"type": "fieldset",
|
|
13786
|
+
"title": "Presence Sensor Settings",
|
|
13787
|
+
"expandable": true,
|
|
13788
|
+
"expanded": false,
|
|
13789
|
+
"items": [
|
|
13790
|
+
"options.deviceConfig['Presence Sensor'].hide_device",
|
|
13791
|
+
"options.deviceConfig['Presence Sensor'].hide_lightsensor",
|
|
13792
|
+
"options.deviceConfig['Presence Sensor'].set_minlux",
|
|
13793
|
+
"options.deviceConfig['Presence Sensor'].set_maxlux",
|
|
13794
|
+
"options.deviceConfig['Presence Sensor'].connectionType",
|
|
13795
|
+
"options.deviceConfig['Presence Sensor'].disablePlatformBLE",
|
|
13796
|
+
"options.deviceConfig['Presence Sensor'].scanDuration",
|
|
13797
|
+
"options.deviceConfig['Presence Sensor'].webhook",
|
|
13798
|
+
"options.deviceConfig['Presence Sensor'].external",
|
|
13799
|
+
"options.deviceConfig['Presence Sensor'].maxRetry",
|
|
13800
|
+
"options.deviceConfig['Presence Sensor'].maxRetries",
|
|
13801
|
+
"options.deviceConfig['Presence Sensor'].delayBetweenRetries",
|
|
13802
|
+
"options.deviceConfig['Presence Sensor'].disableCaching",
|
|
13803
|
+
"options.deviceConfig['Presence Sensor'].offline",
|
|
13804
|
+
"options.deviceConfig['Presence Sensor'].history",
|
|
13805
|
+
"options.deviceConfig['Presence Sensor'].firmware",
|
|
13806
|
+
"options.deviceConfig['Presence Sensor'].logging",
|
|
13807
|
+
"options.deviceConfig['Presence Sensor'].refreshRate",
|
|
13808
|
+
"options.deviceConfig['Presence Sensor'].updateRate",
|
|
13809
|
+
"options.deviceConfig['Presence Sensor'].pushRate"
|
|
13810
|
+
]
|
|
13811
|
+
},
|
|
13569
13812
|
{
|
|
13570
13813
|
"type": "fieldset",
|
|
13571
13814
|
"title": "Contact Sensor Settings",
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
body, html {
|
|
2
|
+
margin:0; padding: 0;
|
|
3
|
+
height: 100%;
|
|
4
|
+
}
|
|
5
|
+
body {
|
|
6
|
+
font-family: Helvetica Neue, Helvetica, Arial;
|
|
7
|
+
font-size: 14px;
|
|
8
|
+
color:#333;
|
|
9
|
+
}
|
|
10
|
+
.small { font-size: 12px; }
|
|
11
|
+
*, *:after, *:before {
|
|
12
|
+
-webkit-box-sizing:border-box;
|
|
13
|
+
-moz-box-sizing:border-box;
|
|
14
|
+
box-sizing:border-box;
|
|
15
|
+
}
|
|
16
|
+
h1 { font-size: 20px; margin: 0;}
|
|
17
|
+
h2 { font-size: 14px; }
|
|
18
|
+
pre {
|
|
19
|
+
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
-moz-tab-size: 2;
|
|
23
|
+
-o-tab-size: 2;
|
|
24
|
+
tab-size: 2;
|
|
25
|
+
}
|
|
26
|
+
a { color:#0074D9; text-decoration:none; }
|
|
27
|
+
a:hover { text-decoration:underline; }
|
|
28
|
+
.strong { font-weight: bold; }
|
|
29
|
+
.space-top1 { padding: 10px 0 0 0; }
|
|
30
|
+
.pad2y { padding: 20px 0; }
|
|
31
|
+
.pad1y { padding: 10px 0; }
|
|
32
|
+
.pad2x { padding: 0 20px; }
|
|
33
|
+
.pad2 { padding: 20px; }
|
|
34
|
+
.pad1 { padding: 10px; }
|
|
35
|
+
.space-left2 { padding-left:55px; }
|
|
36
|
+
.space-right2 { padding-right:20px; }
|
|
37
|
+
.center { text-align:center; }
|
|
38
|
+
.clearfix { display:block; }
|
|
39
|
+
.clearfix:after {
|
|
40
|
+
content:'';
|
|
41
|
+
display:block;
|
|
42
|
+
height:0;
|
|
43
|
+
clear:both;
|
|
44
|
+
visibility:hidden;
|
|
45
|
+
}
|
|
46
|
+
.fl { float: left; }
|
|
47
|
+
@media only screen and (max-width:640px) {
|
|
48
|
+
.col3 { width:100%; max-width:100%; }
|
|
49
|
+
.hide-mobile { display:none!important; }
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.quiet {
|
|
53
|
+
color: #7f7f7f;
|
|
54
|
+
color: rgba(0,0,0,0.5);
|
|
55
|
+
}
|
|
56
|
+
.quiet a { opacity: 0.7; }
|
|
57
|
+
|
|
58
|
+
.fraction {
|
|
59
|
+
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
|
|
60
|
+
font-size: 10px;
|
|
61
|
+
color: #555;
|
|
62
|
+
background: #E8E8E8;
|
|
63
|
+
padding: 4px 5px;
|
|
64
|
+
border-radius: 3px;
|
|
65
|
+
vertical-align: middle;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
div.path a:link, div.path a:visited { color: #333; }
|
|
69
|
+
table.coverage {
|
|
70
|
+
border-collapse: collapse;
|
|
71
|
+
margin: 10px 0 0 0;
|
|
72
|
+
padding: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
table.coverage td {
|
|
76
|
+
margin: 0;
|
|
77
|
+
padding: 0;
|
|
78
|
+
vertical-align: top;
|
|
79
|
+
}
|
|
80
|
+
table.coverage td.line-count {
|
|
81
|
+
text-align: right;
|
|
82
|
+
padding: 0 5px 0 20px;
|
|
83
|
+
}
|
|
84
|
+
table.coverage td.line-coverage {
|
|
85
|
+
text-align: right;
|
|
86
|
+
padding-right: 10px;
|
|
87
|
+
min-width:20px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
table.coverage td span.cline-any {
|
|
91
|
+
display: inline-block;
|
|
92
|
+
padding: 0 5px;
|
|
93
|
+
width: 100%;
|
|
94
|
+
}
|
|
95
|
+
.missing-if-branch {
|
|
96
|
+
display: inline-block;
|
|
97
|
+
margin-right: 5px;
|
|
98
|
+
border-radius: 3px;
|
|
99
|
+
position: relative;
|
|
100
|
+
padding: 0 4px;
|
|
101
|
+
background: #333;
|
|
102
|
+
color: yellow;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.skip-if-branch {
|
|
106
|
+
display: none;
|
|
107
|
+
margin-right: 10px;
|
|
108
|
+
position: relative;
|
|
109
|
+
padding: 0 4px;
|
|
110
|
+
background: #ccc;
|
|
111
|
+
color: white;
|
|
112
|
+
}
|
|
113
|
+
.missing-if-branch .typ, .skip-if-branch .typ {
|
|
114
|
+
color: inherit !important;
|
|
115
|
+
}
|
|
116
|
+
.coverage-summary {
|
|
117
|
+
border-collapse: collapse;
|
|
118
|
+
width: 100%;
|
|
119
|
+
}
|
|
120
|
+
.coverage-summary tr { border-bottom: 1px solid #bbb; }
|
|
121
|
+
.keyline-all { border: 1px solid #ddd; }
|
|
122
|
+
.coverage-summary td, .coverage-summary th { padding: 10px; }
|
|
123
|
+
.coverage-summary tbody { border: 1px solid #bbb; }
|
|
124
|
+
.coverage-summary td { border-right: 1px solid #bbb; }
|
|
125
|
+
.coverage-summary td:last-child { border-right: none; }
|
|
126
|
+
.coverage-summary th {
|
|
127
|
+
text-align: left;
|
|
128
|
+
font-weight: normal;
|
|
129
|
+
white-space: nowrap;
|
|
130
|
+
}
|
|
131
|
+
.coverage-summary th.file { border-right: none !important; }
|
|
132
|
+
.coverage-summary th.pct { }
|
|
133
|
+
.coverage-summary th.pic,
|
|
134
|
+
.coverage-summary th.abs,
|
|
135
|
+
.coverage-summary td.pct,
|
|
136
|
+
.coverage-summary td.abs { text-align: right; }
|
|
137
|
+
.coverage-summary td.file { white-space: nowrap; }
|
|
138
|
+
.coverage-summary td.pic { min-width: 120px !important; }
|
|
139
|
+
.coverage-summary tfoot td { }
|
|
140
|
+
|
|
141
|
+
.coverage-summary .sorter {
|
|
142
|
+
height: 10px;
|
|
143
|
+
width: 7px;
|
|
144
|
+
display: inline-block;
|
|
145
|
+
margin-left: 0.5em;
|
|
146
|
+
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
|
|
147
|
+
}
|
|
148
|
+
.coverage-summary .sorted .sorter {
|
|
149
|
+
background-position: 0 -20px;
|
|
150
|
+
}
|
|
151
|
+
.coverage-summary .sorted-desc .sorter {
|
|
152
|
+
background-position: 0 -10px;
|
|
153
|
+
}
|
|
154
|
+
.status-line { height: 10px; }
|
|
155
|
+
/* yellow */
|
|
156
|
+
.cbranch-no { background: yellow !important; color: #111; }
|
|
157
|
+
/* dark red */
|
|
158
|
+
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
|
|
159
|
+
.low .chart { border:1px solid #C21F39 }
|
|
160
|
+
.highlighted,
|
|
161
|
+
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
|
|
162
|
+
background: #C21F39 !important;
|
|
163
|
+
}
|
|
164
|
+
/* medium red */
|
|
165
|
+
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
|
|
166
|
+
/* light red */
|
|
167
|
+
.low, .cline-no { background:#FCE1E5 }
|
|
168
|
+
/* light green */
|
|
169
|
+
.high, .cline-yes { background:rgb(230,245,208) }
|
|
170
|
+
/* medium green */
|
|
171
|
+
.cstat-yes { background:rgb(161,215,106) }
|
|
172
|
+
/* dark green */
|
|
173
|
+
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
|
|
174
|
+
.high .chart { border:1px solid rgb(77,146,33) }
|
|
175
|
+
/* dark yellow (gold) */
|
|
176
|
+
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
|
|
177
|
+
.medium .chart { border:1px solid #f9cd0b; }
|
|
178
|
+
/* light yellow */
|
|
179
|
+
.medium { background: #fff4c2; }
|
|
180
|
+
|
|
181
|
+
.cstat-skip { background: #ddd; color: #111; }
|
|
182
|
+
.fstat-skip { background: #ddd; color: #111 !important; }
|
|
183
|
+
.cbranch-skip { background: #ddd !important; color: #111; }
|
|
184
|
+
|
|
185
|
+
span.cline-neutral { background: #eaeaea; }
|
|
186
|
+
|
|
187
|
+
.coverage-summary td.empty {
|
|
188
|
+
opacity: .5;
|
|
189
|
+
padding-top: 4px;
|
|
190
|
+
padding-bottom: 4px;
|
|
191
|
+
line-height: 1;
|
|
192
|
+
color: #888;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.cover-fill, .cover-empty {
|
|
196
|
+
display:inline-block;
|
|
197
|
+
height: 12px;
|
|
198
|
+
}
|
|
199
|
+
.chart {
|
|
200
|
+
line-height: 0;
|
|
201
|
+
}
|
|
202
|
+
.cover-empty {
|
|
203
|
+
background: white;
|
|
204
|
+
}
|
|
205
|
+
.cover-full {
|
|
206
|
+
border-right: none !important;
|
|
207
|
+
}
|
|
208
|
+
pre.prettyprint {
|
|
209
|
+
border: none !important;
|
|
210
|
+
padding: 0 !important;
|
|
211
|
+
margin: 0 !important;
|
|
212
|
+
}
|
|
213
|
+
.com { color: #999 !important; }
|
|
214
|
+
.ignore-none { color: #999; font-weight: normal; }
|
|
215
|
+
|
|
216
|
+
.wrapper {
|
|
217
|
+
min-height: 100%;
|
|
218
|
+
height: auto !important;
|
|
219
|
+
height: 100%;
|
|
220
|
+
margin: 0 auto -48px;
|
|
221
|
+
}
|
|
222
|
+
.footer, .push {
|
|
223
|
+
height: 48px;
|
|
224
|
+
}
|