iobroker.zendure-solarflow 3.0.0 → 3.0.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 +5 -0
- package/admin/build/index.js +1 -1
- package/admin/build/index.js.map +2 -2
- package/build/helpers/helpers.js +9 -0
- package/build/helpers/helpers.js.map +2 -2
- package/build/models/deviceModels/Sf800Pro.js +144 -0
- package/build/models/deviceModels/Sf800Pro.js.map +7 -0
- package/build/models/deviceModels/ZenHaDevice.js +60 -17
- package/build/models/deviceModels/ZenHaDevice.js.map +2 -2
- package/io-package.json +14 -1
- package/package.json +1 -1
package/build/helpers/helpers.js
CHANGED
|
@@ -120,6 +120,15 @@ const createDeviceModel = (_adapter, _productKey, _deviceKey, _zenHaDeviceDetail
|
|
|
120
120
|
_zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : "Solarflow 800",
|
|
121
121
|
_zenHaDeviceDetails
|
|
122
122
|
);
|
|
123
|
+
case "R3mn8U":
|
|
124
|
+
return new import_Sf800.Sf800(
|
|
125
|
+
_adapter,
|
|
126
|
+
_productKey,
|
|
127
|
+
_deviceKey,
|
|
128
|
+
_zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : "Solarflow 800",
|
|
129
|
+
_zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : "Solarflow 800",
|
|
130
|
+
_zenHaDeviceDetails
|
|
131
|
+
);
|
|
123
132
|
default:
|
|
124
133
|
return void 0;
|
|
125
134
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/helpers/helpers.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\n\nimport { ZendureSolarflow } from \"../main\";\nimport { Ace1500 } from \"../models/deviceModels/Ace1500\";\nimport { Aio2400 } from \"../models/deviceModels/Aio2400\";\nimport { Hyper2000 } from \"../models/deviceModels/Hyper2000\";\nimport { Sf2400Ac } from \"../models/deviceModels/Sf2400Ac\";\nimport { Sf800 } from \"../models/deviceModels/Sf800\";\nimport { SfHub1200 } from \"../models/deviceModels/SfHub1200\";\nimport { SfHub2000 } from \"../models/deviceModels/SfHub2000\";\n\nimport { IZenHaDeviceDetails } from \"../models/IZenHaDeviceDetails\";\n\nexport const createDeviceModel = (\n _adapter: ZendureSolarflow,\n _productKey: string,\n _deviceKey: string,\n _zenHaDeviceDetails?: IZenHaDeviceDetails\n): Ace1500 | Hyper2000 | Sf2400Ac | undefined => {\n switch (_productKey.toLowerCase()) {\n case \"73bktv\":\n return new SfHub1200(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 1200\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 1200\",\n _zenHaDeviceDetails\n );\n case \"a8yh63\":\n return new SfHub2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 2000\",\n _zenHaDeviceDetails\n );\n case \"ywf7hv\":\n return new Aio2400(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"AIO 2400\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"AIO 2400\",\n _zenHaDeviceDetails\n );\n case \"ja72u0ha\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"gda3tb\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"b3dxda\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"8bm93h\":\n return new Ace1500(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Ace 1500\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Ace 1500\",\n _zenHaDeviceDetails\n );\n case \"bc8b7f\":\n return new Sf2400Ac(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.deviceName\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n );\n case \"a4ss5P\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"b1nhmc\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n default:\n return undefined;\n }\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAwB;AACxB,qBAAwB;AACxB,uBAA0B;AAC1B,sBAAyB;AACzB,mBAAsB;AACtB,uBAA0B;AAC1B,uBAA0B;AAInB,MAAM,oBAAoB,CAC/B,UACA,aACA,YACA,wBAC+C;AAC/C,UAAQ,YAAY,YAAY,GAAG;AAAA,IACjC,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBACI,oBAAoB,aACpB;AAAA,QACJ;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AACE,aAAO;AAAA,EACX;AACF;",
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\n\nimport { ZendureSolarflow } from \"../main\";\nimport { Ace1500 } from \"../models/deviceModels/Ace1500\";\nimport { Aio2400 } from \"../models/deviceModels/Aio2400\";\nimport { Hyper2000 } from \"../models/deviceModels/Hyper2000\";\nimport { Sf2400Ac } from \"../models/deviceModels/Sf2400Ac\";\nimport { Sf800 } from \"../models/deviceModels/Sf800\";\nimport { SfHub1200 } from \"../models/deviceModels/SfHub1200\";\nimport { SfHub2000 } from \"../models/deviceModels/SfHub2000\";\n\nimport { IZenHaDeviceDetails } from \"../models/IZenHaDeviceDetails\";\n\nexport const createDeviceModel = (\n _adapter: ZendureSolarflow,\n _productKey: string,\n _deviceKey: string,\n _zenHaDeviceDetails?: IZenHaDeviceDetails\n): Ace1500 | Hyper2000 | Sf2400Ac | undefined => {\n switch (_productKey.toLowerCase()) {\n case \"73bktv\":\n return new SfHub1200(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 1200\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 1200\",\n _zenHaDeviceDetails\n );\n case \"a8yh63\":\n return new SfHub2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"HUB 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"HUB 2000\",\n _zenHaDeviceDetails\n );\n case \"ywf7hv\":\n return new Aio2400(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"AIO 2400\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"AIO 2400\",\n _zenHaDeviceDetails\n );\n case \"ja72u0ha\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"gda3tb\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"b3dxda\":\n return new Hyper2000(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Hyper 2000\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Hyper 2000\",\n _zenHaDeviceDetails\n );\n case \"8bm93h\":\n return new Ace1500(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails ? _zenHaDeviceDetails.productModel : \"Ace 1500\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Ace 1500\",\n _zenHaDeviceDetails\n );\n case \"bc8b7f\":\n return new Sf2400Ac(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.deviceName\n : \"Solarflow 2400 AC\",\n _zenHaDeviceDetails\n );\n case \"a4ss5P\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"b1nhmc\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n case \"R3mn8U\":\n return new Sf800(\n _adapter,\n _productKey,\n _deviceKey,\n _zenHaDeviceDetails\n ? _zenHaDeviceDetails.productModel\n : \"Solarflow 800\",\n _zenHaDeviceDetails ? _zenHaDeviceDetails.deviceName : \"Solarflow 800\",\n _zenHaDeviceDetails\n );\n default:\n return undefined;\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAwB;AACxB,qBAAwB;AACxB,uBAA0B;AAC1B,sBAAyB;AACzB,mBAAsB;AACtB,uBAA0B;AAC1B,uBAA0B;AAInB,MAAM,oBAAoB,CAC/B,UACA,aACA,YACA,wBAC+C;AAC/C,UAAQ,YAAY,YAAY,GAAG;AAAA,IACjC,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,oBAAoB,eAAe;AAAA,QACzD,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBACI,oBAAoB,aACpB;AAAA,QACJ;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBACI,oBAAoB,eACpB;AAAA,QACJ,sBAAsB,oBAAoB,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AACE,aAAO;AAAA,EACX;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Sf800Pro_exports = {};
|
|
20
|
+
__export(Sf800Pro_exports, {
|
|
21
|
+
Sf800: () => Sf800
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(Sf800Pro_exports);
|
|
24
|
+
var import_solarflow800ProControlStates = require("../../constants/solarflow800ProControlStates");
|
|
25
|
+
var import_solarflow800ProStates = require("../../constants/solarflow800ProStates");
|
|
26
|
+
var import_ZenHaDevice = require("./ZenHaDevice");
|
|
27
|
+
class Sf800 extends import_ZenHaDevice.ZenHaDevice {
|
|
28
|
+
constructor(_adapter, _productKey, _deviceKey, _productName, _deviceName, _zenHaDeviceDetails) {
|
|
29
|
+
super(
|
|
30
|
+
_adapter,
|
|
31
|
+
_productKey,
|
|
32
|
+
_deviceKey,
|
|
33
|
+
_productName,
|
|
34
|
+
_deviceName,
|
|
35
|
+
_zenHaDeviceDetails
|
|
36
|
+
);
|
|
37
|
+
this.maxInputLimit = 800;
|
|
38
|
+
this.maxOutputLimit = 800;
|
|
39
|
+
this.states = import_solarflow800ProStates.solarflow800ProStates;
|
|
40
|
+
this.controlStates = import_solarflow800ProControlStates.solarflow800ProControlStates;
|
|
41
|
+
}
|
|
42
|
+
async setAcMode(acMode) {
|
|
43
|
+
var _a;
|
|
44
|
+
if (this.adapter.mqttClient && this.productKey && this.deviceKey) {
|
|
45
|
+
if (acMode >= 0 && acMode <= 3) {
|
|
46
|
+
const topic = `iot/${this.productKey}/${this.deviceKey}/properties/write`;
|
|
47
|
+
const setAcMode = { properties: { acMode } };
|
|
48
|
+
this.adapter.log.debug(`[setAcMode] Set AC mode to ${acMode}!`);
|
|
49
|
+
(_a = this.adapter.mqttClient) == null ? void 0 : _a.publish(topic, JSON.stringify(setAcMode));
|
|
50
|
+
const smartMode = await this.adapter.getStateAsync(
|
|
51
|
+
this.productKey + "." + this.deviceKey + ".control.smartMode"
|
|
52
|
+
);
|
|
53
|
+
if (smartMode && !smartMode.val) {
|
|
54
|
+
this.adapter.log.warn(
|
|
55
|
+
`[setAcMode] AC mode was switched and smartMode is false - changes will be written to flash memory. In the worst case, the device may break or changes may no longer be saved!`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
this.adapter.log.error(
|
|
60
|
+
`[setAcMode] AC mode must be a value between 0 and 3!`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
setAcSwitch(acSwitch) {
|
|
66
|
+
var _a;
|
|
67
|
+
if (this.adapter.mqttClient && this.productKey && this.deviceKey) {
|
|
68
|
+
const setAcSwitchContent = {
|
|
69
|
+
properties: { acSwitch: acSwitch ? 1 : 0 }
|
|
70
|
+
};
|
|
71
|
+
this.adapter.log.debug(
|
|
72
|
+
`[setAcSwitch] Set AC Switch for device ${this.deviceKey} to ${acSwitch}!`
|
|
73
|
+
);
|
|
74
|
+
(_a = this.adapter.mqttClient) == null ? void 0 : _a.publish(
|
|
75
|
+
this.iotTopic,
|
|
76
|
+
JSON.stringify(setAcSwitchContent)
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async setDeviceAutomationInOutLimit(limit) {
|
|
81
|
+
var _a;
|
|
82
|
+
if (this.adapter.mqttClient && this.productKey && this.deviceKey) {
|
|
83
|
+
this.adapter.log.debug(
|
|
84
|
+
`[setDeviceAutomationInOutLimit] Set device Automation limit to ${limit}!`
|
|
85
|
+
);
|
|
86
|
+
if (limit) {
|
|
87
|
+
limit = Math.round(limit);
|
|
88
|
+
} else {
|
|
89
|
+
limit = 0;
|
|
90
|
+
}
|
|
91
|
+
if (this.adapter.config.useLowVoltageBlock) {
|
|
92
|
+
const lowVoltageBlockState = await this.adapter.getStateAsync(
|
|
93
|
+
this.productKey + "." + this.deviceKey + ".control.lowVoltageBlock"
|
|
94
|
+
);
|
|
95
|
+
if (lowVoltageBlockState && lowVoltageBlockState.val && lowVoltageBlockState.val == true && limit > 0) {
|
|
96
|
+
limit = 0;
|
|
97
|
+
}
|
|
98
|
+
const fullChargeNeeded = await this.adapter.getStateAsync(
|
|
99
|
+
this.productKey + "." + this.deviceKey + ".control.fullChargeNeeded"
|
|
100
|
+
);
|
|
101
|
+
if (fullChargeNeeded && fullChargeNeeded.val && fullChargeNeeded.val == true && limit > 0) {
|
|
102
|
+
limit = 0;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (limit < 0) {
|
|
106
|
+
if (limit < this.maxInputLimit) {
|
|
107
|
+
limit = this.maxInputLimit;
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
if (limit > this.maxOutputLimit) {
|
|
111
|
+
limit = this.maxOutputLimit;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
this.adapter.msgCounter += 1;
|
|
115
|
+
const timestamp = /* @__PURE__ */ new Date();
|
|
116
|
+
timestamp.setMilliseconds(0);
|
|
117
|
+
this.adapter.log.debug(
|
|
118
|
+
`[setDeviceAutomationInOutLimit] Using HEMS Variant of device automation, as deviceKey '${this.deviceKey}' detected!`
|
|
119
|
+
);
|
|
120
|
+
const _arguments = {
|
|
121
|
+
outputPower: limit > 0 ? limit : 0,
|
|
122
|
+
chargeState: limit > 0 ? 0 : 1,
|
|
123
|
+
chargePower: limit > 0 ? 0 : -limit,
|
|
124
|
+
mode: 9
|
|
125
|
+
};
|
|
126
|
+
const hemsEP = {
|
|
127
|
+
arguments: _arguments,
|
|
128
|
+
function: "hemsEP",
|
|
129
|
+
messageId: this.adapter.msgCounter,
|
|
130
|
+
deviceKey: this.deviceKey,
|
|
131
|
+
timestamp: timestamp.getTime() / 1e3
|
|
132
|
+
};
|
|
133
|
+
(_a = this.adapter.mqttClient) == null ? void 0 : _a.publish(
|
|
134
|
+
this.functionTopic,
|
|
135
|
+
JSON.stringify(hemsEP)
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
141
|
+
0 && (module.exports = {
|
|
142
|
+
Sf800
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=Sf800Pro.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/models/deviceModels/Sf800Pro.ts"],
|
|
4
|
+
"sourcesContent": ["import { solarflow800ProControlStates } from \"../../constants/solarflow800ProControlStates\";\nimport { solarflow800ProStates } from \"../../constants/solarflow800ProStates\";\nimport { ZendureSolarflow } from \"../../main\";\nimport { IHemsEpPayload } from \"../IDeviceAutomationPayload\";\nimport { IZenHaDeviceDetails } from \"../IZenHaDeviceDetails\";\nimport { ZenHaDevice } from \"./ZenHaDevice\";\n\nexport class Sf800 extends ZenHaDevice {\n maxInputLimit = 800;\n maxOutputLimit = 800;\n\n states = solarflow800ProStates;\n controlStates = solarflow800ProControlStates;\n\n public constructor(\n _adapter: ZendureSolarflow,\n _productKey: string,\n _deviceKey: string,\n _productName: string,\n _deviceName: string,\n _zenHaDeviceDetails?: IZenHaDeviceDetails\n ) {\n super(\n _adapter,\n _productKey,\n _deviceKey,\n _productName,\n _deviceName,\n _zenHaDeviceDetails\n );\n }\n\n public async setAcMode(acMode: number): Promise<void> {\n if (this.adapter.mqttClient && this.productKey && this.deviceKey) {\n if (acMode >= 0 && acMode <= 3) {\n const topic = `iot/${this.productKey}/${this.deviceKey}/properties/write`;\n\n const setAcMode = { properties: { acMode: acMode } };\n this.adapter.log.debug(`[setAcMode] Set AC mode to ${acMode}!`);\n this.adapter.mqttClient?.publish(topic, JSON.stringify(setAcMode));\n\n // Check if device is HUB, then check if smartMode is false - if so send a warning to log!\n const smartMode = await this.adapter.getStateAsync(\n this.productKey + \".\" + this.deviceKey + \".control.smartMode\"\n );\n\n if (smartMode && !smartMode.val) {\n this.adapter.log.warn(\n `[setAcMode] AC mode was switched and smartMode is false - changes will be written to flash memory. In the worst case, the device may break or changes may no longer be saved!`\n );\n }\n } else {\n this.adapter.log.error(\n `[setAcMode] AC mode must be a value between 0 and 3!`\n );\n }\n }\n }\n\n public setAcSwitch(acSwitch: boolean): void {\n if (this.adapter.mqttClient && this.productKey && this.deviceKey) {\n const setAcSwitchContent = {\n properties: { acSwitch: acSwitch ? 1 : 0 },\n };\n this.adapter.log.debug(\n `[setAcSwitch] Set AC Switch for device ${this.deviceKey} to ${acSwitch}!`\n );\n this.adapter.mqttClient?.publish(\n this.iotTopic,\n JSON.stringify(setAcSwitchContent)\n );\n }\n }\n\n public async setDeviceAutomationInOutLimit(\n limit: number // can be negative, negative will trigger charging mode\n ): Promise<void> {\n if (this.adapter.mqttClient && this.productKey && this.deviceKey) {\n this.adapter.log.debug(\n `[setDeviceAutomationInOutLimit] Set device Automation limit to ${limit}!`\n );\n\n if (limit) {\n limit = Math.round(limit);\n } else {\n limit = 0;\n }\n\n if (this.adapter.config.useLowVoltageBlock) {\n const lowVoltageBlockState = await this.adapter.getStateAsync(\n this.productKey + \".\" + this.deviceKey + \".control.lowVoltageBlock\"\n );\n if (\n lowVoltageBlockState &&\n lowVoltageBlockState.val &&\n lowVoltageBlockState.val == true &&\n limit > 0\n ) {\n limit = 0;\n }\n\n const fullChargeNeeded = await this.adapter.getStateAsync(\n this.productKey + \".\" + this.deviceKey + \".control.fullChargeNeeded\"\n );\n\n if (\n fullChargeNeeded &&\n fullChargeNeeded.val &&\n fullChargeNeeded.val == true &&\n limit > 0\n ) {\n limit = 0;\n }\n }\n\n if (limit < 0) {\n // Get input limit, make number positive and the new value negative\n if (limit < this.maxInputLimit) {\n limit = this.maxInputLimit;\n }\n } else {\n if (limit > this.maxOutputLimit) {\n limit = this.maxOutputLimit;\n }\n }\n\n this.adapter.msgCounter += 1;\n\n const timestamp = new Date();\n timestamp.setMilliseconds(0);\n\n // Device Automation for Solarflow 2400 AC and Solarflow 800\n this.adapter.log.debug(\n `[setDeviceAutomationInOutLimit] Using HEMS Variant of device automation, as deviceKey '${this.deviceKey}' detected!`\n );\n\n // HEMS Variante\n const _arguments: IHemsEpPayload = {\n outputPower: limit > 0 ? limit : 0,\n chargeState: limit > 0 ? 0 : 1,\n chargePower: limit > 0 ? 0 : -limit,\n mode: 9,\n };\n\n const hemsEP = {\n arguments: _arguments,\n function: \"hemsEP\",\n messageId: this.adapter.msgCounter,\n deviceKey: this.deviceKey,\n timestamp: timestamp.getTime() / 1000,\n };\n this.adapter.mqttClient?.publish(\n this.functionTopic,\n JSON.stringify(hemsEP)\n );\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -37,7 +37,7 @@ class ZenHaDevice {
|
|
|
37
37
|
this.addOrUpdatePackData = async (packData, isSolarFlow) => {
|
|
38
38
|
if (this.adapter && this.productKey && this.deviceKey) {
|
|
39
39
|
await packData.forEach(async (x) => {
|
|
40
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
40
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
|
|
41
41
|
if (x.sn && this.adapter) {
|
|
42
42
|
let batType = "";
|
|
43
43
|
if (this.productKey == "yWF7hV") {
|
|
@@ -127,7 +127,18 @@ class ZenHaDevice {
|
|
|
127
127
|
await ((_g = this.adapter) == null ? void 0 : _g.setState(key + ".socLevel", x.socLevel, true));
|
|
128
128
|
}
|
|
129
129
|
if (x.maxTemp) {
|
|
130
|
-
|
|
130
|
+
const maxTempCelsius = x.maxTemp / 10 - 273.15;
|
|
131
|
+
const maxTempState = await ((_h = this.adapter) == null ? void 0 : _h.getStateAsync(
|
|
132
|
+
key + ".maxTemp"
|
|
133
|
+
));
|
|
134
|
+
if (maxTempState && maxTempState.val && maxTempCelsius != maxTempState.val) {
|
|
135
|
+
await ((_i = this.adapter) == null ? void 0 : _i.setState(
|
|
136
|
+
`${this.productKey}.${this.deviceKey}.lastUpdate`,
|
|
137
|
+
(/* @__PURE__ */ new Date()).getTime(),
|
|
138
|
+
true
|
|
139
|
+
));
|
|
140
|
+
}
|
|
141
|
+
await ((_j = this.adapter) == null ? void 0 : _j.extendObject(key + ".maxTemp", {
|
|
131
142
|
type: "state",
|
|
132
143
|
common: {
|
|
133
144
|
name: {
|
|
@@ -143,14 +154,25 @@ class ZenHaDevice {
|
|
|
143
154
|
},
|
|
144
155
|
native: {}
|
|
145
156
|
}));
|
|
146
|
-
await ((
|
|
157
|
+
await ((_k = this.adapter) == null ? void 0 : _k.setState(
|
|
147
158
|
key + ".maxTemp",
|
|
148
|
-
|
|
159
|
+
maxTempCelsius,
|
|
149
160
|
true
|
|
150
161
|
));
|
|
151
162
|
}
|
|
152
163
|
if (x.minVol) {
|
|
153
|
-
|
|
164
|
+
const minVol = x.minVol / 100;
|
|
165
|
+
const minVolState = await ((_l = this.adapter) == null ? void 0 : _l.getStateAsync(
|
|
166
|
+
key + ".minVol"
|
|
167
|
+
));
|
|
168
|
+
if (minVolState && minVolState.val && minVol != minVolState.val) {
|
|
169
|
+
await ((_m = this.adapter) == null ? void 0 : _m.setState(
|
|
170
|
+
`${this.productKey}.${this.deviceKey}.lastUpdate`,
|
|
171
|
+
(/* @__PURE__ */ new Date()).getTime(),
|
|
172
|
+
true
|
|
173
|
+
));
|
|
174
|
+
}
|
|
175
|
+
await ((_n = this.adapter) == null ? void 0 : _n.extendObject(key + ".minVol", {
|
|
154
176
|
type: "state",
|
|
155
177
|
common: {
|
|
156
178
|
name: "minVol",
|
|
@@ -163,10 +185,10 @@ class ZenHaDevice {
|
|
|
163
185
|
},
|
|
164
186
|
native: {}
|
|
165
187
|
}));
|
|
166
|
-
await ((
|
|
188
|
+
await ((_o = this.adapter) == null ? void 0 : _o.setState(key + ".minVol", minVol, true));
|
|
167
189
|
}
|
|
168
190
|
if (x.batcur) {
|
|
169
|
-
await ((
|
|
191
|
+
await ((_p = this.adapter) == null ? void 0 : _p.extendObject(key + ".batcur", {
|
|
170
192
|
type: "state",
|
|
171
193
|
common: {
|
|
172
194
|
name: "batcur",
|
|
@@ -179,10 +201,21 @@ class ZenHaDevice {
|
|
|
179
201
|
},
|
|
180
202
|
native: {}
|
|
181
203
|
}));
|
|
182
|
-
await ((
|
|
204
|
+
await ((_q = this.adapter) == null ? void 0 : _q.setState(key + ".batcur", x.batcur / 10, true));
|
|
183
205
|
}
|
|
184
206
|
if (x.maxVol) {
|
|
185
|
-
|
|
207
|
+
const maxVol = x.maxVol / 100;
|
|
208
|
+
const maxVolState = await ((_r = this.adapter) == null ? void 0 : _r.getStateAsync(
|
|
209
|
+
key + ".maxVol"
|
|
210
|
+
));
|
|
211
|
+
if (maxVolState && maxVolState.val && maxVol != maxVolState.val) {
|
|
212
|
+
await ((_s = this.adapter) == null ? void 0 : _s.setState(
|
|
213
|
+
`${this.productKey}.${this.deviceKey}.lastUpdate`,
|
|
214
|
+
(/* @__PURE__ */ new Date()).getTime(),
|
|
215
|
+
true
|
|
216
|
+
));
|
|
217
|
+
}
|
|
218
|
+
await ((_t = this.adapter) == null ? void 0 : _t.extendObject(key + ".maxVol", {
|
|
186
219
|
type: "state",
|
|
187
220
|
common: {
|
|
188
221
|
name: "maxVol",
|
|
@@ -195,10 +228,21 @@ class ZenHaDevice {
|
|
|
195
228
|
},
|
|
196
229
|
native: {}
|
|
197
230
|
}));
|
|
198
|
-
await ((
|
|
231
|
+
await ((_u = this.adapter) == null ? void 0 : _u.setState(key + ".maxVol", maxVol, true));
|
|
199
232
|
}
|
|
200
233
|
if (x.totalVol) {
|
|
201
|
-
|
|
234
|
+
const totalVol = x.totalVol / 100;
|
|
235
|
+
const totalVolState = await ((_v = this.adapter) == null ? void 0 : _v.getStateAsync(
|
|
236
|
+
key + ".totalVol"
|
|
237
|
+
));
|
|
238
|
+
if (totalVolState && totalVolState.val && totalVol != totalVolState.val) {
|
|
239
|
+
await ((_w = this.adapter) == null ? void 0 : _w.setState(
|
|
240
|
+
`${this.productKey}.${this.deviceKey}.lastUpdate`,
|
|
241
|
+
(/* @__PURE__ */ new Date()).getTime(),
|
|
242
|
+
true
|
|
243
|
+
));
|
|
244
|
+
}
|
|
245
|
+
await ((_x = this.adapter) == null ? void 0 : _x.extendObject(key + ".totalVol", {
|
|
202
246
|
type: "state",
|
|
203
247
|
common: {
|
|
204
248
|
name: "totalVol",
|
|
@@ -211,14 +255,13 @@ class ZenHaDevice {
|
|
|
211
255
|
},
|
|
212
256
|
native: {}
|
|
213
257
|
}));
|
|
214
|
-
|
|
215
|
-
await ((_q = this.adapter) == null ? void 0 : _q.setState(key + ".totalVol", totalVol, true));
|
|
258
|
+
await ((_y = this.adapter) == null ? void 0 : _y.setState(key + ".totalVol", totalVol, true));
|
|
216
259
|
if (isSolarFlow) {
|
|
217
260
|
this.checkVoltage(totalVol);
|
|
218
261
|
}
|
|
219
262
|
}
|
|
220
263
|
if (x.soh) {
|
|
221
|
-
await ((
|
|
264
|
+
await ((_z = this.adapter) == null ? void 0 : _z.extendObject(key + ".soh", {
|
|
222
265
|
type: "state",
|
|
223
266
|
common: {
|
|
224
267
|
name: {
|
|
@@ -234,10 +277,10 @@ class ZenHaDevice {
|
|
|
234
277
|
},
|
|
235
278
|
native: {}
|
|
236
279
|
}));
|
|
237
|
-
await ((
|
|
280
|
+
await ((_A = this.adapter) == null ? void 0 : _A.setState(key + ".soh", x.soh / 10, true));
|
|
238
281
|
}
|
|
239
282
|
if (x.power) {
|
|
240
|
-
await ((
|
|
283
|
+
await ((_B = this.adapter) == null ? void 0 : _B.extendObject(key + ".power", {
|
|
241
284
|
type: "state",
|
|
242
285
|
common: {
|
|
243
286
|
name: {
|
|
@@ -253,7 +296,7 @@ class ZenHaDevice {
|
|
|
253
296
|
},
|
|
254
297
|
native: {}
|
|
255
298
|
}));
|
|
256
|
-
await ((
|
|
299
|
+
await ((_C = this.adapter) == null ? void 0 : _C.setState(key + ".power", x.power, true));
|
|
257
300
|
}
|
|
258
301
|
let found = false;
|
|
259
302
|
Object.entries(x).forEach(([key2, value]) => {
|