@switchbot/homebridge-switchbot 4.3.8 → 4.3.10

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/README.md CHANGED
@@ -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 Mini 2](https://us.switch-bot.com/products/switchbot-hub-mini-2)
175
+ - Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
176
+ - Enables Humidity, Temperature, and Light Sensor
174
177
  - [SwitchBot Hub 3](https://us.switch-bot.com/products/switchbot-hub-3)
175
178
  - Supports OpenAPI & Bluetooth Low Energy (BLE) Connections
176
179
  - Enables Humidity, Temperature, and Light Sensor
@@ -181,7 +184,7 @@
181
184
 
182
185
  ## Supported IR Devices
183
186
 
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))_
187
+ ### _(All IR Devices require [SwitchBot Hub 2](https://us.switch-bot.com/products/switchbot-hub-2), [SwitchBot Hub Mini 2](https://us.switch-bot.com/products/switchbot-hub-mini-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))_
185
188
 
186
189
  - TV
187
190
  - Allows for On/Off and Volume Controls
@@ -162,6 +162,12 @@
162
162
  "Hub 2"
163
163
  ]
164
164
  },
165
+ {
166
+ "title": "Hub Mini 2",
167
+ "enum": [
168
+ "Hub Mini 2"
169
+ ]
170
+ },
165
171
  {
166
172
  "title": "Hub 3",
167
173
  "enum": [
@@ -607,14 +613,14 @@
607
613
  "title": "Hide Temperature Sensor",
608
614
  "type": "boolean",
609
615
  "condition": {
610
- "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 === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId);"
616
+ "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 === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId);"
611
617
  }
612
618
  },
613
619
  "convertUnitTo": {
614
620
  "title": "Convert Temperature Unit To",
615
621
  "type": "string",
616
622
  "condition": {
617
- "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 === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
623
+ "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 === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId && !model.options.devices[arrayIndices].hide_temperature);"
618
624
  },
619
625
  "oneOf": [
620
626
  {
@@ -635,14 +641,14 @@
635
641
  "title": "Hide Humidity Sensor",
636
642
  "type": "boolean",
637
643
  "condition": {
638
- "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 === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId);"
644
+ "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 === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)') && model.options.devices[arrayIndices].deviceId);"
639
645
  }
640
646
  },
641
647
  "hide_lightsensor": {
642
648
  "title": "Hide Light Sensor",
643
649
  "type": "boolean",
644
650
  "condition": {
645
- "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 === 'Hub 3' || 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);"
651
+ "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 === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || 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);"
646
652
  }
647
653
  },
648
654
  "hide_motionsensor": {
@@ -719,7 +725,7 @@
719
725
  "placeholder": "0",
720
726
  "description": "Sets the minimum percentage before needed to set to Open.",
721
727
  "condition": {
722
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (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].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
728
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (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].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
723
729
  }
724
730
  },
725
731
  "set_max": {
@@ -728,7 +734,7 @@
728
734
  "placeholder": "100",
729
735
  "description": "Sets the maximum percentage before needing to set to Closed.",
730
736
  "condition": {
731
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (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].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
737
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && (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].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Motion Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Contact Sensor' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier' || model.options.devices[arrayIndices].configDeviceType === 'Humidifier2' || model.options.devices[arrayIndices].configDeviceType === 'Strip Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light' || model.options.devices[arrayIndices].configDeviceType === 'Ceiling Light Pro') && model.options.devices[arrayIndices].deviceId);"
732
738
  }
733
739
  },
734
740
  "set_minlux": {
@@ -736,7 +742,7 @@
736
742
  "type": "number",
737
743
  "placeholder": "1",
738
744
  "condition": {
739
- "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 === 'Hub 3' || 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);"
745
+ "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 === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || 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);"
740
746
  }
741
747
  },
742
748
  "set_maxlux": {
@@ -744,7 +750,7 @@
744
750
  "type": "number",
745
751
  "placeholder": "6001",
746
752
  "condition": {
747
- "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 === 'Hub 3' || 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);"
753
+ "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 === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || 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);"
748
754
  }
749
755
  },
750
756
  "setOpenMode": {
@@ -825,28 +831,28 @@
825
831
  "type": "string",
826
832
  "placeholder": "192.168.7.1",
827
833
  "condition": {
828
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
834
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
829
835
  }
830
836
  },
831
837
  "mqttOptions": {
832
838
  "title": "MQTT Options (Device Specific)",
833
839
  "type": "string",
834
840
  "condition": {
835
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
841
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
836
842
  }
837
843
  },
838
844
  "mqttPubOptions": {
839
845
  "title": "MQTT Pub Options (Device Specific)",
840
846
  "type": "string",
841
847
  "condition": {
842
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
848
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && model.options.devices[arrayIndices].mqttURL && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
843
849
  }
844
850
  },
845
851
  "history": {
846
852
  "title": "EVE History",
847
853
  "type": "boolean",
848
854
  "condition": {
849
- "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
855
+ "functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceId && (model.options.devices[arrayIndices].configDeviceType === 'Curtain' || model.options.devices[arrayIndices].configDeviceType === 'Water Detector' || model.options.devices[arrayIndices].configDeviceType === 'WoIOSensor' || model.options.devices[arrayIndices].configDeviceType === 'Hub 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub Mini 2' || model.options.devices[arrayIndices].configDeviceType === 'Hub 3' || model.options.devices[arrayIndices].configDeviceType === 'Meter' || model.options.devices[arrayIndices].configDeviceType === 'MeterPlus' || model.options.devices[arrayIndices].configDeviceType === 'Meter Plus (JP)' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro' || model.options.devices[arrayIndices].configDeviceType === 'MeterPro(CO2)'));"
850
856
  }
851
857
  },
852
858
  "offline": {
@@ -1376,6 +1382,227 @@
1376
1382
  }
1377
1383
  }
