edilkamin 1.9.0 → 1.10.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/src/types.ts CHANGED
@@ -24,11 +24,19 @@ interface PelletAutonomyType {
24
24
  autonomy_time: number;
25
25
  }
26
26
 
27
+ /**
28
+ * Status counters including service time.
29
+ */
30
+ interface StatusCountersType {
31
+ service_time: number;
32
+ }
33
+
27
34
  interface StatusType {
28
35
  commands: CommandsType;
29
36
  temperatures: TemperaturesType;
30
37
  flags: GeneralFlagsType;
31
38
  pellet: PelletAutonomyType;
39
+ counters: StatusCountersType;
32
40
  }
33
41
 
34
42
  interface UserParametersType {
@@ -47,10 +55,171 @@ interface UserParametersType {
47
55
  language: number;
48
56
  }
49
57
 
58
+ /**
59
+ * Lifetime operating counters - never reset.
60
+ * Tracks total power-on cycles and runtime hours per power level.
61
+ */
62
+ interface TotalCountersType {
63
+ power_ons: number;
64
+ p1_working_time: number;
65
+ p2_working_time: number;
66
+ p3_working_time: number;
67
+ p4_working_time: number;
68
+ p5_working_time: number;
69
+ }
70
+
71
+ /**
72
+ * Service counters - reset after maintenance.
73
+ * Tracks runtime hours per power level since last service.
74
+ */
75
+ interface ServiceCountersType {
76
+ p1_working_time: number;
77
+ p2_working_time: number;
78
+ p3_working_time: number;
79
+ p4_working_time: number;
80
+ p5_working_time: number;
81
+ }
82
+
83
+ /**
84
+ * Individual alarm entry from the alarm history log.
85
+ */
86
+ interface AlarmEntryType {
87
+ type: number;
88
+ timestamp: number;
89
+ }
90
+
91
+ /**
92
+ * Alarm history log - circular buffer of recent alarms.
93
+ */
94
+ interface AlarmsLogType {
95
+ number: number;
96
+ index: number;
97
+ alarms: AlarmEntryType[];
98
+ }
99
+
100
+ /**
101
+ * Regeneration and maintenance tracking data.
102
+ */
103
+ interface RegenerationDataType {
104
+ time: number;
105
+ last_intervention: number;
106
+ daylight_time_flag: number;
107
+ blackout_counter: number;
108
+ airkare_working_hours_counter: number;
109
+ }
110
+
111
+ /**
112
+ * Power level distribution as percentages.
113
+ */
114
+ interface PowerDistributionType {
115
+ p1: number;
116
+ p2: number;
117
+ p3: number;
118
+ p4: number;
119
+ p5: number;
120
+ }
121
+
122
+ /**
123
+ * Service status with computed fields.
124
+ */
125
+ interface ServiceStatusType {
126
+ totalServiceHours: number;
127
+ hoursSinceService: number;
128
+ serviceThresholdHours: number;
129
+ isServiceDue: boolean;
130
+ }
131
+
132
+ /**
133
+ * Comprehensive usage analytics.
134
+ */
135
+ interface UsageAnalyticsType {
136
+ totalPowerOns: number;
137
+ totalOperatingHours: number;
138
+ powerDistribution: PowerDistributionType;
139
+ serviceStatus: ServiceStatusType;
140
+ blackoutCount: number;
141
+ lastMaintenanceDate: Date | null;
142
+ alarmCount: number;
143
+ }
144
+
145
+ /**
146
+ * Alarm type codes from Edilkamin devices.
147
+ * Based on AlarmsEnum.java from Android app (version 1.3.1-RC2 released 2025/12/10).
148
+ */
149
+ enum AlarmCode {
150
+ NONE = 0,
151
+ FLUE_BLOCK = 1,
152
+ SMOKE_EXTRACTOR_FAILURE = 2,
153
+ END_PELLET = 3,
154
+ MISSING_LIGHTING = 4,
155
+ NO_NAME_ALARM = 5,
156
+ SMOKE_PROBE_FAILURE = 6,
157
+ FUMES_OVERTEMPERATURE = 7,
158
+ PELLET_TANK_SAFETY_THERMOSTAT = 8,
159
+ GEAR_MOTOR_FAILURE = 9,
160
+ BOARD_OVER_TEMPERATURE = 10,
161
+ SAFETY_PRESSURE_SWITCH_INTERVENTION = 11,
162
+ ROOM_PROBE_FAILURE = 12,
163
+ ROOM_PROBE_2_OR_BOILER_PROBE_FAILURE = 13,
164
+ ROOM_PROBE_3_OR_BOILER_PROBE_FAILURE = 14,
165
+ WATER_EARTHQUAKE_SAFETY_THERMOSTAT_INTERVENTION = 15,
166
+ WATER_PRESSURE_TRANSDUCER_FAILURE = 16,
167
+ OUTSIDE_PROBE_OR_LOW_STORAGE_PROBE_FAILURE = 17,
168
+ PUFFER_PROBE_FAILURE = 18,
169
+ CRUCIBLE_CLEANING_FAILURE = 19,
170
+ TRIAC_FAILURE = 20,
171
+ BLACKOUT = 21,
172
+ OPEN_DOOR = 22,
173
+ OVERTEMPERATURE_PANEL = 23,
174
+ BOARD_FUSE = 24,
175
+ }
176
+
177
+ /**
178
+ * Human-readable descriptions for alarm codes.
179
+ */
180
+ const AlarmDescriptions: Record<AlarmCode, string> = {
181
+ [AlarmCode.NONE]: "No alarm",
182
+ [AlarmCode.FLUE_BLOCK]: "Flue/chimney blockage",
183
+ [AlarmCode.SMOKE_EXTRACTOR_FAILURE]: "Smoke extractor motor failure",
184
+ [AlarmCode.END_PELLET]: "Pellet tank empty",
185
+ [AlarmCode.MISSING_LIGHTING]: "Ignition failure",
186
+ [AlarmCode.NO_NAME_ALARM]: "Unnamed alarm",
187
+ [AlarmCode.SMOKE_PROBE_FAILURE]: "Smoke temperature probe failure",
188
+ [AlarmCode.FUMES_OVERTEMPERATURE]: "Exhaust overtemperature",
189
+ [AlarmCode.PELLET_TANK_SAFETY_THERMOSTAT]:
190
+ "Pellet tank safety thermostat triggered",
191
+ [AlarmCode.GEAR_MOTOR_FAILURE]: "Gear motor/auger failure",
192
+ [AlarmCode.BOARD_OVER_TEMPERATURE]: "Control board overtemperature",
193
+ [AlarmCode.SAFETY_PRESSURE_SWITCH_INTERVENTION]:
194
+ "Safety pressure switch activated",
195
+ [AlarmCode.ROOM_PROBE_FAILURE]: "Room temperature probe failure",
196
+ [AlarmCode.ROOM_PROBE_2_OR_BOILER_PROBE_FAILURE]:
197
+ "Room probe 2 or boiler probe failure",
198
+ [AlarmCode.ROOM_PROBE_3_OR_BOILER_PROBE_FAILURE]:
199
+ "Room probe 3 or boiler probe failure",
200
+ [AlarmCode.WATER_EARTHQUAKE_SAFETY_THERMOSTAT_INTERVENTION]:
201
+ "Water/earthquake safety thermostat",
202
+ [AlarmCode.WATER_PRESSURE_TRANSDUCER_FAILURE]:
203
+ "Water pressure transducer failure",
204
+ [AlarmCode.OUTSIDE_PROBE_OR_LOW_STORAGE_PROBE_FAILURE]:
205
+ "Outside probe or low storage probe failure",
206
+ [AlarmCode.PUFFER_PROBE_FAILURE]: "Buffer tank probe failure",
207
+ [AlarmCode.CRUCIBLE_CLEANING_FAILURE]: "Crucible cleaning failure",
208
+ [AlarmCode.TRIAC_FAILURE]: "Power control (TRIAC) failure",
209
+ [AlarmCode.BLACKOUT]: "Power outage detected",
210
+ [AlarmCode.OPEN_DOOR]: "Door open alarm",
211
+ [AlarmCode.OVERTEMPERATURE_PANEL]: "Panel overtemperature",
212
+ [AlarmCode.BOARD_FUSE]: "Control board fuse issue",
213
+ };
214
+
50
215
  interface DeviceInfoType {
51
216
  status: StatusType;
52
217
  nvm: {
53
218
  user_parameters: UserParametersType;
219
+ total_counters: TotalCountersType;
220
+ service_counters: ServiceCountersType;
221
+ alarms_log: AlarmsLogType;
222
+ regeneration: RegenerationDataType;
54
223
  };
55
224
  }
56
225
 
@@ -115,6 +284,8 @@ interface DiscoveredDevice {
115
284
  }
116
285
 
117
286
  export type {
287
+ AlarmEntryType,
288
+ AlarmsLogType,
118
289
  BufferEncodedType,
119
290
  CommandsType,
120
291
  DeviceAssociationBody,
@@ -125,7 +296,16 @@ export type {
125
296
  EditDeviceAssociationBody,
126
297
  GeneralFlagsType,
127
298
  PelletAutonomyType,
299
+ PowerDistributionType,
300
+ RegenerationDataType,
301
+ ServiceCountersType,
302
+ ServiceStatusType,
303
+ StatusCountersType,
128
304
  StatusType,
129
305
  TemperaturesType,
306
+ TotalCountersType,
307
+ UsageAnalyticsType,
130
308
  UserParametersType,
131
309
  };
310
+
311
+ export { AlarmCode, AlarmDescriptions };