iobroker.senec 1.1.1 → 1.3.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 +3 -1
- package/README.md +60 -70
- package/admin/index_m.html +2 -0
- package/admin/style.css +31 -31
- package/io-package.json +74 -206
- package/lib/adapter-config.d.ts +18 -18
- package/lib/state_attr.js +1145 -1
- package/lib/state_trans.js +467 -0
- package/lib/tools.js +99 -98
- package/main.js +186 -39
- package/package.json +34 -23
- package/admin/admin.d.ts +0 -93
- package/docs/de/README.md +0 -539
- package/docs/de/media/mainSettings.png +0 -0
- package/docs/en/README.md +0 -519
- package/docs/en/media/mainSettings.png +0 -0
- package/lib/batt_type_desc.js +0 -23
- package/lib/country_desc.js +0 -20
- package/lib/mode_desc.js +0 -285
- package/lib/sys_type_desc.js +0 -68
- package/main.test.js +0 -30
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
const state_trans = {
|
|
2
|
+
'ENERGY.STAT_STATE.0': {
|
|
3
|
+
0: 'INITIALZUSTAND (0)',
|
|
4
|
+
1: 'KEINE KOMMUNIKATION LADEGERAET (1)',
|
|
5
|
+
2: 'FEHLER LEISTUNGSMESSGERAET (2)',
|
|
6
|
+
3: 'RUNDSTEUEREMPFAENGER (3)',
|
|
7
|
+
4: 'ERSTLADUNG (4)',
|
|
8
|
+
5: 'WARTUNGSLADUNG (5)',
|
|
9
|
+
6: 'WARTUNGSLADUNG FERTIG (6)',
|
|
10
|
+
7: 'WARTUNG NOTWENDIG (7)',
|
|
11
|
+
8: 'MAN. SICHERHEITSLADUNG (8)',
|
|
12
|
+
9: 'SICHERHEITSLADUNG FERTIG (9)',
|
|
13
|
+
10: 'VOLLLADUNG (10)',
|
|
14
|
+
11: 'AUSGLEICHSLADUNG: LADEN (11)',
|
|
15
|
+
12: 'SULFATLADUNG: LADEN (12)',
|
|
16
|
+
13: 'AKKU VOLL (13)',
|
|
17
|
+
14: 'LADEN (14)',
|
|
18
|
+
15: 'AKKU LEER (15)',
|
|
19
|
+
16: 'ENTLADEN (16)',
|
|
20
|
+
17: 'PV + ENTLADEN (17)',
|
|
21
|
+
18: 'NETZ + ENTLADEN (18)',
|
|
22
|
+
19: 'PASSIV (19)',
|
|
23
|
+
20: 'AUSGESCHALTET (20)',
|
|
24
|
+
21: 'EIGENVERBRAUCH (21)',
|
|
25
|
+
22: 'NEUSTART (22)',
|
|
26
|
+
23: 'MAN. AUSGLEICHSLADUNG: LADEN (23)',
|
|
27
|
+
24: 'MAN. SULFATLADUNG: LADEN (24)',
|
|
28
|
+
25: 'SICHERHEITSLADUNG (25)',
|
|
29
|
+
26: 'AKKU-SCHUTZBETRIEB (26)',
|
|
30
|
+
27: 'EG FEHLER (27)',
|
|
31
|
+
28: 'EG LADEN (28)',
|
|
32
|
+
29: 'EG ENTLADEN (29)',
|
|
33
|
+
30: 'EG PASSIV (30)',
|
|
34
|
+
31: 'EG LADEN VERBOTEN (31)',
|
|
35
|
+
32: 'EG ENTLADEN VERBOTEN (32)',
|
|
36
|
+
33: 'NOTLADUNG (33)',
|
|
37
|
+
34: 'SOFTWAREAKTUALISIERUNG (34)',
|
|
38
|
+
35: 'FEHLER: NA-SCHUTZ (35)',
|
|
39
|
+
36: 'FEHLER: NA-SCHUTZ NETZ (36)',
|
|
40
|
+
37: 'FEHLER: NA-SCHUTZ HARDWARE (37)',
|
|
41
|
+
38: 'KEINE SERVERVERBINDUNG (38)',
|
|
42
|
+
39: 'BMS FEHLER (39)',
|
|
43
|
+
40: 'WARTUNG: FILTER (40)',
|
|
44
|
+
41: 'SCHLAFMODUS (41)',
|
|
45
|
+
42: 'WARTE AUF ÜBERSCHUSS (42)',
|
|
46
|
+
43: 'KAPAZITÄTSTEST: LADEN (43)',
|
|
47
|
+
44: 'KAPAZITÄTSTEST: ENTLADEN (44)',
|
|
48
|
+
45: 'MAN. SULFATLADUNG: WARTEN (45)',
|
|
49
|
+
46: 'MAN. SULFATLADUNG: FERTIG (46)',
|
|
50
|
+
47: 'MAN. SULFATLADUNG: FEHLER (47)',
|
|
51
|
+
48: 'AUSGLEICHSLADUNG: WARTEN (48)',
|
|
52
|
+
49: 'NOTLADUNG: FEHLER (49)',
|
|
53
|
+
50: 'MAN: AUSGLEICHSLADUNG: WARTEN (50)',
|
|
54
|
+
51: 'MAN: AUSGLEICHSLADUNG: FEHLER (51)',
|
|
55
|
+
52: 'MAN: AUSGLEICHSLADUNG: FERTIG (52)',
|
|
56
|
+
53: 'AUTO: SULFATLADUNG: WARTEN (53)',
|
|
57
|
+
54: 'LADESCHLUSSPHASE (54)',
|
|
58
|
+
55: 'BATTERIETRENNSCHALTER AUS (55)',
|
|
59
|
+
56: 'PEAK-SHAVING: WARTEN (56)',
|
|
60
|
+
57: 'FEHLER LADEGERAET (57)',
|
|
61
|
+
58: 'NPU-FEHLER (58)',
|
|
62
|
+
59: 'BMS OFFLINE (59)',
|
|
63
|
+
60: 'WARTUNGSLADUNG FEHLER (60)',
|
|
64
|
+
61: 'MAN. SICHERHEITSLADUNG FEHLER (61)',
|
|
65
|
+
62: 'SICHERHEITSLADUNG FEHLER (62)',
|
|
66
|
+
63: 'KEINE MASTERVERBINDUNG (63)',
|
|
67
|
+
64: 'LITHIUM SICHERHEITSMODUS AKTIV (64)',
|
|
68
|
+
65: 'LITHIUM SICHERHEITSMODUS BEENDET (65)',
|
|
69
|
+
66: 'FEHLER BATTERIESPANNUNG (66)',
|
|
70
|
+
67: 'BMS DC AUSGESCHALTET (67)',
|
|
71
|
+
68: 'NETZINITIALISIERUNG (68)',
|
|
72
|
+
69: 'NETZSTABILISIERUNG (69)',
|
|
73
|
+
70: 'FERNABSCHALTUNG (70)',
|
|
74
|
+
71: 'OFFPEAK-LADEN (71)',
|
|
75
|
+
72: 'FEHLER HALBBRÜCKE (72)',
|
|
76
|
+
73: 'BMS: FEHLER BETRIEBSTEMPERATUR (73)',
|
|
77
|
+
74: 'FACOTRY SETTINGS NICHT GEFUNDEN (74)',
|
|
78
|
+
75: 'NETZERSATZBETRIEB (75)',
|
|
79
|
+
76: 'NETZERSATZBETRIEB AKKU LEER (76)',
|
|
80
|
+
77: 'NETZERSATZBETRIEB FEHLER (77)',
|
|
81
|
+
78: 'INITIALISIERUNG (78)',
|
|
82
|
+
79: 'INSTALLATIONSMODUS (79)',
|
|
83
|
+
80: 'NETZAUSFALL (80)',
|
|
84
|
+
81: 'BMS UPDATE ERFORDERLICH (81)',
|
|
85
|
+
82: 'BMS KONFIGURATION ERFORDERLICH (82)',
|
|
86
|
+
83: 'ISOLATIONSTEST (83)',
|
|
87
|
+
84: 'SELBSTTEST (84)',
|
|
88
|
+
85: 'EXTERNE STEUERUNG (85)',
|
|
89
|
+
86: 'TEMPERATUR SENSOR FEHLER (86)',
|
|
90
|
+
87: 'NETZBETREIBER: LADEN GESPERRT (87)',
|
|
91
|
+
88: 'NETZBETREIBER: ENTLADEN GESPERRT (88)',
|
|
92
|
+
89: 'RESERVEKAPAZITÄT (89)',
|
|
93
|
+
90: 'SELBSTTEST FEHLER (90)',
|
|
94
|
+
91: 'ISOLATIONSFEHLER (91)'
|
|
95
|
+
},
|
|
96
|
+
'ENERGY_STAT_STATE.1': {
|
|
97
|
+
0: 'INITIALSTATE',
|
|
98
|
+
1: 'ERROR INVERTER COMMUNICATION',
|
|
99
|
+
2: 'ERROR ELECTRICY METER',
|
|
100
|
+
3: 'RIPPLE CONTROL RECEIVER',
|
|
101
|
+
4: 'INITIAL CHARGE',
|
|
102
|
+
5: 'MAINTENANCE CHARGE',
|
|
103
|
+
6: 'MAINTENANCE READY',
|
|
104
|
+
7: 'MAINTENANCE REQUIRED',
|
|
105
|
+
8: 'MAN. SAFETY CHARGE',
|
|
106
|
+
9: 'SAFETY CHARGE READY',
|
|
107
|
+
10: 'FULL CHARGE',
|
|
108
|
+
11: 'EQUALIZATION: CHARGE',
|
|
109
|
+
12: 'DESULFATATION: CHARGE',
|
|
110
|
+
13: 'BATTERY FULL',
|
|
111
|
+
14: 'CHARGE',
|
|
112
|
+
15: 'BATTERY EMPTY',
|
|
113
|
+
16: 'DISCHARGE',
|
|
114
|
+
17: 'PV + DISCHARGE',
|
|
115
|
+
18: 'GRID + DISCHARGE',
|
|
116
|
+
19: 'PASSIVE',
|
|
117
|
+
20: 'OFF',
|
|
118
|
+
21: 'OWN CONSUMPTION',
|
|
119
|
+
22: 'RESTART',
|
|
120
|
+
23: 'MAN. EQUALIZATION: CHARGE',
|
|
121
|
+
24: 'MAN. DESULFATATION: CHARGE',
|
|
122
|
+
25: 'SAFETY CHARGE',
|
|
123
|
+
26: 'BATTERY PROTECTION MODE',
|
|
124
|
+
27: 'EG ERROR',
|
|
125
|
+
28: 'EG CHARGE',
|
|
126
|
+
29: 'EG DISCHARGE',
|
|
127
|
+
30: 'EG PASSIVE',
|
|
128
|
+
31: 'EG PROHIBIT CHARGE',
|
|
129
|
+
32: 'EG PROHIBIT DISCHARGE',
|
|
130
|
+
33: 'EMERGANCY CHARGE',
|
|
131
|
+
34: 'SOFTWARE UPDATE',
|
|
132
|
+
35: 'NSP ERROR',
|
|
133
|
+
36: 'NSP ERROR: GRID',
|
|
134
|
+
37: 'NSP ERROR: HARDWRE',
|
|
135
|
+
38: 'NO SERVER CONNECTION',
|
|
136
|
+
39: 'BMS ERROR',
|
|
137
|
+
40: 'MAINTENANCE: FILTER',
|
|
138
|
+
41: 'SLEEPING MODE',
|
|
139
|
+
42: 'WAITING EXCESS',
|
|
140
|
+
43: 'CAPACITY TEST: CHARGE',
|
|
141
|
+
44: 'CAPACITY TEST: DISCHARGE',
|
|
142
|
+
45: 'MAN. DESULFATATION: WAIT',
|
|
143
|
+
46: 'MAN. DESULFATATION: READY',
|
|
144
|
+
47: 'MAN. DESULFATATION: ERROR',
|
|
145
|
+
48: 'EQUALIZATION: WAIT',
|
|
146
|
+
49: 'EMERGANCY CHARGE: ERROR',
|
|
147
|
+
50: 'MAN. EQUALIZATION: WAIT',
|
|
148
|
+
51: 'MAN. EQUALIZATION: ERROR',
|
|
149
|
+
52: 'MAN: EQUALIZATION: READY',
|
|
150
|
+
53: 'AUTO. DESULFATATION: WAIT',
|
|
151
|
+
54: 'ABSORPTION PHASE',
|
|
152
|
+
55: 'DC-SWITCH OFF',
|
|
153
|
+
56: 'PEAK-SHAVING: WAIT',
|
|
154
|
+
57: 'ERROR BATTERY INVERTER',
|
|
155
|
+
58: 'NPU-ERROR',
|
|
156
|
+
59: 'BMS OFFLINE',
|
|
157
|
+
60: 'MAINTENANCE CHARGE ERROR',
|
|
158
|
+
61: 'MAN. SAFETY CHARGE ERROR',
|
|
159
|
+
62: 'SAFETY CHARGE ERROR',
|
|
160
|
+
63: 'NO CONNECTION TO MASTER',
|
|
161
|
+
64: 'LITHIUM SAFE MODE ACTIVE',
|
|
162
|
+
65: 'LITHIUM SAFE MODE DONE',
|
|
163
|
+
66: 'BATTERY VOLTAGE ERROR',
|
|
164
|
+
67: 'BMS DC SWITCHED OFF',
|
|
165
|
+
68: 'GRID INITIALIZATION',
|
|
166
|
+
69: 'GRID STABILIZATION',
|
|
167
|
+
70: 'REMOTE SHUTDOWN',
|
|
168
|
+
71: 'OFFPEAK-CHARGE',
|
|
169
|
+
72: 'ERROR HALFBRIDGE',
|
|
170
|
+
73: 'BMS: ERROR OPERATING TEMPERATURE',
|
|
171
|
+
74: 'FACOTRY SETTINGS NOT FOUND',
|
|
172
|
+
75: 'BACKUP POWER MODE - ACTIVE',
|
|
173
|
+
76: 'BACKUP POWER MODE - BATTERY EMPTY',
|
|
174
|
+
77: 'BACKUP POWER MODE ERROR',
|
|
175
|
+
78: 'INITIALISING',
|
|
176
|
+
79: 'INSTALLATION MODE',
|
|
177
|
+
80: 'GRID OFFLINE',
|
|
178
|
+
81: 'BMS UPDATE NEEDED',
|
|
179
|
+
82: 'BMS CONFIGURATION NEEDED',
|
|
180
|
+
83: 'INSULATION TEST',
|
|
181
|
+
84: 'SELFTEST',
|
|
182
|
+
85: 'EXTERNAL CONTROL',
|
|
183
|
+
86: 'ERROR: TEMPERATURESENSOR',
|
|
184
|
+
87: 'GRID OPERATOR: CHARGE PROHIBITED',
|
|
185
|
+
88: 'GRID OPERATOR: DISCHARGE PROHIBITED',
|
|
186
|
+
89: 'SPARE CAPACITY',
|
|
187
|
+
90: 'SELFTEST ERROR',
|
|
188
|
+
91: 'EARTH FAULT'
|
|
189
|
+
},
|
|
190
|
+
'ENERGY_STAT_STATE.2': {
|
|
191
|
+
0: 'STATO INIZIALE',
|
|
192
|
+
1: 'ERRORE COMMUNICAZIONE INVERTER',
|
|
193
|
+
2: 'ERRORE WATTMETRO',
|
|
194
|
+
3: 'RICEVITORE RIPPLE CONTROL',
|
|
195
|
+
4: 'PRIMA CARICA',
|
|
196
|
+
5: 'CARICA DI MANTENIMENTO',
|
|
197
|
+
6: 'CARICA DI MANTENIMENTO COMPLETATA',
|
|
198
|
+
7: 'MANUTENZIONE: NECESSARIA',
|
|
199
|
+
8: 'CARICA DI SICUREZZA MANUALE',
|
|
200
|
+
9: 'CARICA DI SICUREZZA COMPLETA',
|
|
201
|
+
10: 'CARICA COMPLETA',
|
|
202
|
+
11: 'CARICA DI EQUALIZZAZIONE',
|
|
203
|
+
12: 'CARICA DI DESOLFATAZIONE',
|
|
204
|
+
13: 'ACCUMULATORE CARICO',
|
|
205
|
+
14: 'CARICA',
|
|
206
|
+
15: 'ACCUMULATORE SCARICO',
|
|
207
|
+
16: 'SCARICA',
|
|
208
|
+
17: 'FV + SCARICA',
|
|
209
|
+
18: 'RETE + SCARICA',
|
|
210
|
+
19: 'PASSIVO',
|
|
211
|
+
20: 'SPENTO',
|
|
212
|
+
21: 'AUTOCONSUMO',
|
|
213
|
+
22: 'RIAVVIO',
|
|
214
|
+
23: 'CARICA DI EQUALIZZAZIONE MANUALE',
|
|
215
|
+
24: 'CARICA DI DESOLFATAZIONE MANUALE',
|
|
216
|
+
25: 'CARICA DI SICUREZZA',
|
|
217
|
+
26: 'MODALITÀ PROTEZIONE ACCUMULATORE',
|
|
218
|
+
27: 'ERRORE EG',
|
|
219
|
+
28: 'EG: CARICA',
|
|
220
|
+
29: 'EG: SCARICA',
|
|
221
|
+
30: 'EG: PASSIVO',
|
|
222
|
+
31: 'CARICA EG PROIBITA',
|
|
223
|
+
32: 'SCARICAMENTO EG PROIBITO',
|
|
224
|
+
33: 'CARICA D\'EMERGENZA',
|
|
225
|
+
34: 'AGGIORNAMENTO SOFTWARE',
|
|
226
|
+
35: 'ERRORE SPI',
|
|
227
|
+
36: 'ERRORE SPI: RETE ',
|
|
228
|
+
37: 'ERRORE SPI: HARDWARE ',
|
|
229
|
+
38: 'NESSUNA CONNESSIONE AL SERVER',
|
|
230
|
+
39: 'ERRORE BMS',
|
|
231
|
+
40: 'SOSTITUZIONE DEL FILTRO NECESSARIA',
|
|
232
|
+
41: 'BATTERIA AL LITIO SPENTA',
|
|
233
|
+
42: 'IN ATTESA DI SURPLUS ENERGETICO',
|
|
234
|
+
43: 'TEST DI CAPACITÀ: CARICA',
|
|
235
|
+
44: 'TEST DI CAPACITÀ: SCARICA',
|
|
236
|
+
45: 'CARICA DI DESOLFATAZIONE MANUALE: ATTESA',
|
|
237
|
+
46: 'CARICA DI DESOLFATAZIONE MANUALE: COMPLETA',
|
|
238
|
+
47: 'CARICA DI DESOLFATAZIONE MANUALE: ERRORE',
|
|
239
|
+
48: 'EQUALIZZAZIONE: ATTESA',
|
|
240
|
+
49: 'CARICA D\'EMERGENZA: ERRORE',
|
|
241
|
+
50: 'EQUALIZZAZIONE MANUALE: ATTESA',
|
|
242
|
+
51: 'EQUALIZZAZIONE MANUALE: ERRORE',
|
|
243
|
+
52: 'EQUALIZZAZIONE MANUALE: COMPLETA',
|
|
244
|
+
53: 'CARICA DI DESOLFATAZIONE: ATTESA',
|
|
245
|
+
54: 'FASE FINALE CARICA',
|
|
246
|
+
55: 'SEZIONATORE BATTERIA OFF',
|
|
247
|
+
56: 'PEAK SHAVING: ATTESA',
|
|
248
|
+
57: 'ERRORE DISPOSITIVO DI CARICA',
|
|
249
|
+
58: 'ERRORE NPU',
|
|
250
|
+
59: 'BMS DISCONESSO',
|
|
251
|
+
60: 'CARICA DI MANUTENZIONE ERRORE',
|
|
252
|
+
61: 'CARICA DI SICUREZZA MANUALE ERRORE',
|
|
253
|
+
62: 'CARICA DI SICUREZZA ERRORE',
|
|
254
|
+
63: 'NESSUNA CONNESSIONE MASTER',
|
|
255
|
+
64: 'MODALITA DI PROTEZIONE LITIO ATTIVA',
|
|
256
|
+
65: 'MODALITA DI PROTEZIONE LITIO COMPLETA',
|
|
257
|
+
66: 'ERORE DI TENSIONE BATTERIA',
|
|
258
|
+
67: 'BMS DC SPENTO',
|
|
259
|
+
68: 'INIZIALIZZAZIONE DELLA RETE',
|
|
260
|
+
69: 'STABILIZZAZIONE DELLA RETE',
|
|
261
|
+
70: 'ARRESTO REMOTO',
|
|
262
|
+
71: 'OFFPEAK-CARICA',
|
|
263
|
+
72: 'ERRORE MEZZO PONTE',
|
|
264
|
+
73: 'BMS: ERRORE TEMPERATURA DI FUNZIONAMENTO',
|
|
265
|
+
74: 'FACOTRY SETTINGS NON TROVATO',
|
|
266
|
+
75: 'FUNZIONAMENTO ISOLATO',
|
|
267
|
+
76: 'FUNZIONAMENTO ISOLATO ACCUMULATORE SCARICO',
|
|
268
|
+
77: 'ERORE DI FUNZIONAMENTO ISOLATO',
|
|
269
|
+
78: 'INIZIALIZZAZIONE',
|
|
270
|
+
79: 'MODALITA INSTALLAZIONE',
|
|
271
|
+
80: 'RETE OFFLINE',
|
|
272
|
+
81: 'AGGIORNAMENTO BMS NECESSARIO',
|
|
273
|
+
82: 'CONFIGURAZIONE BMS NECESSARIA',
|
|
274
|
+
83: 'TEST DI ISOLAMENTO',
|
|
275
|
+
84: 'AUTOTEST',
|
|
276
|
+
85: 'CONTROLLO ESTERNO',
|
|
277
|
+
86: 'ERRORE SENSORE DI TEMPERATURA',
|
|
278
|
+
87: 'OPERATORE DI RETE: CARICA BLOCCATA',
|
|
279
|
+
88: 'OPERATORE DI RETE: SCARICA BLOCCATA',
|
|
280
|
+
89: 'CAPACITA INUTILIZZATA',
|
|
281
|
+
90: 'ERRORE DI AUTOTEST',
|
|
282
|
+
91: 'FAGLIA TERRESTRE'
|
|
283
|
+
},
|
|
284
|
+
'FACTORY.BAT_TYPE.0' : {
|
|
285
|
+
0: 'Studer Xtender (0)',
|
|
286
|
+
1: 'SenecBatt (1)',
|
|
287
|
+
2: 'Senec Inverter V2 (2)',
|
|
288
|
+
3: 'SENEC.Inverter V2.1 (3)',
|
|
289
|
+
4: 'SENEC.Inverter V3 LV (4)'
|
|
290
|
+
},
|
|
291
|
+
'FACTORY.BAT_TYPE.1' : {
|
|
292
|
+
0: 'Studer Xtender (0)',
|
|
293
|
+
1: 'SenecBatt (1)',
|
|
294
|
+
2: 'Senec Inverter V2 (2)',
|
|
295
|
+
3: 'SENEC.Inverter V2.1 (3)',
|
|
296
|
+
4: 'SENEC.Inverter V3 LV (4)'
|
|
297
|
+
},
|
|
298
|
+
'FACTORY.BAT_TYPE.2' : {
|
|
299
|
+
0: 'Studer Xtender (0)',
|
|
300
|
+
1: 'SenecBatt (1)',
|
|
301
|
+
2: 'Senec Inverter V2 (2)',
|
|
302
|
+
3: 'SENEC.Inverter V2.1 (3)',
|
|
303
|
+
4: 'SENEC.Inverter V3 LV (4)'
|
|
304
|
+
},
|
|
305
|
+
'FACTORY.COUNTRY.0' : {
|
|
306
|
+
0: 'Deutschland - DE (0)',
|
|
307
|
+
1: 'Italien - IT (1)',
|
|
308
|
+
2: 'Australien - AU (2)',
|
|
309
|
+
3: 'Österreich - AT (3)'
|
|
310
|
+
},
|
|
311
|
+
'FACTORY.COUNTRY.1' : {
|
|
312
|
+
0: 'Germany - DE (0)',
|
|
313
|
+
1: 'Italy - IT (1)',
|
|
314
|
+
2: 'Australia - AU (2)',
|
|
315
|
+
3: 'Austria - AT (3)'
|
|
316
|
+
},
|
|
317
|
+
'FACTORY.COUNTRY.3' : {
|
|
318
|
+
0: 'Germania - DE (0)',
|
|
319
|
+
1: 'Italia - IT (1)',
|
|
320
|
+
2: 'Australia - AU (2)',
|
|
321
|
+
3: 'Austria - AT (3)'
|
|
322
|
+
},
|
|
323
|
+
'FACTORY.SYS_TYPE.0' : {
|
|
324
|
+
0: 'Senec Home 8.0 / Blei (0)',
|
|
325
|
+
1: 'Senec Business 30.0 / Blei (1)',
|
|
326
|
+
2: 'Solarinvert Storage 10.0 / Blei (2)',
|
|
327
|
+
3: 'Senec Home 4.0 / Blei (3)',
|
|
328
|
+
4: 'Senec Home 5.0/7.5/10.0 / Lithium (4)',
|
|
329
|
+
5: 'Senec Home 15.0 / Lithium (5)',
|
|
330
|
+
6: 'Senec Business 25.0 / Lithium (6)',
|
|
331
|
+
7: 'Senec Home 6.0 Pb (7)',
|
|
332
|
+
8: 'Senec Home 10.0 Pb (8)',
|
|
333
|
+
9: 'Senec Home V2 5.0/7.5/10.0 (9)',
|
|
334
|
+
10: 'Senec Business V2 30.0 / Blei (10)',
|
|
335
|
+
11: 'Senec Home V2 10.0 / Blei (11)',
|
|
336
|
+
12: 'OEM LG (12)',
|
|
337
|
+
13: 'Senec Business V2_2ph / Lithium (13)',
|
|
338
|
+
14: 'Senec Business V2 3ph / Lithium (14)',
|
|
339
|
+
15: 'Senec Home V2.1 1ph / Lithium (15)',
|
|
340
|
+
16: 'ADS Tec (16)',
|
|
341
|
+
17: 'Senec.Home V3 Hybrid (17)',
|
|
342
|
+
18: 'Senec.Home V3 Hybrid duo (18)',
|
|
343
|
+
19: 'Senec.Home V3 Hybrid (19)'
|
|
344
|
+
},
|
|
345
|
+
'FACTORY.SYS_TYPE.1' : {
|
|
346
|
+
0: 'Senec Home 8.0 / Blei (0)',
|
|
347
|
+
1: 'Senec Business 30.0 / Blei (1)',
|
|
348
|
+
2: 'Solarinvert Storage 10.0 / Blei (2)',
|
|
349
|
+
3: 'Senec Home 4.0 / Blei (3)',
|
|
350
|
+
4: 'Senec Home 5.0/7.5/10.0 / Lithium (4)',
|
|
351
|
+
5: 'Senec Home 15.0 / Lithium (5)',
|
|
352
|
+
6: 'Senec Business 25.0 / Lithium (6)',
|
|
353
|
+
7: 'Senec Home 6.0 Pb (7)',
|
|
354
|
+
8: 'Senec Home 10.0 Pb (8)',
|
|
355
|
+
9: 'Senec Home V2 5.0/7.5/10.0 (9)',
|
|
356
|
+
10: 'Senec Business V2 30.0 / Blei (10)',
|
|
357
|
+
11: 'Senec Home V2 10.0 / Blei (11)',
|
|
358
|
+
12: 'OEM LG (12)',
|
|
359
|
+
13: 'Senec Business V2_2ph / Lithium (13)',
|
|
360
|
+
14: 'Senec Business V2 3ph / Lithium (14)',
|
|
361
|
+
15: 'Senec Home V2.1 1ph / Lithium (15)',
|
|
362
|
+
16: 'ADS Tec (16)',
|
|
363
|
+
17: 'Senec.Home V3 Hybrid (17)',
|
|
364
|
+
18: 'Senec.Home V3 Hybrid duo (18)',
|
|
365
|
+
19: 'Senec.Home V3 Hybrid (19)'
|
|
366
|
+
},
|
|
367
|
+
'FACTORY.SYS_TYPE.2' : {
|
|
368
|
+
0: 'Senec Home 8.0 / Blei (0)',
|
|
369
|
+
1: 'Senec Business 30.0 / Blei (1)',
|
|
370
|
+
2: 'Solarinvert Storage 10.0 / Blei (2)',
|
|
371
|
+
3: 'Senec Home 4.0 / Blei (3)',
|
|
372
|
+
4: 'Senec Home 5.0/7.5/10.0 / Lithium (4)',
|
|
373
|
+
5: 'Senec Home 15.0 / Lithium (5)',
|
|
374
|
+
6: 'Senec Business 25.0 / Lithium (6)',
|
|
375
|
+
7: 'Senec Home 6.0 Pb (7)',
|
|
376
|
+
8: 'Senec Home 10.0 Pb (8)',
|
|
377
|
+
9: 'Senec Home V2 5.0/7.5/10.0 (9)',
|
|
378
|
+
10: 'Senec Business V2 30.0 / Blei (10)',
|
|
379
|
+
11: 'Senec Home V2 10.0 / Blei (11)',
|
|
380
|
+
12: 'OEM LG (12)',
|
|
381
|
+
13: 'Senec Business V2_2ph / Lithium (13)',
|
|
382
|
+
14: 'Senec Business V2 3ph / Lithium (14)',
|
|
383
|
+
15: 'Senec Home V2.1 1ph / Lithium (15)',
|
|
384
|
+
16: 'ADS Tec (16)',
|
|
385
|
+
17: 'Senec.Home V3 Hybrid (17)',
|
|
386
|
+
18: 'Senec.Home V3 Hybrid duo (18)',
|
|
387
|
+
19: 'Senec.Home V3 Hybrid (19)'
|
|
388
|
+
},
|
|
389
|
+
'WALLBOX.STATE.0' : {
|
|
390
|
+
161: 'Warte auf E-Fahrzeug (161)',
|
|
391
|
+
177: 'E-Fahrzeug fragt Ladung an (177)',
|
|
392
|
+
178: 'E-Fahrzeug kann geladen werden (178)',
|
|
393
|
+
194: 'E-Fahrzeug lädt momentan (194)',
|
|
394
|
+
195: 'E-Fahrzeug lädt mit verringertem Strom (Fehler F16, F17) (195)',
|
|
395
|
+
196: 'E-Fahrzeug lädt mit verringertem Strom (Schieflast F15) (196)',
|
|
396
|
+
224: 'Wallbox deaktiviert durch EN1/Schlüsselschalter oder für Konfigurationsupdate (224)',
|
|
397
|
+
225: 'Test Production (225)',
|
|
398
|
+
226: 'Steuereinheit kann programmiert werden (226)',
|
|
399
|
+
227: 'Warte auf Kommunikation mit SENEC-Speicher (227)',
|
|
400
|
+
241: 'Unerwartet geschlossener Kontakt (verschweißt) (241)',
|
|
401
|
+
242: 'Interner Fehler (242)',
|
|
402
|
+
243: 'DC Fehlerstrom erkannt (243)',
|
|
403
|
+
244: 'Fehler Kommunikation (244)',
|
|
404
|
+
245: 'Sperren der Ladebuchse fehlgeschlagen (245)',
|
|
405
|
+
246: 'Kabelfehler (246)',
|
|
406
|
+
247: 'E-Fahrzeug meldet Übertemperatur (247)',
|
|
407
|
+
248: 'Kommunikationsfehler zum E-Fahrzeug (248)',
|
|
408
|
+
249: 'Überstrom erkannt (249)',
|
|
409
|
+
250: 'Temperaturgrenzwert überschritten (250)',
|
|
410
|
+
251: 'Unerwartet geöffneter Kontakt (251)',
|
|
411
|
+
252: 'Reserved State (252)',
|
|
412
|
+
253: 'Reserved State (253)'
|
|
413
|
+
},
|
|
414
|
+
'WALLBOX.STATE.1' : {
|
|
415
|
+
161: 'Waiting for EV',
|
|
416
|
+
177: 'EV is asking for charging',
|
|
417
|
+
178: 'EV has the permission to charge',
|
|
418
|
+
194: 'EV is charged',
|
|
419
|
+
195: 'C2 w. reduced current (error F16, F17)',
|
|
420
|
+
196: 'C2 w. reduced current (imbalance F15)',
|
|
421
|
+
224: 'Charging point disabled by enable input EN1 / key lock or for update',
|
|
422
|
+
225: 'production test',
|
|
423
|
+
226: 'EVCC can be programmed',
|
|
424
|
+
227: 'Bus idle',
|
|
425
|
+
241: 'Unintended closed contact (Welding)',
|
|
426
|
+
242: 'Internal error',
|
|
427
|
+
243: 'DC residual current detected',
|
|
428
|
+
244: 'Upstream communication timeout',
|
|
429
|
+
245: 'Lock of socket failed',
|
|
430
|
+
246: 'CS out of range',
|
|
431
|
+
247: 'State D requested by EV',
|
|
432
|
+
248: 'CP out of range',
|
|
433
|
+
249: 'Overcurrent detected',
|
|
434
|
+
250: 'Temperature outside limits',
|
|
435
|
+
251: 'Unintended opened contact',
|
|
436
|
+
252: 'Reserved State',
|
|
437
|
+
253: 'Reserved State'
|
|
438
|
+
},
|
|
439
|
+
'WALLBOX.STATE.2' : {
|
|
440
|
+
161: 'In attesa di collegamento ad EV',
|
|
441
|
+
177: 'Richiesta carica da auto elettrica',
|
|
442
|
+
178: 'L\'auto elettrica è pronta per la ricarica',
|
|
443
|
+
194: 'L\'auto elettrica è in carica',
|
|
444
|
+
195: 'Carica auto elettrica a corrente ridotta',
|
|
445
|
+
196: 'Carica auto elettrica a corrente ridotta',
|
|
446
|
+
224: 'Wallbox disattivato dal EN1 / interruttore a chiave o per aggiornamento',
|
|
447
|
+
225: 'Test',
|
|
448
|
+
226: 'L\'unità di controllo può essere programmata',
|
|
449
|
+
227: 'Attendere la comunicazione con il sistema di accumulo SENEC',
|
|
450
|
+
241: 'Errore: Contatto chiuso (saldato)',
|
|
451
|
+
242: 'Errore interno',
|
|
452
|
+
243: 'Rilevata corrente di guasto DC',
|
|
453
|
+
244: 'Errore connessione',
|
|
454
|
+
245: 'Blocco della presa per la ricarica non riuscito',
|
|
455
|
+
246: 'Guasto del cavo',
|
|
456
|
+
247: 'Segnalazione sovratemperatura',
|
|
457
|
+
248: 'Errore di comunicazione con l\'auto elettrica',
|
|
458
|
+
249: 'Rilevata sovracorrente',
|
|
459
|
+
250: 'Errore: Temperature limite superate!',
|
|
460
|
+
251: 'Errore: Contatto aperto',
|
|
461
|
+
252: 'Reserved State',
|
|
462
|
+
253: 'Reserved State',
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
module.exports = state_trans;
|
package/lib/tools.js
CHANGED
|
@@ -1,99 +1,100 @@
|
|
|
1
1
|
const axios = require('axios').default;
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tests whether the given variable is a real object and not an Array
|
|
5
|
+
* @param {any} it The variable to test
|
|
6
|
+
* @returns {it is Record<string, any>}
|
|
7
|
+
*/
|
|
8
|
+
function isObject(it) {
|
|
9
|
+
// This is necessary because:
|
|
10
|
+
// typeof null === 'object'
|
|
11
|
+
// typeof [] === 'object'
|
|
12
|
+
// [] instanceof Object === true
|
|
13
|
+
return Object.prototype.toString.call(it) === '[object Object]';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Tests whether the given variable is really an Array
|
|
18
|
+
* @param {any} it The variable to test
|
|
19
|
+
* @returns {it is any[]}
|
|
20
|
+
*/
|
|
21
|
+
function isArray(it) {
|
|
22
|
+
if (typeof Array.isArray === 'function') return Array.isArray(it);
|
|
23
|
+
return Object.prototype.toString.call(it) === '[object Array]';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Translates text to the target language. Automatically chooses the right translation API.
|
|
28
|
+
* @param {string} text The text to translate
|
|
29
|
+
* @param {string} targetLang The target languate
|
|
30
|
+
* @param {string} [yandexApiKey] The yandex API key. You can create one for free at https://translate.yandex.com/developers
|
|
31
|
+
* @returns {Promise<string>}
|
|
32
|
+
*/
|
|
33
|
+
async function translateText(text, targetLang, yandexApiKey) {
|
|
34
|
+
if (targetLang === 'en') {
|
|
35
|
+
return text;
|
|
36
|
+
} else if (!text) {
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
39
|
+
if (yandexApiKey) {
|
|
40
|
+
return translateYandex(text, targetLang, yandexApiKey);
|
|
41
|
+
} else {
|
|
42
|
+
return translateGoogle(text, targetLang);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Translates text with Yandex API
|
|
48
|
+
* @param {string} text The text to translate
|
|
49
|
+
* @param {string} targetLang The target languate
|
|
50
|
+
* @param {string} apiKey The yandex API key. You can create one for free at https://translate.yandex.com/developers
|
|
51
|
+
* @returns {Promise<string>}
|
|
52
|
+
*/
|
|
53
|
+
async function translateYandex(text, targetLang, apiKey) {
|
|
54
|
+
if (targetLang === 'zh-cn') {
|
|
55
|
+
targetLang = 'zh';
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const url = `https://translate.yandex.net/api/v1.5/tr.json/translate?key=${apiKey}&text=${encodeURIComponent(text)}&lang=en-${targetLang}`;
|
|
59
|
+
/** @type {any} */
|
|
60
|
+
const response = await axios({url, timeout: 15000});
|
|
61
|
+
if (response.data && response.data.text && isArray(response.data.text)) {
|
|
62
|
+
return response.data.text[0];
|
|
63
|
+
}
|
|
64
|
+
throw new Error('Invalid response for translate request');
|
|
65
|
+
} catch (e) {
|
|
66
|
+
throw new Error(`Could not translate to "${targetLang}": ${e}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Translates text with Google API
|
|
72
|
+
* @param {string} text The text to translate
|
|
73
|
+
* @param {string} targetLang The target languate
|
|
74
|
+
* @returns {Promise<string>}
|
|
75
|
+
*/
|
|
76
|
+
async function translateGoogle(text, targetLang) {
|
|
77
|
+
try {
|
|
78
|
+
const url = `http://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=${targetLang}&dt=t&q=${encodeURIComponent(text)}&ie=UTF-8&oe=UTF-8`;
|
|
79
|
+
const response = await axios({url, timeout: 15000});
|
|
80
|
+
if (isArray(response.data)) {
|
|
81
|
+
// we got a valid response
|
|
82
|
+
return response.data[0][0][0];
|
|
83
|
+
}
|
|
84
|
+
throw new Error('Invalid response for translate request');
|
|
85
|
+
} catch (e) {
|
|
86
|
+
if (e.response && e.response.status === 429) {
|
|
87
|
+
throw new Error(
|
|
88
|
+
`Could not translate to "${targetLang}": Rate-limited by Google Translate`
|
|
89
|
+
);
|
|
90
|
+
} else {
|
|
91
|
+
throw new Error(`Could not translate to "${targetLang}": ${e}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
module.exports = {
|
|
97
|
+
isArray,
|
|
98
|
+
isObject,
|
|
99
|
+
translateText
|
|
100
|
+
};
|