iobroker.sigenergy 2.2.7 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/io-package.json +13 -13
- package/main.js +76 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -153,6 +153,9 @@ Status and power readings for the DC charger.
|
|
|
153
153
|
|
|
154
154
|
## Changelog
|
|
155
155
|
|
|
156
|
+
### 2.3.0 (2026-06-10)
|
|
157
|
+
- (ssbingo) feat: add common.states enum maps for emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; wire PSS/PID/AC Charger write registers (FC06/FC10) with subscribe and onStateChange handlers
|
|
158
|
+
|
|
156
159
|
### 2.2.7 (2026-06-10)
|
|
157
160
|
- (ssbingo) fix: add missing native defaults enableSmartLoads/enableCumulativeEnergy/enableGridCode to io-package.json
|
|
158
161
|
- (ssbingo) fix: update register 30003 desc with V2.7 EMS modes 5 (FullFeedIn) and 9 (Custom)
|
package/io-package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "sigenergy",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.3.0",
|
|
5
5
|
"news": {
|
|
6
|
-
"2.
|
|
7
|
-
"en": "(ssbingo)
|
|
8
|
-
"de": "(ssbingo)
|
|
9
|
-
"ru": "(ssbingo)
|
|
10
|
-
"pt": "(ssbingo)
|
|
11
|
-
"nl": "(ssbingo)
|
|
12
|
-
"fr": "(ssbingo)
|
|
13
|
-
"it": "(ssbingo)
|
|
14
|
-
"es": "(ssbingo)
|
|
15
|
-
"pl": "(ssbingo)
|
|
16
|
-
"uk": "(ssbingo)
|
|
17
|
-
"zh-cn": "(ssbingo)
|
|
6
|
+
"2.3.0": {
|
|
7
|
+
"en": "(ssbingo) feat: add common.states enum maps for emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; wire PSS/PID/AC Charger write registers (FC06/FC10) with subscribe and onStateChange handlers",
|
|
8
|
+
"de": "(ssbingo) feat: common.states Enum-Maps für emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState ergänzt; PSS/PID/AC-Ladegerät Schreib-Register (FC06/FC10) mit Subscribe und onStateChange-Handler verdrahtet",
|
|
9
|
+
"ru": "(ssbingo) feat: добавлены enum-карты common.states для emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; подключены регистры записи PSS/PID/AC-зарядника (FC06/FC10) с обработчиками subscribe и onStateChange",
|
|
10
|
+
"pt": "(ssbingo) feat: mapas enum common.states adicionados para emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; registos de escrita PSS/PID/AC Charger (FC06/FC10) com subscribe e handlers onStateChange",
|
|
11
|
+
"nl": "(ssbingo) feat: common.states enum-maps toegevoegd voor emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; PSS/PID/AC Charger schrijfregisters (FC06/FC10) gekoppeld met subscribe en onStateChange-handlers",
|
|
12
|
+
"fr": "(ssbingo) feat: cartes enum common.states ajoutées pour emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState ; registres d'écriture PSS/PID/AC Charger (FC06/FC10) câblés avec subscribe et handlers onStateChange",
|
|
13
|
+
"it": "(ssbingo) feat: mappe enum common.states aggiunte per emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; registri di scrittura PSS/PID/AC Charger (FC06/FC10) cablati con subscribe e handler onStateChange",
|
|
14
|
+
"es": "(ssbingo) feat: mapas enum common.states añadidos para emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; registros de escritura PSS/PID/AC Charger (FC06/FC10) conectados con subscribe y handlers onStateChange",
|
|
15
|
+
"pl": "(ssbingo) feat: mapy enum common.states dodane dla emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; rejestry zapisu PSS/PID/AC Charger (FC06/FC10) podłączone z subscribe i handlerami onStateChange",
|
|
16
|
+
"uk": "(ssbingo) feat: enum-карти common.states додано для emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState; реєстри запису PSS/PID/AC Charger (FC06/FC10) підключено з subscribe та обробниками onStateChange",
|
|
17
|
+
"zh-cn": "(ssbingo) feat: 为 emsWorkMode/runningState/remoteEmsMode/dcCharger.runningState 添加 common.states 枚举映射;连接 PSS/PID/交流充电桩写寄存器(FC06/FC10),含 subscribe 和 onStateChange 处理器"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"titleLang": {
|
package/main.js
CHANGED
|
@@ -20,11 +20,25 @@ const {
|
|
|
20
20
|
PLANT_WRITE_REGISTERS,
|
|
21
21
|
INVERTER_WRITE_REGISTERS,
|
|
22
22
|
DC_CHARGER_WRITE_REGISTERS,
|
|
23
|
+
AC_CHARGER_WRITE_REGISTERS,
|
|
24
|
+
PSS_WRITE_REGISTERS,
|
|
25
|
+
PID_WRITE_REGISTERS,
|
|
26
|
+
RUNNING_STATES,
|
|
27
|
+
EMS_WORK_MODES,
|
|
28
|
+
REMOTE_EMS_MODES,
|
|
29
|
+
DC_CHARGER_RUNNING_STATES,
|
|
23
30
|
} = require('./lib/registers');
|
|
24
31
|
const SigenMicroScanner = require('./lib/scanner');
|
|
25
32
|
const { getRegistersForDevice } = require('./lib/sigenMicroRegisters');
|
|
26
33
|
const adapterVersion = require('./package.json').version;
|
|
27
34
|
|
|
35
|
+
const ENUM_STATES_MAP = {
|
|
36
|
+
'plant.emsWorkMode': EMS_WORK_MODES,
|
|
37
|
+
'plant.runningState': RUNNING_STATES,
|
|
38
|
+
'dcCharger.runningState': DC_CHARGER_RUNNING_STATES,
|
|
39
|
+
'plant.control.remoteEmsMode': REMOTE_EMS_MODES,
|
|
40
|
+
};
|
|
41
|
+
|
|
28
42
|
class Sigenergy extends utils.Adapter {
|
|
29
43
|
/**
|
|
30
44
|
* @param {Partial<utils.AdapterOptions>} [options] - Adapter options
|
|
@@ -842,6 +856,14 @@ class Sigenergy extends utils.Adapter {
|
|
|
842
856
|
}
|
|
843
857
|
await this._createStateFromRegister(reg);
|
|
844
858
|
}
|
|
859
|
+
await this._createChannel('acCharger.control', 'AC Charger Control');
|
|
860
|
+
for (const reg of AC_CHARGER_WRITE_REGISTERS) {
|
|
861
|
+
if (this._stopped) {
|
|
862
|
+
return;
|
|
863
|
+
}
|
|
864
|
+
await this._createWriteStateFromRegister(reg);
|
|
865
|
+
}
|
|
866
|
+
this.subscribeStates('acCharger.control.*');
|
|
845
867
|
}
|
|
846
868
|
|
|
847
869
|
if (this.config.hasDcCharger) {
|
|
@@ -882,17 +904,32 @@ class Sigenergy extends utils.Adapter {
|
|
|
882
904
|
}
|
|
883
905
|
await this._createStateFromRegister(reg);
|
|
884
906
|
}
|
|
907
|
+
for (const reg of PSS_WRITE_REGISTERS) {
|
|
908
|
+
if (this._stopped) {
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
await this._createWriteStateFromRegister(reg);
|
|
912
|
+
}
|
|
913
|
+
this.subscribeStates('pss.control.*');
|
|
885
914
|
}
|
|
886
915
|
|
|
887
916
|
if (this.config.enablePid) {
|
|
888
917
|
this.log.debug('Creating PID objects');
|
|
889
918
|
await this._createChannel('pid', 'PV Insulation Detection');
|
|
919
|
+
await this._createChannel('pid.control', 'PID Control');
|
|
890
920
|
for (const reg of PID_READ_REGISTERS) {
|
|
891
921
|
if (this._stopped) {
|
|
892
922
|
return;
|
|
893
923
|
}
|
|
894
924
|
await this._createStateFromRegister(reg);
|
|
895
925
|
}
|
|
926
|
+
for (const reg of PID_WRITE_REGISTERS) {
|
|
927
|
+
if (this._stopped) {
|
|
928
|
+
return;
|
|
929
|
+
}
|
|
930
|
+
await this._createWriteStateFromRegister(reg);
|
|
931
|
+
}
|
|
932
|
+
this.subscribeStates('pid.control.*');
|
|
896
933
|
}
|
|
897
934
|
|
|
898
935
|
if (this.config.enableEssPreheating) {
|
|
@@ -960,16 +997,22 @@ class Sigenergy extends utils.Adapter {
|
|
|
960
997
|
type = 'number';
|
|
961
998
|
}
|
|
962
999
|
|
|
1000
|
+
const common = {
|
|
1001
|
+
name: reg.desc,
|
|
1002
|
+
type,
|
|
1003
|
+
role,
|
|
1004
|
+
unit: reg.unit || '',
|
|
1005
|
+
read: true,
|
|
1006
|
+
write: false,
|
|
1007
|
+
};
|
|
1008
|
+
const states = ENUM_STATES_MAP[reg.name];
|
|
1009
|
+
if (states) {
|
|
1010
|
+
common.states = states;
|
|
1011
|
+
}
|
|
1012
|
+
|
|
963
1013
|
await this.setObjectNotExistsAsync(reg.name, {
|
|
964
1014
|
type: 'state',
|
|
965
|
-
common
|
|
966
|
-
name: reg.desc,
|
|
967
|
-
type,
|
|
968
|
-
role,
|
|
969
|
-
unit: reg.unit || '',
|
|
970
|
-
read: true,
|
|
971
|
-
write: false,
|
|
972
|
-
},
|
|
1015
|
+
common,
|
|
973
1016
|
native: {
|
|
974
1017
|
addr: reg.addr,
|
|
975
1018
|
qty: reg.qty,
|
|
@@ -981,16 +1024,21 @@ class Sigenergy extends utils.Adapter {
|
|
|
981
1024
|
|
|
982
1025
|
async _createWriteStateFromRegister(reg) {
|
|
983
1026
|
const type = reg.type === 'STRING' ? 'string' : 'number';
|
|
1027
|
+
const common = {
|
|
1028
|
+
name: reg.desc,
|
|
1029
|
+
type,
|
|
1030
|
+
role: 'value',
|
|
1031
|
+
unit: reg.unit || '',
|
|
1032
|
+
read: reg.perm === 'RW',
|
|
1033
|
+
write: true,
|
|
1034
|
+
};
|
|
1035
|
+
const states = ENUM_STATES_MAP[reg.name];
|
|
1036
|
+
if (states) {
|
|
1037
|
+
common.states = states;
|
|
1038
|
+
}
|
|
984
1039
|
await this.setObjectNotExistsAsync(reg.name, {
|
|
985
1040
|
type: 'state',
|
|
986
|
-
common
|
|
987
|
-
name: reg.desc,
|
|
988
|
-
type,
|
|
989
|
-
role: 'value',
|
|
990
|
-
unit: reg.unit || '',
|
|
991
|
-
read: reg.perm === 'RW',
|
|
992
|
-
write: true,
|
|
993
|
-
},
|
|
1041
|
+
common,
|
|
994
1042
|
native: {
|
|
995
1043
|
addr: reg.addr,
|
|
996
1044
|
qty: reg.qty,
|
|
@@ -1162,6 +1210,18 @@ class Sigenergy extends utils.Adapter {
|
|
|
1162
1210
|
reg = DC_CHARGER_WRITE_REGISTERS.find(r => r.name === localId);
|
|
1163
1211
|
slaveId = this.config.inverterId || 1;
|
|
1164
1212
|
category = 'dcCharger';
|
|
1213
|
+
} else if (localId.startsWith('pss.control.')) {
|
|
1214
|
+
reg = PSS_WRITE_REGISTERS.find(r => r.name === localId);
|
|
1215
|
+
slaveId = this.config.pssSlaveId || 5;
|
|
1216
|
+
category = 'pss';
|
|
1217
|
+
} else if (localId.startsWith('pid.control.')) {
|
|
1218
|
+
reg = PID_WRITE_REGISTERS.find(r => r.name === localId);
|
|
1219
|
+
slaveId = this.config.pidSlaveId || 6;
|
|
1220
|
+
category = 'pid';
|
|
1221
|
+
} else if (localId.startsWith('acCharger.control.')) {
|
|
1222
|
+
reg = AC_CHARGER_WRITE_REGISTERS.find(r => r.name === localId);
|
|
1223
|
+
slaveId = this.config.acChargerId || 2;
|
|
1224
|
+
category = 'acCharger';
|
|
1165
1225
|
}
|
|
1166
1226
|
|
|
1167
1227
|
if (!reg) {
|