homebridge-easy-mqtt 1.4.0-beta.14 → 1.4.0-beta.16
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/CHANGELOG.md +4 -6
- package/README.md +48 -16
- package/config.schema.json +191 -4
- package/dist/accessory/abstract/helper.js +5 -2
- package/dist/accessory/abstract/helper.js.map +1 -1
- package/dist/accessory/climate/{fan.d.ts → fan2.d.ts} +3 -3
- package/dist/accessory/climate/{fan.js → fan2.js} +18 -18
- package/dist/accessory/climate/fan2.js.map +1 -0
- package/dist/accessory/sensor/air.d.ts +14 -0
- package/dist/accessory/sensor/air.js +94 -0
- package/dist/accessory/sensor/air.js.map +1 -0
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/i18n/en.d.ts +32 -2
- package/dist/i18n/en.js +33 -3
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts +32 -2
- package/dist/i18n/i18n.d.ts +32 -2
- package/dist/i18n/ro.d.ts +32 -2
- package/dist/i18n/template.d.ts +32 -2
- package/dist/model/enums.d.ts +9 -1
- package/dist/model/enums.js +8 -0
- package/dist/model/enums.js.map +1 -1
- package/dist/model/mqtt.js +1 -1
- package/dist/model/mqtt.js.map +1 -1
- package/dist/model/types.d.ts +16 -1
- package/package.json +1 -1
- package/dist/accessory/climate/fan.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to homebridge-dummy will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## 1.4.0-beta.
|
|
5
|
+
## 1.4.0-beta.16 (2025-09-26)
|
|
6
6
|
|
|
7
7
|
### Added
|
|
8
|
-
-
|
|
8
|
+
- `Air Purifier`, `Air Quality Sensor`, `Fanv2`, `GarageDoorOpener`, `HeaterCooler`, `LightSensor`, and `Valve`
|
|
9
9
|
- Broker, username, and password can be set via environment variables ([documentation](https://github.com/mpatfield/homebridge-easy-mqtt#environment-variables))
|
|
10
10
|
- Publish arbitrary MQTT messages on connect ([documentation] (https://github.com/mpatfield/homebridge-easy-mqtt#mqtt-onconnect))
|
|
11
11
|
- Traduceri în limba română. Mulțumesc, [@rursache](https://github.com/sponsors/rursache)!
|
|
@@ -13,13 +13,11 @@ All notable changes to homebridge-dummy will be documented in this file.
|
|
|
13
13
|
### Changed
|
|
14
14
|
- ⚠️ All accessory states are now saved across plugin/Homebridge restarts
|
|
15
15
|
- If you want to keep the old behavior, select the `Reset on Restart` option for each accessory you want to reset
|
|
16
|
+
- MQTT `options` JSON can now also include publish options, such as `retain`, in addition to client options
|
|
16
17
|
- Optimized MQTT connections by sharing across multiple accessories when possible
|
|
17
|
-
- Previously, every accessory had its own connection
|
|
18
|
+
- Previously, every accessory always had its own connection
|
|
18
19
|
- Better field validation in config UI (Thank you, [@justjam2013](https://github.com/sponsors/justjam2013) for teaching me this!)
|
|
19
20
|
|
|
20
|
-
### Fixed
|
|
21
|
-
- Config UI rendering issue when migrating deprecated fields
|
|
22
|
-
|
|
23
21
|
### Notes
|
|
24
22
|
Would you like to see Homebridge Easy MQTT in your language? Please consider [getting involved](https://github.com/mpatfield/homebridge-easy-mqtt/issues/4). No coding experience required!
|
|
25
23
|
|
package/README.md
CHANGED
|
@@ -26,6 +26,7 @@ This plugin is designed to be a simple replacement for the fantastic [homebridge
|
|
|
26
26
|
**HomebridgeEasyMQTT** currently supports the following accessory types but will be expanded over time as more use cases are requested. If there is an accessory type you'd like to see supported, please [create an issue in GitHub](https://github.com/mpatfield/homebridge-easy-mqtt/issues/new/choose).
|
|
27
27
|
|
|
28
28
|
- `AirPurifier`
|
|
29
|
+
- `AirQualitySensor`
|
|
29
30
|
- `CarbonDioxideSensor`
|
|
30
31
|
- `CarbonMonoxideSensor`
|
|
31
32
|
- `ContactSensor`
|
|
@@ -176,6 +177,25 @@ These values are used for both determining current state and, where appropriate,
|
|
|
176
177
|
|
|
177
178
|
### Sensors
|
|
178
179
|
|
|
180
|
+
#### AirQualitySensor
|
|
181
|
+
- `topicGetAirQuality*` - Get air quality
|
|
182
|
+
- `topicGetNitrogenDioxideDensity` - Get nitrogen dioxide density in µg/m³
|
|
183
|
+
- `topicGetOzoneDensity` - Get ozone density in µg/m³
|
|
184
|
+
- `topicGetPM2_5Density` - Get PM2.5 density in µg/m³
|
|
185
|
+
- `topicGetPM10Density` - Get PM10 density in µg/m³
|
|
186
|
+
- `topicGetSulphurDioxideDensity` - Get sulphur dioxide density in µg/m³
|
|
187
|
+
- `topicGetVOCDensity` - Get VOC density in µg/m³
|
|
188
|
+
- `topicGetStatusFault` - Whether or not the sensor has a generic fault
|
|
189
|
+
- `topicGetStatusTampered` - Whether or not the sensor has been tampered with
|
|
190
|
+
- `valueAQExcellent` - Air quality excellent
|
|
191
|
+
- `valueAQGood` - Air quality good
|
|
192
|
+
- `valueAQFair` - Air quality fair
|
|
193
|
+
- `valueAQInferior` - Air quality inferior
|
|
194
|
+
- `valueAQPoor` - Air quality poor
|
|
195
|
+
- `valueAQUnknown` - Air quality unknown
|
|
196
|
+
- `valueFault` - Accessory has a fault
|
|
197
|
+
- `valueTampered` - Accessory has been tampered with
|
|
198
|
+
|
|
179
199
|
#### CarbonDioxideSensor
|
|
180
200
|
- `topicGetCarbonDioxideDetected*` - Whether or not the sensor has detected carbon dioxide
|
|
181
201
|
- `topicGetCarbonDioxideLevel` - The current carbon dioxide level
|
|
@@ -313,20 +333,32 @@ These values are used for both determining current state and, where appropriate,
|
|
|
313
333
|
- `valueFilterChange` - Indicates that the filter needs to be changed. *Required if `topicGetFilterChangeIndication` is defined.
|
|
314
334
|
|
|
315
335
|
#### Fanv2
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
336
|
+
- `topicGetActive*` - Get whether or not the accessory is currently active
|
|
337
|
+
- `topicSetActive*` - Set whether or not the accessory is currently active
|
|
338
|
+
- `topicGetCurrentFanState` - Get current fan mode (blowing, idle, inactive)
|
|
339
|
+
- `topicGetTargetFanState` - Get target fan mode (auto, manual)
|
|
340
|
+
- `topicSetTargetFanState` - Set target fan mode (auto, manual)
|
|
341
|
+
- `topicGetLockPhysicalControls` - Get whether or not the physical controls are locked
|
|
342
|
+
- `topicSetLockPhysicalControls` - Set whether or not the physical controls are locked
|
|
343
|
+
- `topicGetRotationDirection` - Get the fan rotation direction (clockwise, counter clockwise)
|
|
344
|
+
- `topicSetRotationDirection` - Set the fan rotation direction (clockwise, counter clockwise)
|
|
345
|
+
- `topicGetRotationSpeed` - Get the rotation speed as a percentage
|
|
346
|
+
- `topicSetRotationSpeed` - Set the rotation speed as a percentage
|
|
347
|
+
- `topicGetSwingMode` - Get whether or not accessory is oscillating
|
|
348
|
+
- `topicSetSwingMode` - Set whether or not accessory is oscillating
|
|
349
|
+
- `valueStateActive*` - Accessory is currently active
|
|
350
|
+
- `valueStateInactive*` - Accessory is currently inactive
|
|
351
|
+
- `valueModeBlowing` - Air blowing mode
|
|
352
|
+
- `valueModeIdle` - Idle mode
|
|
353
|
+
- `valueModeInactive` - Inactive mode
|
|
354
|
+
- `valueModeAuto` - Auto target mode
|
|
355
|
+
- `valueModeManual` - Manual target mode
|
|
356
|
+
- `valueDirectionClockwise` - Rotating clockwise
|
|
357
|
+
- `valueDirectionCounterClockwise` - Rotating counter clockwise
|
|
358
|
+
- `valueControlLock` - Physical controls are locked
|
|
359
|
+
- `valueControlUnlock` - Physical controls are unlocked
|
|
360
|
+
- `valueSwingEnabled` - Accessory is oscillating
|
|
361
|
+
- `valueSwingDisabled` - Accessory is not oscillating
|
|
330
362
|
|
|
331
363
|
#### HeaterCooler
|
|
332
364
|
- `temperatureUnits` - The temperature units of the incoming value supplied by the thermostat, `C` for Celsius (default) `F` for Fahrenheit
|
|
@@ -436,10 +468,10 @@ You may also turn on additional logging if you'd like to see the MQTT messages p
|
|
|
436
468
|
|
|
437
469
|
## MQTT Options
|
|
438
470
|
|
|
439
|
-
You are able to pass in any arbitrary MQTT options via `mqtt.options` in the config. This can
|
|
471
|
+
You are able to pass in any arbitrary MQTT options via `mqtt.options` in the config. This can be a combination of [client options](https://github.com/mqttjs/MQTT.js?tab=readme-ov-file#mqttclientstreambuilder-options) and [publish options](https://github.com/mqttjs/MQTT.js?tab=readme-ov-file#mqttclientpublishtopic-message-options-callback). Just make sure the value provided is valid JSON. For example:
|
|
440
472
|
|
|
441
473
|
```
|
|
442
|
-
"options": "{ \"protocolVersion\": \"4\", \"clientId\": \"my-client-id\", \"
|
|
474
|
+
"options": "{ \"protocolVersion\": \"4\", \"clientId\": \"my-client-id\", \"retain\": true }"
|
|
443
475
|
```
|
|
444
476
|
|
|
445
477
|
## MQTT OnConnect
|
package/config.schema.json
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"type": {
|
|
22
22
|
"type": "string",
|
|
23
23
|
"title": "${config.title.type}",
|
|
24
|
-
"enum": [ "AirPurifier", "CarbonMonoxideSensor", "CarbonDioxideSensor", "ContactSensor", "Fanv2", "GarageDoorOpener", "HeaterCooler", "HumiditySensor", "LeakSensor", "Lightbulb", "LightSensor", "LockMechanism", "MotionSensor", "OccupancySensor", "Outlet", "SecuritySystem", "SmokeSensor", "Switch", "TemperatureSensor", "Thermostat", "Valve"],
|
|
25
|
-
"enumNames": ["${config.enumNames.airPurifier}", "${config.enumNames.carbonMonoxideSensor}", "${config.enumNames.carbonDioxideSensor}", "${config.enumNames.contactSensor}", "${config.enumNames.
|
|
24
|
+
"enum": [ "AirPurifier", "AirQualitySensor", "CarbonMonoxideSensor", "CarbonDioxideSensor", "ContactSensor", "Fanv2", "GarageDoorOpener", "HeaterCooler", "HumiditySensor", "LeakSensor", "Lightbulb", "LightSensor", "LockMechanism", "MotionSensor", "OccupancySensor", "Outlet", "SecuritySystem", "SmokeSensor", "Switch", "TemperatureSensor", "Thermostat", "Valve"],
|
|
25
|
+
"enumNames": ["${config.enumNames.airPurifier}", "${config.enumNames.airQualitySensor}", "${config.enumNames.carbonMonoxideSensor}", "${config.enumNames.carbonDioxideSensor}", "${config.enumNames.contactSensor}", "${config.enumNames.fanv2}", "${config.enumNames.garageDoorOpener}", "${config.enumNames.heaterCooler}", "${config.enumNames.humiditySensor}", "${config.enumNames.leakSensor}", "${config.enumNames.lightbulb}", "${config.enumNames.lightSensor}", "${config.enumNames.lockMechanism}", "${config.enumNames.motionSensor}", "${config.enumNames.occupancySensor}", "${config.enumNames.outlet}", "${config.enumNames.securitySystem}", "${config.enumNames.smokeSensor}", "${config.enumNames.switch}", "${config.enumNames.temperatureSensor}", "${config.enumNames.thermostat}", "${config.enumNames.valve}"],
|
|
26
26
|
"required": true
|
|
27
27
|
},
|
|
28
28
|
"group": {
|
|
@@ -458,6 +458,34 @@
|
|
|
458
458
|
"type": "string",
|
|
459
459
|
"title": "${config.title.topicSetTargetFanState}"
|
|
460
460
|
},
|
|
461
|
+
"topicGetAirQuality": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"title": "${config.title.topicGetAirQuality}"
|
|
464
|
+
},
|
|
465
|
+
"topicGetNitrogenDioxideDensity": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"title": "${config.title.topicGetNitrogenDioxideDensity}"
|
|
468
|
+
},
|
|
469
|
+
"topicGetOzoneDensity": {
|
|
470
|
+
"type": "string",
|
|
471
|
+
"title": "${config.title.topicGetOzoneDensity}"
|
|
472
|
+
},
|
|
473
|
+
"topicGetPM10Density": {
|
|
474
|
+
"type": "string",
|
|
475
|
+
"title": "${config.title.topicGetPM10Density}"
|
|
476
|
+
},
|
|
477
|
+
"topicGetPM2_5Density": {
|
|
478
|
+
"type": "string",
|
|
479
|
+
"title": "${config.title.topicGetPM2_5Density}"
|
|
480
|
+
},
|
|
481
|
+
"topicGetSulphurDioxideDensity": {
|
|
482
|
+
"type": "string",
|
|
483
|
+
"title": "${config.title.topicGetSulphurDioxideDensity}"
|
|
484
|
+
},
|
|
485
|
+
"topicGetVOCDensity": {
|
|
486
|
+
"type": "string",
|
|
487
|
+
"title": "${config.title.topicGetVOCDensity}"
|
|
488
|
+
},
|
|
461
489
|
"valueBatteryLow": {
|
|
462
490
|
"type": "string",
|
|
463
491
|
"title": "${config.title.valueBatteryLow}"
|
|
@@ -666,6 +694,30 @@
|
|
|
666
694
|
"type": "string",
|
|
667
695
|
"title": "${config.title.valueModeBlowing}"
|
|
668
696
|
},
|
|
697
|
+
"valueAQExcellent": {
|
|
698
|
+
"type": "string",
|
|
699
|
+
"title": "${config.title.valueAQExcellent}"
|
|
700
|
+
},
|
|
701
|
+
"valueAQFair": {
|
|
702
|
+
"type": "string",
|
|
703
|
+
"title": "${config.title.valueAQFair}"
|
|
704
|
+
},
|
|
705
|
+
"valueAQGood": {
|
|
706
|
+
"type": "string",
|
|
707
|
+
"title": "${config.title.valueAQGood}"
|
|
708
|
+
},
|
|
709
|
+
"valueAQInferior": {
|
|
710
|
+
"type": "string",
|
|
711
|
+
"title": "${config.title.valueAQInferior}"
|
|
712
|
+
},
|
|
713
|
+
"valueAQPoor": {
|
|
714
|
+
"type": "string",
|
|
715
|
+
"title": "${config.title.valueAQPoor}"
|
|
716
|
+
},
|
|
717
|
+
"valueAQUnknown": {
|
|
718
|
+
"type": "string",
|
|
719
|
+
"title": "${config.title.valueAQUnknown}"
|
|
720
|
+
},
|
|
669
721
|
"resetOnRestart": {
|
|
670
722
|
"type": "boolean",
|
|
671
723
|
"title": "${config.title.resetOnRestart}"
|
|
@@ -692,6 +744,29 @@
|
|
|
692
744
|
"required": ["topicGetOn", "topicSetOn", "valueOn", "valueOff"]
|
|
693
745
|
}
|
|
694
746
|
},
|
|
747
|
+
{
|
|
748
|
+
"if": {
|
|
749
|
+
"properties": {
|
|
750
|
+
"info": {
|
|
751
|
+
"properties": {
|
|
752
|
+
"type" : {
|
|
753
|
+
"const": "AirQualitySensor"
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
},
|
|
759
|
+
"then": {
|
|
760
|
+
"required": ["topicGetAirQuality"],
|
|
761
|
+
"anyOf": [
|
|
762
|
+
{ "required": ["valueAQExcellent"] },
|
|
763
|
+
{ "required": ["valueAQFair"] },
|
|
764
|
+
{ "required": ["valueAQGood"] },
|
|
765
|
+
{ "required": ["valueAQInferior"] },
|
|
766
|
+
{ "required": ["valueAQPoor"] }
|
|
767
|
+
]
|
|
768
|
+
}
|
|
769
|
+
},
|
|
695
770
|
{
|
|
696
771
|
"if": {
|
|
697
772
|
"properties": {
|
|
@@ -1792,6 +1867,71 @@
|
|
|
1792
1867
|
}
|
|
1793
1868
|
]
|
|
1794
1869
|
},
|
|
1870
|
+
{
|
|
1871
|
+
"type": "fieldset",
|
|
1872
|
+
"notitle": true,
|
|
1873
|
+
"condition": {
|
|
1874
|
+
"functionBody": "return model.accessories?.[arguments[1]]?.info?.type === 'AirQualitySensor';"
|
|
1875
|
+
},
|
|
1876
|
+
"items": [
|
|
1877
|
+
{
|
|
1878
|
+
"type": "div",
|
|
1879
|
+
"displayFlex": true,
|
|
1880
|
+
"flex-direction": "row",
|
|
1881
|
+
"items": [
|
|
1882
|
+
{
|
|
1883
|
+
"key": "accessories[].topicGetAirQuality",
|
|
1884
|
+
"flex": "0 0 50%"
|
|
1885
|
+
}
|
|
1886
|
+
]
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
"type": "div",
|
|
1890
|
+
"displayFlex": true,
|
|
1891
|
+
"flex-direction": "row",
|
|
1892
|
+
"items": [
|
|
1893
|
+
{
|
|
1894
|
+
"key": "accessories[].topicGetNitrogenDioxideDensity",
|
|
1895
|
+
"flex": "0 0 50%"
|
|
1896
|
+
},
|
|
1897
|
+
{
|
|
1898
|
+
"key": "accessories[].topicGetOzoneDensity",
|
|
1899
|
+
"flex": "0 0 50%"
|
|
1900
|
+
}
|
|
1901
|
+
]
|
|
1902
|
+
},
|
|
1903
|
+
{
|
|
1904
|
+
"type": "div",
|
|
1905
|
+
"displayFlex": true,
|
|
1906
|
+
"flex-direction": "row",
|
|
1907
|
+
"items": [
|
|
1908
|
+
{
|
|
1909
|
+
"key": "accessories[].topicGetPM2_5Density",
|
|
1910
|
+
"flex": "0 0 50%"
|
|
1911
|
+
},
|
|
1912
|
+
{
|
|
1913
|
+
"key": "accessories[].topicGetPM10Density",
|
|
1914
|
+
"flex": "0 0 50%"
|
|
1915
|
+
}
|
|
1916
|
+
]
|
|
1917
|
+
},
|
|
1918
|
+
{
|
|
1919
|
+
"type": "div",
|
|
1920
|
+
"displayFlex": true,
|
|
1921
|
+
"flex-direction": "row",
|
|
1922
|
+
"items": [
|
|
1923
|
+
{
|
|
1924
|
+
"key": "accessories[].topicGetSulphurDioxideDensity",
|
|
1925
|
+
"flex": "0 0 50%"
|
|
1926
|
+
},
|
|
1927
|
+
{
|
|
1928
|
+
"key": "accessories[].topicGetVOCDensity",
|
|
1929
|
+
"flex": "0 0 50%"
|
|
1930
|
+
}
|
|
1931
|
+
]
|
|
1932
|
+
}
|
|
1933
|
+
]
|
|
1934
|
+
},
|
|
1795
1935
|
{
|
|
1796
1936
|
"type": "fieldset",
|
|
1797
1937
|
"notitle": true,
|
|
@@ -2415,7 +2555,7 @@
|
|
|
2415
2555
|
"type": "fieldset",
|
|
2416
2556
|
"notitle": true,
|
|
2417
2557
|
"condition": {
|
|
2418
|
-
"functionBody": "return ['AirPurifier', 'Fanv2, 'HeaterCooler'].includes(model.accessories?.[arguments[1]]?.info?.type);"
|
|
2558
|
+
"functionBody": "return ['AirPurifier', 'Fanv2', 'HeaterCooler'].includes(model.accessories?.[arguments[1]]?.info?.type);"
|
|
2419
2559
|
},
|
|
2420
2560
|
"items": [
|
|
2421
2561
|
{
|
|
@@ -2562,7 +2702,7 @@
|
|
|
2562
2702
|
"type": "fieldset",
|
|
2563
2703
|
"notitle": true,
|
|
2564
2704
|
"condition": {
|
|
2565
|
-
"functionBody": "return ['AirPurifier', 'Fanv2, 'HeaterCooler'].includes(model.accessories?.[arguments[1]]?.info?.type);"
|
|
2705
|
+
"functionBody": "return ['AirPurifier', 'Fanv2', 'HeaterCooler'].includes(model.accessories?.[arguments[1]]?.info?.type);"
|
|
2566
2706
|
},
|
|
2567
2707
|
"items": [
|
|
2568
2708
|
{
|
|
@@ -2860,6 +3000,53 @@
|
|
|
2860
3000
|
}
|
|
2861
3001
|
]
|
|
2862
3002
|
},
|
|
3003
|
+
{
|
|
3004
|
+
"type": "fieldset",
|
|
3005
|
+
"notitle": true,
|
|
3006
|
+
"condition": {
|
|
3007
|
+
"functionBody": "return model.accessories?.[arguments[1]]?.info?.type === 'AirQualitySensor';"
|
|
3008
|
+
},
|
|
3009
|
+
"items": [
|
|
3010
|
+
{
|
|
3011
|
+
"type": "div",
|
|
3012
|
+
"displayFlex": true,
|
|
3013
|
+
"flex-direction": "row",
|
|
3014
|
+
"items": [
|
|
3015
|
+
{
|
|
3016
|
+
"key": "accessories[].valueAQExcellent",
|
|
3017
|
+
"flex": "0 0 25%"
|
|
3018
|
+
},
|
|
3019
|
+
{
|
|
3020
|
+
"key": "accessories[].valueAQGood",
|
|
3021
|
+
"flex": "0 0 25%"
|
|
3022
|
+
},
|
|
3023
|
+
{
|
|
3024
|
+
"key": "accessories[].valueAQFair",
|
|
3025
|
+
"flex": "0 0 25%"
|
|
3026
|
+
}
|
|
3027
|
+
]
|
|
3028
|
+
},
|
|
3029
|
+
{
|
|
3030
|
+
"type": "div",
|
|
3031
|
+
"displayFlex": true,
|
|
3032
|
+
"flex-direction": "row",
|
|
3033
|
+
"items": [
|
|
3034
|
+
{
|
|
3035
|
+
"key": "accessories[].valueAQInferior",
|
|
3036
|
+
"flex": "0 0 25%"
|
|
3037
|
+
},
|
|
3038
|
+
{
|
|
3039
|
+
"key": "accessories[].valueAQPoor",
|
|
3040
|
+
"flex": "0 0 25%"
|
|
3041
|
+
},
|
|
3042
|
+
{
|
|
3043
|
+
"key": "accessories[].valueAQUnknown",
|
|
3044
|
+
"flex": "0 0 25%"
|
|
3045
|
+
}
|
|
3046
|
+
]
|
|
3047
|
+
}
|
|
3048
|
+
]
|
|
3049
|
+
},
|
|
2863
3050
|
{
|
|
2864
3051
|
"type": "div",
|
|
2865
3052
|
"displayFlex": true,
|
|
@@ -3,12 +3,14 @@ import { AccessoryType } from '../../model/enums.js';
|
|
|
3
3
|
import { GarageDoorAccessory } from '../garage.js';
|
|
4
4
|
import { LockMechanismAccessory } from '../lock.js';
|
|
5
5
|
import { SecuritySystemAccessory } from '../security.js';
|
|
6
|
+
import { FanV2Accessory } from '../climate/fan2.js';
|
|
6
7
|
import { HeaterCoolerAccessory } from '../climate/heaterCooler.js';
|
|
7
8
|
import { PurifierAccessory } from '../climate/purifier.js';
|
|
8
9
|
import { ThermostatAccessory } from '../climate/thermostat.js';
|
|
9
10
|
import { LightbulbAccessory } from '../onoff/lightbulb.js';
|
|
10
11
|
import { OutletAccessory } from '../onoff/outlet.js';
|
|
11
12
|
import { SwitchAccessory } from '../onoff/switch.js';
|
|
13
|
+
import { AirSensorAccessory } from '../sensor/air.js';
|
|
12
14
|
import { CO2SensorAccessory } from '../sensor/carbonDioxide.js';
|
|
13
15
|
import { COSensorAccessory } from '../sensor/carbonMonoxide.js';
|
|
14
16
|
import { ContactSensorAccessory } from '../sensor/contact.js';
|
|
@@ -21,7 +23,6 @@ import { SmokeSensorAccessory } from '../sensor/smoke.js';
|
|
|
21
23
|
import { TemperatureSensorAccessory } from '../sensor/temperature.js';
|
|
22
24
|
import { ValveAccessory } from '../valve.js';
|
|
23
25
|
import { PLUGIN_NAME } from '../../homebridge/settings.js';
|
|
24
|
-
import { FanAccessory } from '../climate/fan.js';
|
|
25
26
|
export function createIdentifier(info) {
|
|
26
27
|
return info.id ?? `${PLUGIN_NAME}:${info.type}:${info.name}`;
|
|
27
28
|
}
|
|
@@ -29,6 +30,8 @@ export function createAccessory(Service, Characteristic, platformAccessory, acce
|
|
|
29
30
|
switch (accessoryConfig.info.type) {
|
|
30
31
|
case AccessoryType.AirPurifier:
|
|
31
32
|
return new PurifierAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
|
|
33
|
+
case AccessoryType.AirQualitySensor:
|
|
34
|
+
return new AirSensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
|
|
32
35
|
case AccessoryType.CarbonDioxideSensor:
|
|
33
36
|
return new CO2SensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
|
|
34
37
|
case AccessoryType.CarbonMonoxideSensor:
|
|
@@ -36,7 +39,7 @@ export function createAccessory(Service, Characteristic, platformAccessory, acce
|
|
|
36
39
|
case AccessoryType.ContactSensor:
|
|
37
40
|
return new ContactSensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
|
|
38
41
|
case AccessoryType.Fanv2:
|
|
39
|
-
return new
|
|
42
|
+
return new FanV2Accessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
|
|
40
43
|
case AccessoryType.GarageDoorOpener:
|
|
41
44
|
return new GarageDoorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
|
|
42
45
|
case AccessoryType.HeaterCooler:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/accessory/abstract/helper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/accessory/abstract/helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { PlatformAccessory } from 'homebridge';
|
|
2
2
|
import { ActiveClimateAccessory } from './active.js';
|
|
3
3
|
import { AccessoryType } from '../../model/enums.js';
|
|
4
|
-
import { CharacteristicType, ServiceType,
|
|
4
|
+
import { CharacteristicType, ServiceType, FanV2Config } from '../../model/types.js';
|
|
5
5
|
import { Log } from '../../tools/log.js';
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class FanV2Accessory extends ActiveClimateAccessory<FanV2Config> {
|
|
7
7
|
private readonly CURRENT_STATE_MAP;
|
|
8
8
|
private readonly TARGET_STATE_MAP;
|
|
9
|
-
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config:
|
|
9
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: FanV2Config, log: Log, isGrouped: boolean);
|
|
10
10
|
protected getAccessoryType(): AccessoryType;
|
|
11
11
|
private onCurrentStateUpdate;
|
|
12
12
|
private onTargetStateUpdate;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ActiveClimateAccessory } from './active.js';
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
|
|
4
|
-
export class
|
|
4
|
+
export class FanV2Accessory extends ActiveClimateAccessory {
|
|
5
5
|
CURRENT_STATE_MAP;
|
|
6
6
|
TARGET_STATE_MAP;
|
|
7
7
|
constructor(Service, Characteristic, accessory, config, log, isGrouped) {
|
|
@@ -16,20 +16,20 @@ export class FanAccessory extends ActiveClimateAccessory {
|
|
|
16
16
|
['valueModeManual', Characteristic.TargetFanState.MANUAL],
|
|
17
17
|
]);
|
|
18
18
|
const validCurrentStates = Array.from(this.CURRENT_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
19
|
-
if (validCurrentStates.length === 0) {
|
|
20
|
-
this.log.error(strings.
|
|
19
|
+
if (config.topicGetCurrentFanState !== undefined && validCurrentStates.length === 0) {
|
|
20
|
+
this.log.error(strings.fanv2.noCurrentStateValues, this.name);
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
this.setupCharacteristic(CharacteristicKey.CurrentFanState, this.CURRENT_STATE_MAP.get(validCurrentStates[0]), 'topicGetCurrentFanState', this.onCurrentStateUpdate.bind(this), false)
|
|
24
24
|
?.setProps({ validValues: validCurrentStates.map((key) => this.CURRENT_STATE_MAP.get(key)) });
|
|
25
25
|
const validTargetStates = Array.from(this.TARGET_STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
26
|
-
if (validTargetStates.length === 0) {
|
|
27
|
-
this.log.error(strings.
|
|
26
|
+
if (config.topicGetTargetFanState !== undefined && validTargetStates.length === 0) {
|
|
27
|
+
this.log.error(strings.fanv2.noTargetStateValues, this.name);
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
this.setupCharacteristic(CharacteristicKey.TargetFanState, this.TARGET_STATE_MAP.get(validTargetStates[0]), 'topicGetTargetFanState', this.onTargetStateUpdate.bind(this), false, 'topicSetTargetFanState', this.onSetTargetState.bind(this))
|
|
31
31
|
?.setProps({ validValues: validTargetStates.map((key) => this.TARGET_STATE_MAP.get(key)) });
|
|
32
|
-
this.setupCharacteristic(CharacteristicKey.RotationDirection, Characteristic.RotationDirection.CLOCKWISE, 'topicGetRotationDirection', this.bindOnUpdateNumericBoolean(CharacteristicKey.RotationDirection, 'valueDirectionCounterClockwise', strings.
|
|
32
|
+
this.setupCharacteristic(CharacteristicKey.RotationDirection, Characteristic.RotationDirection.CLOCKWISE, 'topicGetRotationDirection', this.bindOnUpdateNumericBoolean(CharacteristicKey.RotationDirection, 'valueDirectionCounterClockwise', strings.fanv2.clockwise, strings.fanv2.counterClockwise), false, 'topicSetRotationDirection', this.onSetDirection.bind(this));
|
|
33
33
|
}
|
|
34
34
|
getAccessoryType() {
|
|
35
35
|
return AccessoryType.Fanv2;
|
|
@@ -60,7 +60,7 @@ export class FanAccessory extends ActiveClimateAccessory {
|
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
const clockwise = value === this.Characteristic.RotationDirection.CLOCKWISE;
|
|
63
|
-
const logString = clockwise ? strings.
|
|
63
|
+
const logString = clockwise ? strings.fanv2.setDirectionClockwise : strings.fanv2.setDirectionCounterClockwise;
|
|
64
64
|
const publish = clockwise ? this.config.valueDirectionClockwise : this.config.valueDirectionCounterClockwise;
|
|
65
65
|
this.onSet(CharacteristicKey.RotationDirection, value, publish, 'topicSetRotationDirection', logString);
|
|
66
66
|
}
|
|
@@ -72,7 +72,7 @@ export class FanAccessory extends ActiveClimateAccessory {
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
if (primative === undefined) {
|
|
75
|
-
this.log.error(strings.
|
|
75
|
+
this.log.error(strings.fanv2.badValue, this.name, `'${value}'`);
|
|
76
76
|
}
|
|
77
77
|
return primative;
|
|
78
78
|
}
|
|
@@ -85,7 +85,7 @@ export class FanAccessory extends ActiveClimateAccessory {
|
|
|
85
85
|
case this.getPrimitiveValue('valueModeBlowing', false):
|
|
86
86
|
return this.CURRENT_STATE_MAP.get('valueModeBlowing');
|
|
87
87
|
}
|
|
88
|
-
this.logIfDesired(strings.
|
|
88
|
+
this.logIfDesired(strings.fanv2.unknownValue, `'${value}'`);
|
|
89
89
|
}
|
|
90
90
|
toTargetCVState(value) {
|
|
91
91
|
switch (value) {
|
|
@@ -94,29 +94,29 @@ export class FanAccessory extends ActiveClimateAccessory {
|
|
|
94
94
|
case this.getPrimitiveValue('valueModeManual', false):
|
|
95
95
|
return this.TARGET_STATE_MAP.get('valueModeManual');
|
|
96
96
|
}
|
|
97
|
-
this.logIfDesired(strings.
|
|
97
|
+
this.logIfDesired(strings.fanv2.unknownValue, `'${value}'`);
|
|
98
98
|
}
|
|
99
99
|
stateStringForCurrentCV(state) {
|
|
100
100
|
switch (state) {
|
|
101
101
|
case this.Characteristic.CurrentFanState.INACTIVE:
|
|
102
|
-
return strings.
|
|
102
|
+
return strings.fanv2.stateInactive;
|
|
103
103
|
case this.Characteristic.CurrentFanState.IDLE:
|
|
104
|
-
return strings.
|
|
104
|
+
return strings.fanv2.stateIdle;
|
|
105
105
|
case this.Characteristic.CurrentFanState.BLOWING_AIR:
|
|
106
|
-
return strings.
|
|
106
|
+
return strings.fanv2.stateBlowing;
|
|
107
107
|
default:
|
|
108
|
-
return strings.
|
|
108
|
+
return strings.fanv2.stateUnknown;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
stateStringForTargetCV(state) {
|
|
112
112
|
switch (state) {
|
|
113
113
|
case this.Characteristic.TargetFanState.AUTO:
|
|
114
|
-
return strings.
|
|
114
|
+
return strings.fanv2.stateAuto;
|
|
115
115
|
case this.Characteristic.TargetFanState.MANUAL:
|
|
116
|
-
return strings.
|
|
116
|
+
return strings.fanv2.stateManual;
|
|
117
117
|
default:
|
|
118
|
-
return strings.
|
|
118
|
+
return strings.fanv2.stateUnknown;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
-
//# sourceMappingURL=
|
|
122
|
+
//# sourceMappingURL=fan2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fan2.js","sourceRoot":"","sources":["../../../src/accessory/climate/fan2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { SensorAccessory } from './sensor.js';
|
|
3
|
+
import { AccessoryType } from '../../model/enums.js';
|
|
4
|
+
import { CharacteristicType, AirSensorConfig, ServiceType } from '../../model/types.js';
|
|
5
|
+
import { Log } from '../../tools/log.js';
|
|
6
|
+
export declare class AirSensorAccessory extends SensorAccessory<AirSensorConfig> {
|
|
7
|
+
private readonly STATE_MAP;
|
|
8
|
+
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: AirSensorConfig, log: Log, isGrouped: boolean);
|
|
9
|
+
protected getAccessoryType(): AccessoryType;
|
|
10
|
+
private onAirQualityUpdate;
|
|
11
|
+
private toCVState;
|
|
12
|
+
private qualityStringForCV;
|
|
13
|
+
private logTemplateForDensityKey;
|
|
14
|
+
}
|