@enyo-energy/sunspec-sdk 0.0.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.
@@ -0,0 +1,240 @@
1
+ /**
2
+ * SunSpec block interfaces with block numbers
3
+ */
4
+ /**
5
+ * Base interface for all SunSpec blocks
6
+ */
7
+ export interface SunspecBlock {
8
+ blockNumber: number;
9
+ blockAddress?: number;
10
+ blockLength?: number;
11
+ }
12
+ /**
13
+ * Common Sunspec Model IDs
14
+ */
15
+ export declare enum SunspecModelId {
16
+ Common = 1,
17
+ Inverter3Phase = 103,
18
+ InverterSinglePhase = 101,
19
+ MPPT = 160,
20
+ Battery = 124,
21
+ BatteryBase = 802,
22
+ BatteryControl = 803,
23
+ MeterSinglePhase = 201,
24
+ Meter3Phase = 203,
25
+ MeterWye = 204,
26
+ Nameplate = 120,
27
+ Settings = 121,
28
+ Status = 122,
29
+ Controls = 123,
30
+ EndMarker = 65535
31
+ }
32
+ /**
33
+ * Model information discovered during scanning
34
+ */
35
+ export interface SunspecModel {
36
+ id: number;
37
+ address: number;
38
+ length: number;
39
+ }
40
+ /**
41
+ * Data types for Sunspec registers
42
+ */
43
+ export type RegisterValue = number | string | bigint;
44
+ /**
45
+ * Scale factor cache
46
+ */
47
+ export interface ScaleFactors {
48
+ [key: string]: number;
49
+ }
50
+ /**
51
+ * Common block (Model 1) data structure
52
+ */
53
+ export interface SunspecCommonBlock extends SunspecBlock {
54
+ blockNumber: 1;
55
+ manufacturer?: string;
56
+ model?: string;
57
+ options?: string;
58
+ version?: string;
59
+ serialNumber?: string;
60
+ deviceAddress?: number;
61
+ }
62
+ /**
63
+ * Inverter data structure based on Model 103
64
+ */
65
+ export interface SunspecInverterData extends SunspecBlock {
66
+ blockNumber: 103 | 101;
67
+ acCurrent?: number;
68
+ phaseACurrent?: number;
69
+ phaseBCurrent?: number;
70
+ phaseCCurrent?: number;
71
+ voltageAB?: number;
72
+ voltageBC?: number;
73
+ voltageCA?: number;
74
+ voltageAN?: number;
75
+ voltageBN?: number;
76
+ voltageCN?: number;
77
+ acPower?: number;
78
+ frequency?: number;
79
+ apparentPower?: number;
80
+ reactivePower?: number;
81
+ powerFactor?: number;
82
+ acEnergy?: bigint;
83
+ dcCurrent?: number;
84
+ dcVoltage?: number;
85
+ dcPower?: number;
86
+ cabinetTemperature?: number;
87
+ heatSinkTemperature?: number;
88
+ transformerTemperature?: number;
89
+ otherTemperature?: number;
90
+ operatingState?: number;
91
+ vendorState?: number;
92
+ events?: number;
93
+ events2?: number;
94
+ vendorEvents1?: number;
95
+ vendorEvents2?: number;
96
+ vendorEvents3?: number;
97
+ vendorEvents4?: number;
98
+ }
99
+ /**
100
+ * MPPT data structure based on Model 160
101
+ */
102
+ export interface SunspecMPPTData extends SunspecBlock {
103
+ blockNumber: 160;
104
+ id: number;
105
+ stringId?: string;
106
+ dcCurrent?: number;
107
+ dcCurrentSF?: number;
108
+ dcVoltage?: number;
109
+ dcVoltageSF?: number;
110
+ dcPower?: number;
111
+ dcPowerSF?: number;
112
+ dcEnergy?: bigint;
113
+ dcEnergySF?: number;
114
+ timestamp?: number;
115
+ temperature?: number;
116
+ temperatureSF?: number;
117
+ operatingState?: number;
118
+ vendorState?: number;
119
+ events?: number;
120
+ }
121
+ /**
122
+ * Battery data structure
123
+ */
124
+ export interface SunspecBatteryData extends SunspecBlock {
125
+ blockNumber: 124 | 802 | 803;
126
+ soc?: number;
127
+ soh?: number;
128
+ chargePower?: number;
129
+ dischargePower?: number;
130
+ voltage?: number;
131
+ current?: number;
132
+ temperature?: number;
133
+ status?: number;
134
+ }
135
+ /**
136
+ * Meter data structure
137
+ */
138
+ export interface SunspecMeterData extends SunspecBlock {
139
+ blockNumber: 201 | 203 | 204;
140
+ totalPower?: number;
141
+ phaseAPower?: number;
142
+ phaseBPower?: number;
143
+ phaseCPower?: number;
144
+ totalEnergy?: bigint;
145
+ exportedEnergy?: bigint;
146
+ importedEnergy?: bigint;
147
+ voltage?: number;
148
+ current?: number;
149
+ frequency?: number;
150
+ }
151
+ /**
152
+ * Block 121 - Inverter Basic Settings
153
+ * Reference: SunSpec Model 121
154
+ */
155
+ export interface SunspecInverterSettings extends SunspecBlock {
156
+ blockNumber: 121;
157
+ WMax?: number;
158
+ WMax_SF?: number;
159
+ VRef?: number;
160
+ VRef_SF?: number;
161
+ VRefOfs?: number;
162
+ VRefOfs_SF?: number;
163
+ VMax?: number;
164
+ VMin?: number;
165
+ VMinMax_SF?: number;
166
+ VAMax?: number;
167
+ VAMax_SF?: number;
168
+ VArMaxQ1?: number;
169
+ VArMaxQ2?: number;
170
+ VArMaxQ3?: number;
171
+ VArMaxQ4?: number;
172
+ VArMax_SF?: number;
173
+ WGra?: number;
174
+ WGra_SF?: number;
175
+ PFMinQ1?: number;
176
+ PFMinQ2?: number;
177
+ PFMinQ3?: number;
178
+ PFMinQ4?: number;
179
+ PFMin_SF?: number;
180
+ VArAct?: number;
181
+ ClcTotVA?: number;
182
+ MaxRmpRte?: number;
183
+ MaxRmpRte_SF?: number;
184
+ ECPNomHz?: number;
185
+ ECPNomHz_SF?: number;
186
+ ConnPh?: number;
187
+ }
188
+ /**
189
+ * Block 123 - Immediate Inverter Controls
190
+ * Reference: SunSpec Model 123
191
+ */
192
+ export interface SunspecInverterControls extends SunspecBlock {
193
+ blockNumber: 123;
194
+ Conn_WinTms?: number;
195
+ Conn_RvrtTms?: number;
196
+ Conn?: number;
197
+ WMaxLimPct?: number;
198
+ WMaxLimPct_SF?: number;
199
+ WMaxLimPct_WinTms?: number;
200
+ WMaxLimPct_RvrtTms?: number;
201
+ WMaxLimPct_RmpTms?: number;
202
+ WMaxLim_Ena?: number;
203
+ OutPFSet?: number;
204
+ OutPFSet_SF?: number;
205
+ OutPFSet_WinTms?: number;
206
+ OutPFSet_RvrtTms?: number;
207
+ OutPFSet_RmpTms?: number;
208
+ OutPFSet_Ena?: number;
209
+ VArWMaxPct?: number;
210
+ VArMaxPct?: number;
211
+ VArAvalPct?: number;
212
+ VArPct_SF?: number;
213
+ VArPct_WinTms?: number;
214
+ VArPct_RvrtTms?: number;
215
+ VArPct_RmpTms?: number;
216
+ VArPct_Mod?: number;
217
+ VArPct_Ena?: number;
218
+ }
219
+ /**
220
+ * Enum values for connection control
221
+ */
222
+ export declare enum SunspecConnectionControl {
223
+ DISCONNECT = 0,
224
+ CONNECT = 1
225
+ }
226
+ /**
227
+ * Enum values for enable/disable controls
228
+ */
229
+ export declare enum SunspecEnableControl {
230
+ DISABLED = 0,
231
+ ENABLED = 1
232
+ }
233
+ /**
234
+ * Enum values for VAR percent mode
235
+ */
236
+ export declare enum SunspecVArPctMode {
237
+ NONE = 0,
238
+ WMAX = 1,
239
+ VARMAX = 2
240
+ }