1378
1384
  },
1385
+ "Hub Mini 2": {
1386
+ "type": "object",
1387
+ "properties": {
1388
+ "hide_device": {
1389
+ "title": "Hide All Hub Mini 2s",
1390
+ "type": "boolean",
1391
+ "description": "If true, device will be removed or hidden from HomeKit."
1392
+ },
1393
+ "hide_temperature": {
1394
+ "title": "Hide Temperature Sensor",
1395
+ "type": "boolean",
1396
+ "condition": {
1397
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1398
+ }
1399
+ },
1400
+ "convertUnitTo": {
1401
+ "title": "Convert Temperature Unit To",
1402
+ "type": "string",
1403
+ "condition": {
1404
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1405
+ },
1406
+ "oneOf": [
1407
+ {
1408
+ "title": "Celsius",
1409
+ "enum": [
1410
+ "CELSIUS"
1411
+ ]
1412
+ },
1413
+ {
1414
+ "title": "Fahrenheit",
1415
+ "enum": [
1416
+ "FAHRENHEIT"
1417
+ ]
1418
+ }
1419
+ ]
1420
+ },
1421
+ "hide_humidity": {
1422
+ "title": "Hide Humidity Sensor",
1423
+ "type": "boolean",
1424
+ "condition": {
1425
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1426
+ }
1427
+ },
1428
+ "connectionType": {
1429
+ "title": "Connection Type",
1430
+ "type": "string",
1431
+ "description": "Bluetooth (BLE) API is only available on certain Device Types, see the Wiki for more information.",
1432
+ "condition": {
1433
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1434
+ },
1435
+ "oneOf": [
1436
+ {
1437
+ "title": "BLE",
1438
+ "enum": [
1439
+ "BLE"
1440
+ ]
1441
+ },
1442
+ {
1443
+ "title": "BLE/OpenAPI",
1444
+ "enum": [
1445
+ "BLE/OpenAPI"
1446
+ ]
1447
+ },
1448
+ {
1449
+ "title": "Disable",
1450
+ "enum": [
1451
+ "Disabled"
1452
+ ]
1453
+ },
1454
+ {
1455
+ "title": "OpenAPI",
1456
+ "enum": [
1457
+ "OpenAPI"
1458
+ ]
1459
+ }
1460
+ ]
1461
+ },
1462
+ "disablePlatformBLE": {
1463
+ "title": "Disable Platform BLE",
1464
+ "type": "boolean",
1465
+ "condition": {
1466
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device && model.options.deviceConfig['Hub Mini 2'].connectionType !== 'Disabled');"
1467
+ }
1468
+ },
1469
+ "scanDuration": {
1470
+ "title": "Scan Duration (Default is 1 Second) for BLE",
1471
+ "type": "number",
1472
+ "placeholder": 1,
1473
+ "condition": {
1474
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device && (model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE' || model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE/OpenAPI'));"
1475
+ }
1476
+ },
1477
+ "webhook": {
1478
+ "title": "Enable Webhook for all Hub Mini 2s",
1479
+ "type": "boolean",
1480
+ "condition": {
1481
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device && (model.options.deviceConfig['Hub Mini 2'].connectionType === 'OpenAPI' || model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE/OpenAPI'));"
1482
+ }
1483
+ },
1484
+ "external": {
1485
+ "title": "External Accessory",
1486
+ "type": "boolean",
1487
+ "condition": {
1488
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1489
+ }
1490
+ },
1491
+ "maxRetry": {
1492
+ "title": "Max Retries for BLE",
1493
+ "type": "number",
1494
+ "placeholder": "5",
1495
+ "condition": {
1496
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device && (model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE' || model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE/OpenAPI'));"
1497
+ }
1498
+ },
1499
+ "maxRetries": {
1500
+ "title": "Device Max Retries for OpenAPI",
1501
+ "type": "number",
1502
+ "placeholder": 5,
1503
+ "condition": {
1504
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device && (model.options.deviceConfig['Hub Mini 2'].connectionType === 'OpenAPI' || model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE/OpenAPI'));"
1505
+ }
1506
+ },
1507
+ "delayBetweenRetries": {
1508
+ "title": "Device Delay Between Retries for OpenAPI (In Seconds)",
1509
+ "type": "number",
1510
+ "placeholder": 3,
1511
+ "condition": {
1512
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device && (model.options.deviceConfig['Hub Mini 2'].connectionType === 'OpenAPI' || model.options.deviceConfig['Hub Mini 2'].connectionType === 'BLE/OpenAPI'));"
1513
+ }
1514
+ },
1515
+ "disableCaching": {
1516
+ "title": "Disable Caching",
1517
+ "type": "boolean",
1518
+ "condition": {
1519
+ "functionBody": "return (model.options && model.options.deviceConfig && model.options.deviceConfig['Hub Mini 2'] && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1520
+ }
1521
+ },
1522
+ "offline": {
1523
+ "title": "Offline as Off",
1524
+ "type": "boolean",
1525
+ "condition": {
1526
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1527
+ }
1528
+ },
1529
+ "history": {
1530
+ "title": "EVE History",
1531
+ "type": "boolean",
1532
+ "condition": {
1533
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1534
+ }
1535
+ },
1536
+ "firmware": {
1537
+ "title": "Firmware Override",
1538
+ "type": "string",
1539
+ "placeholder": "1.2.8",
1540
+ "condition": {
1541
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1542
+ }
1543
+ },
1544
+ "logging": {
1545
+ "title": "Logging by Device Type",
1546
+ "type": "string",
1547
+ "default": "",
1548
+ "condition": {
1549
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1550
+ },
1551
+ "oneOf": [
1552
+ {
1553
+ "title": "Debug Logging",
1554
+ "enum": [
1555
+ "debug"
1556
+ ]
1557
+ },
1558
+ {
1559
+ "title": "Default Logging",
1560
+ "enum": [
1561
+ ""
1562
+ ]
1563
+ },
1564
+ {
1565
+ "title": "No Logging",
1566
+ "enum": [
1567
+ "none"
1568
+ ]
1569
+ },
1570
+ {
1571
+ "title": "Standard Logging",
1572
+ "enum": [
1573
+ "standard"
1574
+ ]
1575
+ }
1576
+ ]
1577
+ },
1578
+ "refreshRate": {
1579
+ "title": "Device Refresh Rate",
1580
+ "type": "number",
1581
+ "placeholder": 5,
1582
+ "condition": {
1583
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1584
+ }
1585
+ },
1586
+ "updateRate": {
1587
+ "title": "Update Rate",
1588
+ "type": "number",
1589
+ "minimum": 1,
1590
+ "placeholder": 5,
1591
+ "description": "Indicates the number of seconds before refreshing status while updating progress.",
1592
+ "condition": {
1593
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1594
+ }
1595
+ },
1596
+ "pushRate": {
1597
+ "title": "Device Push Rate",
1598
+ "type": "number",
1599
+ "placeholder": 360,
1600
+ "condition": {
1601
+ "functionBody": "return (model.options && model.options.deviceConfig && !model.options.deviceConfig['Hub Mini 2'].hide_device);"
1602
+ }
1603
+ }
1604
+ }
1605
+ },
1379
1606
  "Hub 3": {
1380
1607
  "type": "object",
1381
1608
  "properties": {
@@ -10203,6 +10430,12 @@
10203
10430
  "Hub 2"
10204
10431
  ]
10205
10432
  },
