iobroker.zendure-solarflow 3.0.0 → 3.0.2

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.
@@ -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
- await ((_h = this.adapter) == null ? void 0 : _h.extendObject(key + ".maxTemp", {
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 ((_i = this.adapter) == null ? void 0 : _i.setState(
157
+ await ((_k = this.adapter) == null ? void 0 : _k.setState(
147
158
  key + ".maxTemp",
148
- x.maxTemp / 10 - 273.15,
159
+ maxTempCelsius,
149
160
  true
150
161
  ));
151
162
  }
152
163
  if (x.minVol) {
153
- await ((_j = this.adapter) == null ? void 0 : _j.extendObject(key + ".minVol", {
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 ((_k = this.adapter) == null ? void 0 : _k.setState(key + ".minVol", x.minVol / 100, true));
188
+ await ((_o = this.adapter) == null ? void 0 : _o.setState(key + ".minVol", minVol, true));
167
189
  }
168
190
  if (x.batcur) {
169
- await ((_l = this.adapter) == null ? void 0 : _l.extendObject(key + ".batcur", {
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 ((_m = this.adapter) == null ? void 0 : _m.setState(key + ".batcur", x.batcur / 10, true));
204
+ await ((_q = this.adapter) == null ? void 0 : _q.setState(key + ".batcur", x.batcur / 10, true));
183
205
  }
184
206
  if (x.maxVol) {
185
- await ((_n = this.adapter) == null ? void 0 : _n.extendObject(key + ".maxVol", {
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 ((_o = this.adapter) == null ? void 0 : _o.setState(key + ".maxVol", x.maxVol / 100, true));
231
+ await ((_u = this.adapter) == null ? void 0 : _u.setState(key + ".maxVol", maxVol, true));
199
232
  }
200
233
  if (x.totalVol) {
201
- await ((_p = this.adapter) == null ? void 0 : _p.extendObject(key + ".totalVol", {
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
- const totalVol = x.totalVol / 100;
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 ((_r = this.adapter) == null ? void 0 : _r.extendObject(key + ".soh", {
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 ((_s = this.adapter) == null ? void 0 : _s.setState(key + ".soh", x.soh / 10, true));
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 ((_t = this.adapter) == null ? void 0 : _t.extendObject(key + ".power", {
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 ((_u = this.adapter) == null ? void 0 : _u.setState(key + ".power", x.power, true));
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]) => {
@@ -876,7 +919,7 @@ class ZenHaDevice {
876
919
  val,
877
920
  true
878
921
  ));
879
- if ((currentValue == null ? void 0 : currentValue.val) != val) {
922
+ if ((currentValue == null ? void 0 : currentValue.val) != val && state != "wifiState") {
880
923
  await ((_b = this.adapter) == null ? void 0 : _b.setState(
881
924
  `${this.productKey}.${this.deviceKey}.lastUpdate`,
882
925
  (/* @__PURE__ */ new Date()).getTime(),