homebridge-blueair-purifier 1.0.12 → 1.1.0-beta.1

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
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="https://github.com/homebridge/verified/blob/master/verified-plugins.json"><img alt="Homebridge Verified" src="./branding/Homebridge_x_BlueAir.svg" width="500px"></a>
2
+ <a href="https://github.com/homebridge/verified/blob/master/verified-plugins.json"><img alt="Homebridge Verified" src="./branding/Homebridge_x_Blueair.svg" width="500px"></a>
3
3
  </p>
4
4
 
5
5
  # homebridge-blueair-purifier
@@ -30,6 +30,7 @@ This plugin only supports WiFi connected BlueAir purifiers utilizing cloud conne
30
30
  | Blue Pure 311i+ Max | [link](https://www.blueair.com/us/air-purifiers/blue-pure-311i-plus-max/3540.html?cgid=air-purifiers) |
31
31
  | Blue Pure 311i Max | [link](https://www.blueair.com/us/air-purifiers/blue-pure-311i-max/3539.html?cgid=air-purifiers) |
32
32
  | Blue Pure 411i Max | [link](https://www.blueair.com/us/air-purifiers/blue-pure-411i-max/3538.html?cgid=air-purifiers) |
33
+ | Blue Pure 511i Max | [link](https://www.blueair.com/us/air-purifiers/blue-pure-511i-max/3710.html) |
33
34
  | Protect 7470i | [link](https://www.blueair.com/us/air-purifiers/2954.html?cgid=air-purifiers) |
34
35
  | DustMagnet™ 5440i | [link](https://www.blueair.com/us/air-purifiers/dustmagnet-5440i/2420.html?cgid=air-purifiers) |
35
36
 
@@ -13,6 +13,7 @@ export declare class BlueAirDevice extends EventEmitter {
13
13
  private currentChanges;
14
14
  private last_brightness;
15
15
  constructor(device: BlueAirDeviceStatus);
16
+ private hasChanges;
16
17
  private notifyStateUpdate;
17
18
  setState(attribute: string, value: number | boolean | string): Promise<void>;
18
19
  setLedOn(value: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"BlueAirDevice.d.ts","sourceRoot":"","sources":["../../src/device/BlueAirDevice.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAA0B,MAAM,sBAAsB,CAAC;AAgChI,KAAK,wBAAwB,GAAG,uBAAuB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,qBAAa,aAAc,SAAQ,YAAY;IACtC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,wBAAwB,CAAC;IAE5C,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,cAAc,CAAkC;IAExD,OAAO,CAAC,eAAe,CAAS;gBAEpB,MAAM,EAAE,mBAAmB;YAoBzB,iBAAiB;IAalB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IA6B5D,QAAQ,CAAC,KAAK,EAAE,OAAO;YAQtB,WAAW;IAoBzB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,qBAAqB;CAY9B"}
1
+ {"version":3,"file":"BlueAirDevice.d.ts","sourceRoot":"","sources":["../../src/device/BlueAirDevice.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAgCxG,KAAK,wBAAwB,GAAG,uBAAuB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAO3E,qBAAa,aAAc,SAAQ,YAAY;IACtC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,wBAAwB,CAAC;IAE5C,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,eAAe,CAAS;gBAEpB,MAAM,EAAE,mBAAmB;IAuBvC,OAAO,CAAC,UAAU;YAIJ,iBAAiB;IA6BlB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IA6B5D,QAAQ,CAAC,KAAK,EAAE,OAAO;YAQtB,WAAW;IAoBzB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,qBAAqB;CAY9B"}
@@ -39,20 +39,39 @@ class BlueAirDevice extends events_1.default {
39
39
  };
40
40
  this.sensorData.aqi = this.calculateAqi();
41
41
  this.mutex = new async_mutex_1.Mutex();
42
- this.currentChanges = {};
42
+ this.currentChanges = {
43
+ state: {},
44
+ sensorData: {},
45
+ };
43
46
  this.last_brightness = this.state.brightness || 0;
44
47
  this.on('update', this.updateState.bind(this));
45
48
  }
49
+ hasChanges(changes) {
50
+ return Object.keys(changes.state).length > 0 || Object.keys(changes.sensorData).length > 0;
51
+ }
46
52
  async notifyStateUpdate(newState, newSensorData) {
47
- this.currentChanges = { ...this.currentChanges, ...newState, ...newSensorData };
53
+ this.currentChanges = {
54
+ state: {
55
+ ...this.currentChanges.state,
56
+ ...newState,
57
+ },
58
+ sensorData: {
59
+ ...this.currentChanges.sensorData,
60
+ ...newSensorData,
61
+ },
62
+ };
48
63
  if (this.mutex.isLocked()) {
49
64
  return;
50
65
  }
51
66
  const release = await this.mutex.acquire();
52
- this.state = { ...this.state, ...newState };
53
- this.sensorData = { ...this.sensorData, ...newSensorData };
54
- this.emit('stateUpdated', this.currentChanges);
55
- this.currentChanges = {};
67
+ const changesToApply = this.currentChanges;
68
+ this.currentChanges = { state: {}, sensorData: {} };
69
+ // if there is a change, emit update event
70
+ if (this.hasChanges(changesToApply)) {
71
+ this.state = { ...this.state, ...changesToApply.state };
72
+ this.sensorData = { ...this.sensorData, ...changesToApply.sensorData };
73
+ this.emit('stateUpdated', changesToApply);
74
+ }
56
75
  release();
57
76
  }
58
77
  async setState(attribute, value) {
@@ -1 +1 @@
1
- {"version":3,"file":"BlueAirDevice.js","sourceRoot":"","sources":["../../src/device/BlueAirDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlueAirDevice.js","sourceRoot":"","sources":["../../src/device/BlueAirDevice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ node = "22"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Homebridge BlueAir Platform",
3
3
  "name": "homebridge-blueair-purifier",
4
- "version": "1.0.12",
4
+ "version": "1.1.0-beta.1",
5
5
  "description": "Homebridge plugin for BlueAir purifiers",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -23,7 +23,7 @@
23
23
  }
24
24
  ],
25
25
  "engines": {
26
- "node": "^18.20.4 || ^20.16.0 || ^22.6.0",
26
+ "node": "^20.18.0 || ^22.10.0 || ^24.0.0",
27
27
  "homebridge": "^1.8.0 || ^2.0.0-beta.0"
28
28
  },
29
29
  "main": "dist/index.js",
@@ -34,12 +34,6 @@
34
34
  "prepublishOnly": "npm run lint && npm run build",
35
35
  "format": "prettier --log-level warn --write \"**/*.ts\" && npm run lint -- --fix"
36
36
  },
37
- "lint-staged": {
38
- "*.ts": [
39
- "prettier --write",
40
- "eslint --fix"
41
- ]
42
- },
43
37
  "keywords": [
44
38
  "homebridge-plugin",
45
39
  "blueair",
@@ -65,8 +59,5 @@
65
59
  "@homebridge/plugin-ui-utils": "^1.0.3",
66
60
  "async-mutex": "^0.5.0",
67
61
  "lodash": "^4.17.21"
68
- },
69
- "volta": {
70
- "node": "20.18.0"
71
62
  }
72
63
  }
@@ -1,82 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Generator: Adobe Illustrator 27.6.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
- <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
- viewBox="0 0 1800 630" style="enable-background:new 0 0 1800 630;" xml:space="preserve">
5
- <style type="text/css">
6
- .st0{fill:#0C2F4F;}
7
- .st1{fill:#9596AE;}
8
- .st2{fill:url(#SVGID_1_);}
9
- .st3{fill:url(#SVGID_00000070101692078192461080000003741069921744300967_);}
10
- .st4{fill:#FFFFFF;}
11
- .st5{fill:none;stroke:#9596AE;stroke-width:5;stroke-linecap:round;stroke-miterlimit:10;}
12
- </style>
13
- <g>
14
- <g id="Plugin_Logo_00000143588722170484654090000001453365823179829675_">
15
- <path class="st0" d="M1292.5,283.5h15.8l-13.7,63.8h-15.4l13.3-63.1V283.5z M1589.6,298.5h-5.3c-9.1,0-14,2.8-21.4,10.5l2.1-9.5
16
- h-15.1l-10.5,47.3h15.8l4.6-20.3c1.8-9.5,8.1-14.7,18.6-14.7c2.8,0,5.6,0.7,8.4,1.4l3.2-14.7H1589.6z M1275.3,299.6
17
- c-1.4,6-5.6,10.5-11.2,12.6c7,1.8,9.5,8.8,8.1,15.8c-2.1,8.1-8.1,18.6-27.3,18.6h-45.2l13.7-63.1h47.3c9.5,0,17.2,4.2,14.7,15.8
18
- V299.6z M1246.3,319.9h-23.5l-3.5,15.1h25.6c4.6,0,8.1-3.2,8.8-7.4c1.4-4.9-1.4-7.7-7-7.7H1246.3z M1249.8,295.4H1228l-3.2,13.3
19
- h24.2c3.9,0,7.4-2.5,7.7-6.7c1.1-3.9,0-7-7-7L1249.8,295.4z M1149.5,276.5c-21.3,0-38.5,17.3-38.5,38.5s17.3,38.5,38.5,38.5
20
- s38.5-17.3,38.5-38.5S1170.8,276.5,1149.5,276.5z M1438.3,325.9v1.4h-45.6c-1.4,4.9,1.8,11.9,12.3,11.9c5.6,0,10.9-2.1,14.4-6.3
21
- h16.8c-7,11.2-18.9,15.8-32.9,15.8c-19.3,0-29.8-7.4-26.3-25.6c3.9-17.5,18.2-25.2,36.8-25.2
22
- C1434.8,297.8,1442.1,308.3,1438.3,325.9z M1424.3,318.5c0-2.8-1.4-10.5-13-10.5c-7.2-0.3-13.9,3.9-16.8,10.5h29.4H1424.3z
23
- M1507,314.3l-4.9,23.5c-0.7,3.5-1.1,6.7,0,9.8h-15.8v-5.3c-6.7,5.3-16.8,7-23.8,7c-12.3,0-20.3-4.2-17.5-15.4
24
- c2.8-11.2,13-14,22.4-14.7l16.8-1.1c4.9-0.4,6.7-1.4,7.4-5.3c0.7-3.9-1.8-5.6-10.9-5.6c-7,0-10.5,0.4-14,7h-15.1
25
- c4.9-14.7,18.6-16.1,31.5-16.1C1505.6,298.2,1509.1,305.2,1507,314.3z M1489.8,324.5c-3.2,1.1-6.3,1.8-9.5,1.8l-9.5,1.1
26
- c-5.6,0-8.4,1.8-9.5,6c-1.1,4.2,2.5,7,8.4,7c8.1,0,17.5-4.2,19.3-11.9C1489.1,328.3,1489.8,324.5,1489.8,324.5z M1352.1,323.4
27
- c-1.1,8.1-8.1,14-16.1,13.7c-7,0-9.8-3.5-8.4-9.8l5.6-27.7h-15.4l-7,32.2c-3.2,14,8.8,16.8,16.8,16.8c7.7,0,15.1-2.8,21-8.1
28
- l-1.4,6.3h15.1l10.2-47.3h-15.8C1356.6,299.6,1352.1,323.4,1352.1,323.4z M1511.9,347.2h15.8l10.2-47.3H1522l-10.2,46.6V347.2z
29
- M1525.9,283.5l-2.1,9.8h15.4l2.1-9.8C1541.3,283.5,1525.9,283.5,1525.9,283.5z"/>
30
- </g>
31
- <g id="Homebridge">
32
- <g id="Text">
33
- <path class="st1" d="M136.2,471.8h29v-31.1H178v75.9h-12.7v-33.8h-29v33.8h-12.8v-75.9h12.8v31.1H136.2z"/>
34
- <path class="st1" d="M222.8,517.6c-16.9,0-28.4-10.2-28.4-34.1v-9.7c0-23.9,11.4-34.1,28.4-34.1s28.5,10.2,28.5,34.1v9.7
35
- C251.3,507.3,239.9,517.6,222.8,517.6z M207.2,483.5c0,16.4,5.5,23,15.6,23s15.7-6.6,15.7-23v-9.7c0-16.4-5.6-23-15.7-23
36
- s-15.6,6.6-15.6,23V483.5z"/>
37
- <path class="st1" d="M301.7,484.7l21.9-44h12.2v75.9h-12.3v-50.8L306.1,502h-9L280,466.1v50.5h-12.3v-75.9h12.1L301.7,484.7z"/>
38
- <path class="st1" d="M401.8,440.7v11.1H368v20h30.5v11H368v22.8h33.8v11h-46.5v-75.9L401.8,440.7z"/>
39
- <path class="st1" d="M441,440.7c17.8,0,27,6.6,27,19.7c0.2,7.3-4.3,13.9-11.1,16.5c8.6,2.4,13.5,8.4,13.5,17.9
40
- c0,11.4-7.3,21.8-27,21.8h-26.8v-75.9L441,440.7L441,440.7z M429.3,471.7h12.4c9.5,0,13.4-4.3,13.4-10.6c0-5.9-3-9.5-15.1-9.5
41
- h-10.7L429.3,471.7z M429.3,505.5h13.3c10.2,0,15-4.2,15-11.4c0-8-5.3-11.4-16.5-11.4h-11.8V505.5z"/>
42
- <path class="st1" d="M527.7,516.6l-14.6-30.8h-14.7v30.8h-12.8v-75.9h25.9c17.5,0,27.9,7.6,27.9,22.7c0,10.5-5,17.2-13.8,20.4
43
- l16.2,32.9h-14.1V516.6z M510.6,474.8c10.8,0,16.1-2.9,16.1-11.4s-5.3-11.5-16.1-11.5h-12.2v23L510.6,474.8z"/>
44
- <path class="st1" d="M569.4,516.6h-12.8v-75.9h12.8V516.6z"/>
45
- <path class="st1" d="M589.9,516.6v-75.9h25.6c17,0,28.5,9.1,28.5,33.4v9c0,24.3-11.4,33.4-28.5,33.4L589.9,516.6z M631.2,483.1
46
- v-9c0-15.6-4.8-22.3-15.7-22.3h-12.9v53.8h12.9C626.4,505.6,631.2,498.7,631.2,483.1z"/>
47
- <path class="st1" d="M713.6,477.6v5.8c0,23.9-10.9,34.1-27.9,34.1s-28.4-10.2-28.4-34.1v-9.1c0-24.4,11.4-34.6,28.4-34.6
48
- c15.4,0,25.2,8.6,27.6,24.5H701c-1.9-8.8-6.7-13.4-15.3-13.4c-10.1,0-15.6,6.6-15.6,23v9.7c0,16.4,5.5,23,15.6,23
49
- c9.7,0,14.5-5.7,15.4-17.7H686v-11.1L713.6,477.6L713.6,477.6z"/>
50
- <path class="st1" d="M776.5,440.7v11.1h-33.8v20h30.5v11h-30.5v22.8h33.8v11H730v-75.9L776.5,440.7z"/>
51
- </g>
52
- <g id="Logo">
53
-
54
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="450" y1="532.5001" x2="450" y2="832.5001" gradientTransform="matrix(1 0 0 1 0 -446.0001)">
55
- <stop offset="0" style="stop-color:#57277C"/>
56
- <stop offset="1" style="stop-color:#491F59"/>
57
- </linearGradient>
58
- <circle class="st2" cx="450" cy="236.5" r="150"/>
59
-
60
- <radialGradient id="SVGID_00000183220377242521611990000013811618075543456901_" cx="450" cy="682.5001" r="150" gradientTransform="matrix(1 0 0 1 0 -446.0001)" gradientUnits="userSpaceOnUse">
61
- <stop offset="0" style="stop-color:#000000;stop-opacity:0"/>
62
- <stop offset="1" style="stop-color:#000000;stop-opacity:0.1"/>
63
- </radialGradient>
64
- <circle style="fill:url(#SVGID_00000183220377242521611990000013811618075543456901_);" cx="450" cy="236.5" r="150"/>
65
- <path class="st4" d="M551.7,221.2h-0.2l-18.3-18.3c-0.6-0.7-1-1.6-1-2.5v-42.3c0-9-7.3-16.2-16.2-16.2h-11.5
66
- c-9,0-16.2,7.3-16.2,16.2v0.2l-27.1-26.2c-6.4-6.1-16.5-6-22.8,0.2L346.8,224c-6.3,6.3-6.3,16.6,0,22.9l0,0l0,0l8.7,8.7
67
- c6.3,6.3,16.5,6.3,22.9,0.1l70.5-69.4c1.4-1.4,3.6-1.4,5,0l69,69c1.4,1.4,1.4,3.6,0,5l-8.5,8.5c-1.4,1.4-3.6,1.4-5,0l-48.5-47
68
- c-6.4-6.2-16.5-6.1-22.8,0.2l-46.5,46.7c-6.3,6.3-6.3,16.6,0,22.9l8.6,8.6c6.3,6.3,16.5,6.3,22.9,0.1l25.1-24.8
69
- c1.4-1.4,3.6-1.4,5,0L478,300c1.4,1.4,1.4,3.6,0,5l0,0l-24.7,24.9c-0.1,0-0.2-0.1-0.3-0.1c-5.1,0-9.3,4.1-9.3,9.3
70
- c0,5.1,4.1,9.3,9.3,9.3c5.1,0,9.3-4.1,9.3-9.3v-0.2l24.8-24.8c6.4-6.3,6.4-16.6,0-23l0,0L487,291l-24.9-24.5
71
- c-6.3-6.2-16.5-6.2-22.8,0l-25.1,24.8c-1.4,1.4-3.6,1.4-5,0l-8.6-8.6c-1.4-1.4-1.4-3.6,0-5l46.5-46.7c1.4-1.4,3.6-1.4,5-0.1
72
- l48.5,47.1c6.4,6.1,16.5,6.1,22.8-0.2l8.5-8.5c6.3-6.3,6.3-16.6,0-22.9l-69.1-69.1c-6.3-6.3-16.5-6.3-22.9-0.1l-70.5,69.4
73
- c-1.4,1.4-3.6,1.4-5,0l-8.7-8.7c-1.4-1.4-1.4-3.6,0-5l91.7-91.7c1.4-1.4,3.6-1.4,5,0l48.6,47V158c0-2,1.6-3.5,3.5-3.5H516
74
- c2,0,3.5,1.6,3.5,3.5v42.4c0,4.3,1.7,8.5,4.8,11.5l18.2,18.2c0,0.1-0.1,0.2-0.1,0.3c0,5.1,4.2,9.3,9.3,9.2c5.1,0,9.3-4.2,9.2-9.3
75
- C561,225.4,556.8,221.3,551.7,221.2L551.7,221.2z"/>
76
- </g>
77
- </g>
78
- <g id="Divider">
79
- <line class="st5" x1="998" y1="14.2" x2="902" y2="614.2"/>
80
- </g>
81
- </g>
82
- </svg>