iobroker.sigenergy 2.3.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/io-package.json +26 -13
- package/main.js +39 -0
- 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.1 (2026-06-10)
|
|
157
|
+
- (ssbingo) feat: detect Modbus protocol level on startup by probing registers 30088/30200/30228/30286; read firmware version (30525); log result and store as info.protocolLevel state
|
|
158
|
+
|
|
156
159
|
### 2.3.0 (2026-06-10)
|
|
157
160
|
- (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
161
|
|
package/io-package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "sigenergy",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.1",
|
|
5
5
|
"news": {
|
|
6
|
-
"2.3.
|
|
7
|
-
"en": "(ssbingo) feat:
|
|
8
|
-
"de": "(ssbingo) feat:
|
|
9
|
-
"ru": "(ssbingo) feat:
|
|
10
|
-
"pt": "(ssbingo) feat:
|
|
11
|
-
"nl": "(ssbingo) feat:
|
|
12
|
-
"fr": "(ssbingo) feat:
|
|
13
|
-
"it": "(ssbingo) feat:
|
|
14
|
-
"es": "(ssbingo) feat:
|
|
15
|
-
"pl": "(ssbingo) feat:
|
|
16
|
-
"uk": "(ssbingo) feat:
|
|
17
|
-
"zh-cn": "(ssbingo) feat:
|
|
6
|
+
"2.3.1": {
|
|
7
|
+
"en": "(ssbingo) feat: detect Modbus protocol level on startup by probing registers 30088/30200/30228/30286; read firmware version (30525); log result and store as info.protocolLevel state",
|
|
8
|
+
"de": "(ssbingo) feat: Modbus-Protokollebene beim Start durch Probe von Registern 30088/30200/30228/30286 erkennen; Firmware-Version (30525) lesen; Ergebnis loggen und als info.protocolLevel-State speichern",
|
|
9
|
+
"ru": "(ssbingo) feat: определение уровня протокола Modbus при запуске путём опроса регистров 30088/30200/30228/30286; чтение версии прошивки (30525); журналирование результата и сохранение в состояние info.protocolLevel",
|
|
10
|
+
"pt": "(ssbingo) feat: detectar nível do protocolo Modbus no arranque sondando registos 30088/30200/30228/30286; ler versão de firmware (30525); registar resultado e guardar como estado info.protocolLevel",
|
|
11
|
+
"nl": "(ssbingo) feat: Modbus-protocolniveau bij opstarten detecteren door registers 30088/30200/30228/30286 te sonderen; firmwareversie (30525) lezen; resultaat loggen en opslaan als info.protocolLevel-state",
|
|
12
|
+
"fr": "(ssbingo) feat: détection du niveau de protocole Modbus au démarrage en sondant les registres 30088/30200/30228/30286 ; lecture de la version firmware (30525) ; journalisation du résultat et stockage dans l'état info.protocolLevel",
|
|
13
|
+
"it": "(ssbingo) feat: rilevamento del livello del protocollo Modbus all'avvio sondando i registri 30088/30200/30228/30286; lettura della versione firmware (30525); registrazione del risultato e salvataggio come stato info.protocolLevel",
|
|
14
|
+
"es": "(ssbingo) feat: detectar nivel de protocolo Modbus en el arranque sondeando registros 30088/30200/30228/30286; leer versión de firmware (30525); registrar resultado y almacenar como estado info.protocolLevel",
|
|
15
|
+
"pl": "(ssbingo) feat: wykrywanie poziomu protokołu Modbus przy uruchomieniu przez próbkowanie rejestrów 30088/30200/30228/30286; odczyt wersji firmware (30525); logowanie wyniku i zapis jako stan info.protocolLevel",
|
|
16
|
+
"uk": "(ssbingo) feat: виявлення рівня протоколу Modbus при запуску шляхом зондування регістрів 30088/30200/30228/30286; зчитування версії прошивки (30525); журналювання результату та збереження як стан info.protocolLevel",
|
|
17
|
+
"zh-cn": "(ssbingo) feat: 启动时通过探测寄存器 30088/30200/30228/30286 检测 Modbus 协议级别;读取固件版本(30525);记录结果并存储为 info.protocolLevel 状态"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"titleLang": {
|
|
@@ -178,6 +178,19 @@
|
|
|
178
178
|
"def": "idle"
|
|
179
179
|
},
|
|
180
180
|
"native": {}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"_id": "info.protocolLevel",
|
|
184
|
+
"type": "state",
|
|
185
|
+
"common": {
|
|
186
|
+
"name": "Detected Modbus protocol level",
|
|
187
|
+
"type": "string",
|
|
188
|
+
"role": "text",
|
|
189
|
+
"read": true,
|
|
190
|
+
"write": false,
|
|
191
|
+
"def": ""
|
|
192
|
+
},
|
|
193
|
+
"native": {}
|
|
181
194
|
}
|
|
182
195
|
]
|
|
183
196
|
}
|
package/main.js
CHANGED
|
@@ -60,6 +60,7 @@ class Sigenergy extends utils.Adapter {
|
|
|
60
60
|
// calling setStateAsync on a stopped adapter.
|
|
61
61
|
this._stopped = false;
|
|
62
62
|
this._controlRegistersRead = false;
|
|
63
|
+
this._protocolDetected = false;
|
|
63
64
|
this._essPreheatingUnsupported = false;
|
|
64
65
|
|
|
65
66
|
this.on('ready', this.onReady.bind(this));
|
|
@@ -247,6 +248,10 @@ class Sigenergy extends utils.Adapter {
|
|
|
247
248
|
await this._readControlRegisters();
|
|
248
249
|
this._controlRegistersRead = true;
|
|
249
250
|
}
|
|
251
|
+
if (!this._protocolDetected) {
|
|
252
|
+
await this._detectProtocolLevel();
|
|
253
|
+
this._protocolDetected = true;
|
|
254
|
+
}
|
|
250
255
|
|
|
251
256
|
const _t0 = Date.now();
|
|
252
257
|
await this._readPlant();
|
|
@@ -501,6 +506,40 @@ class Sigenergy extends utils.Adapter {
|
|
|
501
506
|
}
|
|
502
507
|
}
|
|
503
508
|
|
|
509
|
+
async _detectProtocolLevel() {
|
|
510
|
+
const plantId = this.config.plantId || 247;
|
|
511
|
+
const inverterId = this.config.inverterId || 1;
|
|
512
|
+
|
|
513
|
+
const probes = [
|
|
514
|
+
{ addr: 30088, level: 'V2.6' },
|
|
515
|
+
{ addr: 30200, level: 'V2.7' },
|
|
516
|
+
{ addr: 30228, level: 'V2.8' },
|
|
517
|
+
{ addr: 30286, level: 'V2.9' },
|
|
518
|
+
];
|
|
519
|
+
|
|
520
|
+
let detectedLevel = null;
|
|
521
|
+
for (const probe of probes) {
|
|
522
|
+
try {
|
|
523
|
+
await this.modbus.readInputRegisters(plantId, probe.addr, 1);
|
|
524
|
+
detectedLevel = probe.level;
|
|
525
|
+
} catch {
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
let firmwareVersion = 'unknown';
|
|
531
|
+
try {
|
|
532
|
+
const raw = await this.modbus.readInputRegisters(inverterId, 30525, 15);
|
|
533
|
+
firmwareVersion = ModbusConnection.parseValue(raw, 'STRING', null) || 'unknown';
|
|
534
|
+
} catch {
|
|
535
|
+
// not critical
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
const levelStr = detectedLevel ? `>=${detectedLevel}` : 'unknown';
|
|
539
|
+
this.log.info(`Detected protocol level: ${levelStr} (firmware: ${firmwareVersion})`);
|
|
540
|
+
await this.setStateAsync('info.protocolLevel', { val: levelStr, ack: true });
|
|
541
|
+
}
|
|
542
|
+
|
|
504
543
|
async _readControlRegisters() {
|
|
505
544
|
const plantId = this.config.plantId || 247;
|
|
506
545
|
const inverterId = this.config.inverterId || 1;
|