iobroker.zendure-solarflow 1.10.0 → 1.10.3
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/LICENSE +1 -1
- package/README.md +15 -270
- package/build/constants/sharedStates.js +2 -2
- package/build/constants/sharedStates.js.map +1 -1
- package/build/helpers/createCalculationStates.js +2 -2
- package/build/helpers/createCalculationStates.js.map +1 -1
- package/build/helpers/createControlStates.js +2 -2
- package/build/helpers/createControlStates.js.map +2 -2
- package/build/services/adapterService.js +9 -4
- package/build/services/adapterService.js.map +2 -2
- package/build/services/calculationService.js +5 -2
- package/build/services/calculationService.js.map +2 -2
- package/build/services/jobSchedule.js +1 -0
- package/build/services/jobSchedule.js.map +2 -2
- package/build/services/mqttService.js +34 -28
- package/build/services/mqttService.js.map +2 -2
- package/io-package.json +40 -40
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025 Peter Frommert <peter.frommert@outlook.com>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -48,6 +48,20 @@ If you find the adapter useful for you and want to support my work, feel free to
|
|
|
48
48
|
[](https://www.paypal.com/paypalme/PeterFrommert)
|
|
49
49
|
|
|
50
50
|
## Changelog
|
|
51
|
+
### 1.10.3 (2025-01-14)
|
|
52
|
+
|
|
53
|
+
- Fix "Grid Input Power" state if connected with Ace
|
|
54
|
+
|
|
55
|
+
### 1.10.2 (2025-01-14)
|
|
56
|
+
|
|
57
|
+
- Fix calculation of grid input power on ace
|
|
58
|
+
- Correct standby usage of battery if conncted with ace (add additional 10W)
|
|
59
|
+
|
|
60
|
+
### 1.10.1 (2025-01-06)
|
|
61
|
+
|
|
62
|
+
- Fix input limit when hub is bundled with ace
|
|
63
|
+
- Fix calculation when low voltage block is activated
|
|
64
|
+
|
|
51
65
|
### 1.10.0 (2024-12-02)
|
|
52
66
|
|
|
53
67
|
- Add setting to perform a full charge if SOC from Zendure is greater than 50% when on low voltage
|
|
@@ -70,280 +84,11 @@ If you find the adapter useful for you and want to support my work, feel free to
|
|
|
70
84
|
|
|
71
85
|
- New option to force Solarflow device to go offline when "Low Voltage Block"-option is used.
|
|
72
86
|
|
|
73
|
-
### 1.8.8 (2024-09-20)
|
|
74
|
-
|
|
75
|
-
- Improve connection retry, expand the time with every retry attempt.
|
|
76
|
-
- Start "restart adapter job" regardless of connection.
|
|
77
|
-
- Fix Hyper setInputLimit with step
|
|
78
|
-
|
|
79
|
-
### 1.8.7 (2024-09-09)
|
|
80
|
-
|
|
81
|
-
- Fix missing control states for AIO
|
|
82
|
-
|
|
83
|
-
### 1.8.6 (2024-09-06)
|
|
84
|
-
|
|
85
|
-
- Change login method: Added a retry loop for connecting to Zendure Cloud, if the Cloud Service "hangs" or is not available it will retry the connection 3 times.
|
|
86
|
-
|
|
87
|
-
### 1.8.5 (2024-08-26)
|
|
88
|
-
|
|
89
|
-
- Fix missing states for new HUB Firmware when connected to ACE
|
|
90
|
-
- Fix correct max value for AIO
|
|
91
|
-
|
|
92
|
-
### 1.8.4 (2024-08-16)
|
|
93
|
-
|
|
94
|
-
- Add support for Smart Plug, but only Power is available at the moment - unstable as often data is not updated by MQTT
|
|
95
|
-
- Some code improvements
|
|
96
|
-
|
|
97
|
-
### 1.8.3 (2024-08-12)
|
|
98
|
-
|
|
99
|
-
- Fix SOC and energyWhMax Value (counted by type of attached batteries)
|
|
100
|
-
- Add Calculation for Grid Input (only for Ace 1500 and Hyper 2000)
|
|
101
|
-
- Fix suggestions by ioBroker repository checker
|
|
102
|
-
|
|
103
|
-
### 1.7.7 (2024-08-02)
|
|
104
|
-
|
|
105
|
-
- Fix Input and Output limit for Hyper 2000
|
|
106
|
-
|
|
107
|
-
### 1.7.6 (2024-08-01)
|
|
108
|
-
|
|
109
|
-
- Fix support for 'Hyper_Test' devices
|
|
110
|
-
- Improved code for state creation
|
|
111
|
-
|
|
112
|
-
### 1.7.5 (2024-07-31)
|
|
113
|
-
|
|
114
|
-
- Fix controlling AC mode for Hyper 2000 (set acMode to 1: Charge by AC, 2: Output to AC)
|
|
115
|
-
- Show product name in channel name
|
|
116
|
-
- Show battery type as state in packData
|
|
117
|
-
- Show Hyper Temperature in States
|
|
118
|
-
|
|
119
|
-
### 1.7.4 (2024-07-31)
|
|
120
|
-
|
|
121
|
-
- Set max value and step for setInputLimit
|
|
122
|
-
|
|
123
|
-
### 1.7.3 (2024-07-30)
|
|
124
|
-
|
|
125
|
-
- Fix AC input value for Hyper to max. 1200W
|
|
126
|
-
- Fix dcSwitch and acSwitch value
|
|
127
|
-
|
|
128
|
-
### 1.7.2 (2024-07-29)
|
|
129
|
-
|
|
130
|
-
- Fix acSwitch for ACE and Hyper
|
|
131
|
-
|
|
132
|
-
### 1.7.1 (2024-07-29)
|
|
133
|
-
|
|
134
|
-
- Fix missing ACE 1500 when connected with HUB1200 / HUB2000
|
|
135
|
-
- Fix some missing states
|
|
136
|
-
|
|
137
|
-
### 1.7.0 (2024-07-26)
|
|
138
|
-
|
|
139
|
-
- Add support for Hyper 2000 and ACE 1500. Maybe not all states and control parameter are available. Still need to do some investigation.
|
|
140
|
-
- Some minor bugfixes.
|
|
141
|
-
|
|
142
|
-
### 1.6.7 (2024-06-23)
|
|
143
|
-
|
|
144
|
-
- Fix reconnect again. Adapter will now restart every 3 hours to cleanup fully.
|
|
145
|
-
|
|
146
|
-
### 1.6.6 (2024-06-21)
|
|
147
|
-
|
|
148
|
-
- Tweaked recurring refresh of access token.
|
|
149
|
-
|
|
150
|
-
### 1.6.5 (2024-06-20)
|
|
151
|
-
|
|
152
|
-
- Fix reconnect issue. Adapter will now restart if connection semms to be broken.
|
|
153
|
-
|
|
154
|
-
### 1.6.4 (2024-06-03)
|
|
155
|
-
|
|
156
|
-
- Fix services
|
|
157
|
-
|
|
158
|
-
### 1.6.3 (2024-06-03)
|
|
159
|
-
|
|
160
|
-
- Fixed reconnect when connection seems to be dead.
|
|
161
|
-
|
|
162
|
-
### 1.6.2 (2024-05-21)
|
|
163
|
-
|
|
164
|
-
- Changed standby usage to 10W
|
|
165
|
-
|
|
166
|
-
### 1.6.1 (2024-05-13)
|
|
167
|
-
|
|
168
|
-
- Fix issue that sometime data is not updated
|
|
169
|
-
- Add standby usage of HUB (20W) when solarinput is low
|
|
170
|
-
|
|
171
|
-
### 1.5.3 (2024-04-19)
|
|
172
|
-
|
|
173
|
-
- Fix autoRecover datatype issue
|
|
174
|
-
|
|
175
|
-
### 1.5.2 (2024-04-17)
|
|
176
|
-
|
|
177
|
-
- Minor bugfixes and improvements
|
|
178
|
-
|
|
179
|
-
### 1.5.0 (2024-04-12)
|
|
180
|
-
|
|
181
|
-
- Add the possibility to connect to the 'Fallback' MQTT server known as 'Developer MQTT'. This server is read-only - so no control is possible!
|
|
182
|
-
|
|
183
|
-
### 1.4.0 (2024-04-03)
|
|
184
|
-
|
|
185
|
-
- Add calculation states for solar input 1 & 2
|
|
186
|
-
- Add states for wifiState, hubState, pvBrand and inverseMaxPower
|
|
187
|
-
- Rename missleading title for input field 'Username' in settings to 'E-Mail'
|
|
188
|
-
- Fix energyWh, energyWhMax and SOC in calculations if "Low Voltage Check" is not used, it will set the calculation soc to 0 if minSoc (discharge limit) is reached
|
|
189
|
-
- Fix password input in settings
|
|
190
|
-
|
|
191
|
-
### 1.3.0 (2024-03-26)
|
|
192
|
-
|
|
193
|
-
- Fix calculation for outputPackEnergy and packInputEnergy
|
|
194
|
-
- Trigger full telemetry update on adapter start
|
|
195
|
-
- Add state and control for buzzer switch
|
|
196
|
-
- Add state and control for bypass mode and automatic reset of bypass mode next day
|
|
197
|
-
- Add states for pass (Bypass on/off), autoRecover (auto-mode for Bypass next day) and passMode (current bypass mode)
|
|
198
|
-
- Add efficiency factor for calculations (96% charging, 92%-98%\* for discharging - based on measuring from VoltAmpereLux Youtube channel - THANKS!)
|
|
199
|
-
- Changed calculations timeframe from 10secs to 30secs (performance related)
|
|
200
|
-
|
|
201
|
-
### 1.2.5 (2024-03-19)
|
|
202
|
-
|
|
203
|
-
- Fix error "Read-only" state written without ack-flag
|
|
204
|
-
|
|
205
|
-
### 1.2.4 (2024-03-18)
|
|
206
|
-
|
|
207
|
-
- Use setInterval instead of cronjob for refreshing access token
|
|
208
|
-
|
|
209
|
-
### 1.2.3 (2024-03-15)
|
|
210
|
-
|
|
211
|
-
- Fix ACK on onStateChange
|
|
212
|
-
- Update Readme
|
|
213
|
-
|
|
214
|
-
### 1.2.2 (2024-03-14)
|
|
215
|
-
|
|
216
|
-
- Fix issue that renamed devices could not be found.
|
|
217
|
-
- Add states for name, product name, serial ID and configured server.
|
|
218
|
-
- Make "energyWhMax" State writable, so you can adjust the max Value.
|
|
219
|
-
- Sent a warning if a device is configured for a server not in use.
|
|
220
|
-
|
|
221
|
-
### 1.2.1 (2024-03-13)
|
|
222
|
-
|
|
223
|
-
- Fix calculation of soc: Set energyMaxWh to current energyWh if Zendures SOC is 100%
|
|
224
|
-
- Round SOC to max 1 digit after comma.
|
|
225
|
-
|
|
226
|
-
### 1.2.0 (2024-03-13)
|
|
227
|
-
|
|
228
|
-
- EU server is working now.
|
|
229
|
-
- Fix calculation errors in log when calculation is not used
|
|
230
|
-
- More Debug Output
|
|
231
|
-
- Filter SolarFlow devices, so no other devices (e.g. SmartPlugs) will be added.
|
|
232
|
-
- Clear password when settings loaded, as encrypted password is loaded into input and leads to a wrong password.
|
|
233
|
-
|
|
234
|
-
### 1.1.23 (2024-03-11)
|
|
235
|
-
|
|
236
|
-
- Fix calculation of "energy in batteries"
|
|
237
|
-
- Try to implement EU server - untested -
|
|
238
|
-
|
|
239
|
-
### 1.1.22 (2024-03-09)
|
|
240
|
-
|
|
241
|
-
- Try to fix reset values at midnight
|
|
242
|
-
|
|
243
|
-
### 1.1.21 (2024-03-08)
|
|
244
|
-
|
|
245
|
-
- Fix calculation timeframe
|
|
246
|
-
|
|
247
|
-
### 1.1.17 (2024-03-08)
|
|
248
|
-
|
|
249
|
-
- Improve calculations
|
|
250
|
-
- No autocomplete on settings
|
|
251
|
-
|
|
252
|
-
### 1.1.15 (2024-03-06)
|
|
253
|
-
|
|
254
|
-
- Calculations improved
|
|
255
|
-
- Stop energy input on low voltage is now an option in settings
|
|
256
|
-
|
|
257
|
-
### 1.1.14 (2024-03-04)
|
|
258
|
-
|
|
259
|
-
- Reorganize Code
|
|
260
|
-
- Calculations are now optional and have to be enabled in settings
|
|
261
|
-
- Calculation of SOC from voltage and energy go in and out of batteries
|
|
262
|
-
- Stop energy feed if voltage drops under limit
|
|
263
|
-
|
|
264
|
-
### 1.1.11 (2024-03-01)
|
|
265
|
-
|
|
266
|
-
- Fix Solar Input 1 and 2 from the new Zendure firmware
|
|
267
|
-
- Fix remaining charging time
|
|
268
|
-
- Fix calculations overwritten when data with 0 value comes in.
|
|
269
|
-
|
|
270
|
-
### 1.1.8 (2024-02-29)
|
|
271
|
-
|
|
272
|
-
- Fix calculation error
|
|
273
|
-
|
|
274
|
-
### 1.1.7 (2024-02-29)
|
|
275
|
-
|
|
276
|
-
- Add energy calculations for 'today'
|
|
277
|
-
- Fix minutes display bug for remaining charge and discharge time
|
|
278
|
-
|
|
279
|
-
### 1.1.4 (2024-02-28)
|
|
280
|
-
|
|
281
|
-
- Fix timeout issues
|
|
282
|
-
|
|
283
|
-
### 1.1.0 (2024-02-27)
|
|
284
|
-
|
|
285
|
-
- Switched solar input 1 und 2 to adjust the behavior like the offical app
|
|
286
|
-
- Added Calculations folder, remaining charge and discharge time is now available as formatted time
|
|
287
|
-
- Added a note in the settings that this adapter only works with the global server
|
|
288
|
-
|
|
289
|
-
### 1.0.7 (2024-01-16)
|
|
290
|
-
|
|
291
|
-
- Add control for charge and discharge limit
|
|
292
|
-
- Update Readme Screenshot
|
|
293
|
-
|
|
294
|
-
### 1.0.6 (2024-01-16)
|
|
295
|
-
|
|
296
|
-
- Update Readme
|
|
297
|
-
|
|
298
|
-
### 1.0.5 (2024-01-15)
|
|
299
|
-
|
|
300
|
-
- Added state for both Solarflow PV inputs
|
|
301
|
-
|
|
302
|
-
### 1.0.4 (2023-12-16)
|
|
303
|
-
|
|
304
|
-
- Added Timeout for axios
|
|
305
|
-
|
|
306
|
-
### 1.0.3 (2023-12-12)
|
|
307
|
-
|
|
308
|
-
- Password is now encrypted. NOTE: You have to re-enter the password after adapter update!
|
|
309
|
-
|
|
310
|
-
### 1.0.2 (2023-12-12)
|
|
311
|
-
|
|
312
|
-
- Adapter improvements suggested by iobroker team
|
|
313
|
-
- Fixed battery pack temperature (data is in kelvin, so now converting to celcius)
|
|
314
|
-
|
|
315
|
-
### 1.0.1 (2023-11-03)
|
|
316
|
-
|
|
317
|
-
- Fix translationscd so
|
|
318
|
-
- Use 'extendObject' instead of 'setObjectNotExistsAsync'
|
|
319
|
-
- First official release version
|
|
320
|
-
|
|
321
|
-
### 0.1.0-alpha.2 (2023-10-27)
|
|
322
|
-
|
|
323
|
-
- Don't stop the adapter when no login information is provided!
|
|
324
|
-
|
|
325
|
-
### 0.1.0-alpha.1 (2023-10-27)
|
|
326
|
-
|
|
327
|
-
- Fix Typescript typos
|
|
328
|
-
|
|
329
|
-
### 0.1.0-alpha.0 (2023-10-26)
|
|
330
|
-
|
|
331
|
-
- Get battery information
|
|
332
|
-
- Reset states if no new data comes in (e.g. when Hub goes offline). Currently the last value still persist when Hub goes offline, so you may have 'pseudo' data in your states.
|
|
333
|
-
|
|
334
|
-
### 0.0.2 (2023-10-25)
|
|
335
|
-
|
|
336
|
-
- Initital Release, retrieving Hub data, telemetry and setting the output limit works!
|
|
337
|
-
|
|
338
|
-
### 0.0.1 (2023-10-24)
|
|
339
|
-
|
|
340
|
-
- First test
|
|
341
|
-
|
|
342
87
|
## License
|
|
343
88
|
|
|
344
89
|
MIT License
|
|
345
90
|
|
|
346
|
-
Copyright (c)
|
|
91
|
+
Copyright (c) 2025 Peter Frommert
|
|
347
92
|
|
|
348
93
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
349
94
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/sharedStates.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\nimport { ISolarflowState } from \"../models/ISolarflowState\";\n\nexport const sharedStates: ISolarflowState[] = [\n {\n title: \"lastUpdate\",\n nameDe: \"Letztes Update\",\n nameEn: \"Last Update\",\n type: \"number\",\n role: \"value.time\",\n },\n {\n title: \"inputLimit\",\n nameDe: \"Limit der Eingangsleistung\",\n nameEn: \"limit of input power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\nimport { ISolarflowState } from \"../models/ISolarflowState\";\n\nexport const sharedStates: ISolarflowState[] = [\n {\n title: \"lastUpdate\",\n nameDe: \"Letztes Update\",\n nameEn: \"Last Update\",\n type: \"number\",\n role: \"value.time\",\n },\n {\n title: \"inputLimit\",\n nameDe: \"Limit der Eingangsleistung\",\n nameEn: \"limit of input power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"gridInputPower\",\n nameDe: \"Leistung vom Stromnetz\",\n nameEn: \"Grid Input power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"buzzerSwitch\",\n nameDe: \"Sounds am HUB aktivieren\",\n nameEn: \"Enable buzzer on HUB\",\n type: \"boolean\",\n role: \"value\",\n },\n {\n title: \"packState\",\n nameDe: \"Systemstatus\",\n nameEn: \"Status of system\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"electricLevel\",\n nameDe: \"SOC Gesamtsystem\",\n nameEn: \"SOC of the system\",\n type: \"number\",\n role: \"value.battery\",\n unit: \"%\",\n },\n {\n title: \"name\",\n nameDe: \"Name\",\n nameEn: \"Name\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"snNumber\",\n nameDe: \"Seriennnummer\",\n nameEn: \"Serial ID\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"productName\",\n nameDe: \"Produkt Name\",\n nameEn: \"Product name\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"registeredServer\",\n nameDe: \"Registrierter Server\",\n nameEn: \"Registered Server\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"energyPower\",\n nameDe: \"Leistung am Smartmeter\",\n nameEn: \"Smartmeter energy power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"outputPackPower\",\n nameDe: \"Ladeleistung zur Batterie\",\n nameEn: \"charge power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"packInputPower\",\n nameDe: \"Entladeleistung aus Batterie\",\n nameEn: \"discharge power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"solarInputPower\",\n nameDe: \"Leistung der Solarmodule\",\n nameEn: \"solar power\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"pvPower1\",\n nameDe: \"Leistung PV 1\",\n nameEn: \"solar power channel 1\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"pvPower2\",\n nameDe: \"Leistung PV 2\",\n nameEn: \"solar power channel 2\",\n type: \"number\",\n role: \"value.power\",\n unit: \"W\",\n },\n {\n title: \"remainInputTime\",\n nameDe: \"Erwartete Ladedauer\",\n nameEn: \"remaining charge time\",\n type: \"number\",\n role: \"value.interval\",\n },\n {\n title: \"remainOutTime\",\n nameDe: \"Erwartete Entladedauer\",\n nameEn: \"remaining discharge time\",\n type: \"number\",\n role: \"value.interval\",\n },\n {\n title: \"socSet\",\n nameDe: \"Max. SOC\",\n nameEn: \"max. SOC\",\n type: \"number\",\n role: \"value.battery\",\n unit: \"%\",\n },\n {\n title: \"minSoc\",\n nameDe: \"Min. SOC\",\n nameEn: \"min. SOC\",\n type: \"number\",\n role: \"value.battery\",\n unit: \"%\",\n },\n {\n title: \"wifiState\",\n nameDe: \"WiFi Status\",\n nameEn: \"WiFi Status\",\n type: \"string\",\n role: \"value\",\n },\n {\n title: \"hubState\",\n nameDe: \"Verhalten wenn minimale reservierte Ladung erreicht\",\n nameEn: \"Behavior when minimum reserved charge is reached\",\n type: \"number\",\n role: \"value\",\n states: {\n 0: \"Stop output and standby\",\n 1: \"Stop output and shut down\",\n },\n },\n {\n title: \"packNum\",\n nameDe: \"Anzahl der angeschlossenen Batterien\",\n nameEn: \"Number of batteries\",\n type: \"number\",\n role: \"value\",\n },\n];\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,7 +24,7 @@ module.exports = __toCommonJS(createCalculationStates_exports);
|
|
|
24
24
|
const createCalculationStates = async (adapter, productKey, deviceKey, type) => {
|
|
25
25
|
if (type == "hyper" || type == "ace" || type == "solarflow") {
|
|
26
26
|
await (adapter == null ? void 0 : adapter.extendObject(
|
|
27
|
-
`${productKey}.${deviceKey}.calculations.
|
|
27
|
+
`${productKey}.${deviceKey}.calculations.gridInputPowerEnergyTodayWh`,
|
|
28
28
|
{
|
|
29
29
|
type: "state",
|
|
30
30
|
common: {
|
|
@@ -43,7 +43,7 @@ const createCalculationStates = async (adapter, productKey, deviceKey, type) =>
|
|
|
43
43
|
}
|
|
44
44
|
));
|
|
45
45
|
await (adapter == null ? void 0 : adapter.extendObject(
|
|
46
|
-
`${productKey}.${deviceKey}.calculations.
|
|
46
|
+
`${productKey}.${deviceKey}.calculations.gridInputPowerEnergyTodaykWh`,
|
|
47
47
|
{
|
|
48
48
|
type: "state",
|
|
49
49
|
common: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/helpers/createCalculationStates.ts"],
|
|
4
|
-
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const createCalculationStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n type: string\r\n): Promise<void> => {\r\n if (type == \"hyper\" || type == \"ace\" || type == \"solarflow\") {\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.gridInputEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung per AC (Wh)\",\r\n en: \"Charged by AC (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"gridInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.gridInputEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung per AC (kWh)\",\r\n en: \"Charged by AC (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"gridInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n }\r\n\r\n /*\r\n Start Solar Input Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag (Wh)\",\r\n en: \"Todays solar input (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag (kWh)\",\r\n en: \"Todays solar input (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv1EnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV1 (Wh)\",\r\n en: \"Todays solar input PV1 (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv1EnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV1 (kWh)\",\r\n en: \"Todays solar input PV1 (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv2EnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV2 (Wh)\",\r\n en: \"Todays solar input PV2 (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv2EnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV2 (kWh)\",\r\n en: \"Todays solar input PV2 (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n /*\r\n Start output pack Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputPackEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung zu Batterie (Wh)\",\r\n en: \"Todays charge energy to battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputPackEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputPackEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung zur Batterie (kWh)\",\r\n en: \"todays charge energy to battery (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputPackEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n /*\r\n Start Pack Input Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.packInputEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung aus Batterie (Wh)\",\r\n en: \"Todays discharge energy from battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"packInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.packInputEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung aus Batterie (kWh)\",\r\n en: \"Todays discharge energy from battery (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"packInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n /*\r\n Start outputHome Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputHomeEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung ins Haus (Wh)\",\r\n en: \"Todays input energy to home (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputHomeEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputHomeEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung ins Haus (kWh)\",\r\n en: \"Todays input energy to home (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputHomeEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n /*\r\n End Energy states\r\n */\r\n\r\n // Calculation input time\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.remainInputTime`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Erwartete Ladedauer (hh:mm)\",\r\n en: \"remaining charge time (hh:mm)\",\r\n },\r\n type: \"string\",\r\n desc: \"calcRemainInputTime\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Calculation remainOutTime\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.remainOutTime`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Erwartete Entladedauer (hh:mm)\",\r\n en: \"remaining discharge time (hh:mm)\",\r\n },\r\n type: \"string\",\r\n desc: \"calcRemainOutTime\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Calculation SOC\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.calculations.soc`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Ladezustand in % (der nutzbaren Energie)\",\r\n en: \"State of Charge % (of usable energy)\",\r\n },\r\n type: \"number\",\r\n desc: \"soc\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n });\r\n\r\n // Energy Wh\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.energyWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Nutzbare Energie in den Batterien (Wh)\",\r\n en: \"Usable energy in battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"energyWh\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Max. Energy for alle batteries Wh\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.energyWhMax`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Max. nutzbare Energie in allen Batterien (Wh)\",\r\n en: \"Max. usable energy in battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"energyWhMax\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n};\r\n"],
|
|
4
|
+
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\nexport const createCalculationStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n type: string\r\n): Promise<void> => {\r\n if (type == \"hyper\" || type == \"ace\" || type == \"solarflow\") {\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.gridInputPowerEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung per AC (Wh)\",\r\n en: \"Charged by AC (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"gridInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.gridInputPowerEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung per AC (kWh)\",\r\n en: \"Charged by AC (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"gridInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n }\r\n\r\n /*\r\n Start Solar Input Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag (Wh)\",\r\n en: \"Todays solar input (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag (kWh)\",\r\n en: \"Todays solar input (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv1EnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV1 (Wh)\",\r\n en: \"Todays solar input PV1 (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv1EnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV1 (kWh)\",\r\n en: \"Todays solar input PV1 (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv2EnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV2 (Wh)\",\r\n en: \"Todays solar input PV2 (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.solarInputPv2EnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutiger Solarertrag PV2 (kWh)\",\r\n en: \"Todays solar input PV2 (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"solarInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n /*\r\n Start output pack Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputPackEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung zu Batterie (Wh)\",\r\n en: \"Todays charge energy to battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputPackEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputPackEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Ladung zur Batterie (kWh)\",\r\n en: \"todays charge energy to battery (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputPackEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n /*\r\n Start Pack Input Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.packInputEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung aus Batterie (Wh)\",\r\n en: \"Todays discharge energy from battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"packInputEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.packInputEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung aus Batterie (kWh)\",\r\n en: \"Todays discharge energy from battery (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"packInputEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n /*\r\n Start outputHome Energy states\r\n */\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputHomeEnergyTodayWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung ins Haus (Wh)\",\r\n en: \"Todays input energy to home (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputHomeEnergyTodayWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.outputHomeEnergyTodaykWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Heutige Einspeisung ins Haus (kWh)\",\r\n en: \"Todays input energy to home (kWh)\",\r\n },\r\n type: \"number\",\r\n desc: \"outputHomeEnergyTodaykWh\",\r\n role: \"value.energy\",\r\n read: true,\r\n write: false,\r\n unit: \"kWh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n /*\r\n End Energy states\r\n */\r\n\r\n // Calculation input time\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.remainInputTime`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Erwartete Ladedauer (hh:mm)\",\r\n en: \"remaining charge time (hh:mm)\",\r\n },\r\n type: \"string\",\r\n desc: \"calcRemainInputTime\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Calculation remainOutTime\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.remainOutTime`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Erwartete Entladedauer (hh:mm)\",\r\n en: \"remaining discharge time (hh:mm)\",\r\n },\r\n type: \"string\",\r\n desc: \"calcRemainOutTime\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Calculation SOC\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.calculations.soc`, {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Ladezustand in % (der nutzbaren Energie)\",\r\n en: \"State of Charge % (of usable energy)\",\r\n },\r\n type: \"number\",\r\n desc: \"soc\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n });\r\n\r\n // Energy Wh\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.energyWh`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Nutzbare Energie in den Batterien (Wh)\",\r\n en: \"Usable energy in battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"energyWh\",\r\n role: \"value\",\r\n read: true,\r\n write: false,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Max. Energy for alle batteries Wh\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.calculations.energyWhMax`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Max. nutzbare Energie in allen Batterien (Wh)\",\r\n en: \"Max. usable energy in battery (Wh)\",\r\n },\r\n type: \"number\",\r\n desc: \"energyWhMax\",\r\n role: \"value\",\r\n read: true,\r\n write: true,\r\n unit: \"Wh\",\r\n },\r\n native: {},\r\n }\r\n );\r\n};\r\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -253,8 +253,8 @@ const createControlStates = async (adapter, productKey, deviceKey, type) => {
|
|
|
253
253
|
read: true,
|
|
254
254
|
write: true,
|
|
255
255
|
min: 0,
|
|
256
|
-
max: type == "ace" ? 900 : 1200,
|
|
257
|
-
step: type == "ace" ? 100 : 1,
|
|
256
|
+
max: type == "ace" || type == "solarflow" ? 900 : 1200,
|
|
257
|
+
step: type == "ace" || type == "solarflow" ? 100 : 1,
|
|
258
258
|
unit: "W"
|
|
259
259
|
},
|
|
260
260
|
native: {}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/helpers/createControlStates.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { ZendureSolarflow } from \"../main\";\r\n\r\nexport const createControlStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n type: string\r\n): Promise<void> => {\r\n // Create control folder\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.control`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Steuerung f\u00FCr Ger\u00E4t \" + deviceKey,\r\n en: \"Control for device \" + deviceKey,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n if (type != \"smartPlug\") {\r\n // State zum Setzen des Charge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.chargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Lade-Limits\",\r\n en: \"Control of the charge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"chargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 40,\r\n max: 100,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.chargeLimit`);\r\n\r\n // State zum Setzen des Discharge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Entlade-Limits\",\r\n en: \"Control of the discharge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"dischargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: 90,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`\r\n );\r\n\r\n // State zum Setzen des Buzzers\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Sounds am HUB aktivieren\",\r\n en: \"Enable buzzer on HUB\",\r\n },\r\n type: \"boolean\",\r\n desc: \"buzzerSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n if (\r\n type == \"aio\" ||\r\n type == \"solarflow\" ||\r\n type == \"hyper\" ||\r\n type == \"ace\"\r\n ) {\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.setOutputLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Ausgangsleistung\",\r\n en: \"Control of the output limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setOutputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Subcribe to control states\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.setOutputLimit`\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`\r\n );\r\n\r\n // State zum Setzen des Bypass Modus\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.passMode`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einstellung des Bypass Modus\",\r\n en: \"Setting of bypass mode\",\r\n },\r\n type: \"number\",\r\n desc: \"passMode\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n states: {\r\n 0: \"Automatic\",\r\n 1: \"Always off\",\r\n 2: \"Always on\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.passMode`);\r\n\r\n // State zum Setzen des Auto-Modus vom Bypass\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.autoRecover`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Am n\u00E4chsten Tag Bypass auf Automatik\",\r\n en: \"Automatic recovery of bypass\",\r\n },\r\n type: \"boolean\",\r\n desc: \"autoRecover\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.autoRecover`\r\n );\r\n\r\n if (adapter.config.useLowVoltageBlock) {\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Niedrige Batteriespannung erkannt\",\r\n en: \"Low Voltage on battery detected\",\r\n },\r\n type: \"boolean\",\r\n desc: \"lowVoltageBlock\",\r\n role: \"indicator.lowbat\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`\r\n );\r\n\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.fullChargeNeeded`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Auf 100% laden, Akku muss kalibriert werden!\",\r\n en: \"Charge to 100%, battery needs to be calibrated\",\r\n },\r\n type: \"boolean\",\r\n desc: \"fullChargeNeeded\",\r\n role: \"indicator.lowbat\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.fullChargeNeeded`\r\n );\r\n\r\n // State zum Setzen des Input Limit (AC)\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.hubState`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Verhalten wenn minimale reservierte Ladung erreicht\",\r\n en: \"Behavior when minimum reserved charge is reached\",\r\n },\r\n type: \"number\",\r\n desc: \"hubState\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: 1,\r\n states: {\r\n 0: \"Stop output and standby\",\r\n 1: \"Stop output and shut down\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.hubState`);\r\n }\r\n\r\n if (type == \"solarflow\" || type == \"hyper\" || type == \"ace\") {\r\n // State zum Setzen des Input Limit (AC)\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.setInputLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Eingangsleistung\",\r\n en: \"Control of the input limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setInputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: type == \"ace\" ? 900 : 1200,\r\n step: type == \"ace\" ? 100 : 1,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.setInputLimit`\r\n );\r\n\r\n // State zum Setzen des AC Schalters\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.acSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"AC Schalter\",\r\n en: \"AC switch\",\r\n },\r\n type: \"boolean\",\r\n desc: \"acSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.acSwitch`);\r\n\r\n // State zum Setzen des AC Modus\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.acMode`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"AC Modus\",\r\n en: \"AC mode\",\r\n },\r\n type: \"number\",\r\n desc: \"acMode\",\r\n role: \"switch\",\r\n min: 0,\r\n max: 2,\r\n step: 1,\r\n read: true,\r\n write: true,\r\n states: {\r\n 0: \"Nothing\",\r\n 1: \"AC input mode\",\r\n 2: \"AC output mode\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.acMode`);\r\n }\r\n }\r\n\r\n // States only for ACE 1500\r\n if (type == \"ace\") {\r\n // State zum Setzen des DC Schalters\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dcSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"DC Schalter\",\r\n en: \"DC switch\",\r\n },\r\n type: \"boolean\",\r\n desc: \"dcSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.dcSwitch`);\r\n }\r\n }\r\n};\r\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/indent */\r\n\r\nimport { ZendureSolarflow } from \"../main\";\r\n\r\nexport const createControlStates = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n type: string\r\n): Promise<void> => {\r\n // Create control folder\r\n await adapter?.extendObject(`${productKey}.${deviceKey}.control`, {\r\n type: \"channel\",\r\n common: {\r\n name: {\r\n de: \"Steuerung f\u00FCr Ger\u00E4t \" + deviceKey,\r\n en: \"Control for device \" + deviceKey,\r\n },\r\n },\r\n native: {},\r\n });\r\n\r\n if (type != \"smartPlug\") {\r\n // State zum Setzen des Charge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.chargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Lade-Limits\",\r\n en: \"Control of the charge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"chargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 40,\r\n max: 100,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.chargeLimit`);\r\n\r\n // State zum Setzen des Discharge Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Setzen des Entlade-Limits\",\r\n en: \"Control of the discharge limit\",\r\n },\r\n type: \"number\",\r\n desc: \"dischargeLimit\",\r\n role: \"value.battery\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: 90,\r\n unit: \"%\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.dischargeLimit`\r\n );\r\n\r\n // State zum Setzen des Buzzers\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Sounds am HUB aktivieren\",\r\n en: \"Enable buzzer on HUB\",\r\n },\r\n type: \"boolean\",\r\n desc: \"buzzerSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n if (\r\n type == \"aio\" ||\r\n type == \"solarflow\" ||\r\n type == \"hyper\" ||\r\n type == \"ace\"\r\n ) {\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.setOutputLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Ausgangsleistung\",\r\n en: \"Control of the output limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setOutputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n // Subcribe to control states\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.setOutputLimit`\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.buzzerSwitch`\r\n );\r\n\r\n // State zum Setzen des Bypass Modus\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.passMode`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einstellung des Bypass Modus\",\r\n en: \"Setting of bypass mode\",\r\n },\r\n type: \"number\",\r\n desc: \"passMode\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n states: {\r\n 0: \"Automatic\",\r\n 1: \"Always off\",\r\n 2: \"Always on\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.passMode`);\r\n\r\n // State zum Setzen des Auto-Modus vom Bypass\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.autoRecover`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Am n\u00E4chsten Tag Bypass auf Automatik\",\r\n en: \"Automatic recovery of bypass\",\r\n },\r\n type: \"boolean\",\r\n desc: \"autoRecover\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.autoRecover`\r\n );\r\n\r\n if (adapter.config.useLowVoltageBlock) {\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Niedrige Batteriespannung erkannt\",\r\n en: \"Low Voltage on battery detected\",\r\n },\r\n type: \"boolean\",\r\n desc: \"lowVoltageBlock\",\r\n role: \"indicator.lowbat\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`\r\n );\r\n\r\n // State zum Setzen des Output Limit\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.fullChargeNeeded`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Auf 100% laden, Akku muss kalibriert werden!\",\r\n en: \"Charge to 100%, battery needs to be calibrated\",\r\n },\r\n type: \"boolean\",\r\n desc: \"fullChargeNeeded\",\r\n role: \"indicator.lowbat\",\r\n read: true,\r\n write: false,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.fullChargeNeeded`\r\n );\r\n\r\n // State zum Setzen des Input Limit (AC)\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.hubState`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Verhalten wenn minimale reservierte Ladung erreicht\",\r\n en: \"Behavior when minimum reserved charge is reached\",\r\n },\r\n type: \"number\",\r\n desc: \"hubState\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: 1,\r\n states: {\r\n 0: \"Stop output and standby\",\r\n 1: \"Stop output and shut down\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.hubState`);\r\n }\r\n\r\n if (type == \"solarflow\" || type == \"hyper\" || type == \"ace\") {\r\n // State zum Setzen des Input Limit (AC)\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.setInputLimit`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"Einzustellende Eingangsleistung\",\r\n en: \"Control of the input limit\",\r\n },\r\n type: \"number\",\r\n desc: \"setInputLimit\",\r\n role: \"value.power\",\r\n read: true,\r\n write: true,\r\n min: 0,\r\n max: type == \"ace\" || type == \"solarflow\" ? 900 : 1200,\r\n step: type == \"ace\" || type == \"solarflow\" ? 100 : 1,\r\n unit: \"W\",\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(\r\n `${productKey}.${deviceKey}.control.setInputLimit`\r\n );\r\n\r\n // State zum Setzen des AC Schalters\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.acSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"AC Schalter\",\r\n en: \"AC switch\",\r\n },\r\n type: \"boolean\",\r\n desc: \"acSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.acSwitch`);\r\n\r\n // State zum Setzen des AC Modus\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.acMode`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"AC Modus\",\r\n en: \"AC mode\",\r\n },\r\n type: \"number\",\r\n desc: \"acMode\",\r\n role: \"switch\",\r\n min: 0,\r\n max: 2,\r\n step: 1,\r\n read: true,\r\n write: true,\r\n states: {\r\n 0: \"Nothing\",\r\n 1: \"AC input mode\",\r\n 2: \"AC output mode\",\r\n },\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.acMode`);\r\n }\r\n }\r\n\r\n // States only for ACE 1500\r\n if (type == \"ace\") {\r\n // State zum Setzen des DC Schalters\r\n await adapter?.extendObject(\r\n `${productKey}.${deviceKey}.control.dcSwitch`,\r\n {\r\n type: \"state\",\r\n common: {\r\n name: {\r\n de: \"DC Schalter\",\r\n en: \"DC switch\",\r\n },\r\n type: \"boolean\",\r\n desc: \"dcSwitch\",\r\n role: \"switch\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n }\r\n );\r\n\r\n adapter?.subscribeStates(`${productKey}.${deviceKey}.control.dcSwitch`);\r\n }\r\n }\r\n};\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -30,11 +30,16 @@ const updateSolarFlowState = async (adapter, productKey, deviceKey, state, val)
|
|
|
30
30
|
await (adapter == null ? void 0 : adapter.setState(`${productKey}.${deviceKey}.${state}`, val, true));
|
|
31
31
|
};
|
|
32
32
|
const updateSolarFlowControlState = async (adapter, productKey, deviceKey, state, val) => {
|
|
33
|
-
await (adapter == null ? void 0 : adapter.
|
|
34
|
-
`${productKey}.${deviceKey}.control.${state}
|
|
35
|
-
val,
|
|
36
|
-
true
|
|
33
|
+
const stateExist = await (adapter == null ? void 0 : adapter.objectExists(
|
|
34
|
+
`${productKey}.${deviceKey}.control.${state}`
|
|
37
35
|
));
|
|
36
|
+
if (stateExist) {
|
|
37
|
+
await (adapter == null ? void 0 : adapter.setState(
|
|
38
|
+
`${productKey}.${deviceKey}.control.${state}`,
|
|
39
|
+
val,
|
|
40
|
+
true
|
|
41
|
+
));
|
|
42
|
+
}
|
|
38
43
|
};
|
|
39
44
|
const checkVoltage = async (adapter, productKey, deviceKey, voltage) => {
|
|
40
45
|
if (voltage < 46.1) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/services/adapterService.ts"],
|
|
4
|
-
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\nimport { setSocToZero } from \"./calculationService\";\r\nimport { setDischargeLimit, setOutputLimit } from \"./mqttService\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\n\r\nexport const updateSolarFlowState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.setState(`${productKey}.${deviceKey}.${state}`, val, true);\r\n};\r\n\r\nexport const updateSolarFlowControlState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAA6B;AAC7B,yBAAkD;AAI3C,MAAM,uBAAuB,OAClC,SACA,YACA,WACA,OACA,QACkB;AAClB,SAAM,mCAAS,SAAS,GAAG,UAAU,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK;AACtE;AAEO,MAAM,8BAA8B,OACzC,SACA,YACA,WACA,OACA,QACkB;
|
|
4
|
+
"sourcesContent": ["import { ZendureSolarflow } from \"../main\";\r\nimport { setSocToZero } from \"./calculationService\";\r\nimport { setDischargeLimit, setOutputLimit } from \"./mqttService\";\r\n\r\n/* eslint-disable @typescript-eslint/indent */\r\n\r\nexport const updateSolarFlowState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n await adapter?.setState(`${productKey}.${deviceKey}.${state}`, val, true);\r\n};\r\n\r\nexport const updateSolarFlowControlState = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n state: string,\r\n val: number | string | boolean\r\n): Promise<void> => {\r\n // First check if state exist\r\n const stateExist = await adapter?.objectExists(\r\n `${productKey}.${deviceKey}.control.${state}`\r\n );\r\n\r\n // Update the control state\r\n if (stateExist) {\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.${state}`,\r\n val,\r\n true\r\n );\r\n }\r\n};\r\n\r\nexport const checkVoltage = async (\r\n adapter: ZendureSolarflow,\r\n productKey: string,\r\n deviceKey: string,\r\n voltage: number\r\n): Promise<void> => {\r\n if (voltage < 46.1) {\r\n if (adapter.config.useCalculation) {\r\n setSocToZero(adapter, productKey, deviceKey);\r\n }\r\n\r\n if (adapter.config.useLowVoltageBlock) {\r\n // Activate Low Voltage Block\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n true,\r\n true\r\n );\r\n\r\n // Low Voltage Block activated, stop power input immediately\r\n setOutputLimit(adapter, productKey, deviceKey, 0);\r\n\r\n if (adapter.config.forceShutdownOnLowVoltage) {\r\n const currentSoc = await adapter.getStateAsync(\r\n `${productKey}.${deviceKey}.electricLevel`\r\n );\r\n\r\n if (currentSoc && Number(currentSoc.val) > 50) {\r\n // We can't shut down the device. Full charge needed!\r\n if (adapter.config.fullChargeIfNeeded) {\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.fullChargeNeeded`,\r\n true,\r\n true\r\n );\r\n }\r\n } else {\r\n if (currentSoc && currentSoc.val) {\r\n setDischargeLimit(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n Number(currentSoc.val)\r\n );\r\n }\r\n\r\n // Check if device setting is correct\r\n const hubState = await adapter.getStateAsync(\r\n `${productKey}.${deviceKey}.hubState`\r\n );\r\n\r\n if (!hubState || Number(hubState.val) != 1) {\r\n adapter.log.warn(\r\n `[checkVoltage] hubState is not set to 'Stop output and shut down', device will NOT go offline!`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n } else if (voltage >= 47.5) {\r\n // Deactivate Low Voltage Block\r\n const lowVoltageBlock = await adapter.getStateAsync(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`\r\n );\r\n\r\n if (lowVoltageBlock && lowVoltageBlock.val == true) {\r\n await adapter?.setState(\r\n `${productKey}.${deviceKey}.control.lowVoltageBlock`,\r\n false,\r\n true\r\n );\r\n\r\n setDischargeLimit(\r\n adapter,\r\n productKey,\r\n deviceKey,\r\n adapter.config.dischargeLimit ? adapter.config.dischargeLimit : 10\r\n );\r\n }\r\n }\r\n};\r\n\r\nexport const checkDevicesServer = async (\r\n adapter: ZendureSolarflow\r\n): Promise<void> => {\r\n const channels = await adapter.getChannelsAsync();\r\n\r\n channels.forEach(async (channel) => {\r\n if (channel._id) {\r\n const splitted = channel._id.split(\".\");\r\n if (splitted.length == 4) {\r\n const productKey = splitted[2];\r\n const deviceKey = splitted[3];\r\n\r\n const currentServerState = await adapter.getStateAsync(\r\n `${productKey}.${deviceKey}.registeredServer`\r\n );\r\n\r\n if (\r\n currentServerState &&\r\n currentServerState.val &&\r\n currentServerState.val != adapter.config.server\r\n ) {\r\n adapter.log.warn(\r\n `Device with ProductKey '${productKey}' and DeviceKey '${deviceKey}' was configured on server '${currentServerState.val}', but adapter is configured to use server '${adapter.config.server}'! No data will be available!`\r\n );\r\n }\r\n }\r\n }\r\n });\r\n};\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -32,7 +32,7 @@ const calculationStateKeys = [
|
|
|
32
32
|
"outputPack",
|
|
33
33
|
"outputPack",
|
|
34
34
|
"solarInput",
|
|
35
|
-
"
|
|
35
|
+
"gridInputPower",
|
|
36
36
|
"pvPower1",
|
|
37
37
|
"pvPower2"
|
|
38
38
|
];
|
|
@@ -87,6 +87,9 @@ const calculateSocAndEnergy = async (adapter, productKey, deviceKey, stateKey, v
|
|
|
87
87
|
const currentEnergyMaxState = await (adapter == null ? void 0 : adapter.getStateAsync(
|
|
88
88
|
productKey + "." + deviceKey + ".calculations.energyWhMax"
|
|
89
89
|
));
|
|
90
|
+
const lowVoltageBlock = await (adapter == null ? void 0 : adapter.getStateAsync(
|
|
91
|
+
productKey + "." + deviceKey + ".control.lowVoltageBlock"
|
|
92
|
+
));
|
|
90
93
|
const currentMaxValue = Number(
|
|
91
94
|
currentEnergyMaxState ? currentEnergyMaxState.val : 0
|
|
92
95
|
);
|
|
@@ -126,7 +129,7 @@ const calculateSocAndEnergy = async (adapter, productKey, deviceKey, stateKey, v
|
|
|
126
129
|
soc > 100 ? 100 : soc,
|
|
127
130
|
true
|
|
128
131
|
));
|
|
129
|
-
if (newValue > currentMaxValue) {
|
|
132
|
+
if (newValue > currentMaxValue && !(lowVoltageBlock == null ? void 0 : lowVoltageBlock.val)) {
|
|
130
133
|
await (adapter == null ? void 0 : adapter.setState(
|
|
131
134
|
`${productKey}.${deviceKey}.calculations.energyWhMax`,
|
|
132
135
|
newValue,
|