weheat 2024.11.1__py3-none-any.whl → 2025.11.24rc1__py3-none-any.whl
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.
- weheat/__init__.py +6 -2
- weheat/abstractions/__init__.py +1 -1
- weheat/abstractions/discovery.py +11 -7
- weheat/abstractions/heat_pump.py +223 -81
- weheat/abstractions/user.py +16 -11
- weheat/api/__init__.py +1 -0
- weheat/api/energy_log_api.py +615 -127
- weheat/api/heat_pump_api.py +580 -374
- weheat/api/heat_pump_log_api.py +884 -360
- weheat/api/user_api.py +260 -115
- weheat/api_client.py +238 -265
- weheat/api_response.py +11 -15
- weheat/configuration.py +14 -9
- weheat/exceptions.py +59 -25
- weheat/models/__init__.py +8 -0
- weheat/models/boiler_type.py +8 -3
- weheat/models/device_state.py +9 -5
- weheat/models/dhw_type.py +8 -3
- weheat/models/energy_view_dto.py +87 -65
- weheat/models/heat_pump_log_view_dto.py +1394 -559
- weheat/models/heat_pump_model.py +8 -3
- weheat/models/heat_pump_status_enum.py +9 -4
- weheat/models/pagination_metadata.py +95 -0
- weheat/models/raw_heat_pump_log_dto.py +438 -375
- weheat/models/raw_heatpump_log_and_is_online_dto.py +578 -0
- weheat/models/read_all_heat_pump_dto.py +69 -53
- weheat/models/read_all_heat_pump_dto_paged_response.py +107 -0
- weheat/models/read_heat_pump_dto.py +64 -48
- weheat/models/read_user_dto.py +55 -37
- weheat/models/read_user_me_dto.py +124 -0
- weheat/models/role.py +10 -4
- weheat/models/total_energy_aggregate.py +111 -0
- weheat/rest.py +152 -259
- weheat-2025.11.24rc1.dist-info/METADATA +104 -0
- weheat-2025.11.24rc1.dist-info/RECORD +39 -0
- {weheat-2024.11.1.dist-info → weheat-2025.11.24rc1.dist-info}/WHEEL +1 -1
- weheat/abstractions/auth.py +0 -34
- weheat/models/heat_pump_type.py +0 -42
- weheat-2024.11.1.dist-info/METADATA +0 -107
- weheat-2024.11.1.dist-info/RECORD +0 -36
- {weheat-2024.11.1.dist-info → weheat-2025.11.24rc1.dist-info/licenses}/LICENSE +0 -0
- {weheat-2024.11.1.dist-info → weheat-2025.11.24rc1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,578 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Weheat Backend
|
|
5
|
+
|
|
6
|
+
This is the backend for the Weheat project
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: v1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from datetime import datetime
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
22
|
+
from pydantic import BaseModel, StrictBool, StrictFloat, StrictInt, StrictStr
|
|
23
|
+
from pydantic import Field
|
|
24
|
+
try:
|
|
25
|
+
from typing import Self
|
|
26
|
+
except ImportError:
|
|
27
|
+
from typing_extensions import Self
|
|
28
|
+
|
|
29
|
+
class RawHeatpumpLogAndIsOnlineDto(BaseModel):
|
|
30
|
+
"""
|
|
31
|
+
RawHeatpumpLogAndIsOnlineDto
|
|
32
|
+
""" # noqa: E501
|
|
33
|
+
heat_pump_id: StrictStr = Field(description="Identifier of the Heat Pump", alias="heatPumpId")
|
|
34
|
+
timestamp: datetime = Field(description="Timestamp of when this was logged to the server")
|
|
35
|
+
state: Optional[StrictInt] = Field(default=None, description="Current heat pump state (which is decoded in the view)")
|
|
36
|
+
control_bridge_status: Optional[StrictInt] = Field(default=None, description="Raw control bridge status of the heat pump (bitwise encoded)", alias="controlBridgeStatus")
|
|
37
|
+
control_bridge_status_decoded_water_pump: Optional[StrictBool] = Field(default=None, description="Water pump (requested) on/off flag of the control bridge status (0x01)", alias="controlBridgeStatusDecodedWaterPump")
|
|
38
|
+
control_bridge_status_decoded_gas_boiler: Optional[StrictBool] = Field(default=None, description="Gas boiler assistance (requested) on/off flag of the control bridge status (0x04) (Hybrid Only)", alias="controlBridgeStatusDecodedGasBoiler")
|
|
39
|
+
control_bridge_status_decoded_electric_heater: Optional[StrictBool] = Field(default=None, description="Electric heater assistance (requested) on/off flag of the control bridge status (0x08) (DHW Only)", alias="controlBridgeStatusDecodedElectricHeater")
|
|
40
|
+
control_bridge_status_decoded_water_pump2: Optional[StrictBool] = Field(default=None, description="Second water pump (requested) on/off flag of the control bridge status (0x010) (DHW Only)", alias="controlBridgeStatusDecodedWaterPump2")
|
|
41
|
+
t1: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature T1 (TOP) of the DHW sensors")
|
|
42
|
+
t2: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature T2 (BOTTOM) of the DHW sensors")
|
|
43
|
+
t_air_in: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the air going into the heat pump", alias="tAirIn")
|
|
44
|
+
t_air_out: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the air going out of the heat pump", alias="tAirOut")
|
|
45
|
+
t_water_in: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the water going into the heat pump", alias="tWaterIn")
|
|
46
|
+
t_water_out: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the water going out of the heat pump", alias="tWaterOut")
|
|
47
|
+
t_water_house_in: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the water going into the building", alias="tWaterHouseIn")
|
|
48
|
+
rpm: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Rpm of the compressor")
|
|
49
|
+
on_off_thermostat_state: Optional[StrictInt] = Field(default=None, description="State of the on/off thermostat", alias="onOffThermostatState")
|
|
50
|
+
t_room: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the room given by the OpenTherm thermostat", alias="tRoom")
|
|
51
|
+
t_room_target: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Target temperature of the room given by the OpenTherm thermostat", alias="tRoomTarget")
|
|
52
|
+
t_thermostat_setpoint: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Setpoint temperature of the OpenTherm thermostat OR the water setpoint of the heat pump", alias="tThermostatSetpoint")
|
|
53
|
+
ot_boiler_feed_temperature: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Feed temperature of the OpenTherm boiler", alias="otBoilerFeedTemperature")
|
|
54
|
+
ot_boiler_return_temperature: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Return temperature of the OpenTherm boiler", alias="otBoilerReturnTemperature")
|
|
55
|
+
central_heating_flow: Optional[StrictInt] = Field(default=None, description="Duty cycle read by pwm pump for central heating circuit", alias="centralHeatingFlow")
|
|
56
|
+
dhw_flow: Optional[StrictInt] = Field(default=None, description="Duty cycle read by pwm pump for DHW circuit", alias="dhwFlow")
|
|
57
|
+
interval: StrictInt = Field(description="Interval for this log in seconds")
|
|
58
|
+
input_status: Optional[StrictInt] = Field(default=None, description="Raw input status of the heat pump", alias="inputStatus")
|
|
59
|
+
current_control_method: Optional[StrictInt] = Field(default=None, description="Raw current control method state of the heat pump", alias="currentControlMethod")
|
|
60
|
+
signal_strength: Optional[StrictInt] = Field(default=None, description="Signal strength (rssi) reported by the modem of the control board", alias="signalStrength")
|
|
61
|
+
rpm_limiter: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Rpm limit of the compressor", alias="rpmLimiter")
|
|
62
|
+
rpm_limiter_type: Optional[StrictInt] = Field(default=None, description="Type of why the rpm is limited", alias="rpmLimiterType")
|
|
63
|
+
p_compressor_in: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Pressure of the compressor of the side where air goes into the compressor", alias="pCompressorIn")
|
|
64
|
+
p_compressor_out: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Pressure of the compressor of the side where air goes out of the compressor", alias="pCompressorOut")
|
|
65
|
+
p_compressor_in_target: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Target pressure of the compressor of the side where air goes into the compressor", alias="pCompressorInTarget")
|
|
66
|
+
t_compressor_in: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the compressor of the side where air goes into the compressor", alias="tCompressorIn")
|
|
67
|
+
t_compressor_out: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the compressor of the side where air goes out of the compressor", alias="tCompressorOut")
|
|
68
|
+
t_compressor_in_transient: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature transient of the compressor of the side where air goes into the compressor", alias="tCompressorInTransient")
|
|
69
|
+
t_compressor_out_transient: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature transient of the compressor of the side where air goes out of the compressor", alias="tCompressorOutTransient")
|
|
70
|
+
delta_t_compressor_in_superheat: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Difference in temperature for superheat based on the compressor temperatures", alias="deltaTCompressorInSuperheat")
|
|
71
|
+
fan: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="State of the fan")
|
|
72
|
+
fan_power: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Power used by the fan", alias="fanPower")
|
|
73
|
+
temperature_error_integral: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Current value of the temperature error integral", alias="temperatureErrorIntegral")
|
|
74
|
+
thermostat_status: Optional[StrictInt] = Field(default=None, description="Status of the OpenTherm thermostat", alias="thermostatStatus")
|
|
75
|
+
ot_boiler_status: Optional[StrictInt] = Field(default=None, description="Status of the OpenTherm boiler", alias="otBoilerStatus")
|
|
76
|
+
central_heating_pwm_requested_duty_cycle: Optional[StrictInt] = Field(default=None, description="Requested duty cycle to pwm pump for central heating circuit", alias="centralHeatingPwmRequestedDutyCycle")
|
|
77
|
+
dhw_pwm_requested_duty_cycle: Optional[StrictInt] = Field(default=None, description="Requested duty cycle to pwm pump for DHW circuit", alias="dhwPwmRequestedDutyCycle")
|
|
78
|
+
sinr: Optional[StrictInt] = Field(default=None, description="Signal to noise ratio of the modem of the control board (SINR)")
|
|
79
|
+
error: Optional[StrictInt] = Field(default=None, description="Current state of error in the heat pump (which is decoded in the view)")
|
|
80
|
+
error_decoded_dtc_none: Optional[StrictBool] = Field(default=None, description="None state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcNone")
|
|
81
|
+
error_decoded_dtc_continue: Optional[StrictBool] = Field(default=None, description="DTC continue state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcContinue")
|
|
82
|
+
error_decoded_dtc_compressor_off: Optional[StrictBool] = Field(default=None, description="DTC off state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcCompressorOff")
|
|
83
|
+
error_decoded_dtc_defrost_forbidden: Optional[StrictBool] = Field(default=None, description="DTC defrost forbidden state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcDefrostForbidden")
|
|
84
|
+
error_decoded_dtc_request_service: Optional[StrictBool] = Field(default=None, description="DTC request service state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcRequestService")
|
|
85
|
+
error_decoded_dtc_use_heating_curve: Optional[StrictBool] = Field(default=None, description="DTC use heating curve state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcUseHeatingCurve")
|
|
86
|
+
error_decoded_dtc_dhw_forbidden: Optional[StrictBool] = Field(default=None, description="DTC use heating curve state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcDhwForbidden")
|
|
87
|
+
error_decoded_dtc_error: Optional[StrictBool] = Field(default=None, description="DTC use heating curve state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcError")
|
|
88
|
+
error_decoded_dtc_inactive: Optional[StrictBool] = Field(default=None, description="DTC Inactive state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)", alias="errorDecodedDtcInactive")
|
|
89
|
+
control_bridge_status_decoded_dhw_valve: Optional[StrictBool] = Field(default=None, description="DhwValve (requested) open/closed flag of the control bridge status (0x02) (DHW Only)", alias="controlBridgeStatusDecodedDhwValve")
|
|
90
|
+
t_board: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the control board", alias="tBoard")
|
|
91
|
+
t_inverter: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the inverter", alias="tInverter")
|
|
92
|
+
compressor_power_low_accuracy: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Power used by the compressor (low accuracy)", alias="compressorPowerLowAccuracy")
|
|
93
|
+
valve: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Position value of the valve")
|
|
94
|
+
inverter_input_voltage: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Input voltage measured by the compressor inverter float - 4 bytes", alias="inverterInputVoltage")
|
|
95
|
+
indoor_unit_heater_temperature: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Temperature of the indoor unit heater", alias="indoorUnitHeaterTemperature")
|
|
96
|
+
indoor_unit_input_current: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Current of the indoor unit heater", alias="indoorUnitInputCurrent")
|
|
97
|
+
cooling_status: Optional[StrictInt] = Field(default=None, description="Current status of cooling With enum values: 0 = idle, 1 = starting, 2 = active, 3 = stopping", alias="coolingStatus")
|
|
98
|
+
cm_mass_power_in: Optional[StrictInt] = Field(default=None, description="Power going into the heat pump", alias="cmMassPowerIn")
|
|
99
|
+
cm_mass_power_out: Optional[StrictInt] = Field(default=None, description="Power going out of the heat pump (in the form of usable heat)", alias="cmMassPowerOut")
|
|
100
|
+
debug_variable1: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Optional debug variable that can be set to anything in firmware and will be logged as a float float - 4 bytes", alias="debugVariable1")
|
|
101
|
+
debug_variable2: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Optional debug variable that can be set to anything in firmware and will be logged as a float float - 4 bytes", alias="debugVariable2")
|
|
102
|
+
debug_variable3: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Optional debug variable that can be set to anything in firmware and will be logged as a float float - 4 bytes", alias="debugVariable3")
|
|
103
|
+
debug_variable4: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Optional debug variable that can be set to anything in firmware and will be logged as a float float - 4 bytes", alias="debugVariable4")
|
|
104
|
+
debug_variable5: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Optional debug variable that can be set to anything in firmware and will be logged as a float float - 4 bytes", alias="debugVariable5")
|
|
105
|
+
is_online: StrictBool = Field(description="A boolean indicating if the heat pump is currently online", alias="isOnline")
|
|
106
|
+
__properties: ClassVar[List[str]] = ["heatPumpId", "timestamp", "state", "controlBridgeStatus", "controlBridgeStatusDecodedWaterPump", "controlBridgeStatusDecodedGasBoiler", "controlBridgeStatusDecodedElectricHeater", "controlBridgeStatusDecodedWaterPump2", "t1", "t2", "tAirIn", "tAirOut", "tWaterIn", "tWaterOut", "tWaterHouseIn", "rpm", "onOffThermostatState", "tRoom", "tRoomTarget", "tThermostatSetpoint", "otBoilerFeedTemperature", "otBoilerReturnTemperature", "centralHeatingFlow", "dhwFlow", "interval", "inputStatus", "currentControlMethod", "signalStrength", "rpmLimiter", "rpmLimiterType", "pCompressorIn", "pCompressorOut", "pCompressorInTarget", "tCompressorIn", "tCompressorOut", "tCompressorInTransient", "tCompressorOutTransient", "deltaTCompressorInSuperheat", "fan", "fanPower", "temperatureErrorIntegral", "thermostatStatus", "otBoilerStatus", "centralHeatingPwmRequestedDutyCycle", "dhwPwmRequestedDutyCycle", "sinr", "error", "errorDecodedDtcNone", "errorDecodedDtcContinue", "errorDecodedDtcCompressorOff", "errorDecodedDtcDefrostForbidden", "errorDecodedDtcRequestService", "errorDecodedDtcUseHeatingCurve", "errorDecodedDtcDhwForbidden", "errorDecodedDtcError", "errorDecodedDtcInactive", "controlBridgeStatusDecodedDhwValve", "tBoard", "tInverter", "compressorPowerLowAccuracy", "valve", "inverterInputVoltage", "indoorUnitHeaterTemperature", "indoorUnitInputCurrent", "coolingStatus", "cmMassPowerIn", "cmMassPowerOut", "debugVariable1", "debugVariable2", "debugVariable3", "debugVariable4", "debugVariable5", "isOnline"]
|
|
107
|
+
|
|
108
|
+
model_config = {
|
|
109
|
+
"populate_by_name": True,
|
|
110
|
+
"validate_assignment": True,
|
|
111
|
+
"protected_namespaces": (),
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def to_str(self) -> str:
|
|
116
|
+
"""Returns the string representation of the model using alias"""
|
|
117
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
118
|
+
|
|
119
|
+
def to_json(self) -> str:
|
|
120
|
+
"""Returns the JSON representation of the model using alias"""
|
|
121
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
122
|
+
return json.dumps(self.to_dict())
|
|
123
|
+
|
|
124
|
+
@classmethod
|
|
125
|
+
def from_json(cls, json_str: str) -> Self:
|
|
126
|
+
"""Create an instance of RawHeatpumpLogAndIsOnlineDto from a JSON string"""
|
|
127
|
+
return cls.from_dict(json.loads(json_str))
|
|
128
|
+
|
|
129
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
130
|
+
"""Return the dictionary representation of the model using alias.
|
|
131
|
+
|
|
132
|
+
This has the following differences from calling pydantic's
|
|
133
|
+
`self.model_dump(by_alias=True)`:
|
|
134
|
+
|
|
135
|
+
* `None` is only added to the output dict for nullable fields that
|
|
136
|
+
were set at model initialization. Other fields with value `None`
|
|
137
|
+
are ignored.
|
|
138
|
+
"""
|
|
139
|
+
_dict = self.model_dump(
|
|
140
|
+
by_alias=True,
|
|
141
|
+
exclude={
|
|
142
|
+
},
|
|
143
|
+
exclude_none=True,
|
|
144
|
+
)
|
|
145
|
+
# set to None if state (nullable) is None
|
|
146
|
+
# and model_fields_set contains the field
|
|
147
|
+
if self.state is None and "state" in self.model_fields_set:
|
|
148
|
+
_dict['state'] = None
|
|
149
|
+
|
|
150
|
+
# set to None if control_bridge_status (nullable) is None
|
|
151
|
+
# and model_fields_set contains the field
|
|
152
|
+
if self.control_bridge_status is None and "control_bridge_status" in self.model_fields_set:
|
|
153
|
+
_dict['controlBridgeStatus'] = None
|
|
154
|
+
|
|
155
|
+
# set to None if control_bridge_status_decoded_water_pump (nullable) is None
|
|
156
|
+
# and model_fields_set contains the field
|
|
157
|
+
if self.control_bridge_status_decoded_water_pump is None and "control_bridge_status_decoded_water_pump" in self.model_fields_set:
|
|
158
|
+
_dict['controlBridgeStatusDecodedWaterPump'] = None
|
|
159
|
+
|
|
160
|
+
# set to None if control_bridge_status_decoded_gas_boiler (nullable) is None
|
|
161
|
+
# and model_fields_set contains the field
|
|
162
|
+
if self.control_bridge_status_decoded_gas_boiler is None and "control_bridge_status_decoded_gas_boiler" in self.model_fields_set:
|
|
163
|
+
_dict['controlBridgeStatusDecodedGasBoiler'] = None
|
|
164
|
+
|
|
165
|
+
# set to None if control_bridge_status_decoded_electric_heater (nullable) is None
|
|
166
|
+
# and model_fields_set contains the field
|
|
167
|
+
if self.control_bridge_status_decoded_electric_heater is None and "control_bridge_status_decoded_electric_heater" in self.model_fields_set:
|
|
168
|
+
_dict['controlBridgeStatusDecodedElectricHeater'] = None
|
|
169
|
+
|
|
170
|
+
# set to None if control_bridge_status_decoded_water_pump2 (nullable) is None
|
|
171
|
+
# and model_fields_set contains the field
|
|
172
|
+
if self.control_bridge_status_decoded_water_pump2 is None and "control_bridge_status_decoded_water_pump2" in self.model_fields_set:
|
|
173
|
+
_dict['controlBridgeStatusDecodedWaterPump2'] = None
|
|
174
|
+
|
|
175
|
+
# set to None if t1 (nullable) is None
|
|
176
|
+
# and model_fields_set contains the field
|
|
177
|
+
if self.t1 is None and "t1" in self.model_fields_set:
|
|
178
|
+
_dict['t1'] = None
|
|
179
|
+
|
|
180
|
+
# set to None if t2 (nullable) is None
|
|
181
|
+
# and model_fields_set contains the field
|
|
182
|
+
if self.t2 is None and "t2" in self.model_fields_set:
|
|
183
|
+
_dict['t2'] = None
|
|
184
|
+
|
|
185
|
+
# set to None if t_air_in (nullable) is None
|
|
186
|
+
# and model_fields_set contains the field
|
|
187
|
+
if self.t_air_in is None and "t_air_in" in self.model_fields_set:
|
|
188
|
+
_dict['tAirIn'] = None
|
|
189
|
+
|
|
190
|
+
# set to None if t_air_out (nullable) is None
|
|
191
|
+
# and model_fields_set contains the field
|
|
192
|
+
if self.t_air_out is None and "t_air_out" in self.model_fields_set:
|
|
193
|
+
_dict['tAirOut'] = None
|
|
194
|
+
|
|
195
|
+
# set to None if t_water_in (nullable) is None
|
|
196
|
+
# and model_fields_set contains the field
|
|
197
|
+
if self.t_water_in is None and "t_water_in" in self.model_fields_set:
|
|
198
|
+
_dict['tWaterIn'] = None
|
|
199
|
+
|
|
200
|
+
# set to None if t_water_out (nullable) is None
|
|
201
|
+
# and model_fields_set contains the field
|
|
202
|
+
if self.t_water_out is None and "t_water_out" in self.model_fields_set:
|
|
203
|
+
_dict['tWaterOut'] = None
|
|
204
|
+
|
|
205
|
+
# set to None if t_water_house_in (nullable) is None
|
|
206
|
+
# and model_fields_set contains the field
|
|
207
|
+
if self.t_water_house_in is None and "t_water_house_in" in self.model_fields_set:
|
|
208
|
+
_dict['tWaterHouseIn'] = None
|
|
209
|
+
|
|
210
|
+
# set to None if rpm (nullable) is None
|
|
211
|
+
# and model_fields_set contains the field
|
|
212
|
+
if self.rpm is None and "rpm" in self.model_fields_set:
|
|
213
|
+
_dict['rpm'] = None
|
|
214
|
+
|
|
215
|
+
# set to None if on_off_thermostat_state (nullable) is None
|
|
216
|
+
# and model_fields_set contains the field
|
|
217
|
+
if self.on_off_thermostat_state is None and "on_off_thermostat_state" in self.model_fields_set:
|
|
218
|
+
_dict['onOffThermostatState'] = None
|
|
219
|
+
|
|
220
|
+
# set to None if t_room (nullable) is None
|
|
221
|
+
# and model_fields_set contains the field
|
|
222
|
+
if self.t_room is None and "t_room" in self.model_fields_set:
|
|
223
|
+
_dict['tRoom'] = None
|
|
224
|
+
|
|
225
|
+
# set to None if t_room_target (nullable) is None
|
|
226
|
+
# and model_fields_set contains the field
|
|
227
|
+
if self.t_room_target is None and "t_room_target" in self.model_fields_set:
|
|
228
|
+
_dict['tRoomTarget'] = None
|
|
229
|
+
|
|
230
|
+
# set to None if t_thermostat_setpoint (nullable) is None
|
|
231
|
+
# and model_fields_set contains the field
|
|
232
|
+
if self.t_thermostat_setpoint is None and "t_thermostat_setpoint" in self.model_fields_set:
|
|
233
|
+
_dict['tThermostatSetpoint'] = None
|
|
234
|
+
|
|
235
|
+
# set to None if ot_boiler_feed_temperature (nullable) is None
|
|
236
|
+
# and model_fields_set contains the field
|
|
237
|
+
if self.ot_boiler_feed_temperature is None and "ot_boiler_feed_temperature" in self.model_fields_set:
|
|
238
|
+
_dict['otBoilerFeedTemperature'] = None
|
|
239
|
+
|
|
240
|
+
# set to None if ot_boiler_return_temperature (nullable) is None
|
|
241
|
+
# and model_fields_set contains the field
|
|
242
|
+
if self.ot_boiler_return_temperature is None and "ot_boiler_return_temperature" in self.model_fields_set:
|
|
243
|
+
_dict['otBoilerReturnTemperature'] = None
|
|
244
|
+
|
|
245
|
+
# set to None if central_heating_flow (nullable) is None
|
|
246
|
+
# and model_fields_set contains the field
|
|
247
|
+
if self.central_heating_flow is None and "central_heating_flow" in self.model_fields_set:
|
|
248
|
+
_dict['centralHeatingFlow'] = None
|
|
249
|
+
|
|
250
|
+
# set to None if dhw_flow (nullable) is None
|
|
251
|
+
# and model_fields_set contains the field
|
|
252
|
+
if self.dhw_flow is None and "dhw_flow" in self.model_fields_set:
|
|
253
|
+
_dict['dhwFlow'] = None
|
|
254
|
+
|
|
255
|
+
# set to None if input_status (nullable) is None
|
|
256
|
+
# and model_fields_set contains the field
|
|
257
|
+
if self.input_status is None and "input_status" in self.model_fields_set:
|
|
258
|
+
_dict['inputStatus'] = None
|
|
259
|
+
|
|
260
|
+
# set to None if current_control_method (nullable) is None
|
|
261
|
+
# and model_fields_set contains the field
|
|
262
|
+
if self.current_control_method is None and "current_control_method" in self.model_fields_set:
|
|
263
|
+
_dict['currentControlMethod'] = None
|
|
264
|
+
|
|
265
|
+
# set to None if signal_strength (nullable) is None
|
|
266
|
+
# and model_fields_set contains the field
|
|
267
|
+
if self.signal_strength is None and "signal_strength" in self.model_fields_set:
|
|
268
|
+
_dict['signalStrength'] = None
|
|
269
|
+
|
|
270
|
+
# set to None if rpm_limiter (nullable) is None
|
|
271
|
+
# and model_fields_set contains the field
|
|
272
|
+
if self.rpm_limiter is None and "rpm_limiter" in self.model_fields_set:
|
|
273
|
+
_dict['rpmLimiter'] = None
|
|
274
|
+
|
|
275
|
+
# set to None if rpm_limiter_type (nullable) is None
|
|
276
|
+
# and model_fields_set contains the field
|
|
277
|
+
if self.rpm_limiter_type is None and "rpm_limiter_type" in self.model_fields_set:
|
|
278
|
+
_dict['rpmLimiterType'] = None
|
|
279
|
+
|
|
280
|
+
# set to None if p_compressor_in (nullable) is None
|
|
281
|
+
# and model_fields_set contains the field
|
|
282
|
+
if self.p_compressor_in is None and "p_compressor_in" in self.model_fields_set:
|
|
283
|
+
_dict['pCompressorIn'] = None
|
|
284
|
+
|
|
285
|
+
# set to None if p_compressor_out (nullable) is None
|
|
286
|
+
# and model_fields_set contains the field
|
|
287
|
+
if self.p_compressor_out is None and "p_compressor_out" in self.model_fields_set:
|
|
288
|
+
_dict['pCompressorOut'] = None
|
|
289
|
+
|
|
290
|
+
# set to None if p_compressor_in_target (nullable) is None
|
|
291
|
+
# and model_fields_set contains the field
|
|
292
|
+
if self.p_compressor_in_target is None and "p_compressor_in_target" in self.model_fields_set:
|
|
293
|
+
_dict['pCompressorInTarget'] = None
|
|
294
|
+
|
|
295
|
+
# set to None if t_compressor_in (nullable) is None
|
|
296
|
+
# and model_fields_set contains the field
|
|
297
|
+
if self.t_compressor_in is None and "t_compressor_in" in self.model_fields_set:
|
|
298
|
+
_dict['tCompressorIn'] = None
|
|
299
|
+
|
|
300
|
+
# set to None if t_compressor_out (nullable) is None
|
|
301
|
+
# and model_fields_set contains the field
|
|
302
|
+
if self.t_compressor_out is None and "t_compressor_out" in self.model_fields_set:
|
|
303
|
+
_dict['tCompressorOut'] = None
|
|
304
|
+
|
|
305
|
+
# set to None if t_compressor_in_transient (nullable) is None
|
|
306
|
+
# and model_fields_set contains the field
|
|
307
|
+
if self.t_compressor_in_transient is None and "t_compressor_in_transient" in self.model_fields_set:
|
|
308
|
+
_dict['tCompressorInTransient'] = None
|
|
309
|
+
|
|
310
|
+
# set to None if t_compressor_out_transient (nullable) is None
|
|
311
|
+
# and model_fields_set contains the field
|
|
312
|
+
if self.t_compressor_out_transient is None and "t_compressor_out_transient" in self.model_fields_set:
|
|
313
|
+
_dict['tCompressorOutTransient'] = None
|
|
314
|
+
|
|
315
|
+
# set to None if delta_t_compressor_in_superheat (nullable) is None
|
|
316
|
+
# and model_fields_set contains the field
|
|
317
|
+
if self.delta_t_compressor_in_superheat is None and "delta_t_compressor_in_superheat" in self.model_fields_set:
|
|
318
|
+
_dict['deltaTCompressorInSuperheat'] = None
|
|
319
|
+
|
|
320
|
+
# set to None if fan (nullable) is None
|
|
321
|
+
# and model_fields_set contains the field
|
|
322
|
+
if self.fan is None and "fan" in self.model_fields_set:
|
|
323
|
+
_dict['fan'] = None
|
|
324
|
+
|
|
325
|
+
# set to None if fan_power (nullable) is None
|
|
326
|
+
# and model_fields_set contains the field
|
|
327
|
+
if self.fan_power is None and "fan_power" in self.model_fields_set:
|
|
328
|
+
_dict['fanPower'] = None
|
|
329
|
+
|
|
330
|
+
# set to None if temperature_error_integral (nullable) is None
|
|
331
|
+
# and model_fields_set contains the field
|
|
332
|
+
if self.temperature_error_integral is None and "temperature_error_integral" in self.model_fields_set:
|
|
333
|
+
_dict['temperatureErrorIntegral'] = None
|
|
334
|
+
|
|
335
|
+
# set to None if thermostat_status (nullable) is None
|
|
336
|
+
# and model_fields_set contains the field
|
|
337
|
+
if self.thermostat_status is None and "thermostat_status" in self.model_fields_set:
|
|
338
|
+
_dict['thermostatStatus'] = None
|
|
339
|
+
|
|
340
|
+
# set to None if ot_boiler_status (nullable) is None
|
|
341
|
+
# and model_fields_set contains the field
|
|
342
|
+
if self.ot_boiler_status is None and "ot_boiler_status" in self.model_fields_set:
|
|
343
|
+
_dict['otBoilerStatus'] = None
|
|
344
|
+
|
|
345
|
+
# set to None if central_heating_pwm_requested_duty_cycle (nullable) is None
|
|
346
|
+
# and model_fields_set contains the field
|
|
347
|
+
if self.central_heating_pwm_requested_duty_cycle is None and "central_heating_pwm_requested_duty_cycle" in self.model_fields_set:
|
|
348
|
+
_dict['centralHeatingPwmRequestedDutyCycle'] = None
|
|
349
|
+
|
|
350
|
+
# set to None if dhw_pwm_requested_duty_cycle (nullable) is None
|
|
351
|
+
# and model_fields_set contains the field
|
|
352
|
+
if self.dhw_pwm_requested_duty_cycle is None and "dhw_pwm_requested_duty_cycle" in self.model_fields_set:
|
|
353
|
+
_dict['dhwPwmRequestedDutyCycle'] = None
|
|
354
|
+
|
|
355
|
+
# set to None if sinr (nullable) is None
|
|
356
|
+
# and model_fields_set contains the field
|
|
357
|
+
if self.sinr is None and "sinr" in self.model_fields_set:
|
|
358
|
+
_dict['sinr'] = None
|
|
359
|
+
|
|
360
|
+
# set to None if error (nullable) is None
|
|
361
|
+
# and model_fields_set contains the field
|
|
362
|
+
if self.error is None and "error" in self.model_fields_set:
|
|
363
|
+
_dict['error'] = None
|
|
364
|
+
|
|
365
|
+
# set to None if error_decoded_dtc_none (nullable) is None
|
|
366
|
+
# and model_fields_set contains the field
|
|
367
|
+
if self.error_decoded_dtc_none is None and "error_decoded_dtc_none" in self.model_fields_set:
|
|
368
|
+
_dict['errorDecodedDtcNone'] = None
|
|
369
|
+
|
|
370
|
+
# set to None if error_decoded_dtc_continue (nullable) is None
|
|
371
|
+
# and model_fields_set contains the field
|
|
372
|
+
if self.error_decoded_dtc_continue is None and "error_decoded_dtc_continue" in self.model_fields_set:
|
|
373
|
+
_dict['errorDecodedDtcContinue'] = None
|
|
374
|
+
|
|
375
|
+
# set to None if error_decoded_dtc_compressor_off (nullable) is None
|
|
376
|
+
# and model_fields_set contains the field
|
|
377
|
+
if self.error_decoded_dtc_compressor_off is None and "error_decoded_dtc_compressor_off" in self.model_fields_set:
|
|
378
|
+
_dict['errorDecodedDtcCompressorOff'] = None
|
|
379
|
+
|
|
380
|
+
# set to None if error_decoded_dtc_defrost_forbidden (nullable) is None
|
|
381
|
+
# and model_fields_set contains the field
|
|
382
|
+
if self.error_decoded_dtc_defrost_forbidden is None and "error_decoded_dtc_defrost_forbidden" in self.model_fields_set:
|
|
383
|
+
_dict['errorDecodedDtcDefrostForbidden'] = None
|
|
384
|
+
|
|
385
|
+
# set to None if error_decoded_dtc_request_service (nullable) is None
|
|
386
|
+
# and model_fields_set contains the field
|
|
387
|
+
if self.error_decoded_dtc_request_service is None and "error_decoded_dtc_request_service" in self.model_fields_set:
|
|
388
|
+
_dict['errorDecodedDtcRequestService'] = None
|
|
389
|
+
|
|
390
|
+
# set to None if error_decoded_dtc_use_heating_curve (nullable) is None
|
|
391
|
+
# and model_fields_set contains the field
|
|
392
|
+
if self.error_decoded_dtc_use_heating_curve is None and "error_decoded_dtc_use_heating_curve" in self.model_fields_set:
|
|
393
|
+
_dict['errorDecodedDtcUseHeatingCurve'] = None
|
|
394
|
+
|
|
395
|
+
# set to None if error_decoded_dtc_dhw_forbidden (nullable) is None
|
|
396
|
+
# and model_fields_set contains the field
|
|
397
|
+
if self.error_decoded_dtc_dhw_forbidden is None and "error_decoded_dtc_dhw_forbidden" in self.model_fields_set:
|
|
398
|
+
_dict['errorDecodedDtcDhwForbidden'] = None
|
|
399
|
+
|
|
400
|
+
# set to None if error_decoded_dtc_error (nullable) is None
|
|
401
|
+
# and model_fields_set contains the field
|
|
402
|
+
if self.error_decoded_dtc_error is None and "error_decoded_dtc_error" in self.model_fields_set:
|
|
403
|
+
_dict['errorDecodedDtcError'] = None
|
|
404
|
+
|
|
405
|
+
# set to None if error_decoded_dtc_inactive (nullable) is None
|
|
406
|
+
# and model_fields_set contains the field
|
|
407
|
+
if self.error_decoded_dtc_inactive is None and "error_decoded_dtc_inactive" in self.model_fields_set:
|
|
408
|
+
_dict['errorDecodedDtcInactive'] = None
|
|
409
|
+
|
|
410
|
+
# set to None if control_bridge_status_decoded_dhw_valve (nullable) is None
|
|
411
|
+
# and model_fields_set contains the field
|
|
412
|
+
if self.control_bridge_status_decoded_dhw_valve is None and "control_bridge_status_decoded_dhw_valve" in self.model_fields_set:
|
|
413
|
+
_dict['controlBridgeStatusDecodedDhwValve'] = None
|
|
414
|
+
|
|
415
|
+
# set to None if t_board (nullable) is None
|
|
416
|
+
# and model_fields_set contains the field
|
|
417
|
+
if self.t_board is None and "t_board" in self.model_fields_set:
|
|
418
|
+
_dict['tBoard'] = None
|
|
419
|
+
|
|
420
|
+
# set to None if t_inverter (nullable) is None
|
|
421
|
+
# and model_fields_set contains the field
|
|
422
|
+
if self.t_inverter is None and "t_inverter" in self.model_fields_set:
|
|
423
|
+
_dict['tInverter'] = None
|
|
424
|
+
|
|
425
|
+
# set to None if compressor_power_low_accuracy (nullable) is None
|
|
426
|
+
# and model_fields_set contains the field
|
|
427
|
+
if self.compressor_power_low_accuracy is None and "compressor_power_low_accuracy" in self.model_fields_set:
|
|
428
|
+
_dict['compressorPowerLowAccuracy'] = None
|
|
429
|
+
|
|
430
|
+
# set to None if valve (nullable) is None
|
|
431
|
+
# and model_fields_set contains the field
|
|
432
|
+
if self.valve is None and "valve" in self.model_fields_set:
|
|
433
|
+
_dict['valve'] = None
|
|
434
|
+
|
|
435
|
+
# set to None if inverter_input_voltage (nullable) is None
|
|
436
|
+
# and model_fields_set contains the field
|
|
437
|
+
if self.inverter_input_voltage is None and "inverter_input_voltage" in self.model_fields_set:
|
|
438
|
+
_dict['inverterInputVoltage'] = None
|
|
439
|
+
|
|
440
|
+
# set to None if indoor_unit_heater_temperature (nullable) is None
|
|
441
|
+
# and model_fields_set contains the field
|
|
442
|
+
if self.indoor_unit_heater_temperature is None and "indoor_unit_heater_temperature" in self.model_fields_set:
|
|
443
|
+
_dict['indoorUnitHeaterTemperature'] = None
|
|
444
|
+
|
|
445
|
+
# set to None if indoor_unit_input_current (nullable) is None
|
|
446
|
+
# and model_fields_set contains the field
|
|
447
|
+
if self.indoor_unit_input_current is None and "indoor_unit_input_current" in self.model_fields_set:
|
|
448
|
+
_dict['indoorUnitInputCurrent'] = None
|
|
449
|
+
|
|
450
|
+
# set to None if cooling_status (nullable) is None
|
|
451
|
+
# and model_fields_set contains the field
|
|
452
|
+
if self.cooling_status is None and "cooling_status" in self.model_fields_set:
|
|
453
|
+
_dict['coolingStatus'] = None
|
|
454
|
+
|
|
455
|
+
# set to None if cm_mass_power_in (nullable) is None
|
|
456
|
+
# and model_fields_set contains the field
|
|
457
|
+
if self.cm_mass_power_in is None and "cm_mass_power_in" in self.model_fields_set:
|
|
458
|
+
_dict['cmMassPowerIn'] = None
|
|
459
|
+
|
|
460
|
+
# set to None if cm_mass_power_out (nullable) is None
|
|
461
|
+
# and model_fields_set contains the field
|
|
462
|
+
if self.cm_mass_power_out is None and "cm_mass_power_out" in self.model_fields_set:
|
|
463
|
+
_dict['cmMassPowerOut'] = None
|
|
464
|
+
|
|
465
|
+
# set to None if debug_variable1 (nullable) is None
|
|
466
|
+
# and model_fields_set contains the field
|
|
467
|
+
if self.debug_variable1 is None and "debug_variable1" in self.model_fields_set:
|
|
468
|
+
_dict['debugVariable1'] = None
|
|
469
|
+
|
|
470
|
+
# set to None if debug_variable2 (nullable) is None
|
|
471
|
+
# and model_fields_set contains the field
|
|
472
|
+
if self.debug_variable2 is None and "debug_variable2" in self.model_fields_set:
|
|
473
|
+
_dict['debugVariable2'] = None
|
|
474
|
+
|
|
475
|
+
# set to None if debug_variable3 (nullable) is None
|
|
476
|
+
# and model_fields_set contains the field
|
|
477
|
+
if self.debug_variable3 is None and "debug_variable3" in self.model_fields_set:
|
|
478
|
+
_dict['debugVariable3'] = None
|
|
479
|
+
|
|
480
|
+
# set to None if debug_variable4 (nullable) is None
|
|
481
|
+
# and model_fields_set contains the field
|
|
482
|
+
if self.debug_variable4 is None and "debug_variable4" in self.model_fields_set:
|
|
483
|
+
_dict['debugVariable4'] = None
|
|
484
|
+
|
|
485
|
+
# set to None if debug_variable5 (nullable) is None
|
|
486
|
+
# and model_fields_set contains the field
|
|
487
|
+
if self.debug_variable5 is None and "debug_variable5" in self.model_fields_set:
|
|
488
|
+
_dict['debugVariable5'] = None
|
|
489
|
+
|
|
490
|
+
return _dict
|
|
491
|
+
|
|
492
|
+
@classmethod
|
|
493
|
+
def from_dict(cls, obj: Dict) -> Self:
|
|
494
|
+
"""Create an instance of RawHeatpumpLogAndIsOnlineDto from a dict"""
|
|
495
|
+
if obj is None:
|
|
496
|
+
return None
|
|
497
|
+
|
|
498
|
+
if not isinstance(obj, dict):
|
|
499
|
+
return cls.model_validate(obj)
|
|
500
|
+
|
|
501
|
+
_obj = cls.model_validate({
|
|
502
|
+
"heatPumpId": obj.get("heatPumpId"),
|
|
503
|
+
"timestamp": obj.get("timestamp"),
|
|
504
|
+
"state": obj.get("state"),
|
|
505
|
+
"controlBridgeStatus": obj.get("controlBridgeStatus"),
|
|
506
|
+
"controlBridgeStatusDecodedWaterPump": obj.get("controlBridgeStatusDecodedWaterPump"),
|
|
507
|
+
"controlBridgeStatusDecodedGasBoiler": obj.get("controlBridgeStatusDecodedGasBoiler"),
|
|
508
|
+
"controlBridgeStatusDecodedElectricHeater": obj.get("controlBridgeStatusDecodedElectricHeater"),
|
|
509
|
+
"controlBridgeStatusDecodedWaterPump2": obj.get("controlBridgeStatusDecodedWaterPump2"),
|
|
510
|
+
"t1": obj.get("t1"),
|
|
511
|
+
"t2": obj.get("t2"),
|
|
512
|
+
"tAirIn": obj.get("tAirIn"),
|
|
513
|
+
"tAirOut": obj.get("tAirOut"),
|
|
514
|
+
"tWaterIn": obj.get("tWaterIn"),
|
|
515
|
+
"tWaterOut": obj.get("tWaterOut"),
|
|
516
|
+
"tWaterHouseIn": obj.get("tWaterHouseIn"),
|
|
517
|
+
"rpm": obj.get("rpm"),
|
|
518
|
+
"onOffThermostatState": obj.get("onOffThermostatState"),
|
|
519
|
+
"tRoom": obj.get("tRoom"),
|
|
520
|
+
"tRoomTarget": obj.get("tRoomTarget"),
|
|
521
|
+
"tThermostatSetpoint": obj.get("tThermostatSetpoint"),
|
|
522
|
+
"otBoilerFeedTemperature": obj.get("otBoilerFeedTemperature"),
|
|
523
|
+
"otBoilerReturnTemperature": obj.get("otBoilerReturnTemperature"),
|
|
524
|
+
"centralHeatingFlow": obj.get("centralHeatingFlow"),
|
|
525
|
+
"dhwFlow": obj.get("dhwFlow"),
|
|
526
|
+
"interval": obj.get("interval"),
|
|
527
|
+
"inputStatus": obj.get("inputStatus"),
|
|
528
|
+
"currentControlMethod": obj.get("currentControlMethod"),
|
|
529
|
+
"signalStrength": obj.get("signalStrength"),
|
|
530
|
+
"rpmLimiter": obj.get("rpmLimiter"),
|
|
531
|
+
"rpmLimiterType": obj.get("rpmLimiterType"),
|
|
532
|
+
"pCompressorIn": obj.get("pCompressorIn"),
|
|
533
|
+
"pCompressorOut": obj.get("pCompressorOut"),
|
|
534
|
+
"pCompressorInTarget": obj.get("pCompressorInTarget"),
|
|
535
|
+
"tCompressorIn": obj.get("tCompressorIn"),
|
|
536
|
+
"tCompressorOut": obj.get("tCompressorOut"),
|
|
537
|
+
"tCompressorInTransient": obj.get("tCompressorInTransient"),
|
|
538
|
+
"tCompressorOutTransient": obj.get("tCompressorOutTransient"),
|
|
539
|
+
"deltaTCompressorInSuperheat": obj.get("deltaTCompressorInSuperheat"),
|
|
540
|
+
"fan": obj.get("fan"),
|
|
541
|
+
"fanPower": obj.get("fanPower"),
|
|
542
|
+
"temperatureErrorIntegral": obj.get("temperatureErrorIntegral"),
|
|
543
|
+
"thermostatStatus": obj.get("thermostatStatus"),
|
|
544
|
+
"otBoilerStatus": obj.get("otBoilerStatus"),
|
|
545
|
+
"centralHeatingPwmRequestedDutyCycle": obj.get("centralHeatingPwmRequestedDutyCycle"),
|
|
546
|
+
"dhwPwmRequestedDutyCycle": obj.get("dhwPwmRequestedDutyCycle"),
|
|
547
|
+
"sinr": obj.get("sinr"),
|
|
548
|
+
"error": obj.get("error"),
|
|
549
|
+
"errorDecodedDtcNone": obj.get("errorDecodedDtcNone"),
|
|
550
|
+
"errorDecodedDtcContinue": obj.get("errorDecodedDtcContinue"),
|
|
551
|
+
"errorDecodedDtcCompressorOff": obj.get("errorDecodedDtcCompressorOff"),
|
|
552
|
+
"errorDecodedDtcDefrostForbidden": obj.get("errorDecodedDtcDefrostForbidden"),
|
|
553
|
+
"errorDecodedDtcRequestService": obj.get("errorDecodedDtcRequestService"),
|
|
554
|
+
"errorDecodedDtcUseHeatingCurve": obj.get("errorDecodedDtcUseHeatingCurve"),
|
|
555
|
+
"errorDecodedDtcDhwForbidden": obj.get("errorDecodedDtcDhwForbidden"),
|
|
556
|
+
"errorDecodedDtcError": obj.get("errorDecodedDtcError"),
|
|
557
|
+
"errorDecodedDtcInactive": obj.get("errorDecodedDtcInactive"),
|
|
558
|
+
"controlBridgeStatusDecodedDhwValve": obj.get("controlBridgeStatusDecodedDhwValve"),
|
|
559
|
+
"tBoard": obj.get("tBoard"),
|
|
560
|
+
"tInverter": obj.get("tInverter"),
|
|
561
|
+
"compressorPowerLowAccuracy": obj.get("compressorPowerLowAccuracy"),
|
|
562
|
+
"valve": obj.get("valve"),
|
|
563
|
+
"inverterInputVoltage": obj.get("inverterInputVoltage"),
|
|
564
|
+
"indoorUnitHeaterTemperature": obj.get("indoorUnitHeaterTemperature"),
|
|
565
|
+
"indoorUnitInputCurrent": obj.get("indoorUnitInputCurrent"),
|
|
566
|
+
"coolingStatus": obj.get("coolingStatus"),
|
|
567
|
+
"cmMassPowerIn": obj.get("cmMassPowerIn"),
|
|
568
|
+
"cmMassPowerOut": obj.get("cmMassPowerOut"),
|
|
569
|
+
"debugVariable1": obj.get("debugVariable1"),
|
|
570
|
+
"debugVariable2": obj.get("debugVariable2"),
|
|
571
|
+
"debugVariable3": obj.get("debugVariable3"),
|
|
572
|
+
"debugVariable4": obj.get("debugVariable4"),
|
|
573
|
+
"debugVariable5": obj.get("debugVariable5"),
|
|
574
|
+
"isOnline": obj.get("isOnline")
|
|
575
|
+
})
|
|
576
|
+
return _obj
|
|
577
|
+
|
|
578
|
+
|