1use super::serde::{Deserialize};
4
5#[derive(Serialize, Deserialize, Debug)]
6#[serde(untagged)]
7pub enum MelcloudLoginResponse {
8 AccessDenied {
9 #[serde(rename="ErrorId")]
10 error_id: u32
11
12 },
13 Success {
14 #[serde(rename="LoginData")]
15 login_data: MelcloudLoginData
16 }
17}
18
19#[derive(Serialize, Deserialize, Debug)]
20pub struct MelcloudLoginData {
21 #[serde(rename="ContextKey")]
22 pub context_key: String
23}
24
25#[derive(Serialize, Deserialize, Debug)]
26pub struct Building {
27 #[serde(rename="ID")]
28 pub id: u32,
29 #[serde(rename="Name")]
30 pub name: String,
31 #[serde(rename="Structure")]
32 pub structure: Structure
33}
34
35#[derive(Serialize, Deserialize, Debug)]
36pub struct Structure {
37 #[serde(rename="Floors")]
38 pub floors: Vec<Floor>,
39
40}
41#[derive(Serialize, Deserialize, Debug)]
42pub struct Floor {
43 #[serde(rename="ID")]
44 pub id: u32,
45 #[serde(rename="Name")]
46 pub name: String,
47 #[serde(rename="Areas")]
48 pub areas: Vec<Area>
49
50}
51#[derive(Serialize, Deserialize, Debug)]
52pub struct Area {
53 #[serde(rename="ID")]
54 pub id: u32,
55 #[serde(rename="Name")]
56 pub name: String,
57 #[serde(rename="Devices")]
58 pub devices: Vec<DeviceHeader>
59
60}
61#[derive(Serialize, Deserialize, Debug)]
62pub struct DeviceHeader {
63 #[serde(rename="DeviceID")]
64 pub id: u32,
65 #[serde(rename="DeviceName")]
66 pub name: String,
67 #[serde(rename="Device")]
68 pub device: Device
69
70}
71#[derive(Serialize, Deserialize, Debug)]
72pub struct Device {
73 #[serde(rename="DeviceType")]
74 pub device_type: u32,
75 #[serde(rename="HeatPumpFrequency")]
76 pub heat_pump_frequency: u32,
77 #[serde(rename="FlowTemperature")]
78 pub flow_temperature: f32,
79 #[serde(rename="ReturnTemperature")]
80 pub return_temperature: f32,
81 #[serde(rename="FlowTemperatureZone1")]
82 pub flow_temperature_zone_1: f32,
83 #[serde(rename="ReturnTemperatureZone1")]
84 pub return_temperature_zone_1: f32,
85 #[serde(rename="FlowTemperatureZone2")]
86 pub flow_temperature_zone_2: f32,
87 #[serde(rename="ReturnTemperatureZone2")]
88 pub return_temperature_zone_2: f32,
89 #[serde(rename="FlowTemperatureBoiler")]
90 pub flow_temperature_boiler: f32,
91 #[serde(rename="ReturnTemperatureBoiler")]
92 pub return_temperature_boiler: f32,
93 #[serde(rename="MaxSetTemperature")]
94 pub max_set_temperature: f32,
95 #[serde(rename="MinSetTemperature")]
96 pub min_set_temperature: f32,
97 #[serde(rename="RoomTemperatureZone1")]
98 pub room_temperature_zone_1: f32,
99 #[serde(rename="RoomTemperatureZone2")]
100 pub room_temperature_zone_2: f32,
101 #[serde(rename="OutdoorTemperature")]
102 pub outdoor_temperature: f32,
103 #[serde(rename="CurrentEnergyConsumed")]
104 pub current_energy_consumed: u32,
105 #[serde(rename="CurrentEnergyProduced")]
106 pub current_energy_produced: u32,
107 #[serde(rename="CurrentEnergyMode")]
108 pub current_energy_mode: u32,
109 #[serde(rename="HeatingEnergyConsumedRate1")]
110 pub heating_energy_consumed_rate_1: u32,
111 #[serde(rename="HeatingEnergyConsumedRate2")]
112 pub heating_energy_consumed_rate_2: u32,
113 #[serde(rename="BoilerStatus")]
114 pub boiler_status: bool,
115 #[serde(rename="BoosterHeater1Status")]
116 pub booster_heater_1_status: bool,
117 #[serde(rename="BoosterHeater2Status")]
118 pub booster_heater_2_status: bool,
119 #[serde(rename="BoosterHeater2PlusStatus")]
120 pub booster_heater_2_plus_status: bool,
121 #[serde(rename="ImmersionHeaterStatus")]
122 pub immersion_heater_status: bool,
123 #[serde(rename="WaterPump1Status")]
124 pub water_pump_1_status: bool,
125 #[serde(rename="WaterPump2Status")]
126 pub water_pump_2_status: bool,
127 #[serde(rename="WaterPump3Status")]
128 pub water_pump_3_status: bool,
129 #[serde(rename="ValveStatus3Way")]
130 pub valve_status_3_way: bool,
131 #[serde(rename="ValveStatus2Way")]
132 pub valve_status_2_way: bool,
133 #[serde(rename="WaterPump4Status")]
134 pub water_pump_4_status: bool,
135 #[serde(rename="ValveStatus2Way2a")]
136 pub valve_status_2_way_2_a: bool,
137 #[serde(rename="ValveStatus2Way2b")]
138 pub valve_status_2_way_2_b: bool,
139 #[serde(rename="TankWaterTemperature")]
140 pub tank_water_temperature: f32,
141 #[serde(rename="UnitStatus")]
142 pub unit_status: u32,
143 #[serde(rename="HeatingFunctionEnabled")]
144 pub heating_function_enabled: bool,
145 #[serde(rename="ServerTimerEnabled")]
146 pub server_timer_enabled: bool,
147 #[serde(rename="ThermostatStatusZone1")]
148 pub thermostat_status_zone_1: bool,
149 #[serde(rename="ThermostatStatusZone2")]
150 pub thermostat_status_zone_2: bool,
151 #[serde(rename="ThermostatTypeZone1")]
152 pub thermostat_type_zone_1: u32,
153 #[serde(rename="ThermostatTypeZone2")]
154 pub thermostat_type_zone_2: u32,
155 #[serde(rename="EffectiveFlags")]
156 pub effective_flags: u64,
157 #[serde(rename="LastEffectiveFlags")]
158 pub last_effective_flags: u64,
159 #[serde(rename="Power")]
160 pub power: bool,
161 #[serde(rename="EcoHotWater")]
162 pub eco_hot_water: bool,
163 #[serde(rename="OperationMode")]
164 pub operation_mode: u32,
165 #[serde(rename="OperationModeZone1")]
166 pub operation_mode_zone_1: u32,
167 #[serde(rename="OperationModeZone2")]
168 pub operation_mode_zone_2: u32,
169 #[serde(rename="SetTemperatureZone1")]
170 pub set_temperature_zone_1: f32,
171 #[serde(rename="SetTemperatureZone2")]
172 pub set_temperature_zone_2: f32,
173 #[serde(rename="SetTankWaterTemperature")]
174 pub set_tank_water_temperature: f32,
175 #[serde(rename="TargetHCTemperatureZone1")]
176 pub target_hc_temperature_zone_1: f32,
177 #[serde(rename="TargetHCTemperatureZone2")]
178 pub target_hc_temperature_zone_2: f32,
179 #[serde(rename="ForcedHotWaterMode")]
180 pub forced_hot_water_mode: bool,
181 #[serde(rename="HolidayMode")]
182 pub holiday_mode: bool,
183 #[serde(rename="ProhibitHotWater")]
184 pub prohibit_hot_water: bool,
185 #[serde(rename="ProhibitHeatingZone1")]
186 pub prohibit_heating_zone_1: bool,
187 #[serde(rename="ProhibitHeatingZone2")]
188 pub prohibit_heating_zone_2: bool,
189 #[serde(rename="ProhibitCoolingZone1")]
190 pub prohibit_cooling_zone_1: bool,
191 #[serde(rename="ProhibitCoolingZone2")]
192 pub prohibit_cooling_zone_2: bool,
193 #[serde(rename="ServerTimerDesired")]
194 pub server_timer_desired: bool,
195 #[serde(rename="SecondaryZoneHeatCurve")]
196 pub secondary_zone_heat_curve: bool,
197 #[serde(rename="SetHeatFlowTemperatureZone1")]
198 pub set_heat_flow_temperature_zone_1: f32,
199 #[serde(rename="SetHeatFlowTemperatureZone2")]
200 pub set_heat_flow_temperature_zone_2: f32,
201 #[serde(rename="SetCoolFlowTemperatureZone1")]
202 pub set_cool_flow_temperature_zone_1: f32,
203 #[serde(rename="SetCoolFlowTemperatureZone2")]
204 pub set_cool_flow_temperature_zone_2: f32,
205 #[serde(rename="ThermostatTemperatureZone1")]
206 pub thermostat_temperature_zone_1: f32,
207 #[serde(rename="ThermostatTemperatureZone2")]
208 pub thermostat_temperature_zone_2: f32,
209 #[serde(rename="DECCReport")]
210 pub decc_report: bool,
211 #[serde(rename="CSVReport1min")]
212 pub csv_report_1_min: bool,
213 #[serde(rename="Zone2Master")]
214 pub zone_2_master: bool,
215 #[serde(rename="DailyEnergyConsumedDate")]
216 pub daily_energy_consumed_date: String,
217 #[serde(rename="DailyEnergyProducedDate")]
218 pub daily_energy_produced_date: String,
219 #[serde(rename="CoolingEnergyConsumedRate1")]
220 pub cooling_energy_consumed_rate_1: u32,
221 #[serde(rename="CoolingEnergyConsumedRate2")]
222 pub cooling_energy_consumed_rate_2: u32,
223 #[serde(rename="HotWaterEnergyConsumedRate1")]
224 pub hot_water_energy_consumed_rate_1: u32,
225 #[serde(rename="HotWaterEnergyConsumedRate2")]
226 pub hot_water_energy_consumed_rate_2: u32,
227 #[serde(rename="HeatingEnergyProducedRate1")]
228 pub heating_energy_produced_rate_1: u32,
229 #[serde(rename="HeatingEnergyProducedRate2")]
230 pub heating_energy_produced_rate_2: u32,
231 #[serde(rename="CoolingEnergyProducedRate1")]
232 pub cooling_energy_produced_rate_1: u32,
233 #[serde(rename="CoolingEnergyProducedRate2")]
234 pub cooling_energy_produced_rate_2: u32,
235 #[serde(rename="HotWaterEnergyProducedRate1")]
236 pub hot_water_energy_produced_rate_1: u32,
237 #[serde(rename="HotWaterEnergyProducedRate2")]
238 pub hot_water_energy_produced_rate_2: u32,
239 #[serde(rename="ErrorCode2Digit")]
240 pub error_code_2_digit: u32,
241 #[serde(rename="SendSpecialFunctions")]
242 pub send_special_functions: u32,
243 #[serde(rename="RequestSpecialFunctions")]
244 pub request_special_functions: u32,
245 #[serde(rename="SpecialFunctionsState")]
246 pub special_functions_state: u32,
247 #[serde(rename="PendingSendSpecialFunctions")]
248 pub pending_send_special_functions: u32,
249 #[serde(rename="PendingRequestSpecialFunctions")]
250 pub pending_request_special_functions: u32,
251 #[serde(rename="HasZone2")]
252 pub has_zone_2: bool,
253 #[serde(rename="HasSimplifiedZone2")]
254 pub has_simplified_zone_2: bool,
255 #[serde(rename="CanHeat")]
256 pub can_heat: bool,
257 #[serde(rename="CanCool")]
258 pub can_cool: bool,
259 #[serde(rename="HasHotWaterTank")]
260 pub has_hot_water_tank: bool,
261 #[serde(rename="CanSetTankTemperature")]
262 pub can_set_tank_temperature: bool,
263 #[serde(rename="CanSetEcoHotWater")]
264 pub can_set_eco_hot_water: bool,
265 #[serde(rename="HasEnergyConsumedMeter")]
266 pub has_energy_consumed_meter: bool,
267 #[serde(rename="HasEnergyProducedMeter")]
268 pub has_energy_produced_meter: bool,
269 #[serde(rename="CanMeasureEnergyProduced")]
270 pub can_measure_energy_produced: bool,
271 #[serde(rename="CanMeasureEnergyConsumed")]
272 pub can_measure_energy_consumed: bool,
273 #[serde(rename="Zone1InRoomMode")]
274 pub zone_1_in_room_mode: bool,
275 #[serde(rename="Zone2InRoomMode")]
276 pub zone_2_in_room_mode: bool,
277 #[serde(rename="Zone1InHeatMode")]
278 pub zone_1_in_heat_mode: bool,
279 #[serde(rename="Zone2InHeatMode")]
280 pub zone_2_in_heat_mode: bool,
281 #[serde(rename="Zone1InCoolMode")]
282 pub zone_1_in_cool_mode: bool,
283 #[serde(rename="Zone2InCoolMode")]
284 pub zone_2_in_cool_mode: bool,
285 #[serde(rename="AllowDualRoomTemperature")]
286 pub allow_dual_room_temperature: bool,
287 #[serde(rename="HasEcoCuteSettings")]
288 pub has_eco_cute_settings: bool,
289 #[serde(rename="HasFTC45Settings")]
290 pub has_ftc_45_settings: bool,
291 #[serde(rename="CanEstimateEnergyUsage")]
292 pub can_estimate_energy_usage: bool,
293 #[serde(rename="CanUseRoomTemperatureCooling")]
294 pub can_use_room_temperature_cooling: bool,
295 #[serde(rename="IsFtcModelSupported")]
296 pub is_ftc_model_supported: bool,
297 #[serde(rename="MaxTankTemperature")]
298 pub max_tank_temperature: f32,
299 #[serde(rename="IdleZone1")]
300 pub idle_zone_1: bool,
301 #[serde(rename="IdleZone2")]
302 pub idle_zone_2: bool,
303 #[serde(rename="MinPcycle")]
304 pub min_pcycle: u32,
305 #[serde(rename="MaxPcycle")]
306 pub max_pcycle: u32,
307 #[serde(rename="MaxOutdoorUnits")]
308 pub max_outdoor_units: u32,
309 #[serde(rename="MaxIndoorUnits")]
310 pub max_indoor_units: u32,
311 #[serde(rename="MaxTemperatureControlUnits")]
312 pub max_temperature_control_units: u32,
313 #[serde(rename="DeviceID")]
314 pub device_id: u32,
315 #[serde(rename="MacAddress")]
316 pub mac_address: String,
317 #[serde(rename="SerialNumber")]
318 pub serial_number: String,
319 #[serde(rename="TimeZoneID")]
320 pub time_zone_id: u32,
321 #[serde(rename="DiagnosticMode")]
322 pub diagnostic_mode: u32,
323 #[serde(rename="DiagnosticEndDate")]
324 pub diagnostic_end_date: Option<String>,
325 #[serde(rename="ExpectedCommand")]
326 pub expected_command: u32,
327 #[serde(rename="Owner")]
328 pub owner: Option<String>,
329 #[serde(rename="DetectedCountry")]
330 pub detected_country: Option<String>,
331 #[serde(rename="AdaptorType")]
332 pub adaptor_type: i32,
333 #[serde(rename="FirmwareDeployment")]
334 pub firmware_deployment: Option<String>,
335 #[serde(rename="FirmwareUpdateAborted")]
336 pub firmware_update_aborted: bool,
337 #[serde(rename="LinkedDevice")]
338 pub linked_device: Option<String>,
339 #[serde(rename="WifiSignalStrength")]
340 pub wifi_signal_strength: i32,
341 #[serde(rename="WifiAdapterStatus")]
342 pub wifi_adapter_status: String,
343 #[serde(rename="Position")]
344 pub position: String,
345 #[serde(rename="PCycle")]
346 pub p_cycle: u32,
347 #[serde(rename="RecordNumMax")]
348 pub record_num_max: u32,
349 #[serde(rename="LastTimeStamp")]
350 pub last_time_stamp: String,
351 #[serde(rename="ErrorCode")]
352 pub error_code: u32,
353 #[serde(rename="HasError")]
354 pub has_error: bool,
355 #[serde(rename="LastReset")]
356 pub last_reset: String,
357 #[serde(rename="FlashWrites")]
358 pub flash_writes: u32,
359 #[serde(rename="Scene")]
360 pub scene: Option<String>,
361 #[serde(rename="TemperatureIncrementOverride")]
362 pub temperature_increment_override: u32,
363 #[serde(rename="SSLExpirationDate")]
364 pub ssl_expiration_date: String,
365 #[serde(rename="SPTimeout")]
366 pub sp_timeout: u32,
367 #[serde(rename="Passcode")]
368 pub passcode: Option<String>,
369 #[serde(rename="ServerCommunicationDisabled")]
370 pub server_communication_disabled: bool,
371 #[serde(rename="ConsecutiveUploadErrors")]
372 pub consecutive_upload_errors: u32,
373 #[serde(rename="DoNotRespondAfter")]
374 pub do_not_respond_after: Option<String>,
375 #[serde(rename="OwnerRoleAccessLevel")]
376 pub owner_role_access_level: u32,
377 #[serde(rename="OwnerCountry")]
378 pub owner_country: u32,
379 #[serde(rename="HideEnergyReport")]
380 pub hide_energy_report: bool,
381 #[serde(rename="Rate1StartTime")]
382 pub rate_1_start_time: Option<String>,
383 #[serde(rename="Rate2StartTime")]
384 pub rate_2_start_time: Option<String>,
385 #[serde(rename="ProtocolVersion")]
386 pub protocol_version: u32,
387 #[serde(rename="UnitVersion")]
388 pub unit_version: u32,
389 #[serde(rename="FirmwareAppVersion")]
390 pub firmware_app_version: u32,
391 #[serde(rename="FirmwareWebVersion")]
392 pub firmware_web_version: u32,
393 #[serde(rename="FirmwareWlanVersion")]
394 pub firmware_wlan_version: u32,
395 #[serde(rename="EffectivePCycle")]
396 pub effective_p_cycle: u32,
397 #[serde(rename="HasErrorMessages")]
398 pub has_error_messages: bool,
399 #[serde(rename="Offline")]
400 pub offline: bool
401}
402#[derive(Serialize, Deserialize, Debug, Clone)]
403pub struct DeviceLessDetail {
404 #[serde(rename="EffectiveFlags")]
405 pub effective_flags: u64,
406 #[serde(rename="LocalIPAddress")]
407 local_ip_address: Option<String>,
408 #[serde(rename="SetTemperatureZone1")]
409 set_temperature_zone_1: f32,
410 #[serde(rename="SetTemperatureZone2")]
411 set_temperature_zone_2: f32,
412 #[serde(rename="RoomTemperatureZone1")]
413 room_temperature_zone_1: f32,
414 #[serde(rename="RoomTemperatureZone2")]
415 room_temperature_zone_2: f32,
416 #[serde(rename="OperationMode")]
417 operation_mode: u32,
418 #[serde(rename="OperationModeZone1")]
419 operation_mode_zone_1: u32,
420 #[serde(rename="OperationModeZone2")]
421 operation_mode_zone_2: u32,
422 #[serde(rename="WeatherObservations")]
423 weather_observations: Vec<WeatherObservation>,
424 #[serde(rename="ErrorMessage")]
425 error_message: Option<String>,
426 #[serde(rename="ErrorCode")]
427 error_code: u32,
428 #[serde(rename="SetHeatFlowTemperatureZone1")]
429 pub set_heat_flow_temperature_zone_1: f32,
430 #[serde(rename="SetHeatFlowTemperatureZone2")]
431 set_heat_flow_temperature_zone_2: f32,
432 #[serde(rename="SetCoolFlowTemperatureZone1")]
433 set_cool_flow_temperature_zone_1: f32,
434 #[serde(rename="SetCoolFlowTemperatureZone2")]
435 set_cool_flow_temperature_zone_2: f32,
436 #[serde(rename="HCControlType")]
437 hc_control_type: u32,
438 #[serde(rename="TankWaterTemperature")]
439 tank_water_temperature: f32,
440 #[serde(rename="SetTankWaterTemperature")]
441 set_tank_water_temperature: f32,
442 #[serde(rename="ForcedHotWaterMode")]
443 forced_hot_water_mode: bool,
444 #[serde(rename="UnitStatus")]
445 unit_status: u32,
446 #[serde(rename="OutdoorTemperature")]
447 outdoor_temperature: f32,
448 #[serde(rename="EcoHotWater")]
449 eco_hot_water: bool,
450 #[serde(rename="Zone1Name")]
451 zone_1_name: Option<String>,
452 #[serde(rename="Zone2Name")]
453 zone_2_name: Option<String>,
454 #[serde(rename="HolidayMode")]
455 holiday_mode: bool,
456 #[serde(rename="ProhibitZone1")]
457 prohibit_zone_1: bool,
458 #[serde(rename="ProhibitZone2")]
459 prohibit_zone_2: bool,
460 #[serde(rename="ProhibitHotWater")]
461 prohibit_hot_water: bool,
462 #[serde(rename="TemperatureIncrementOverride")]
463 temperature_increment_override: u32,
464 #[serde(rename="IdleZone1")]
465 idle_zone_1: bool,
466 #[serde(rename="IdleZone2")]
467 idle_zone_2: bool,
468 #[serde(rename="DeviceID")]
469 device_id: u32,
470 #[serde(rename="DeviceType")]
471 device_type: u32,
472 #[serde(rename="LastCommunication")]
473 last_communication: String,
474 #[serde(rename="NextCommunication")]
475 next_communication: String,
476 #[serde(rename="Power")]
477 power: bool,
478 #[serde(rename="HasPendingCommand")]
479 pub has_pending_command: bool,
480 #[serde(rename="Offline")]
481 offline: bool,
482 #[serde(rename="Scene")]
483 scene: Option<String>,
484 #[serde(rename="SceneOwner")]
485 scene_owner: Option<String>
486}
487
488#[derive(Serialize, Deserialize, Debug, Clone)]
489pub struct WeatherObservation {
490 #[serde(rename="Date")]
491 date: String,
492 #[serde(rename="Sunrise")]
493 sunrise: String,
494 #[serde(rename="Sunset")]
495 sunset: String,
496 #[serde(rename="Condition")]
497 condition: u32,
498 #[serde(rename="ID")]
499 id: u32,
500 #[serde(rename="Humidity")]
501 humidity: u32,
502 #[serde(rename="Temperature")]
503 temperature: u32,
504 #[serde(rename="Icon")]
505 icon: String,
506 #[serde(rename="ConditionName")]
507 condition_name: String,
508 #[serde(rename="Day")]
509 day: u32,
510 #[serde(rename="WeatherType")]
511 weather_type: u32
512}