10433
+ {
10434
+ "title": "Hub Mini 2",
10435
+ "enum": [
10436
+ "Hub Mini 2"
10437
+ ]
10438
+ },
10206
10439
  {
10207
10440
  "title": "Meter",
10208
10441
  "enum": [
@@ -14125,6 +14358,34 @@
14125
14358
  "options.deviceConfig['Hub 2'].pushRate"
14126
14359
  ]
14127
14360
  },
14361
+ {
14362
+ "type": "fieldset",
14363
+ "title": "Hub Mini 2 Settings",
14364
+ "expandable": true,
14365
+ "expanded": false,
14366
+ "items": [
14367
+ "options.deviceConfig['Hub Mini 2'].hide_device",
14368
+ "options.deviceConfig['Hub Mini 2'].hide_temperature",
14369
+ "options.deviceConfig['Hub Mini 2'].convertUnitTo",
14370
+ "options.deviceConfig['Hub Mini 2'].hide_humidity",
14371
+ "options.deviceConfig['Hub Mini 2'].connectionType",
14372
+ "options.deviceConfig['Hub Mini 2'].disablePlatformBLE",
14373
+ "options.deviceConfig['Hub Mini 2'].scanDuration",
14374
+ "options.deviceConfig['Hub Mini 2'].webhook",
14375
+ "options.deviceConfig['Hub Mini 2'].external",
14376
+ "options.deviceConfig['Hub Mini 2'].maxRetry",
14377
+ "options.deviceConfig['Hub Mini 2'].maxRetries",
14378
+ "options.deviceConfig['Hub Mini 2'].delayBetweenRetries",
14379
+ "options.deviceConfig['Hub Mini 2'].disableCaching",
14380
+ "options.deviceConfig['Hub Mini 2'].offline",
14381
+ "options.deviceConfig['Hub Mini 2'].history",
14382
+ "options.deviceConfig['Hub Mini 2'].firmware",
14383
+ "options.deviceConfig['Hub Mini 2'].logging",
14384
+ "options.deviceConfig['Hub Mini 2'].refreshRate",
14385
+ "options.deviceConfig['Hub Mini 2'].updateRate",
14386
+ "options.deviceConfig['Hub Mini 2'].pushRate"
14387
+ ]
14388
+ },
14128
14389
  {
14129
14390
  "type": "fieldset",
14130
14391
  "title": "Bot Settings",
@@ -0,0 +1,45 @@
1
+ import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
+ import type { airPurifierServiceData, airPurifierStatus, device } from 'node-switchbot';
3
+ import { Subject } from 'rxjs';
4
+ import type { SwitchBotPlatform } from '../platform.js';
5
+ import type { devicesConfig } from '../settings.js';
6
+ import { deviceBase } from './device.js';
7
+ export declare class AirPurifier extends deviceBase {
8
+ readonly platform: SwitchBotPlatform;
9
+ private AirPurifier;
10
+ private AirQualitySensor?;
11
+ deviceStatus: airPurifierStatus;
12
+ serviceData: airPurifierServiceData;
13
+ airPurifierUpdateInProgress: boolean;
14
+ doAirPurifierUpdate: Subject<void>;
15
+ constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
16
+ BLEparseStatus(): Promise<void>;
17
+ openAPIparseStatus(): Promise<void>;
18
+ /**
19
+ * Asks the SwitchBot API for the latest device information
20
+ */
21
+ refreshStatus(): Promise<void>;
22
+ BLERefreshStatus(): Promise<void>;
23
+ registerPlatformBLE(): Promise<void>;
24
+ openAPIRefreshStatus(): Promise<void>;
25
+ registerWebhook(): Promise<void>;
26
+ /**
27
+ * Pushes the requested changes to the SwitchBot API
28
+ * commandType command parameter Description
29
+ * "command" "turnOff" "default" = set to OFF state
30
+ * "command" "turnOn" "default" = set to ON state
31
+ * "command" "setMode" "{0-3}" = 0 for auto, 1 for low, 2 for medium, 3 for high
32
+ */
33
+ pushChanges(): Promise<void>;
34
+ BLEpushChanges(): Promise<void>;
35
+ openAPIpushChanges(): Promise<void>;
36
+ updateHomeKitCharacteristics(): Promise<void>;
37
+ ActiveSet(value: CharacteristicValue): Promise<void>;
38
+ RotationSpeedSet(value: CharacteristicValue): Promise<void>;
39
+ TargetAirPurifierStateSet(value: CharacteristicValue): Promise<void>;
40
+ BLEPushConnection(): Promise<void>;
41
+ BLERefreshConnection(switchbot: any): Promise<void>;
42
+ offlineOff(): Promise<void>;
43
+ apiError(e: any): Promise<void>;
44
+ }
45
+ //# sourceMappingURL=airpurifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"airpurifier.d.ts","sourceRoot":"","sources":["../../src/device/airpurifier.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAA;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAc,MAAM,EAAmB,MAAM,gBAAgB,CAAA;AAMpH,OAAO,EAAqC,OAAO,EAAa,MAAM,MAAM,CAAA;AAE5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,WAAY,SAAQ,UAAU;IA8BvC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IA5BtC,OAAO,CAAC,WAAW,CAQlB;IAED,OAAO,CAAC,gBAAgB,CAAC,CAKxB;IAGD,YAAY,EAAG,iBAAiB,CAAA;IAGhC,WAAW,EAAG,sBAAsB,CAAA;IAGpC,2BAA2B,EAAG,OAAO,CAAA;IACrC,mBAAmB,EAAG,OAAO,CAAC,IAAI,CAAC,CAAA;gBAGxB,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IAsH1B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD/B,kBAAkB;IAsDxB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BpC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrC,eAAe;IAkBrB;;;;;;OAMG;IAEG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C/B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BnC,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB7C,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpE,iBAAiB;IAOjB,oBAAoB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAWtC"}