iobroker.senec 1.3.4 → 1.3.5-beta
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 +4 -0
- package/io-package.json +13 -1
- package/lib/state_attr.js +666 -10
- package/main.js +70 -52
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -370,6 +370,10 @@ This channel contains calculated values. Currently these are day/week/month/year
|
|
|
370
370
|
*Read-only number, which designates the number of wallbox [0..3]. This is only available on systems with configured wallboxes.*
|
|
371
371
|
|
|
372
372
|
## Changelog
|
|
373
|
+
### 1.3.5-beta (NoBl)
|
|
374
|
+
* Added more state attributes (if you have updated descriptions or anything, please open an issue!)
|
|
375
|
+
* Workaround in case SENEC reports bogus request data
|
|
376
|
+
|
|
373
377
|
### 1.3.4 (NoBl)
|
|
374
378
|
* Moved from request to axios
|
|
375
379
|
* Added more state attributes (if you have updated descriptions or anything, please open an issue!)
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "senec",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.5-beta",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.3.5-beta": {
|
|
7
|
+
"en": "Added more state attributes (if you have updated descriptions or anything, please open an issue!), Workaround in case SENEC reports bogus request data",
|
|
8
|
+
"de": "Weitere Beschreibungen für Datenpunkte hinzugefügt (wenn Sie hierzu Updates, fehlende Datenpunkte, etc haben, öffnen Sie bitte ein Ticket auf github; Problemumgehung für den Fall, dass SENEC gefälschte Anfragedaten meldet",
|
|
9
|
+
"ru": "Добавлено больше атрибутов состояния (если вы обновили описания или что-то еще, пожалуйста, откройте проблему!), Обходной путь в случае, если SENEC сообщает о фиктивных данных запроса",
|
|
10
|
+
"pt": "Adicionados mais atributos de estado (se você atualizou as descrições ou qualquer coisa, abra um problema!), Solução alternativa caso a SENEC relate dados de solicitação falsos",
|
|
11
|
+
"nl": "Meer statusattributen toegevoegd (als je beschrijvingen hebt bijgewerkt of iets dergelijks, open dan een probleem!), Tijdelijke oplossing voor het geval SENEC valse verzoekgegevens meldt",
|
|
12
|
+
"fr": "Ajout de plus d'attributs d'état (si vous avez mis à jour des descriptions ou quoi que ce soit, veuillez ouvrir un problème !), Solution de contournement au cas où SENEC signale de fausses données de demande",
|
|
13
|
+
"it": "Aggiunti più attributi di stato (se hai descrizioni aggiornate o altro, apri un problema!), Soluzione alternativa nel caso in cui SENEC segnali dati di richiesta fasulli",
|
|
14
|
+
"es": "Se agregaron más atributos de estado (si tiene descripciones actualizadas o algo, ¡abra un problema!), Solución alternativa en caso de que SENEC informe datos de solicitud falsos",
|
|
15
|
+
"pl": "Dodano więcej atrybutów stanu (jeśli zaktualizowałeś opisy lub cokolwiek, otwórz problem!), Obejście w przypadku, gdy SENEC zgłosi fałszywe dane żądania",
|
|
16
|
+
"zh-cn": "添加了更多的状态属性(如果您有更新的描述或任何内容,请打开一个问题!),以防 SENEC 报告虚假请求数据的解决方法"
|
|
17
|
+
},
|
|
6
18
|
"1.3.4": {
|
|
7
19
|
"en": "Moved from request to axios, Added more state attributes (if you have updated descriptions or anything, please open an issue!)",
|
|
8
20
|
"de": "Poll von request zu axios geändert, weitere Zustandsattribute hinzugefügt (wenn Sie aktuellere Beschreibungen, ... haben, bitte issue auf GitHub eröffnen!)",
|
package/lib/state_attr.js
CHANGED
|
@@ -872,6 +872,14 @@ const state_attr = {
|
|
|
872
872
|
datetype: false,
|
|
873
873
|
iptype: false,
|
|
874
874
|
multiply: 1
|
|
875
|
+
},
|
|
876
|
+
'BAT1.DRM0_ASSERT': {
|
|
877
|
+
name: 'DRM0_ASSERT',
|
|
878
|
+
unit: '',
|
|
879
|
+
booltype: false,
|
|
880
|
+
datetype: false,
|
|
881
|
+
iptype: false,
|
|
882
|
+
multiply: 1
|
|
875
883
|
},
|
|
876
884
|
'BAT1.CEI_LIMIT': {
|
|
877
885
|
name: 'CEI_LIMIT',
|
|
@@ -2168,6 +2176,14 @@ const state_attr = {
|
|
|
2168
2176
|
datetype: false,
|
|
2169
2177
|
iptype: false,
|
|
2170
2178
|
multiply: 1
|
|
2179
|
+
},
|
|
2180
|
+
'BMS.MANUFACTURER': {
|
|
2181
|
+
name: 'Manufacturer',
|
|
2182
|
+
unit: '',
|
|
2183
|
+
booltype: false,
|
|
2184
|
+
datetype: false,
|
|
2185
|
+
iptype: false,
|
|
2186
|
+
multiply: 1
|
|
2171
2187
|
},
|
|
2172
2188
|
'BMS.MAX_CELL_VOLTAGE': {
|
|
2173
2189
|
name: 'Max Cell Voltage',
|
|
@@ -2216,6 +2232,22 @@ const state_attr = {
|
|
|
2216
2232
|
datetype: false,
|
|
2217
2233
|
iptype: false,
|
|
2218
2234
|
multiply: 1
|
|
2235
|
+
},
|
|
2236
|
+
'BMS.NOM_CHARGEPOWER_MODULE': {
|
|
2237
|
+
name: 'Nominal Chargepower Module',
|
|
2238
|
+
unit: 'W',
|
|
2239
|
+
booltype: false,
|
|
2240
|
+
datetype: false,
|
|
2241
|
+
iptype: false,
|
|
2242
|
+
multiply: 1
|
|
2243
|
+
},
|
|
2244
|
+
'BMS.NOM_DISCHARGEPOWER_MODULE': {
|
|
2245
|
+
name: 'Nominal Dischargepower Module',
|
|
2246
|
+
unit: 'W',
|
|
2247
|
+
booltype: false,
|
|
2248
|
+
datetype: false,
|
|
2249
|
+
iptype: false,
|
|
2250
|
+
multiply: 1
|
|
2219
2251
|
},
|
|
2220
2252
|
'BMS.NR_ACTIVE': {
|
|
2221
2253
|
name: 'NR_ACTIVE',
|
|
@@ -2416,6 +2448,22 @@ const state_attr = {
|
|
|
2416
2448
|
datetype: false,
|
|
2417
2449
|
iptype: false,
|
|
2418
2450
|
multiply: 1
|
|
2451
|
+
},
|
|
2452
|
+
'CASC.BATPOWERSUM': {
|
|
2453
|
+
name: 'Battery power sum',
|
|
2454
|
+
unit: 'W',
|
|
2455
|
+
booltype: false,
|
|
2456
|
+
datetype: false,
|
|
2457
|
+
iptype: false,
|
|
2458
|
+
multiply: 1
|
|
2459
|
+
},
|
|
2460
|
+
'CASC.POWER': {
|
|
2461
|
+
name: 'Power',
|
|
2462
|
+
unit: 'W',
|
|
2463
|
+
booltype: false,
|
|
2464
|
+
datetype: false,
|
|
2465
|
+
iptype: false,
|
|
2466
|
+
multiply: 1
|
|
2419
2467
|
},
|
|
2420
2468
|
'CASC.POWER0': {
|
|
2421
2469
|
name: 'CASC.POWER0',
|
|
@@ -2464,6 +2512,30 @@ const state_attr = {
|
|
|
2464
2512
|
datetype: false,
|
|
2465
2513
|
iptype: false,
|
|
2466
2514
|
multiply: 1
|
|
2515
|
+
},
|
|
2516
|
+
'CASC.PVGEN': {
|
|
2517
|
+
name: 'PV generation',
|
|
2518
|
+
unit: 'W',
|
|
2519
|
+
booltype: false,
|
|
2520
|
+
datetype: false,
|
|
2521
|
+
iptype: false,
|
|
2522
|
+
multiply: 1
|
|
2523
|
+
},
|
|
2524
|
+
'CASC.PVMASTER': {
|
|
2525
|
+
name: 'PV master',
|
|
2526
|
+
unit: '',
|
|
2527
|
+
booltype: false,
|
|
2528
|
+
datetype: false,
|
|
2529
|
+
iptype: false,
|
|
2530
|
+
multiply: 1
|
|
2531
|
+
},
|
|
2532
|
+
'CASC.SOC': {
|
|
2533
|
+
name: 'SOC (State of charge)',
|
|
2534
|
+
unit: '%',
|
|
2535
|
+
booltype: false,
|
|
2536
|
+
datetype: false,
|
|
2537
|
+
iptype: false,
|
|
2538
|
+
multiply: 1
|
|
2467
2539
|
},
|
|
2468
2540
|
'CASC.SOC0': {
|
|
2469
2541
|
name: 'CASC.SOC0',
|
|
@@ -2512,6 +2584,14 @@ const state_attr = {
|
|
|
2512
2584
|
datetype: false,
|
|
2513
2585
|
iptype: false,
|
|
2514
2586
|
multiply: 1
|
|
2587
|
+
},
|
|
2588
|
+
'CASC.STATE': {
|
|
2589
|
+
name: 'State',
|
|
2590
|
+
unit: '',
|
|
2591
|
+
booltype: false,
|
|
2592
|
+
datetype: false,
|
|
2593
|
+
iptype: false,
|
|
2594
|
+
multiply: 1
|
|
2515
2595
|
},
|
|
2516
2596
|
'CASC.STATE0': {
|
|
2517
2597
|
name: 'CASC.STATE0',
|
|
@@ -2560,6 +2640,14 @@ const state_attr = {
|
|
|
2560
2640
|
datetype: false,
|
|
2561
2641
|
iptype: false,
|
|
2562
2642
|
multiply: 1
|
|
2643
|
+
},
|
|
2644
|
+
'CASC.TARGET': {
|
|
2645
|
+
name: 'Target',
|
|
2646
|
+
unit: '',
|
|
2647
|
+
booltype: false,
|
|
2648
|
+
datetype: false,
|
|
2649
|
+
iptype: false,
|
|
2650
|
+
multiply: 1
|
|
2563
2651
|
},
|
|
2564
2652
|
'CASC.TARGET0': {
|
|
2565
2653
|
name: 'CASC.TARGET0',
|
|
@@ -2728,6 +2816,14 @@ const state_attr = {
|
|
|
2728
2816
|
datetype: false,
|
|
2729
2817
|
iptype: false,
|
|
2730
2818
|
multiply: 1
|
|
2819
|
+
},
|
|
2820
|
+
'DEBUG.SECTIONS': {
|
|
2821
|
+
name: 'Sections',
|
|
2822
|
+
unit: '',
|
|
2823
|
+
booltype: false,
|
|
2824
|
+
datetype: false,
|
|
2825
|
+
iptype: false,
|
|
2826
|
+
multiply: 1
|
|
2731
2827
|
},
|
|
2732
2828
|
'DEBUG.STACK_MONITOR': {
|
|
2733
2829
|
name: 'DEBUG.STACK_MONITOR',
|
|
@@ -2833,7 +2929,7 @@ const state_attr = {
|
|
|
2833
2929
|
iptype: false,
|
|
2834
2930
|
multiply: 1
|
|
2835
2931
|
},
|
|
2836
|
-
|
|
2932
|
+
'ENERGY.FORCE_FULL_CHARGE': {
|
|
2837
2933
|
name: 'Force Full Charge',
|
|
2838
2934
|
unit: '',
|
|
2839
2935
|
booltype: true,
|
|
@@ -2841,6 +2937,14 @@ const state_attr = {
|
|
|
2841
2937
|
iptype: false,
|
|
2842
2938
|
multiply: 1
|
|
2843
2939
|
},
|
|
2940
|
+
'ENERGY.CAPTESTMODULE': {
|
|
2941
|
+
name: 'Capacity Test Module',
|
|
2942
|
+
unit: '',
|
|
2943
|
+
booltype: true,
|
|
2944
|
+
datetype: false,
|
|
2945
|
+
iptype: false,
|
|
2946
|
+
multiply: 1
|
|
2947
|
+
},
|
|
2844
2948
|
'ENERGY.GRID_POWER_OFFSET': {
|
|
2845
2949
|
name: 'GRID_POWER_OFFSET',
|
|
2846
2950
|
unit: '',
|
|
@@ -3297,10 +3401,18 @@ const state_attr = {
|
|
|
3297
3401
|
iptype: false,
|
|
3298
3402
|
multiply: 1
|
|
3299
3403
|
},
|
|
3300
|
-
|
|
3301
|
-
name: 'Offpeak
|
|
3302
|
-
unit: '',
|
|
3303
|
-
booltype:
|
|
3404
|
+
'ENERGY.OFFPEAK_CURRENT': {
|
|
3405
|
+
name: 'Offpeak Current',
|
|
3406
|
+
unit: 'A',
|
|
3407
|
+
booltype: false,
|
|
3408
|
+
datetype: false,
|
|
3409
|
+
iptype: false,
|
|
3410
|
+
multiply: 1
|
|
3411
|
+
},
|
|
3412
|
+
'ENERGY.OFFPEAK_POWER': {
|
|
3413
|
+
name: 'Offpeak Power',
|
|
3414
|
+
unit: 'W',
|
|
3415
|
+
booltype: false,
|
|
3304
3416
|
datetype: false,
|
|
3305
3417
|
iptype: false,
|
|
3306
3418
|
multiply: 1
|
|
@@ -3536,6 +3648,14 @@ const state_attr = {
|
|
|
3536
3648
|
datetype: false,
|
|
3537
3649
|
iptype: false,
|
|
3538
3650
|
multiply: 1
|
|
3651
|
+
},
|
|
3652
|
+
'FACTORY.DESIGN_CAPACITY': {
|
|
3653
|
+
name: 'Design capactiy',
|
|
3654
|
+
unit: 'kWh',
|
|
3655
|
+
booltype: false,
|
|
3656
|
+
datetype: false,
|
|
3657
|
+
iptype: false,
|
|
3658
|
+
multiply: 0.001
|
|
3539
3659
|
},
|
|
3540
3660
|
'FACTORY.FAC_SANITY': {
|
|
3541
3661
|
name: 'FAC_SANITY',
|
|
@@ -3544,6 +3664,22 @@ const state_attr = {
|
|
|
3544
3664
|
datetype: false,
|
|
3545
3665
|
iptype: false,
|
|
3546
3666
|
multiply: 1
|
|
3667
|
+
},
|
|
3668
|
+
'FACTORY.MAX_CHARGE_POWER_DC': {
|
|
3669
|
+
name: 'maximum charge power DC',
|
|
3670
|
+
unit: 'W',
|
|
3671
|
+
booltype: false,
|
|
3672
|
+
datetype: false,
|
|
3673
|
+
iptype: false,
|
|
3674
|
+
multiply: 1
|
|
3675
|
+
},
|
|
3676
|
+
'FACTORY.MAX_DISCHARGE_POWER_DC': {
|
|
3677
|
+
name: 'maximum discharge power DC',
|
|
3678
|
+
unit: 'W',
|
|
3679
|
+
booltype: false,
|
|
3680
|
+
datetype: false,
|
|
3681
|
+
iptype: false,
|
|
3682
|
+
multiply: 1
|
|
3547
3683
|
},
|
|
3548
3684
|
'FACTORY.PM_TYPE': {
|
|
3549
3685
|
name: 'PM_TYPE',
|
|
@@ -3961,10 +4097,114 @@ const state_attr = {
|
|
|
3961
4097
|
iptype: false,
|
|
3962
4098
|
multiply: 1
|
|
3963
4099
|
},
|
|
3964
|
-
'GRIDCONFIG.
|
|
3965
|
-
name: '
|
|
4100
|
+
'GRIDCONFIG.VDE_FREQDROPPROT': {
|
|
4101
|
+
name: 'VDE_FREQDROPPROT',
|
|
3966
4102
|
unit: '',
|
|
3967
|
-
booltype:
|
|
4103
|
+
booltype: false,
|
|
4104
|
+
datetype: false,
|
|
4105
|
+
iptype: false,
|
|
4106
|
+
multiply: 1
|
|
4107
|
+
},
|
|
4108
|
+
'GRIDCONFIG.VDE_FREQDROPPROTDELAY': {
|
|
4109
|
+
name: 'VDE_FREQDROPPROTDELAY',
|
|
4110
|
+
unit: '',
|
|
4111
|
+
booltype: false,
|
|
4112
|
+
datetype: false,
|
|
4113
|
+
iptype: false,
|
|
4114
|
+
multiply: 1
|
|
4115
|
+
},
|
|
4116
|
+
'GRIDCONFIG.VDE_FREQRISEPROT': {
|
|
4117
|
+
name: 'VDE_FREQRISEPROT',
|
|
4118
|
+
unit: '',
|
|
4119
|
+
booltype: false,
|
|
4120
|
+
datetype: false,
|
|
4121
|
+
iptype: false,
|
|
4122
|
+
multiply: 1
|
|
4123
|
+
},
|
|
4124
|
+
'GRIDCONFIG.VDE_FREQRISEPROTDELAY': {
|
|
4125
|
+
name: 'VDE_FREQRISEPROTDELAY',
|
|
4126
|
+
unit: '',
|
|
4127
|
+
booltype: false,
|
|
4128
|
+
datetype: false,
|
|
4129
|
+
iptype: false,
|
|
4130
|
+
multiply: 1
|
|
4131
|
+
},
|
|
4132
|
+
'GRIDCONFIG.VDE_UNDERFREQLIMIT': {
|
|
4133
|
+
name: 'VDE_UNDERFREQLIMIT',
|
|
4134
|
+
unit: '',
|
|
4135
|
+
booltype: false,
|
|
4136
|
+
datetype: false,
|
|
4137
|
+
iptype: false,
|
|
4138
|
+
multiply: 1
|
|
4139
|
+
},
|
|
4140
|
+
'GRIDCONFIG.VDE_VOLTDROPPROT': {
|
|
4141
|
+
name: 'VDE_VOLTDROPPROT',
|
|
4142
|
+
unit: '',
|
|
4143
|
+
booltype: false,
|
|
4144
|
+
datetype: false,
|
|
4145
|
+
iptype: false,
|
|
4146
|
+
multiply: 1
|
|
4147
|
+
},
|
|
4148
|
+
'GRIDCONFIG.VDE_VOLTDROPPROTAVG': {
|
|
4149
|
+
name: 'VDE_VOLTDROPPROTAVG',
|
|
4150
|
+
unit: '',
|
|
4151
|
+
booltype: false,
|
|
4152
|
+
datetype: false,
|
|
4153
|
+
iptype: false,
|
|
4154
|
+
multiply: 1
|
|
4155
|
+
},
|
|
4156
|
+
'GRIDCONFIG.VDE_VOLTDROPPROTAVG': {
|
|
4157
|
+
name: 'VDE_VOLTDROPPROTAVG',
|
|
4158
|
+
unit: '',
|
|
4159
|
+
booltype: false,
|
|
4160
|
+
datetype: false,
|
|
4161
|
+
iptype: false,
|
|
4162
|
+
multiply: 1
|
|
4163
|
+
},
|
|
4164
|
+
'GRIDCONFIG.VDE_VOLTDROPPROTAVGDELAY': {
|
|
4165
|
+
name: 'VDE_VOLTDROPPROTAVGDELAY',
|
|
4166
|
+
unit: '',
|
|
4167
|
+
booltype: false,
|
|
4168
|
+
datetype: false,
|
|
4169
|
+
iptype: false,
|
|
4170
|
+
multiply: 1
|
|
4171
|
+
},
|
|
4172
|
+
'GRIDCONFIG.VDE_VOLTDROPPROTDELAY': {
|
|
4173
|
+
name: 'VDE_VOLTDROPPROTDELAY',
|
|
4174
|
+
unit: '',
|
|
4175
|
+
booltype: false,
|
|
4176
|
+
datetype: false,
|
|
4177
|
+
iptype: false,
|
|
4178
|
+
multiply: 1
|
|
4179
|
+
},
|
|
4180
|
+
'GRIDCONFIG.VDE_VOLTRISEPROT': {
|
|
4181
|
+
name: 'VDE_VOLTRISEPROT',
|
|
4182
|
+
unit: '',
|
|
4183
|
+
booltype: false,
|
|
4184
|
+
datetype: false,
|
|
4185
|
+
iptype: false,
|
|
4186
|
+
multiply: 1
|
|
4187
|
+
},
|
|
4188
|
+
'GRIDCONFIG.VDE_VOLTRISEPROTAVG': {
|
|
4189
|
+
name: 'VDE_VOLTRISEPROTAVG',
|
|
4190
|
+
unit: '',
|
|
4191
|
+
booltype: false,
|
|
4192
|
+
datetype: false,
|
|
4193
|
+
iptype: false,
|
|
4194
|
+
multiply: 1
|
|
4195
|
+
},
|
|
4196
|
+
'GRIDCONFIG.VDE_VOLTRISEPROTAVGDELAY': {
|
|
4197
|
+
name: 'VDE_VOLTRISEPROTAVGDELAY',
|
|
4198
|
+
unit: '',
|
|
4199
|
+
booltype: false,
|
|
4200
|
+
datetype: false,
|
|
4201
|
+
iptype: false,
|
|
4202
|
+
multiply: 1
|
|
4203
|
+
},
|
|
4204
|
+
'GRIDCONFIG.VDE_VOLTRISEPROTDELAY': {
|
|
4205
|
+
name: 'VDE_VOLTRISEPROTDELAY',
|
|
4206
|
+
unit: '',
|
|
4207
|
+
booltype: false,
|
|
3968
4208
|
datetype: false,
|
|
3969
4209
|
iptype: false,
|
|
3970
4210
|
multiply: 1
|
|
@@ -4224,6 +4464,110 @@ const state_attr = {
|
|
|
4224
4464
|
datetype: false,
|
|
4225
4465
|
iptype: false,
|
|
4226
4466
|
multiply: 1
|
|
4467
|
+
},
|
|
4468
|
+
'PV1.INTERNAL_INV_ERROR_TEXT': {
|
|
4469
|
+
name: 'Internal inverter error text',
|
|
4470
|
+
unit: '',
|
|
4471
|
+
booltype: false,
|
|
4472
|
+
datetype: false,
|
|
4473
|
+
iptype: false,
|
|
4474
|
+
multiply: 1
|
|
4475
|
+
},
|
|
4476
|
+
'PV1.INTERNAL_INV_ERR_STATE_VALID': {
|
|
4477
|
+
name: 'Internal inverter error state valid',
|
|
4478
|
+
unit: '',
|
|
4479
|
+
booltype: true,
|
|
4480
|
+
datetype: false,
|
|
4481
|
+
iptype: false,
|
|
4482
|
+
multiply: 1
|
|
4483
|
+
},
|
|
4484
|
+
'PV1.INTERNAL_INV_STATE': {
|
|
4485
|
+
name: 'Internal inverter state',
|
|
4486
|
+
unit: '',
|
|
4487
|
+
booltype: false,
|
|
4488
|
+
datetype: false,
|
|
4489
|
+
iptype: false,
|
|
4490
|
+
multiply: 1
|
|
4491
|
+
},
|
|
4492
|
+
'PV1.INTERNAL_MD_AVAIL': {
|
|
4493
|
+
name: 'Internal MD available',
|
|
4494
|
+
unit: '',
|
|
4495
|
+
booltype: true,
|
|
4496
|
+
datetype: false,
|
|
4497
|
+
iptype: false,
|
|
4498
|
+
multiply: 1
|
|
4499
|
+
},
|
|
4500
|
+
'PV1.INTERNAL_MD_MANUFACTURER': {
|
|
4501
|
+
name: 'Internal MD manufacturer',
|
|
4502
|
+
unit: '',
|
|
4503
|
+
booltype: false,
|
|
4504
|
+
datetype: false,
|
|
4505
|
+
iptype: false,
|
|
4506
|
+
multiply: 1
|
|
4507
|
+
},
|
|
4508
|
+
'PV1.INTERNAL_MD_MODEL': {
|
|
4509
|
+
name: 'Internal MD model',
|
|
4510
|
+
unit: '',
|
|
4511
|
+
booltype: false,
|
|
4512
|
+
datetype: false,
|
|
4513
|
+
iptype: false,
|
|
4514
|
+
multiply: 1
|
|
4515
|
+
},
|
|
4516
|
+
'PV1.INTERNAL_MD_SERIAL': {
|
|
4517
|
+
name: 'Internal MD serial',
|
|
4518
|
+
unit: '',
|
|
4519
|
+
booltype: false,
|
|
4520
|
+
datetype: false,
|
|
4521
|
+
iptype: false,
|
|
4522
|
+
multiply: 1
|
|
4523
|
+
},
|
|
4524
|
+
'PV1.INTERNAL_MD_VERSION': {
|
|
4525
|
+
name: 'Internal MD version',
|
|
4526
|
+
unit: '',
|
|
4527
|
+
booltype: false,
|
|
4528
|
+
datetype: false,
|
|
4529
|
+
iptype: false,
|
|
4530
|
+
multiply: 1
|
|
4531
|
+
},
|
|
4532
|
+
'PV1.INTERNAL_PV_AVAIL': {
|
|
4533
|
+
name: 'Internal PV available',
|
|
4534
|
+
unit: '',
|
|
4535
|
+
booltype: true,
|
|
4536
|
+
datetype: false,
|
|
4537
|
+
iptype: false,
|
|
4538
|
+
multiply: 1
|
|
4539
|
+
},
|
|
4540
|
+
'PV1.INV_MODEL': {
|
|
4541
|
+
name: 'Inverter model',
|
|
4542
|
+
unit: '',
|
|
4543
|
+
booltype: false,
|
|
4544
|
+
datetype: false,
|
|
4545
|
+
iptype: false,
|
|
4546
|
+
multiply: 1
|
|
4547
|
+
},
|
|
4548
|
+
'PV1.INV_SERIAL': {
|
|
4549
|
+
name: 'Inverter serial',
|
|
4550
|
+
unit: '',
|
|
4551
|
+
booltype: false,
|
|
4552
|
+
datetype: false,
|
|
4553
|
+
iptype: false,
|
|
4554
|
+
multiply: 1
|
|
4555
|
+
},
|
|
4556
|
+
'PV1.INV_VERSIONS': {
|
|
4557
|
+
name: 'Inverter versions',
|
|
4558
|
+
unit: '',
|
|
4559
|
+
booltype: false,
|
|
4560
|
+
datetype: false,
|
|
4561
|
+
iptype: false,
|
|
4562
|
+
multiply: 1
|
|
4563
|
+
},
|
|
4564
|
+
'PV1.MPP_AVAIL': {
|
|
4565
|
+
name: 'MPP available',
|
|
4566
|
+
unit: '',
|
|
4567
|
+
booltype: true,
|
|
4568
|
+
datetype: false,
|
|
4569
|
+
iptype: false,
|
|
4570
|
+
multiply: 1
|
|
4227
4571
|
},
|
|
4228
4572
|
'PV1.MPP_VOL': {
|
|
4229
4573
|
name: 'Voltage DC',
|
|
@@ -4248,6 +4592,30 @@ const state_attr = {
|
|
|
4248
4592
|
datetype: false,
|
|
4249
4593
|
iptype: false,
|
|
4250
4594
|
multiply: 1
|
|
4595
|
+
},
|
|
4596
|
+
'PV1.POWER_RATIO_L1': {
|
|
4597
|
+
name: 'PV1 Power Ratio L1',
|
|
4598
|
+
unit: '%',
|
|
4599
|
+
booltype: false,
|
|
4600
|
+
datetype: false,
|
|
4601
|
+
iptype: false,
|
|
4602
|
+
multiply: 1
|
|
4603
|
+
},
|
|
4604
|
+
'PV1.POWER_RATIO_L2': {
|
|
4605
|
+
name: 'PV1 Power Ratio L2',
|
|
4606
|
+
unit: '%',
|
|
4607
|
+
booltype: false,
|
|
4608
|
+
datetype: false,
|
|
4609
|
+
iptype: false,
|
|
4610
|
+
multiply: 1
|
|
4611
|
+
},
|
|
4612
|
+
'PV1.POWER_RATIO_L3': {
|
|
4613
|
+
name: 'PV1 Power Ratio L3',
|
|
4614
|
+
unit: '%',
|
|
4615
|
+
booltype: false,
|
|
4616
|
+
datetype: false,
|
|
4617
|
+
iptype: false,
|
|
4618
|
+
multiply: 1
|
|
4251
4619
|
},
|
|
4252
4620
|
'PV1.PV_MISSING': {
|
|
4253
4621
|
name: 'PV_MISSING',
|
|
@@ -4520,6 +4888,14 @@ const state_attr = {
|
|
|
4520
4888
|
datetype: false,
|
|
4521
4889
|
iptype: false,
|
|
4522
4890
|
multiply: 1
|
|
4891
|
+
},
|
|
4892
|
+
'RTC.TIMESTAMP_MS': {
|
|
4893
|
+
name: 'RTC.TIMESTAMP_MS',
|
|
4894
|
+
unit: '',
|
|
4895
|
+
booltype: false,
|
|
4896
|
+
datetype: false,
|
|
4897
|
+
iptype: false,
|
|
4898
|
+
multiply: 1
|
|
4523
4899
|
},
|
|
4524
4900
|
'RTC.UTC_OFFSET': {
|
|
4525
4901
|
name: 'RTC.UTC_OFFSET',
|
|
@@ -4736,6 +5112,14 @@ const state_attr = {
|
|
|
4736
5112
|
datetype: false,
|
|
4737
5113
|
iptype: false,
|
|
4738
5114
|
multiply: 1
|
|
5115
|
+
},
|
|
5116
|
+
'STATISTIC.LIVE_PV_GEN_MASTER': {
|
|
5117
|
+
name: 'Live PV Generation Master',
|
|
5118
|
+
unit: 'kWh',
|
|
5119
|
+
booltype: false,
|
|
5120
|
+
datetype: false,
|
|
5121
|
+
iptype: false,
|
|
5122
|
+
multiply: 1
|
|
4739
5123
|
},
|
|
4740
5124
|
'STATISTIC.LIVE_WB_ENERGY': {
|
|
4741
5125
|
name: 'Live Wallbox Energy',
|
|
@@ -5040,6 +5424,110 @@ const state_attr = {
|
|
|
5040
5424
|
datetype: false,
|
|
5041
5425
|
iptype: false,
|
|
5042
5426
|
multiply: 1
|
|
5427
|
+
},
|
|
5428
|
+
'STECA.BAT': {
|
|
5429
|
+
name: 'Bat',
|
|
5430
|
+
unit: '',
|
|
5431
|
+
booltype: false,
|
|
5432
|
+
datetype: false,
|
|
5433
|
+
iptype: false,
|
|
5434
|
+
multiply: 1
|
|
5435
|
+
},
|
|
5436
|
+
'STECA.BDC_STATE': {
|
|
5437
|
+
name: 'BDC State',
|
|
5438
|
+
unit: '',
|
|
5439
|
+
booltype: false,
|
|
5440
|
+
datetype: false,
|
|
5441
|
+
iptype: false,
|
|
5442
|
+
multiply: 1
|
|
5443
|
+
},
|
|
5444
|
+
'STECA.ERROR': {
|
|
5445
|
+
name: 'Error',
|
|
5446
|
+
unit: '',
|
|
5447
|
+
booltype: false,
|
|
5448
|
+
datetype: false,
|
|
5449
|
+
iptype: false,
|
|
5450
|
+
multiply: 1
|
|
5451
|
+
},
|
|
5452
|
+
'STECA.ERRORTEXT': {
|
|
5453
|
+
name: 'Error text',
|
|
5454
|
+
unit: '',
|
|
5455
|
+
booltype: false,
|
|
5456
|
+
datetype: false,
|
|
5457
|
+
iptype: false,
|
|
5458
|
+
multiply: 1
|
|
5459
|
+
},
|
|
5460
|
+
'STECA.ISLAND': {
|
|
5461
|
+
name: 'Island',
|
|
5462
|
+
unit: '',
|
|
5463
|
+
booltype: false,
|
|
5464
|
+
datetype: false,
|
|
5465
|
+
iptype: false,
|
|
5466
|
+
multiply: 1
|
|
5467
|
+
},
|
|
5468
|
+
'STECA.NUM_PV_CONFIG_POSSIBLE': {
|
|
5469
|
+
name: '# PV config possible',
|
|
5470
|
+
unit: '',
|
|
5471
|
+
booltype: false,
|
|
5472
|
+
datetype: false,
|
|
5473
|
+
iptype: false,
|
|
5474
|
+
multiply: 1
|
|
5475
|
+
},
|
|
5476
|
+
'STECA.PV': {
|
|
5477
|
+
name: 'PV',
|
|
5478
|
+
unit: '',
|
|
5479
|
+
booltype: false,
|
|
5480
|
+
datetype: false,
|
|
5481
|
+
iptype: false,
|
|
5482
|
+
multiply: 1
|
|
5483
|
+
},
|
|
5484
|
+
'STECA.PVSS': {
|
|
5485
|
+
name: 'PVSS',
|
|
5486
|
+
unit: '',
|
|
5487
|
+
booltype: false,
|
|
5488
|
+
datetype: false,
|
|
5489
|
+
iptype: false,
|
|
5490
|
+
multiply: 1
|
|
5491
|
+
},
|
|
5492
|
+
'STECA.PV_CONFIG_POSSIBLE': {
|
|
5493
|
+
name: 'PV config possible',
|
|
5494
|
+
unit: '',
|
|
5495
|
+
booltype: true,
|
|
5496
|
+
datetype: false,
|
|
5497
|
+
iptype: false,
|
|
5498
|
+
multiply: 1
|
|
5499
|
+
},
|
|
5500
|
+
'STECA.PV_INPUTS': {
|
|
5501
|
+
name: 'PV Inputs',
|
|
5502
|
+
unit: '',
|
|
5503
|
+
booltype: false,
|
|
5504
|
+
datetype: false,
|
|
5505
|
+
iptype: false,
|
|
5506
|
+
multiply: 1
|
|
5507
|
+
},
|
|
5508
|
+
'STECA.RELAYS': {
|
|
5509
|
+
name: 'RELAYS',
|
|
5510
|
+
unit: '',
|
|
5511
|
+
booltype: false,
|
|
5512
|
+
datetype: false,
|
|
5513
|
+
iptype: false,
|
|
5514
|
+
multiply: 1
|
|
5515
|
+
},
|
|
5516
|
+
'STECA.STARTUP': {
|
|
5517
|
+
name: 'STARTUP',
|
|
5518
|
+
unit: '',
|
|
5519
|
+
booltype: false,
|
|
5520
|
+
datetype: false,
|
|
5521
|
+
iptype: false,
|
|
5522
|
+
multiply: 1
|
|
5523
|
+
},
|
|
5524
|
+
'STECA.STARTUP_ADD': {
|
|
5525
|
+
name: 'Startup add',
|
|
5526
|
+
unit: '',
|
|
5527
|
+
booltype: false,
|
|
5528
|
+
datetype: false,
|
|
5529
|
+
iptype: false,
|
|
5530
|
+
multiply: 1
|
|
5043
5531
|
},
|
|
5044
5532
|
'SYS_UPDATE.BOOTLOADER_VERSION': {
|
|
5045
5533
|
name: 'Bootloader Version',
|
|
@@ -5200,6 +5688,22 @@ const state_attr = {
|
|
|
5200
5688
|
datetype: false,
|
|
5201
5689
|
iptype: false,
|
|
5202
5690
|
multiply: 1
|
|
5691
|
+
},
|
|
5692
|
+
'WALLBOX.ALLOW_INTERCHARGE': {
|
|
5693
|
+
name: 'ALLOW_INTERCHARGE',
|
|
5694
|
+
unit: '',
|
|
5695
|
+
booltype: false,
|
|
5696
|
+
datetype: false,
|
|
5697
|
+
iptype: false,
|
|
5698
|
+
multiply: 1
|
|
5699
|
+
},
|
|
5700
|
+
'WALLBOX.BUS_ADR': {
|
|
5701
|
+
name: 'Bus ADR',
|
|
5702
|
+
unit: '',
|
|
5703
|
+
booltype: false,
|
|
5704
|
+
datetype: false,
|
|
5705
|
+
iptype: false,
|
|
5706
|
+
multiply: 1
|
|
5203
5707
|
},
|
|
5204
5708
|
'WALLBOX.CS_ENABLED': {
|
|
5205
5709
|
name: 'WALLBOX.CS_ENABLED',
|
|
@@ -5208,6 +5712,14 @@ const state_attr = {
|
|
|
5208
5712
|
datetype: false,
|
|
5209
5713
|
iptype: false,
|
|
5210
5714
|
multiply: 1
|
|
5715
|
+
},
|
|
5716
|
+
'WALLBOX.DETECTION_MODE': {
|
|
5717
|
+
name: 'Detection Mode',
|
|
5718
|
+
unit: '',
|
|
5719
|
+
booltype: false,
|
|
5720
|
+
datetype: false,
|
|
5721
|
+
iptype: false,
|
|
5722
|
+
multiply: 1
|
|
5211
5723
|
},
|
|
5212
5724
|
'WALLBOX.EV_CONNECTED': {
|
|
5213
5725
|
name: 'WALLBOX.EV_CONNECTED',
|
|
@@ -5280,9 +5792,17 @@ const state_attr = {
|
|
|
5280
5792
|
datetype: false,
|
|
5281
5793
|
iptype: false,
|
|
5282
5794
|
multiply: 1
|
|
5795
|
+
},
|
|
5796
|
+
'WALLBOX.LOAD_IMBALANCE_ENABLED': {
|
|
5797
|
+
name: 'Load imbalance enabled',
|
|
5798
|
+
unit: '',
|
|
5799
|
+
booltype: true,
|
|
5800
|
+
datetype: false,
|
|
5801
|
+
iptype: false,
|
|
5802
|
+
multiply: 1
|
|
5283
5803
|
},
|
|
5284
5804
|
'WALLBOX.LOAD_IMBALANCE_DETECTED': {
|
|
5285
|
-
name: '
|
|
5805
|
+
name: 'Load imbalance detected',
|
|
5286
5806
|
unit: '',
|
|
5287
5807
|
booltype: true,
|
|
5288
5808
|
datetype: false,
|
|
@@ -5328,6 +5848,22 @@ const state_attr = {
|
|
|
5328
5848
|
datetype: false,
|
|
5329
5849
|
iptype: false,
|
|
5330
5850
|
multiply: 1
|
|
5851
|
+
},
|
|
5852
|
+
'WALLBOX.MAX_PHASE_CURRENT_BY_GRID': {
|
|
5853
|
+
name: 'MAX_PHASE_CURRENT_BY_GRID',
|
|
5854
|
+
unit: 'A',
|
|
5855
|
+
booltype: false,
|
|
5856
|
+
datetype: false,
|
|
5857
|
+
iptype: false,
|
|
5858
|
+
multiply: 1
|
|
5859
|
+
},
|
|
5860
|
+
'WALLBOX.MAX_TOTAL_CURRENT_BY_GRID': {
|
|
5861
|
+
name: 'MAX_TOTAL_CURRENT_BY_GRID',
|
|
5862
|
+
unit: 'A',
|
|
5863
|
+
booltype: false,
|
|
5864
|
+
datetype: false,
|
|
5865
|
+
iptype: false,
|
|
5866
|
+
multiply: 1
|
|
5331
5867
|
},
|
|
5332
5868
|
'WALLBOX.METER_ENABLED': {
|
|
5333
5869
|
name: 'WALLBOX.METER_ENABLED',
|
|
@@ -5344,6 +5880,14 @@ const state_attr = {
|
|
|
5344
5880
|
datetype: false,
|
|
5345
5881
|
iptype: false,
|
|
5346
5882
|
multiply: 1
|
|
5883
|
+
},
|
|
5884
|
+
'WALLBOX.MIN_CHARGING_CURRENT': {
|
|
5885
|
+
name: 'MIN_CHARGING_CURRENT',
|
|
5886
|
+
unit: 'A',
|
|
5887
|
+
booltype: false,
|
|
5888
|
+
datetype: false,
|
|
5889
|
+
iptype: false,
|
|
5890
|
+
multiply: 1
|
|
5347
5891
|
},
|
|
5348
5892
|
'WALLBOX.MINOR_REV': {
|
|
5349
5893
|
name: 'WALLBOX.MINOR_REV',
|
|
@@ -5360,14 +5904,46 @@ const state_attr = {
|
|
|
5360
5904
|
datetype: false,
|
|
5361
5905
|
iptype: false,
|
|
5362
5906
|
multiply: 1
|
|
5907
|
+
},
|
|
5908
|
+
'WALLBOX.PROHIBIT_USAGE': {
|
|
5909
|
+
name: 'Prohibit usage',
|
|
5910
|
+
unit: '',
|
|
5911
|
+
booltype: true,
|
|
5912
|
+
datetype: false,
|
|
5913
|
+
iptype: false,
|
|
5914
|
+
multiply: 1
|
|
5915
|
+
},
|
|
5916
|
+
'WALLBOX.SAP_NUMBER': {
|
|
5917
|
+
name: 'SAP number',
|
|
5918
|
+
unit: '',
|
|
5919
|
+
booltype: false,
|
|
5920
|
+
datetype: false,
|
|
5921
|
+
iptype: false,
|
|
5922
|
+
multiply: 1
|
|
5363
5923
|
},
|
|
5364
5924
|
'WALLBOX.SERIAL_NUMBER': {
|
|
5365
|
-
name: '
|
|
5925
|
+
name: 'Serial number',
|
|
5366
5926
|
unit: '',
|
|
5367
5927
|
booltype: false,
|
|
5368
5928
|
datetype: false,
|
|
5369
5929
|
iptype: false,
|
|
5370
5930
|
multiply: 1
|
|
5931
|
+
},
|
|
5932
|
+
'WALLBOX.SERIAL_NUMBER_INTERNAL': {
|
|
5933
|
+
name: 'Serial number internal',
|
|
5934
|
+
unit: '',
|
|
5935
|
+
booltype: false,
|
|
5936
|
+
datetype: false,
|
|
5937
|
+
iptype: false,
|
|
5938
|
+
multiply: 1
|
|
5939
|
+
},
|
|
5940
|
+
'WALLBOX.SET_IDEFAULT': {
|
|
5941
|
+
name: 'SET_IDEFAULT',
|
|
5942
|
+
unit: 'A',
|
|
5943
|
+
booltype: false,
|
|
5944
|
+
datetype: false,
|
|
5945
|
+
iptype: false,
|
|
5946
|
+
multiply: 1
|
|
5371
5947
|
},
|
|
5372
5948
|
'WALLBOX.SET_ICMAX': {
|
|
5373
5949
|
name: 'SET_ICMAX',
|
|
@@ -5376,6 +5952,14 @@ const state_attr = {
|
|
|
5376
5952
|
datetype: false,
|
|
5377
5953
|
iptype: false,
|
|
5378
5954
|
multiply: 1
|
|
5955
|
+
},
|
|
5956
|
+
'WALLBOX.SMART_CHARGE_ACTIVE': {
|
|
5957
|
+
name: 'Smart charge active',
|
|
5958
|
+
unit: '',
|
|
5959
|
+
booltype: true,
|
|
5960
|
+
datetype: false,
|
|
5961
|
+
iptype: false,
|
|
5962
|
+
multiply: 1
|
|
5379
5963
|
},
|
|
5380
5964
|
'WALLBOX.SOCKET_ENABLED': {
|
|
5381
5965
|
name: 'WALLBOX.SOCKET_ENABLED',
|
|
@@ -5400,6 +5984,14 @@ const state_attr = {
|
|
|
5400
5984
|
datetype: false,
|
|
5401
5985
|
iptype: false,
|
|
5402
5986
|
multiply: 1
|
|
5987
|
+
},
|
|
5988
|
+
'WALLBOX.UID': {
|
|
5989
|
+
name: 'UID',
|
|
5990
|
+
unit: '',
|
|
5991
|
+
booltype: false,
|
|
5992
|
+
datetype: false,
|
|
5993
|
+
iptype: false,
|
|
5994
|
+
multiply: 1
|
|
5403
5995
|
},
|
|
5404
5996
|
'WALLBOX.UTMP': {
|
|
5405
5997
|
name: 'WALLBOX.UTMP',
|
|
@@ -5544,6 +6136,14 @@ const state_attr = {
|
|
|
5544
6136
|
datetype: false,
|
|
5545
6137
|
iptype: false,
|
|
5546
6138
|
multiply: 1
|
|
6139
|
+
},
|
|
6140
|
+
'WIZARD.DEVICE_WB_TYPE': {
|
|
6141
|
+
name: 'Device WB Type',
|
|
6142
|
+
unit: '',
|
|
6143
|
+
booltype: false,
|
|
6144
|
+
datetype: false,
|
|
6145
|
+
iptype: false,
|
|
6146
|
+
multiply: 1
|
|
5547
6147
|
},
|
|
5548
6148
|
'WIZARD.FEATURECODE_ENTERED': {
|
|
5549
6149
|
name: 'Featurecode entered',
|
|
@@ -5691,6 +6291,14 @@ const state_attr = {
|
|
|
5691
6291
|
datetype: false,
|
|
5692
6292
|
iptype: false,
|
|
5693
6293
|
multiply: 1
|
|
6294
|
+
},
|
|
6295
|
+
'WIZARD.POWER_METER_SERIAL': {
|
|
6296
|
+
name: 'Power Meter Serial',
|
|
6297
|
+
unit: '',
|
|
6298
|
+
booltype: false,
|
|
6299
|
+
datetype: false,
|
|
6300
|
+
iptype: false,
|
|
6301
|
+
multiply: 1
|
|
5694
6302
|
},
|
|
5695
6303
|
'WIZARD.PS_ENABLE': {
|
|
5696
6304
|
name: 'PeakShaving ENABLE',
|
|
@@ -5763,6 +6371,14 @@ const state_attr = {
|
|
|
5763
6371
|
datetype: false,
|
|
5764
6372
|
iptype: false,
|
|
5765
6373
|
multiply: 1
|
|
6374
|
+
},
|
|
6375
|
+
'WIZARD.SETUP_HV_PHASE': {
|
|
6376
|
+
name: 'SETUP_HV_PHASE',
|
|
6377
|
+
unit: '',
|
|
6378
|
+
booltype: true,
|
|
6379
|
+
datetype: false,
|
|
6380
|
+
iptype: false,
|
|
6381
|
+
multiply: 1
|
|
5766
6382
|
},
|
|
5767
6383
|
'WIZARD.SETUP_NUMBER_WALLBOXES': {
|
|
5768
6384
|
name: '# Wallboxes',
|
|
@@ -5845,6 +6461,14 @@ const state_attr = {
|
|
|
5845
6461
|
datetype: false,
|
|
5846
6462
|
iptype: false,
|
|
5847
6463
|
multiply: 1
|
|
6464
|
+
},
|
|
6465
|
+
'WIZARD.SETUP_USE_DRM0': {
|
|
6466
|
+
name: 'SETUP_USE_DRM0',
|
|
6467
|
+
unit: '',
|
|
6468
|
+
booltype: true,
|
|
6469
|
+
datetype: false,
|
|
6470
|
+
iptype: false,
|
|
6471
|
+
multiply: 1
|
|
5848
6472
|
},
|
|
5849
6473
|
'WIZARD.SETUP_USED_PHASE': {
|
|
5850
6474
|
name: 'SETUP_USED_PHASE',
|
|
@@ -5885,6 +6509,30 @@ const state_attr = {
|
|
|
5885
6509
|
datetype: false,
|
|
5886
6510
|
iptype: false,
|
|
5887
6511
|
multiply: 1
|
|
6512
|
+
},
|
|
6513
|
+
'WIZARD.SG_READY_ENABLE_OVERWRITE': {
|
|
6514
|
+
name: 'SG_READY_ENABLE_OVERWRITE',
|
|
6515
|
+
unit: '',
|
|
6516
|
+
booltype: true,
|
|
6517
|
+
datetype: false,
|
|
6518
|
+
iptype: false,
|
|
6519
|
+
multiply: 1
|
|
6520
|
+
},
|
|
6521
|
+
'WIZARD.SG_READY_OVERWRITE_RELAY': {
|
|
6522
|
+
name: 'SG_READY_OVERWRITE_RELAY',
|
|
6523
|
+
unit: '',
|
|
6524
|
+
booltype: true,
|
|
6525
|
+
datetype: false,
|
|
6526
|
+
iptype: false,
|
|
6527
|
+
multiply: 1
|
|
6528
|
+
},
|
|
6529
|
+
'WIZARD.TEST_EG_METER': {
|
|
6530
|
+
name: 'TEST_EG_METER',
|
|
6531
|
+
unit: '',
|
|
6532
|
+
booltype: true,
|
|
6533
|
+
datetype: false,
|
|
6534
|
+
iptype: false,
|
|
6535
|
+
multiply: 1
|
|
5888
6536
|
},
|
|
5889
6537
|
'WIZARD.TEST_GENERATION_METER': {
|
|
5890
6538
|
name: 'TEST_GENERATION_METER',
|
|
@@ -5998,6 +6646,14 @@ const state_attr = {
|
|
|
5998
6646
|
iptype: false,
|
|
5999
6647
|
multiply: 1
|
|
6000
6648
|
},
|
|
6649
|
+
'WIZARD.ZEROMODULE': {
|
|
6650
|
+
name: 'ZEROMODULE',
|
|
6651
|
+
unit: '',
|
|
6652
|
+
booltype: false,
|
|
6653
|
+
datetype: false,
|
|
6654
|
+
iptype: false,
|
|
6655
|
+
multiply: 1
|
|
6656
|
+
},
|
|
6001
6657
|
|
|
6002
6658
|
}
|
|
6003
6659
|
|
package/main.js
CHANGED
|
@@ -66,29 +66,29 @@ class Senec extends utils.Adapter {
|
|
|
66
66
|
* Fallback to default values in case they are out of scope
|
|
67
67
|
*/
|
|
68
68
|
async checkConfig() {
|
|
69
|
-
this.log.debug("Configured polling interval high priority: " + this.config.interval);
|
|
69
|
+
this.log.debug("(checkConf) Configured polling interval high priority: " + this.config.interval);
|
|
70
70
|
if (this.config.interval < 1 || this.config.interval > 3600) {
|
|
71
|
-
this.log.warn("Config interval high priority " + this.config.interval + " not [1..3600] seconds. Using default: 10");
|
|
71
|
+
this.log.warn("(checkConf) Config interval high priority " + this.config.interval + " not [1..3600] seconds. Using default: 10");
|
|
72
72
|
this.config.interval = 10;
|
|
73
73
|
}
|
|
74
|
-
this.log.debug("Configured polling interval low priority: " + this.config.intervalLow);
|
|
74
|
+
this.log.debug("(checkConf) Configured polling interval low priority: " + this.config.intervalLow);
|
|
75
75
|
if (this.config.intervalLow < 60 || this.config.intervalLow > 3600) {
|
|
76
|
-
this.log.warn("Config interval low priority " + this.config.intervalLow + " not [60..3600] minutes. Using default: 60");
|
|
76
|
+
this.log.warn("(checkConf) Config interval low priority " + this.config.intervalLow + " not [60..3600] minutes. Using default: 60");
|
|
77
77
|
this.config.intervalLow = 60;
|
|
78
78
|
}
|
|
79
|
-
this.log.debug("Configured polling timeout: " + this.config.pollingTimeout);
|
|
79
|
+
this.log.debug("(checkConf) Configured polling timeout: " + this.config.pollingTimeout);
|
|
80
80
|
if (this.config.pollingTimeout < 1000 || this.config.pollingTimeout > 10000) {
|
|
81
|
-
this.log.warn("Config timeout " + this.config.pollingTimeout + " not [1000..10000] ms. Using default: 5000");
|
|
81
|
+
this.log.warn("(checkConf) Config timeout " + this.config.pollingTimeout + " not [1000..10000] ms. Using default: 5000");
|
|
82
82
|
this.config.pollingTimeout = 5000;
|
|
83
83
|
}
|
|
84
|
-
this.log.debug("Configured num of retries: " + this.config.retries);
|
|
84
|
+
this.log.debug("(checkConf) Configured num of retries: " + this.config.retries);
|
|
85
85
|
if (this.config.retries < 0 || this.config.retries > 999) {
|
|
86
|
-
this.log.warn("Config num of retries " + this.config.retries + " not [0..999] seconds. Using default: 10");
|
|
86
|
+
this.log.warn("(checkConf) Config num of retries " + this.config.retries + " not [0..999] seconds. Using default: 10");
|
|
87
87
|
this.config.retries = 10;
|
|
88
88
|
}
|
|
89
|
-
this.log.debug("Configured retry multiplier: " + this.config.retrymultiplier);
|
|
89
|
+
this.log.debug("(checkConf) Configured retry multiplier: " + this.config.retrymultiplier);
|
|
90
90
|
if (this.config.retrymultiplier < 1 || this.config.retrymultiplier > 10) {
|
|
91
|
-
this.log.warn("Config retry multiplier " + this.config.retrymultiplier + " not [1..10] seconds. Using default: 2");
|
|
91
|
+
this.log.warn("(checkConf) Config retry multiplier " + this.config.retrymultiplier + " not [1..10] seconds. Using default: 2");
|
|
92
92
|
this.config.retrymultiplier = 2;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -121,30 +121,32 @@ class Senec extends utils.Adapter {
|
|
|
121
121
|
url: pUrl,
|
|
122
122
|
data: pForm,
|
|
123
123
|
timeout: pollingTimeout
|
|
124
|
-
})
|
|
124
|
+
})
|
|
125
|
+
.then(
|
|
125
126
|
async (response) => {
|
|
126
127
|
const content = response.data;
|
|
127
|
-
caller.log.debug('received data (' + response.status + '): ' + JSON.stringify(content));
|
|
128
|
+
caller.log.debug('(Poll) received data (' + response.status + '): ' + JSON.stringify(content));
|
|
128
129
|
resolve(JSON.stringify(content));
|
|
129
130
|
}
|
|
130
|
-
)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
131
|
+
)
|
|
132
|
+
.catch(
|
|
133
|
+
(error) => {
|
|
134
|
+
if (error.response) {
|
|
135
|
+
// The request was made and the server responded with a status code
|
|
136
|
+
caller.log.warn('(Poll) received error ' + error.response.status + ' response from SENEC with content: ' + JSON.stringify(error.response.data));
|
|
137
|
+
reject(error.response.status);
|
|
138
|
+
} else if (error.request) {
|
|
139
|
+
// The request was made but no response was received
|
|
140
|
+
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of http.ClientRequest in node.js<div></div>
|
|
141
|
+
caller.log.info(error.message);
|
|
142
|
+
reject(error.message);
|
|
143
|
+
} else {
|
|
144
|
+
// Something happened in setting up the request that triggered an Error
|
|
145
|
+
caller.log.info(error.message);
|
|
146
|
+
reject(error.status);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
);
|
|
148
150
|
});
|
|
149
151
|
}
|
|
150
152
|
|
|
@@ -155,7 +157,7 @@ class Senec extends utils.Adapter {
|
|
|
155
157
|
async readSenecV21() {
|
|
156
158
|
// read by webinterface are the following values. Not all are "high priority" though.
|
|
157
159
|
// "STATISTIC":{"STAT_DAY_E_HOUSE":"","STAT_DAY_E_PV":"","STAT_DAY_BAT_CHARGE":"","STAT_DAY_BAT_DISCHARGE":"","STAT_DAY_E_GRID_IMPORT":"","STAT_DAY_E_GRID_EXPORT":"","STAT_YEAR_E_PU1_ARR":""}
|
|
158
|
-
// "ENERGY":{"STAT_STATE":"","
|
|
160
|
+
// "ENERGY":{"STAT_STATE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","STAT_MAINT_REQUIRED":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_CHARGING_INFO":"","GUI_BOOSTING_INFO":""}
|
|
159
161
|
// "WIZARD":{"CONFIG_LOADED":""},"SYS_UPDATE":{"UPDATE_AVAILABLE":""}
|
|
160
162
|
// "PV1":{"POWER_RATIO":""},"WIZARD":{"MAC_ADDRESS_BYTES":""},"BAT1OBJ1":{"BMS_NR_INSTALLED":"","SPECIAL_TIMEOUT":"","INV_CYCLE":"","TEMP1":"","TEMP2":"","TEMP3":"","TEMP4":"","TEMP5":"","SW_VERSION":"","SW_VERSION2":"","SW_VERSION3":"","I_DC":""},"BAT1OBJ2":{"TEMP1":"","TEMP2":"","TEMP3":"","TEMP4":"","TEMP5":"","I_DC":""},"BAT1OBJ3":{"TEMP1":"","TEMP2":"","TEMP3":"","TEMP4":"","TEMP5":"","I_DC":""},"PWR_UNIT":{"POWER_L1":"","POWER_L2":"","POWER_L3":""},"BAT1":{"CEI_LIMIT":""},"BMS":{}
|
|
161
163
|
// "PM1OBJ1":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""},"PM1OBJ2":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}
|
|
@@ -163,9 +165,8 @@ class Senec extends utils.Adapter {
|
|
|
163
165
|
|
|
164
166
|
const url = 'http://' + this.config.senecip + '/lala.cgi';
|
|
165
167
|
var form = '{';
|
|
166
|
-
form += '"ENERGY":{"STAT_STATE":"","
|
|
167
|
-
|
|
168
|
-
form += ',"PV1":{"POWER_RATIO":"","MPP_POWER":"","MPP_INT":""}';
|
|
168
|
+
form += '"ENERGY":{"STAT_STATE":"","GUI_BAT_DATA_POWER":"","GUI_INVERTER_POWER":"","GUI_HOUSE_POW":"","GUI_GRID_POW":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_CHARGING_INFO":"","GUI_BOOSTING_INFO":"","GUI_BAT_DATA_POWER":"","GUI_BAT_DATA_VOLTAGE":"","GUI_BAT_DATA_CURRENT":"","GUI_BAT_DATA_FUEL_CHARGE":"","GUI_BAT_DATA_OA_CHARGING":"","STAT_LIMITED_NET_SKEW":""}';
|
|
169
|
+
form += ',"PV1":{"POWER_RATIO":"","MPP_POWER":""}';
|
|
169
170
|
form += ',"PWR_UNIT":{"POWER_L1":"","POWER_L2":"","POWER_L3":""}';
|
|
170
171
|
form += ',"PM1OBJ1":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}';
|
|
171
172
|
form += ',"PM1OBJ2":{"FREQ":"","U_AC":"","I_AC":"","P_AC":"","P_TOTAL":""}';
|
|
@@ -173,7 +174,13 @@ class Senec extends utils.Adapter {
|
|
|
173
174
|
form += '}';
|
|
174
175
|
|
|
175
176
|
try {
|
|
176
|
-
|
|
177
|
+
var body = await this.doGet(url, form, this, this.config.pollingTimeout);
|
|
178
|
+
if (body.includes('\\"')) {
|
|
179
|
+
// in rare cases senec reports back extra escape sequences on some machines ...
|
|
180
|
+
this.log.info("(Poll) Double escapes detected! Body inc: " + body);
|
|
181
|
+
body = body.replace(/\\"/g, '"');
|
|
182
|
+
this.log.info("(Poll) Double escapes autofixed! Body out: " + body);
|
|
183
|
+
}
|
|
177
184
|
var obj = JSON.parse(body, reviverNumParse);
|
|
178
185
|
await this.evalPoll(obj);
|
|
179
186
|
|
|
@@ -203,7 +210,13 @@ class Senec extends utils.Adapter {
|
|
|
203
210
|
const form = '{"STATISTIC":{},"ENERGY":{},"FEATURES":{},"LOG":{},"SYS_UPDATE":{},"WIZARD":{},"BMS":{},"BAT1":{},"BAT1OBJ1":{},"BAT1OBJ2":{},"BAT1OBJ2":{},"BAT1OBJ3":{},"BAT1OBJ4":{},"PWR_UNIT":{},"PM1OBJ1":{},"PM1OBJ2":{},"PV1":{},"FACTORY":{},"GRIDCONFIG":{},"EG_CONTROL":{},"RTC":{},"PM1":{},"TEMPMEASURE":{},"DEBUG":{},"SOCKETS":{},"CASC":{},"WALLBOX":{},"CONNX50":{},"STECA":{}}';
|
|
204
211
|
|
|
205
212
|
try {
|
|
206
|
-
|
|
213
|
+
var body = await this.doGet(url, form, this, this.config.pollingTimeout);
|
|
214
|
+
if (body.includes('\\"')) {
|
|
215
|
+
// in rare cases senec reports back extra escape sequences on some machines ...
|
|
216
|
+
this.log.info("(Poll) Double escapes detected! Body inc: " + body);
|
|
217
|
+
body = body.replace(/\\"/g, '"');
|
|
218
|
+
this.log.info("(Poll) Double escapes autofixed! Body out: " + body);
|
|
219
|
+
}
|
|
207
220
|
var obj = JSON.parse(body, reviverNumParse);
|
|
208
221
|
|
|
209
222
|
await this.evalPoll(obj);
|
|
@@ -226,7 +239,12 @@ class Senec extends utils.Adapter {
|
|
|
226
239
|
* sets a state's value and creates the state if it doesn't exist yet
|
|
227
240
|
*/
|
|
228
241
|
async doState(name, value, description, unit, write) {
|
|
229
|
-
|
|
242
|
+
if (!isNaN(name.substring(0, 1))) {
|
|
243
|
+
// keys cannot start with digits! Possibly SENEC delivering erraneous data
|
|
244
|
+
this.log.debug('(doState) Invalid datapoint: ' + name + ': ' + value);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this.log.silly('(doState) Update: ' + name + ': ' + value);
|
|
230
248
|
await this.setObjectNotExistsAsync(name, {
|
|
231
249
|
type: 'state',
|
|
232
250
|
common: {
|
|
@@ -243,19 +261,19 @@ class Senec extends utils.Adapter {
|
|
|
243
261
|
// Check object for changes:
|
|
244
262
|
var obj = await this.getObjectAsync(name);
|
|
245
263
|
if (obj.common.name != description) {
|
|
246
|
-
this.log.debug("Updating object: " + name + " (desc): " + obj.common.name + " -> " + description);
|
|
264
|
+
this.log.debug("(doState) Updating object: " + name + " (desc): " + obj.common.name + " -> " + description);
|
|
247
265
|
await this.extendObject(name, {common: {name: description}});
|
|
248
266
|
}
|
|
249
267
|
if (obj.common.type != typeof(value)) {
|
|
250
|
-
this.log.debug("Updating object: " + name + " (type): " + obj.common.type + " -> " + typeof(value));
|
|
268
|
+
this.log.debug("(doState) Updating object: " + name + " (type): " + obj.common.type + " -> " + typeof(value));
|
|
251
269
|
await this.extendObject(name, {common: {type: typeof(value)}});
|
|
252
270
|
}
|
|
253
271
|
if (obj.common.unit != unit) {
|
|
254
|
-
this.log.debug("Updating object: " + name + " (unit): " + obj.common.unit + " -> " + unit);
|
|
272
|
+
this.log.debug("(doState) Updating object: " + name + " (unit): " + obj.common.unit + " -> " + unit);
|
|
255
273
|
await this.extendObject(name, {common: {unit: unit}});
|
|
256
274
|
}
|
|
257
275
|
if (obj.common.write != write) {
|
|
258
|
-
this.log.debug("Updating object: " + name + " (write): " + obj.common.write + " -> " + write);
|
|
276
|
+
this.log.debug("(doState) Updating object: " + name + " (write): " + obj.common.write + " -> " + write);
|
|
259
277
|
await this.extendObject(name, {common: {write: write}});
|
|
260
278
|
}
|
|
261
279
|
|
|
@@ -265,7 +283,7 @@ class Senec extends utils.Adapter {
|
|
|
265
283
|
await this.checkUpdateSelfStat(name);
|
|
266
284
|
return;
|
|
267
285
|
}
|
|
268
|
-
this.log.
|
|
286
|
+
this.log.debug('(doState) Update: ' + name + ': ' + oldState.val + ' -> ' + value);
|
|
269
287
|
}
|
|
270
288
|
await this.setStateAsync(name, {
|
|
271
289
|
val: value,
|
|
@@ -284,15 +302,15 @@ class Senec extends utils.Adapter {
|
|
|
284
302
|
var lang = 1; // fallback to english
|
|
285
303
|
var langState = await this.getStateAsync('WIZARD.GUI_LANG');
|
|
286
304
|
if (langState) lang = langState.val;
|
|
287
|
-
this.log.silly("Senec language: " + lang);
|
|
305
|
+
this.log.silly("(Decode) Senec language: " + lang);
|
|
288
306
|
var key = name;
|
|
289
307
|
if (!isNaN(name.substring(name.lastIndexOf('.')) + 1)) key = name.substring(0, name.lastIndexOf('.'));
|
|
290
|
-
this.log.silly("Checking: " + name + " -> " + key);
|
|
308
|
+
this.log.silly("(Decode) Checking: " + name + " -> " + key);
|
|
291
309
|
|
|
292
310
|
if (state_trans[key + "." + lang] !== undefined) {
|
|
293
|
-
this.log.silly("Trans found for: " + key + "." + lang);
|
|
311
|
+
this.log.silly("(Decode) Trans found for: " + key + "." + lang);
|
|
294
312
|
const trans = (state_trans[key + "." + lang] !== undefined ? (state_trans[key + "." + lang][value] !== undefined ? state_trans[key + "." + lang][value] : "(unknown)") : "(unknown)");
|
|
295
|
-
this.log.
|
|
313
|
+
this.log.silly("(Decode) Trans " + key + ":" + value + " = " + trans);
|
|
296
314
|
const desc = (state_attr[key + "_Text"] !== undefined) ? state_attr[key + "_Text"].name : key;
|
|
297
315
|
await this.doState(name + "_Text", trans, desc, "", true);
|
|
298
316
|
}
|
|
@@ -317,7 +335,7 @@ class Senec extends utils.Adapter {
|
|
|
317
335
|
if (value2 !== "VARIABLE_NOT_FOUND" && key2 !== "OBJECT_NOT_FOUND") {
|
|
318
336
|
const key = key1 + '.' + key2;
|
|
319
337
|
if (state_attr[key] === undefined) {
|
|
320
|
-
this.log.
|
|
338
|
+
this.log.info('REPORT_TO_DEV: State attribute definition missing for: ' + key + ', Val: ' + value2);
|
|
321
339
|
}
|
|
322
340
|
const desc = (state_attr[key] !== undefined) ? state_attr[key].name : key2;
|
|
323
341
|
const unit = (state_attr[key] !== undefined) ? state_attr[key].unit : "";
|
|
@@ -366,7 +384,7 @@ class Senec extends utils.Adapter {
|
|
|
366
384
|
const unitRefDay = (state_attr[key + ".ref" + day] !== undefined) ? state_attr[key + ".ref" + day].unit : "";
|
|
367
385
|
|
|
368
386
|
if (refDay != curDay) {
|
|
369
|
-
this.log.debug("New " + day + " (or first value seen). Updating stat data for: " + name.substring(10));
|
|
387
|
+
this.log.debug("(Calc) New " + day + " (or first value seen). Updating stat data for: " + name.substring(10));
|
|
370
388
|
// Change of day
|
|
371
389
|
await this.doState(key + ".ref" + day, curDay, descRefDay, unitRefDay, false);
|
|
372
390
|
await this.doState(key + yesterday, valToday, descYesterday, unitYesterday, false);
|
|
@@ -374,10 +392,10 @@ class Senec extends utils.Adapter {
|
|
|
374
392
|
if (valRef < valCur) {
|
|
375
393
|
await this.doState(key + refValue, valCur, descRef, unitRef, true);
|
|
376
394
|
} else {
|
|
377
|
-
this.log.warning("Not updating reference value for: " + name.substring(10) + "! Old RefValue (" + valRef + ") >= new RefValue (" + valCur + "). Impossible situation. If this is intentional, please update via admin!");
|
|
395
|
+
this.log.warning("(Calc) Not updating reference value for: " + name.substring(10) + "! Old RefValue (" + valRef + ") >= new RefValue (" + valCur + "). Impossible situation. If this is intentional, please update via admin!");
|
|
378
396
|
}
|
|
379
397
|
} else {
|
|
380
|
-
this.log.
|
|
398
|
+
this.log.silly("(Calc) Updating " + day +" value for: " + name.substring(10) + ": " + Number((valCur - valRef).toFixed(2)));
|
|
381
399
|
// update today's value
|
|
382
400
|
await this.doState(key + today, Number((valCur - valRef).toFixed(2)), descToday, unitToday, false);
|
|
383
401
|
}
|
|
@@ -418,7 +436,7 @@ class Senec extends utils.Adapter {
|
|
|
418
436
|
const unitRefDay = (state_attr[key + ".ref" + day] !== undefined) ? state_attr[key + ".ref" + day].unit : "";
|
|
419
437
|
|
|
420
438
|
if (refDay != curDay) {
|
|
421
|
-
this.log.debug("New " + day + " (or first value seen). Updating Autarky data for: " + key + " " + day);
|
|
439
|
+
this.log.debug("(Autarky) New " + day + " (or first value seen). Updating Autarky data for: " + key + " " + day);
|
|
422
440
|
// Change of day
|
|
423
441
|
await this.doState(key + ".ref" + day, curDay, descRefDay, unitRefDay, false);
|
|
424
442
|
await this.doState(key + yesterday, valToday, descYesterday, unitYesterday, false);
|
|
@@ -428,7 +446,7 @@ class Senec extends utils.Adapter {
|
|
|
428
446
|
// update today's value - but beware of div/0
|
|
429
447
|
var newVal = 0;
|
|
430
448
|
if (valHouseCons > 0) newVal = Number((((valPVGen - valGridExp - valBatCharge + valBatDischarge) / valHouseCons) * 100).toFixed(0));
|
|
431
|
-
this.log.
|
|
449
|
+
this.log.silly("(Autarky) Updating Autarky " + day +" value for: " + key + today + ": " + newVal);
|
|
432
450
|
if (valHouseCons > 0) await this.doState(key + today, newVal, descToday, unitToday, false);
|
|
433
451
|
}
|
|
434
452
|
|