melcloud_api/api/json/
mod.rs

1// Below are the data structures returned by the API
2
3use 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}