homebridge-solaxcloud-api 1.4.3 → 1.5.0

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
@@ -8,7 +8,7 @@
8
8
 
9
9
  # Solax Cloud Plugin for Homebridge
10
10
 
11
- ![npm](https://badgen.net/npm/v/homebridge-solaxcloud-api) ![npm](https://badgen.net/npm/dt/homebridge-solaxcloud-api)
11
+ ![npm](https://badgen.net/npm/v/homebridge-solaxcloud-api) ![npm](https://badgen.net/npm/dt/homebridge-solaxcloud-api) [![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
12
12
 
13
13
 
14
14
  The Solax Cloud Plugin for [Homebridge](https://homebridge.io/) was created as a platform plugin to gather data exposed by Solax inverters to the cloud through the [Solax Cloud API](https://www.eu.solaxcloud.com/phoebus/resource/files/userGuide/Solax_API_for_End-user_V1.0.pdf).
@@ -22,7 +22,7 @@ As HomeKit is still clueless about what a solar panel is, this plugin exposes a
22
22
  - **Grid To House** (outlet with power consumption)
23
23
  - **Update** (Motion sensor)
24
24
 
25
- ![accessories](images/plugin-accessories-home.png)
25
+ <img src="images/plugin-accessories-home.png" width="50%" height="50%">
26
26
 
27
27
  ## Required information
28
28
 
@@ -42,7 +42,7 @@ Edit `config.json` manually to add your Solax inverters. See below for instructi
42
42
 
43
43
  ## Platform configuration
44
44
 
45
- Minimum platform configuration is depicted by the example configuration file below:
45
+ Platform configuration is depicted by the example configuration file below:
46
46
 
47
47
  ```json
48
48
  {
@@ -57,11 +57,21 @@ Minimum platform configuration is depicted by the example configuration file bel
57
57
  ]
58
58
  }
59
59
  ```
60
+ Configuration parameters are described on the table below:
61
+
62
+ | **Parameter** | **Type** | **Description** | **Default** | **Mandatory?** |
63
+ | ------------------ | -------- | --------------- | ----------: | :------------: |
64
+ | `platform` | string | Platform name (must be SolaxCloudAPI) | - | Y |
65
+ | `name` | string | Inverter name, used as prefix for accessory naming | - | Y |
66
+ | `tokenId` | string | Users get information from Solax Cloud through the granted tokenID. Please obtain your tokenID on the API page of Solax Cloud. | - | Y |
67
+ | `sn` | string | Registration No. (inverter module SN) | - | Y |
68
+ | `pollingFrequency` | number | Plugin data polling frequency from Solax Cloud (in seconds) | 300 | N |
69
+
60
70
  **NOTE:** The `pollingFrequency` parameter is optional and defaults to 300 seconds, since Solax inverters update cloud data every 5 minutes.
61
71
 
62
72
  Configuration through the the use of [Homebridge UI](https://github.com/oznu/homebridge-config-ui-x) plugin is also available and recommended:
63
73
 
64
- ![sample](images/homebridge-ui.png)
74
+ <img src="images/homebridge-ui.png" width="100%" height="100%">
65
75
 
66
76
  ## Non-standard characteristics
67
77
 
@@ -69,19 +79,88 @@ Non-standard accessory characteristics are available through the use of [Eve for
69
79
 
70
80
  This will allow some important non-standard characteristics to be visible (like power or total energy consumption), as depicted in the image below:
71
81
 
72
- ![consumption](images/plugin-outlet-consumption.png)
82
+ <img src="images/plugin-outlet-consumption.png" width="50%" height="50%">
73
83
 
74
84
  # Automation
75
85
 
76
86
  Automation can be achieved with the help of the virtual **Update** motion sensor that was specifically tailored for this effect. This motion sensor will be triggered whenever data gets updated from the Solax Cloud API (according to what is defined on the `pollingFrequency` configuration setting).
77
87
 
78
- ![motion](images/plugin-accessories-eve.png)
88
+ <img src="images/plugin-accessories-eve.png" width="50%" height="50%">
79
89
 
80
90
  Motion is detected by the **Update** motion sensor whenever there is newly fetched data from Solax Cloud. Using this sensor as a trigger combined with power and energy data from the virtual outlets enumerated above forms the basic building blocks for defining an automation.
81
91
 
82
92
  ## Automation example
83
93
 
84
- Since automations are probably going to be dependent on the non-standard characteristic from the virtual outlets, these can be created by using the Eve App. As an automation example...
94
+ Since automations are probably going to be dependent on the non-standard **Consumption** characteristics from the virtual outlets, these must created by using the Eve App.
95
+
96
+ As an automation example, let's imagine we want to turn a pool heater pump on whenever the inverter AC power is greater than a specific figure (in Watt):
97
+
98
+ <table cellspacing="0" cellpadding="0">
99
+ <tr>
100
+ <td width="50%">1. Under Automation, select <b>Rules</b></td>
101
+ <td width="50%">2. Click <b>Next</b></td>
102
+ </tr>
103
+ <tr>
104
+ <td><img src="images/automation/automation_1.png"></td>
105
+ <td><img src="images/automation/automation_2.png"></td>
106
+ </tr>
107
+ <tr>
108
+ <td>3. Click <b>Add Trigger</b></td>
109
+ <td>4. Select <b>Motion</b> as trigger type</td>
110
+ </tr>
111
+ <tr>
112
+ <td><img src="images/automation/automation_3.png"></td>
113
+ <td><img src="images/automation/automation_4.png"></td>
114
+ </tr>
115
+ <tr>
116
+ <td>5. Select the Solax <b>Update</b> motion detector and set <b>Motion</b> as trigger</td>
117
+ <td>6. Click <b>Next</b></td>
118
+ </tr>
119
+ <tr>
120
+ <td><img src="images/automation/automation_5.png"></td>
121
+ <td><img src="images/automation/automation_6.png"></td>
122
+ </tr>
123
+ <tr>
124
+ <td>7. Select <b>Add Value Condition</b></td>
125
+ <td>8. Choose <b>Inverter AC Consumption</b> as characteristic and elect <b>&gt=</b> a desired value</b></td>
126
+ </tr>
127
+ <tr>
128
+ <td><img src="images/automation/automation_7.png"></td>
129
+ <td><img src="images/automation/automation_8.png"></td>
130
+ </tr>
131
+ <tr>
132
+ <td>9. Click <b>Next</b></td>
133
+ <td>10. If no scene exists, click <b>Add Scene</b></td>
134
+ </tr>
135
+ <tr>
136
+ <td><img src="images/automation/automation_9.png"></td>
137
+ <td><img src="images/automation/automation_10.png"></td>
138
+ </tr>
139
+ <tr>
140
+ <td>11. Click <b>Add Actions</b></td>
141
+ <td>12. Select the accessory to be controlled (in this case <b>Garden Pool Outlet</b> will be turned <b>ON</b>)</td>
142
+ </tr>
143
+ <tr>
144
+ <td><img src="images/automation/automation_11.png"></td>
145
+ <td><img src="images/automation/automation_12.png"></td>
146
+ </tr>
147
+ <tr>
148
+ <td>13. Click <b>Next</b></td>
149
+ <td>14. Name your scene and click <b>Done</b></td>
150
+ </tr>
151
+ <tr>
152
+ <td><img src="images/automation/automation_13.png"></td>
153
+ <td><img src="images/automation/automation_14.png"></td>
154
+ </tr>
155
+ <tr>
156
+ <td>15. Click <b>Next</b></td>
157
+ <td>16. Name your rule and click <b>Done</b></td>
158
+ </tr>
159
+ <tr>
160
+ <td><img src="images/automation/automation_15.png"></td>
161
+ <td><img src="images/automation/automation_16.png"></td>
162
+ </tr>
163
+ </table>
85
164
 
86
165
  # TO DO
87
166
 
@@ -43,7 +43,7 @@
43
43
  { "title": "600 (10 minutes)", "enum": [ 600 ] },
44
44
  { "title": "900 (15 minutes)", "enum": [ 900 ] }
45
45
  ],
46
- "description": "Plugin data polling frequency from Solax Cloud in seconds."
46
+ "description": "Plugin data polling frequency from Solax Cloud (in seconds)."
47
47
  }
48
48
  }
49
49
  }
@@ -39,6 +39,8 @@ export declare class SolaxCloudAPIPlatform implements StaticPlatformPlugin {
39
39
  * Virtual motion sensor triggered by data updates from Solax Cloud.
40
40
  */
41
41
  private motionUpdate;
42
+ /** Array with all accessories */
43
+ private solaxAccessories;
42
44
  /**
43
45
  * Platform constructor.
44
46
  * @param log
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,EAAY,MAAM,YAAY,CAAC;AAE3G,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAcxC;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,oBAAoB;IAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB,SAAgB,GAAG,EAAE,eAAe,CAAC;IAC9B,UAAU,EAAE,QAAQ,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,OAAO,CAAyB;IAExC;;MAEE;IACF,OAAO,CAAC,QAAQ,CAAwB;IAExC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAwB;IAEhD;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAwB;IAEpD;;OAEG;IACH,OAAO,CAAC,qBAAqB,CAAwB;IAErD;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAwB;IAEjD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAwB;IAE5C;;;;;;OAMG;gBACU,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAyD3D,KAAK,8CAA8B;IAEnC;;OAEG;YACW,qBAAqB;IAyCnC,WAAW,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI;CAK3E"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,EAAY,MAAM,YAAY,CAAC;AAE3G,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AA6BxC;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,oBAAoB;IAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB,SAAgB,GAAG,EAAE,eAAe,CAAC;IAC9B,UAAU,EAAE,QAAQ,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,OAAO,CAAyB;IAExC;;MAEE;IACF,OAAO,CAAC,QAAQ,CAAwB;IAExC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAwB;IAEhD;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAwB;IAEpD;;OAEG;IACH,OAAO,CAAC,qBAAqB,CAAwB;IAErD;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAwB;IAEjD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAwB;IAE5C,iCAAiC;IACjC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;;;OAMG;gBACU,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IA0G3D,KAAK,8CAA8B;IAEnC;;OAEG;YACW,qBAAqB;IAyCnC,WAAW,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI;CAG3E"}
package/dist/platform.js CHANGED
@@ -14,6 +14,18 @@ const motionAccessory_1 = require("./motionAccessory");
14
14
  * Default polling frequency from Solax Cloud (in seconds).
15
15
  */
16
16
  const DEFAULT_POLLING_FREQUENCY = 300;
17
+ /**
18
+ * Max polls / min (obtain frequency need to be lower than 10 times/min).
19
+ */
20
+ const MAX_POLLS_MIN = 10;
21
+ /**
22
+ * Max polls / day (obtain frequency need to be lower than 10,000 times/day).
23
+ */
24
+ const MAX_POLLS_DAY = 10000;
25
+ /**
26
+ * Maximum polling frequency (in seconds).
27
+ */
28
+ const MAX_POLLING_FREQUENCY = Math.max(60 / MAX_POLLS_MIN, (24 * 60 * 60) / MAX_POLLS_DAY);
17
29
  /**
18
30
  * SolaxCloudAPIPlatform.
19
31
  * This class is the main constructor for your plugin, this is where you should
@@ -28,6 +40,8 @@ class SolaxCloudAPIPlatform {
28
40
  * @returns
29
41
  */
30
42
  constructor(log, config, api) {
43
+ /** Array with all accessories */
44
+ this.solaxAccessories = [];
31
45
  this.sleep = util_1.default.promisify(setTimeout);
32
46
  // store values in properties
33
47
  this.log = log;
@@ -37,39 +51,87 @@ class SolaxCloudAPIPlatform {
37
51
  if (!api || !config) {
38
52
  return;
39
53
  }
40
- // setup default polling frequency
41
- this.config.pollingFrequency = this.config.pollingFrequency || DEFAULT_POLLING_FREQUENCY;
42
- this.eve = new homebridge_lib_1.EveHomeKitTypes(this.api);
43
- this.eveService = (0, fakegato_history_1.default)(this.api);
44
54
  this.log.debug(`Config: ${JSON.stringify(config)}`);
45
- // init new Solax Cloud API object with give tokenID and sn
46
- this.solaxCloudAPI = new solaxcloudapi_1.SolaxCloudAPI(this.config.tokenId, this.config.sn);
47
- // initial data set
48
- this.apiData = this.solaxCloudAPI.getAPIData();
49
- this.log.debug(`apiData = ${JSON.stringify(this.apiData)}`);
50
- const inverterSN = this.apiData.result.inverterSN.toLowerCase();
51
- const inverterModel = solaxcloudapi_1.SolaxCloudAPI.getInverterType(this.apiData.result.inverterType);
52
- // setup outlet accessories
53
- this.outletPV =
54
- new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} PV`, `pv-${inverterSN}`, inverterModel);
55
- this.outletInverterAC =
56
- new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Inverter AC`, `inv-ac-${inverterSN}`, inverterModel);
57
- this.outletInverterToGrid =
58
- new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Inverter to Grid`, `inv-grid-${inverterSN}`, inverterModel);
59
- this.outletInverterToHouse =
60
- new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Inverter to House`, `inv-house-${inverterSN}`, inverterModel);
61
- this.outletGridToHouse =
62
- new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Grid to House`, `grid-house-${inverterSN}`, inverterModel);
63
- // setup update motion sensor
64
- this.motionUpdate =
65
- new motionAccessory_1.SolaxMotionAccessory(this, this.log, `${this.config.name} Update`, `update-${inverterSN}`, inverterModel);
66
- // start data fetching
67
- this.fetchDataPeriodically();
68
- this.log.debug('Finished initializing platform.'),
69
- // When this event is fired it means Homebridge has created all accessories.
70
- this.api.on("didFinishLaunching" /* DID_FINISH_LAUNCHING */, () => {
71
- this.log.debug('Executed didFinishLaunching callback');
72
- });
55
+ // check for mandatory parameters
56
+ if (!this.config.name) {
57
+ this.log.error('Can\'t find mandatory parameter "name" parameter in config file, aborting!');
58
+ return;
59
+ }
60
+ if (!this.config.tokenId) {
61
+ this.log.error('Can\'t find mandatory parameter "tokenId" parameter in config file, aborting!');
62
+ return;
63
+ }
64
+ if (!this.config.sn) {
65
+ this.log.error('Can\'t find mandatory parameter "sn" parameter in config file, aborting!');
66
+ return;
67
+ }
68
+ // setup default polling frequency
69
+ if (this.config.pollingFrequency) {
70
+ if (Number.isInteger(this.config.pollingFrequency) && this.config.pollingFrequency > 0) {
71
+ // all good?
72
+ if (this.config.pollingFrequency < MAX_POLLING_FREQUENCY) {
73
+ this.log.info(`Polling frequency cannot be higher than ${MAX_POLLS_MIN} times/min and ${MAX_POLLS_DAY} ` +
74
+ `times/day, defaulting to ${DEFAULT_POLLING_FREQUENCY} seconds.`);
75
+ this.config.pollingFrequency = DEFAULT_POLLING_FREQUENCY;
76
+ }
77
+ }
78
+ else {
79
+ log.info(`Invalid polling frequency (must be a positive integer number), defaulting to ${DEFAULT_POLLING_FREQUENCY} seconds.`);
80
+ this.config.pollingFrequency = DEFAULT_POLLING_FREQUENCY;
81
+ }
82
+ }
83
+ else {
84
+ log.info(`No polling frequency provided, defaulting to ${DEFAULT_POLLING_FREQUENCY} seconds.`);
85
+ this.config.pollingFrequency = DEFAULT_POLLING_FREQUENCY;
86
+ }
87
+ try {
88
+ this.eve = new homebridge_lib_1.EveHomeKitTypes(this.api);
89
+ this.eveService = (0, fakegato_history_1.default)(this.api);
90
+ // init new Solax Cloud API object with give tokenID and sn
91
+ this.solaxCloudAPI = new solaxcloudapi_1.SolaxCloudAPI(this.config.tokenId, this.config.sn);
92
+ // initial data set
93
+ this.apiData = this.solaxCloudAPI.getAPIData();
94
+ this.log.debug(`apiData = ${JSON.stringify(this.apiData)}`);
95
+ let inverterSN;
96
+ let inverterModel;
97
+ if (this.apiData.success) {
98
+ inverterSN = this.apiData.result.inverterSN.toLowerCase();
99
+ inverterModel = solaxcloudapi_1.SolaxCloudAPI.getInverterType(this.apiData.result.inverterType);
100
+ }
101
+ else {
102
+ this.log.info('Could not retrieve initial values from Solax Cloud, accessory Serial Number and Model properties deferred...');
103
+ inverterSN = this.config.name;
104
+ inverterModel = 'Unknown';
105
+ }
106
+ // setup outlet accessories
107
+ this.outletPV =
108
+ new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} PV`, `pv-${inverterSN}`, inverterModel);
109
+ this.outletInverterAC =
110
+ new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Inverter AC`, `inv-ac-${inverterSN}`, inverterModel);
111
+ this.outletInverterToGrid =
112
+ new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Inverter to Grid`, `inv-grid-${inverterSN}`, inverterModel);
113
+ this.outletInverterToHouse =
114
+ new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Inverter to House`, `inv-house-${inverterSN}`, inverterModel);
115
+ this.outletGridToHouse =
116
+ new outletAccessory_1.SolaxOutletAccessory(this, this.log, `${this.config.name} Grid to House`, `grid-house-${inverterSN}`, inverterModel);
117
+ // setup update motion sensor
118
+ this.motionUpdate =
119
+ new motionAccessory_1.SolaxMotionAccessory(this, this.log, `${this.config.name} Update`, `update-${inverterSN}`, inverterModel);
120
+ // create array with all accessories
121
+ this.solaxAccessories =
122
+ [this.outletPV, this.outletInverterAC, this.outletInverterToGrid,
123
+ this.outletInverterToHouse, this.outletGridToHouse, this.motionUpdate];
124
+ // start data fetching
125
+ this.fetchDataPeriodically();
126
+ this.log.debug('Finished initializing platform.');
127
+ }
128
+ catch (error) {
129
+ this.log.error(`Unexpected error: ${error}`);
130
+ }
131
+ // When this event is fired it means Homebridge has created all accessories.
132
+ this.api.on("didFinishLaunching" /* DID_FINISH_LAUNCHING */, () => {
133
+ this.log.debug('Executed didFinishLaunching callback');
134
+ });
73
135
  }
74
136
  /**
75
137
  * Periodically retrieves inverter data from Solax Cloud API using configured tokenID and SN.
@@ -109,9 +171,7 @@ class SolaxCloudAPIPlatform {
109
171
  * The Platform must respond in a timely manner as otherwise the startup of the bridge would be unnecessarily delayed.
110
172
  */
111
173
  accessories(callback) {
112
- callback([this.outletPV, this.outletInverterAC,
113
- this.outletInverterToGrid, this.outletInverterToHouse, this.outletGridToHouse,
114
- this.motionUpdate]);
174
+ callback(this.solaxAccessories);
115
175
  }
116
176
  }
117
177
  exports.SolaxCloudAPIPlatform = SolaxCloudAPIPlatform;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "displayName": "Homebridge Solax Cloud API",
4
4
  "name": "homebridge-solaxcloud-api",
5
- "version": "1.4.3",
5
+ "version": "1.5.0",
6
6
  "description": "Integrates solar production info using public Solax Cloud API into Homebrigde acessories.",
7
7
  "license": "Apache-2.0",
8
8
  "repository": {