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
|
@@ -18,495 +18,558 @@ import re # noqa: F401
|
|
|
18
18
|
import json
|
|
19
19
|
|
|
20
20
|
from datetime import datetime
|
|
21
|
-
from typing import Optional, Union
|
|
22
|
-
from pydantic import BaseModel,
|
|
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
|
|
23
28
|
|
|
24
29
|
class RawHeatPumpLogDto(BaseModel):
|
|
25
30
|
"""
|
|
26
|
-
Raw heat pump log as given by a heat pump
|
|
27
|
-
"""
|
|
28
|
-
heat_pump_id: StrictStr = Field(
|
|
29
|
-
timestamp: datetime = Field(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
__properties = ["heatPumpId", "timestamp", "
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
""
|
|
104
|
-
|
|
105
|
-
|
|
31
|
+
Raw heat pump log as given by a heat pump for staff members
|
|
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
|
+
__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"]
|
|
106
|
+
|
|
107
|
+
model_config = {
|
|
108
|
+
"populate_by_name": True,
|
|
109
|
+
"validate_assignment": True,
|
|
110
|
+
"protected_namespaces": (),
|
|
111
|
+
}
|
|
112
|
+
|
|
106
113
|
|
|
107
114
|
def to_str(self) -> str:
|
|
108
115
|
"""Returns the string representation of the model using alias"""
|
|
109
|
-
return pprint.pformat(self.
|
|
116
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
110
117
|
|
|
111
118
|
def to_json(self) -> str:
|
|
112
119
|
"""Returns the JSON representation of the model using alias"""
|
|
120
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
113
121
|
return json.dumps(self.to_dict())
|
|
114
122
|
|
|
115
123
|
@classmethod
|
|
116
|
-
def from_json(cls, json_str: str) ->
|
|
124
|
+
def from_json(cls, json_str: str) -> Self:
|
|
117
125
|
"""Create an instance of RawHeatPumpLogDto from a JSON string"""
|
|
118
126
|
return cls.from_dict(json.loads(json_str))
|
|
119
127
|
|
|
120
|
-
def to_dict(self):
|
|
121
|
-
"""
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
# set to None if
|
|
137
|
-
# and
|
|
138
|
-
if self.
|
|
139
|
-
_dict['
|
|
140
|
-
|
|
141
|
-
# set to None if error (nullable) is None
|
|
142
|
-
# and __fields_set__ contains the field
|
|
143
|
-
if self.error is None and "error" in self.__fields_set__:
|
|
144
|
-
_dict['error'] = None
|
|
128
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
129
|
+
"""Return the dictionary representation of the model using alias.
|
|
130
|
+
|
|
131
|
+
This has the following differences from calling pydantic's
|
|
132
|
+
`self.model_dump(by_alias=True)`:
|
|
133
|
+
|
|
134
|
+
* `None` is only added to the output dict for nullable fields that
|
|
135
|
+
were set at model initialization. Other fields with value `None`
|
|
136
|
+
are ignored.
|
|
137
|
+
"""
|
|
138
|
+
_dict = self.model_dump(
|
|
139
|
+
by_alias=True,
|
|
140
|
+
exclude={
|
|
141
|
+
},
|
|
142
|
+
exclude_none=True,
|
|
143
|
+
)
|
|
144
|
+
# set to None if state (nullable) is None
|
|
145
|
+
# and model_fields_set contains the field
|
|
146
|
+
if self.state is None and "state" in self.model_fields_set:
|
|
147
|
+
_dict['state'] = None
|
|
145
148
|
|
|
146
|
-
# set to None if
|
|
147
|
-
# and
|
|
148
|
-
if self.
|
|
149
|
-
_dict['
|
|
149
|
+
# set to None if control_bridge_status (nullable) is None
|
|
150
|
+
# and model_fields_set contains the field
|
|
151
|
+
if self.control_bridge_status is None and "control_bridge_status" in self.model_fields_set:
|
|
152
|
+
_dict['controlBridgeStatus'] = None
|
|
150
153
|
|
|
151
|
-
# set to None if
|
|
152
|
-
# and
|
|
153
|
-
if self.
|
|
154
|
-
_dict['
|
|
154
|
+
# set to None if control_bridge_status_decoded_water_pump (nullable) is None
|
|
155
|
+
# and model_fields_set contains the field
|
|
156
|
+
if self.control_bridge_status_decoded_water_pump is None and "control_bridge_status_decoded_water_pump" in self.model_fields_set:
|
|
157
|
+
_dict['controlBridgeStatusDecodedWaterPump'] = None
|
|
155
158
|
|
|
156
|
-
# set to None if
|
|
157
|
-
# and
|
|
158
|
-
if self.
|
|
159
|
-
_dict['
|
|
159
|
+
# set to None if control_bridge_status_decoded_gas_boiler (nullable) is None
|
|
160
|
+
# and model_fields_set contains the field
|
|
161
|
+
if self.control_bridge_status_decoded_gas_boiler is None and "control_bridge_status_decoded_gas_boiler" in self.model_fields_set:
|
|
162
|
+
_dict['controlBridgeStatusDecodedGasBoiler'] = None
|
|
160
163
|
|
|
161
|
-
# set to None if
|
|
162
|
-
# and
|
|
163
|
-
if self.
|
|
164
|
-
_dict['
|
|
164
|
+
# set to None if control_bridge_status_decoded_electric_heater (nullable) is None
|
|
165
|
+
# and model_fields_set contains the field
|
|
166
|
+
if self.control_bridge_status_decoded_electric_heater is None and "control_bridge_status_decoded_electric_heater" in self.model_fields_set:
|
|
167
|
+
_dict['controlBridgeStatusDecodedElectricHeater'] = None
|
|
165
168
|
|
|
166
|
-
# set to None if
|
|
167
|
-
# and
|
|
168
|
-
if self.
|
|
169
|
-
_dict['
|
|
169
|
+
# set to None if control_bridge_status_decoded_water_pump2 (nullable) is None
|
|
170
|
+
# and model_fields_set contains the field
|
|
171
|
+
if self.control_bridge_status_decoded_water_pump2 is None and "control_bridge_status_decoded_water_pump2" in self.model_fields_set:
|
|
172
|
+
_dict['controlBridgeStatusDecodedWaterPump2'] = None
|
|
170
173
|
|
|
171
|
-
# set to None if
|
|
172
|
-
# and
|
|
173
|
-
if self.
|
|
174
|
-
_dict['
|
|
174
|
+
# set to None if t1 (nullable) is None
|
|
175
|
+
# and model_fields_set contains the field
|
|
176
|
+
if self.t1 is None and "t1" in self.model_fields_set:
|
|
177
|
+
_dict['t1'] = None
|
|
175
178
|
|
|
176
|
-
# set to None if
|
|
177
|
-
# and
|
|
178
|
-
if self.
|
|
179
|
-
_dict['
|
|
179
|
+
# set to None if t2 (nullable) is None
|
|
180
|
+
# and model_fields_set contains the field
|
|
181
|
+
if self.t2 is None and "t2" in self.model_fields_set:
|
|
182
|
+
_dict['t2'] = None
|
|
180
183
|
|
|
181
|
-
# set to None if
|
|
182
|
-
# and
|
|
183
|
-
if self.
|
|
184
|
-
_dict['
|
|
184
|
+
# set to None if t_air_in (nullable) is None
|
|
185
|
+
# and model_fields_set contains the field
|
|
186
|
+
if self.t_air_in is None and "t_air_in" in self.model_fields_set:
|
|
187
|
+
_dict['tAirIn'] = None
|
|
185
188
|
|
|
186
|
-
# set to None if
|
|
187
|
-
# and
|
|
188
|
-
if self.
|
|
189
|
-
_dict['
|
|
189
|
+
# set to None if t_air_out (nullable) is None
|
|
190
|
+
# and model_fields_set contains the field
|
|
191
|
+
if self.t_air_out is None and "t_air_out" in self.model_fields_set:
|
|
192
|
+
_dict['tAirOut'] = None
|
|
190
193
|
|
|
191
|
-
# set to None if
|
|
192
|
-
# and
|
|
193
|
-
if self.
|
|
194
|
-
_dict['
|
|
194
|
+
# set to None if t_water_in (nullable) is None
|
|
195
|
+
# and model_fields_set contains the field
|
|
196
|
+
if self.t_water_in is None and "t_water_in" in self.model_fields_set:
|
|
197
|
+
_dict['tWaterIn'] = None
|
|
195
198
|
|
|
196
|
-
# set to None if
|
|
197
|
-
# and
|
|
198
|
-
if self.
|
|
199
|
-
_dict['
|
|
199
|
+
# set to None if t_water_out (nullable) is None
|
|
200
|
+
# and model_fields_set contains the field
|
|
201
|
+
if self.t_water_out is None and "t_water_out" in self.model_fields_set:
|
|
202
|
+
_dict['tWaterOut'] = None
|
|
200
203
|
|
|
201
|
-
# set to None if
|
|
202
|
-
# and
|
|
203
|
-
if self.
|
|
204
|
-
_dict['
|
|
204
|
+
# set to None if t_water_house_in (nullable) is None
|
|
205
|
+
# and model_fields_set contains the field
|
|
206
|
+
if self.t_water_house_in is None and "t_water_house_in" in self.model_fields_set:
|
|
207
|
+
_dict['tWaterHouseIn'] = None
|
|
205
208
|
|
|
206
|
-
# set to None if
|
|
207
|
-
# and
|
|
208
|
-
if self.
|
|
209
|
-
_dict['
|
|
209
|
+
# set to None if rpm (nullable) is None
|
|
210
|
+
# and model_fields_set contains the field
|
|
211
|
+
if self.rpm is None and "rpm" in self.model_fields_set:
|
|
212
|
+
_dict['rpm'] = None
|
|
210
213
|
|
|
211
|
-
# set to None if
|
|
212
|
-
# and
|
|
213
|
-
if self.
|
|
214
|
-
_dict['
|
|
214
|
+
# set to None if on_off_thermostat_state (nullable) is None
|
|
215
|
+
# and model_fields_set contains the field
|
|
216
|
+
if self.on_off_thermostat_state is None and "on_off_thermostat_state" in self.model_fields_set:
|
|
217
|
+
_dict['onOffThermostatState'] = None
|
|
215
218
|
|
|
216
|
-
# set to None if
|
|
217
|
-
# and
|
|
218
|
-
if self.
|
|
219
|
-
_dict['
|
|
219
|
+
# set to None if t_room (nullable) is None
|
|
220
|
+
# and model_fields_set contains the field
|
|
221
|
+
if self.t_room is None and "t_room" in self.model_fields_set:
|
|
222
|
+
_dict['tRoom'] = None
|
|
220
223
|
|
|
221
|
-
# set to None if
|
|
222
|
-
# and
|
|
223
|
-
if self.
|
|
224
|
-
_dict['
|
|
224
|
+
# set to None if t_room_target (nullable) is None
|
|
225
|
+
# and model_fields_set contains the field
|
|
226
|
+
if self.t_room_target is None and "t_room_target" in self.model_fields_set:
|
|
227
|
+
_dict['tRoomTarget'] = None
|
|
225
228
|
|
|
226
|
-
# set to None if
|
|
227
|
-
# and
|
|
228
|
-
if self.
|
|
229
|
-
_dict['
|
|
229
|
+
# set to None if t_thermostat_setpoint (nullable) is None
|
|
230
|
+
# and model_fields_set contains the field
|
|
231
|
+
if self.t_thermostat_setpoint is None and "t_thermostat_setpoint" in self.model_fields_set:
|
|
232
|
+
_dict['tThermostatSetpoint'] = None
|
|
230
233
|
|
|
231
|
-
# set to None if
|
|
232
|
-
# and
|
|
233
|
-
if self.
|
|
234
|
-
_dict['
|
|
234
|
+
# set to None if ot_boiler_feed_temperature (nullable) is None
|
|
235
|
+
# and model_fields_set contains the field
|
|
236
|
+
if self.ot_boiler_feed_temperature is None and "ot_boiler_feed_temperature" in self.model_fields_set:
|
|
237
|
+
_dict['otBoilerFeedTemperature'] = None
|
|
235
238
|
|
|
236
|
-
# set to None if
|
|
237
|
-
# and
|
|
238
|
-
if self.
|
|
239
|
-
_dict['
|
|
239
|
+
# set to None if ot_boiler_return_temperature (nullable) is None
|
|
240
|
+
# and model_fields_set contains the field
|
|
241
|
+
if self.ot_boiler_return_temperature is None and "ot_boiler_return_temperature" in self.model_fields_set:
|
|
242
|
+
_dict['otBoilerReturnTemperature'] = None
|
|
240
243
|
|
|
241
|
-
# set to None if
|
|
242
|
-
# and
|
|
243
|
-
if self.
|
|
244
|
-
_dict['
|
|
244
|
+
# set to None if central_heating_flow (nullable) is None
|
|
245
|
+
# and model_fields_set contains the field
|
|
246
|
+
if self.central_heating_flow is None and "central_heating_flow" in self.model_fields_set:
|
|
247
|
+
_dict['centralHeatingFlow'] = None
|
|
245
248
|
|
|
246
|
-
# set to None if
|
|
247
|
-
# and
|
|
248
|
-
if self.
|
|
249
|
-
_dict['
|
|
249
|
+
# set to None if dhw_flow (nullable) is None
|
|
250
|
+
# and model_fields_set contains the field
|
|
251
|
+
if self.dhw_flow is None and "dhw_flow" in self.model_fields_set:
|
|
252
|
+
_dict['dhwFlow'] = None
|
|
250
253
|
|
|
251
254
|
# set to None if input_status (nullable) is None
|
|
252
|
-
# and
|
|
253
|
-
if self.input_status is None and "input_status" in self.
|
|
255
|
+
# and model_fields_set contains the field
|
|
256
|
+
if self.input_status is None and "input_status" in self.model_fields_set:
|
|
254
257
|
_dict['inputStatus'] = None
|
|
255
258
|
|
|
256
259
|
# set to None if current_control_method (nullable) is None
|
|
257
|
-
# and
|
|
258
|
-
if self.current_control_method is None and "current_control_method" in self.
|
|
260
|
+
# and model_fields_set contains the field
|
|
261
|
+
if self.current_control_method is None and "current_control_method" in self.model_fields_set:
|
|
259
262
|
_dict['currentControlMethod'] = None
|
|
260
263
|
|
|
261
264
|
# set to None if signal_strength (nullable) is None
|
|
262
|
-
# and
|
|
263
|
-
if self.signal_strength is None and "signal_strength" in self.
|
|
265
|
+
# and model_fields_set contains the field
|
|
266
|
+
if self.signal_strength is None and "signal_strength" in self.model_fields_set:
|
|
264
267
|
_dict['signalStrength'] = None
|
|
265
268
|
|
|
266
|
-
# set to None if t1 (nullable) is None
|
|
267
|
-
# and __fields_set__ contains the field
|
|
268
|
-
if self.t1 is None and "t1" in self.__fields_set__:
|
|
269
|
-
_dict['t1'] = None
|
|
270
|
-
|
|
271
|
-
# set to None if t2 (nullable) is None
|
|
272
|
-
# and __fields_set__ contains the field
|
|
273
|
-
if self.t2 is None and "t2" in self.__fields_set__:
|
|
274
|
-
_dict['t2'] = None
|
|
275
|
-
|
|
276
|
-
# set to None if t_spare_ntc (nullable) is None
|
|
277
|
-
# and __fields_set__ contains the field
|
|
278
|
-
if self.t_spare_ntc is None and "t_spare_ntc" in self.__fields_set__:
|
|
279
|
-
_dict['tSpareNtc'] = None
|
|
280
|
-
|
|
281
|
-
# set to None if t_board (nullable) is None
|
|
282
|
-
# and __fields_set__ contains the field
|
|
283
|
-
if self.t_board is None and "t_board" in self.__fields_set__:
|
|
284
|
-
_dict['tBoard'] = None
|
|
285
|
-
|
|
286
|
-
# set to None if rpm (nullable) is None
|
|
287
|
-
# and __fields_set__ contains the field
|
|
288
|
-
if self.rpm is None and "rpm" in self.__fields_set__:
|
|
289
|
-
_dict['rpm'] = None
|
|
290
|
-
|
|
291
269
|
# set to None if rpm_limiter (nullable) is None
|
|
292
|
-
# and
|
|
293
|
-
if self.rpm_limiter is None and "rpm_limiter" in self.
|
|
270
|
+
# and model_fields_set contains the field
|
|
271
|
+
if self.rpm_limiter is None and "rpm_limiter" in self.model_fields_set:
|
|
294
272
|
_dict['rpmLimiter'] = None
|
|
295
273
|
|
|
296
274
|
# set to None if rpm_limiter_type (nullable) is None
|
|
297
|
-
# and
|
|
298
|
-
if self.rpm_limiter_type is None and "rpm_limiter_type" in self.
|
|
275
|
+
# and model_fields_set contains the field
|
|
276
|
+
if self.rpm_limiter_type is None and "rpm_limiter_type" in self.model_fields_set:
|
|
299
277
|
_dict['rpmLimiterType'] = None
|
|
300
278
|
|
|
301
279
|
# set to None if p_compressor_in (nullable) is None
|
|
302
|
-
# and
|
|
303
|
-
if self.p_compressor_in is None and "p_compressor_in" in self.
|
|
280
|
+
# and model_fields_set contains the field
|
|
281
|
+
if self.p_compressor_in is None and "p_compressor_in" in self.model_fields_set:
|
|
304
282
|
_dict['pCompressorIn'] = None
|
|
305
283
|
|
|
306
284
|
# set to None if p_compressor_out (nullable) is None
|
|
307
|
-
# and
|
|
308
|
-
if self.p_compressor_out is None and "p_compressor_out" in self.
|
|
285
|
+
# and model_fields_set contains the field
|
|
286
|
+
if self.p_compressor_out is None and "p_compressor_out" in self.model_fields_set:
|
|
309
287
|
_dict['pCompressorOut'] = None
|
|
310
288
|
|
|
311
289
|
# set to None if p_compressor_in_target (nullable) is None
|
|
312
|
-
# and
|
|
313
|
-
if self.p_compressor_in_target is None and "p_compressor_in_target" in self.
|
|
290
|
+
# and model_fields_set contains the field
|
|
291
|
+
if self.p_compressor_in_target is None and "p_compressor_in_target" in self.model_fields_set:
|
|
314
292
|
_dict['pCompressorInTarget'] = None
|
|
315
293
|
|
|
316
|
-
# set to None if t_inverter (nullable) is None
|
|
317
|
-
# and __fields_set__ contains the field
|
|
318
|
-
if self.t_inverter is None and "t_inverter" in self.__fields_set__:
|
|
319
|
-
_dict['tInverter'] = None
|
|
320
|
-
|
|
321
294
|
# set to None if t_compressor_in (nullable) is None
|
|
322
|
-
# and
|
|
323
|
-
if self.t_compressor_in is None and "t_compressor_in" in self.
|
|
295
|
+
# and model_fields_set contains the field
|
|
296
|
+
if self.t_compressor_in is None and "t_compressor_in" in self.model_fields_set:
|
|
324
297
|
_dict['tCompressorIn'] = None
|
|
325
298
|
|
|
326
299
|
# set to None if t_compressor_out (nullable) is None
|
|
327
|
-
# and
|
|
328
|
-
if self.t_compressor_out is None and "t_compressor_out" in self.
|
|
300
|
+
# and model_fields_set contains the field
|
|
301
|
+
if self.t_compressor_out is None and "t_compressor_out" in self.model_fields_set:
|
|
329
302
|
_dict['tCompressorOut'] = None
|
|
330
303
|
|
|
331
304
|
# set to None if t_compressor_in_transient (nullable) is None
|
|
332
|
-
# and
|
|
333
|
-
if self.t_compressor_in_transient is None and "t_compressor_in_transient" in self.
|
|
305
|
+
# and model_fields_set contains the field
|
|
306
|
+
if self.t_compressor_in_transient is None and "t_compressor_in_transient" in self.model_fields_set:
|
|
334
307
|
_dict['tCompressorInTransient'] = None
|
|
335
308
|
|
|
336
309
|
# set to None if t_compressor_out_transient (nullable) is None
|
|
337
|
-
# and
|
|
338
|
-
if self.t_compressor_out_transient is None and "t_compressor_out_transient" in self.
|
|
310
|
+
# and model_fields_set contains the field
|
|
311
|
+
if self.t_compressor_out_transient is None and "t_compressor_out_transient" in self.model_fields_set:
|
|
339
312
|
_dict['tCompressorOutTransient'] = None
|
|
340
313
|
|
|
341
314
|
# set to None if delta_t_compressor_in_superheat (nullable) is None
|
|
342
|
-
# and
|
|
343
|
-
if self.delta_t_compressor_in_superheat is None and "delta_t_compressor_in_superheat" in self.
|
|
315
|
+
# and model_fields_set contains the field
|
|
316
|
+
if self.delta_t_compressor_in_superheat is None and "delta_t_compressor_in_superheat" in self.model_fields_set:
|
|
344
317
|
_dict['deltaTCompressorInSuperheat'] = None
|
|
345
318
|
|
|
346
|
-
# set to None if compressor_power_low_accuracy (nullable) is None
|
|
347
|
-
# and __fields_set__ contains the field
|
|
348
|
-
if self.compressor_power_low_accuracy is None and "compressor_power_low_accuracy" in self.__fields_set__:
|
|
349
|
-
_dict['compressorPowerLowAccuracy'] = None
|
|
350
|
-
|
|
351
319
|
# set to None if fan (nullable) is None
|
|
352
|
-
# and
|
|
353
|
-
if self.fan is None and "fan" in self.
|
|
320
|
+
# and model_fields_set contains the field
|
|
321
|
+
if self.fan is None and "fan" in self.model_fields_set:
|
|
354
322
|
_dict['fan'] = None
|
|
355
323
|
|
|
356
324
|
# set to None if fan_power (nullable) is None
|
|
357
|
-
# and
|
|
358
|
-
if self.fan_power is None and "fan_power" in self.
|
|
325
|
+
# and model_fields_set contains the field
|
|
326
|
+
if self.fan_power is None and "fan_power" in self.model_fields_set:
|
|
359
327
|
_dict['fanPower'] = None
|
|
360
328
|
|
|
329
|
+
# set to None if temperature_error_integral (nullable) is None
|
|
330
|
+
# and model_fields_set contains the field
|
|
331
|
+
if self.temperature_error_integral is None and "temperature_error_integral" in self.model_fields_set:
|
|
332
|
+
_dict['temperatureErrorIntegral'] = None
|
|
333
|
+
|
|
334
|
+
# set to None if thermostat_status (nullable) is None
|
|
335
|
+
# and model_fields_set contains the field
|
|
336
|
+
if self.thermostat_status is None and "thermostat_status" in self.model_fields_set:
|
|
337
|
+
_dict['thermostatStatus'] = None
|
|
338
|
+
|
|
339
|
+
# set to None if ot_boiler_status (nullable) is None
|
|
340
|
+
# and model_fields_set contains the field
|
|
341
|
+
if self.ot_boiler_status is None and "ot_boiler_status" in self.model_fields_set:
|
|
342
|
+
_dict['otBoilerStatus'] = None
|
|
343
|
+
|
|
344
|
+
# set to None if central_heating_pwm_requested_duty_cycle (nullable) is None
|
|
345
|
+
# and model_fields_set contains the field
|
|
346
|
+
if self.central_heating_pwm_requested_duty_cycle is None and "central_heating_pwm_requested_duty_cycle" in self.model_fields_set:
|
|
347
|
+
_dict['centralHeatingPwmRequestedDutyCycle'] = None
|
|
348
|
+
|
|
349
|
+
# set to None if dhw_pwm_requested_duty_cycle (nullable) is None
|
|
350
|
+
# and model_fields_set contains the field
|
|
351
|
+
if self.dhw_pwm_requested_duty_cycle is None and "dhw_pwm_requested_duty_cycle" in self.model_fields_set:
|
|
352
|
+
_dict['dhwPwmRequestedDutyCycle'] = None
|
|
353
|
+
|
|
354
|
+
# set to None if sinr (nullable) is None
|
|
355
|
+
# and model_fields_set contains the field
|
|
356
|
+
if self.sinr is None and "sinr" in self.model_fields_set:
|
|
357
|
+
_dict['sinr'] = None
|
|
358
|
+
|
|
359
|
+
# set to None if error (nullable) is None
|
|
360
|
+
# and model_fields_set contains the field
|
|
361
|
+
if self.error is None and "error" in self.model_fields_set:
|
|
362
|
+
_dict['error'] = None
|
|
363
|
+
|
|
364
|
+
# set to None if error_decoded_dtc_none (nullable) is None
|
|
365
|
+
# and model_fields_set contains the field
|
|
366
|
+
if self.error_decoded_dtc_none is None and "error_decoded_dtc_none" in self.model_fields_set:
|
|
367
|
+
_dict['errorDecodedDtcNone'] = None
|
|
368
|
+
|
|
369
|
+
# set to None if error_decoded_dtc_continue (nullable) is None
|
|
370
|
+
# and model_fields_set contains the field
|
|
371
|
+
if self.error_decoded_dtc_continue is None and "error_decoded_dtc_continue" in self.model_fields_set:
|
|
372
|
+
_dict['errorDecodedDtcContinue'] = None
|
|
373
|
+
|
|
374
|
+
# set to None if error_decoded_dtc_compressor_off (nullable) is None
|
|
375
|
+
# and model_fields_set contains the field
|
|
376
|
+
if self.error_decoded_dtc_compressor_off is None and "error_decoded_dtc_compressor_off" in self.model_fields_set:
|
|
377
|
+
_dict['errorDecodedDtcCompressorOff'] = None
|
|
378
|
+
|
|
379
|
+
# set to None if error_decoded_dtc_defrost_forbidden (nullable) is None
|
|
380
|
+
# and model_fields_set contains the field
|
|
381
|
+
if self.error_decoded_dtc_defrost_forbidden is None and "error_decoded_dtc_defrost_forbidden" in self.model_fields_set:
|
|
382
|
+
_dict['errorDecodedDtcDefrostForbidden'] = None
|
|
383
|
+
|
|
384
|
+
# set to None if error_decoded_dtc_request_service (nullable) is None
|
|
385
|
+
# and model_fields_set contains the field
|
|
386
|
+
if self.error_decoded_dtc_request_service is None and "error_decoded_dtc_request_service" in self.model_fields_set:
|
|
387
|
+
_dict['errorDecodedDtcRequestService'] = None
|
|
388
|
+
|
|
389
|
+
# set to None if error_decoded_dtc_use_heating_curve (nullable) is None
|
|
390
|
+
# and model_fields_set contains the field
|
|
391
|
+
if self.error_decoded_dtc_use_heating_curve is None and "error_decoded_dtc_use_heating_curve" in self.model_fields_set:
|
|
392
|
+
_dict['errorDecodedDtcUseHeatingCurve'] = None
|
|
393
|
+
|
|
394
|
+
# set to None if error_decoded_dtc_dhw_forbidden (nullable) is None
|
|
395
|
+
# and model_fields_set contains the field
|
|
396
|
+
if self.error_decoded_dtc_dhw_forbidden is None and "error_decoded_dtc_dhw_forbidden" in self.model_fields_set:
|
|
397
|
+
_dict['errorDecodedDtcDhwForbidden'] = None
|
|
398
|
+
|
|
399
|
+
# set to None if error_decoded_dtc_error (nullable) is None
|
|
400
|
+
# and model_fields_set contains the field
|
|
401
|
+
if self.error_decoded_dtc_error is None and "error_decoded_dtc_error" in self.model_fields_set:
|
|
402
|
+
_dict['errorDecodedDtcError'] = None
|
|
403
|
+
|
|
404
|
+
# set to None if error_decoded_dtc_inactive (nullable) is None
|
|
405
|
+
# and model_fields_set contains the field
|
|
406
|
+
if self.error_decoded_dtc_inactive is None and "error_decoded_dtc_inactive" in self.model_fields_set:
|
|
407
|
+
_dict['errorDecodedDtcInactive'] = None
|
|
408
|
+
|
|
409
|
+
# set to None if control_bridge_status_decoded_dhw_valve (nullable) is None
|
|
410
|
+
# and model_fields_set contains the field
|
|
411
|
+
if self.control_bridge_status_decoded_dhw_valve is None and "control_bridge_status_decoded_dhw_valve" in self.model_fields_set:
|
|
412
|
+
_dict['controlBridgeStatusDecodedDhwValve'] = None
|
|
413
|
+
|
|
414
|
+
# set to None if t_board (nullable) is None
|
|
415
|
+
# and model_fields_set contains the field
|
|
416
|
+
if self.t_board is None and "t_board" in self.model_fields_set:
|
|
417
|
+
_dict['tBoard'] = None
|
|
418
|
+
|
|
419
|
+
# set to None if t_inverter (nullable) is None
|
|
420
|
+
# and model_fields_set contains the field
|
|
421
|
+
if self.t_inverter is None and "t_inverter" in self.model_fields_set:
|
|
422
|
+
_dict['tInverter'] = None
|
|
423
|
+
|
|
424
|
+
# set to None if compressor_power_low_accuracy (nullable) is None
|
|
425
|
+
# and model_fields_set contains the field
|
|
426
|
+
if self.compressor_power_low_accuracy is None and "compressor_power_low_accuracy" in self.model_fields_set:
|
|
427
|
+
_dict['compressorPowerLowAccuracy'] = None
|
|
428
|
+
|
|
361
429
|
# set to None if valve (nullable) is None
|
|
362
|
-
# and
|
|
363
|
-
if self.valve is None and "valve" in self.
|
|
430
|
+
# and model_fields_set contains the field
|
|
431
|
+
if self.valve is None and "valve" in self.model_fields_set:
|
|
364
432
|
_dict['valve'] = None
|
|
365
433
|
|
|
366
|
-
# set to None if
|
|
367
|
-
# and
|
|
368
|
-
if self.
|
|
369
|
-
_dict['
|
|
434
|
+
# set to None if inverter_input_voltage (nullable) is None
|
|
435
|
+
# and model_fields_set contains the field
|
|
436
|
+
if self.inverter_input_voltage is None and "inverter_input_voltage" in self.model_fields_set:
|
|
437
|
+
_dict['inverterInputVoltage'] = None
|
|
438
|
+
|
|
439
|
+
# set to None if indoor_unit_heater_temperature (nullable) is None
|
|
440
|
+
# and model_fields_set contains the field
|
|
441
|
+
if self.indoor_unit_heater_temperature is None and "indoor_unit_heater_temperature" in self.model_fields_set:
|
|
442
|
+
_dict['indoorUnitHeaterTemperature'] = None
|
|
370
443
|
|
|
371
|
-
# set to None if
|
|
372
|
-
# and
|
|
373
|
-
if self.
|
|
374
|
-
_dict['
|
|
444
|
+
# set to None if indoor_unit_input_current (nullable) is None
|
|
445
|
+
# and model_fields_set contains the field
|
|
446
|
+
if self.indoor_unit_input_current is None and "indoor_unit_input_current" in self.model_fields_set:
|
|
447
|
+
_dict['indoorUnitInputCurrent'] = None
|
|
448
|
+
|
|
449
|
+
# set to None if cooling_status (nullable) is None
|
|
450
|
+
# and model_fields_set contains the field
|
|
451
|
+
if self.cooling_status is None and "cooling_status" in self.model_fields_set:
|
|
452
|
+
_dict['coolingStatus'] = None
|
|
375
453
|
|
|
376
454
|
# set to None if cm_mass_power_in (nullable) is None
|
|
377
|
-
# and
|
|
378
|
-
if self.cm_mass_power_in is None and "cm_mass_power_in" in self.
|
|
455
|
+
# and model_fields_set contains the field
|
|
456
|
+
if self.cm_mass_power_in is None and "cm_mass_power_in" in self.model_fields_set:
|
|
379
457
|
_dict['cmMassPowerIn'] = None
|
|
380
458
|
|
|
381
459
|
# set to None if cm_mass_power_out (nullable) is None
|
|
382
|
-
# and
|
|
383
|
-
if self.cm_mass_power_out is None and "cm_mass_power_out" in self.
|
|
460
|
+
# and model_fields_set contains the field
|
|
461
|
+
if self.cm_mass_power_out is None and "cm_mass_power_out" in self.model_fields_set:
|
|
384
462
|
_dict['cmMassPowerOut'] = None
|
|
385
463
|
|
|
386
|
-
# set to None if
|
|
387
|
-
# and
|
|
388
|
-
if self.
|
|
389
|
-
_dict['
|
|
390
|
-
|
|
391
|
-
# set to None if power_error_integral (nullable) is None
|
|
392
|
-
# and __fields_set__ contains the field
|
|
393
|
-
if self.power_error_integral is None and "power_error_integral" in self.__fields_set__:
|
|
394
|
-
_dict['powerErrorIntegral'] = None
|
|
395
|
-
|
|
396
|
-
# set to None if thermostat_status (nullable) is None
|
|
397
|
-
# and __fields_set__ contains the field
|
|
398
|
-
if self.thermostat_status is None and "thermostat_status" in self.__fields_set__:
|
|
399
|
-
_dict['thermostatStatus'] = None
|
|
464
|
+
# set to None if debug_variable1 (nullable) is None
|
|
465
|
+
# and model_fields_set contains the field
|
|
466
|
+
if self.debug_variable1 is None and "debug_variable1" in self.model_fields_set:
|
|
467
|
+
_dict['debugVariable1'] = None
|
|
400
468
|
|
|
401
|
-
# set to None if
|
|
402
|
-
# and
|
|
403
|
-
if self.
|
|
404
|
-
_dict['
|
|
405
|
-
|
|
406
|
-
# set to None if t_room_target (nullable) is None
|
|
407
|
-
# and __fields_set__ contains the field
|
|
408
|
-
if self.t_room_target is None and "t_room_target" in self.__fields_set__:
|
|
409
|
-
_dict['tRoomTarget'] = None
|
|
469
|
+
# set to None if debug_variable2 (nullable) is None
|
|
470
|
+
# and model_fields_set contains the field
|
|
471
|
+
if self.debug_variable2 is None and "debug_variable2" in self.model_fields_set:
|
|
472
|
+
_dict['debugVariable2'] = None
|
|
410
473
|
|
|
411
|
-
# set to None if
|
|
412
|
-
# and
|
|
413
|
-
if self.
|
|
414
|
-
_dict['
|
|
474
|
+
# set to None if debug_variable3 (nullable) is None
|
|
475
|
+
# and model_fields_set contains the field
|
|
476
|
+
if self.debug_variable3 is None and "debug_variable3" in self.model_fields_set:
|
|
477
|
+
_dict['debugVariable3'] = None
|
|
415
478
|
|
|
416
|
-
# set to None if
|
|
417
|
-
# and
|
|
418
|
-
if self.
|
|
419
|
-
_dict['
|
|
479
|
+
# set to None if debug_variable4 (nullable) is None
|
|
480
|
+
# and model_fields_set contains the field
|
|
481
|
+
if self.debug_variable4 is None and "debug_variable4" in self.model_fields_set:
|
|
482
|
+
_dict['debugVariable4'] = None
|
|
420
483
|
|
|
421
|
-
# set to None if
|
|
422
|
-
# and
|
|
423
|
-
if self.
|
|
424
|
-
_dict['
|
|
484
|
+
# set to None if debug_variable5 (nullable) is None
|
|
485
|
+
# and model_fields_set contains the field
|
|
486
|
+
if self.debug_variable5 is None and "debug_variable5" in self.model_fields_set:
|
|
487
|
+
_dict['debugVariable5'] = None
|
|
425
488
|
|
|
426
489
|
return _dict
|
|
427
490
|
|
|
428
491
|
@classmethod
|
|
429
|
-
def from_dict(cls, obj:
|
|
492
|
+
def from_dict(cls, obj: Dict) -> Self:
|
|
430
493
|
"""Create an instance of RawHeatPumpLogDto from a dict"""
|
|
431
494
|
if obj is None:
|
|
432
495
|
return None
|
|
433
496
|
|
|
434
497
|
if not isinstance(obj, dict):
|
|
435
|
-
return
|
|
498
|
+
return cls.model_validate(obj)
|
|
436
499
|
|
|
437
|
-
_obj =
|
|
438
|
-
"
|
|
500
|
+
_obj = cls.model_validate({
|
|
501
|
+
"heatPumpId": obj.get("heatPumpId"),
|
|
439
502
|
"timestamp": obj.get("timestamp"),
|
|
440
|
-
"firmware_revision": obj.get("firmwareRevision"),
|
|
441
|
-
"packet_counter": obj.get("packetCounter"),
|
|
442
|
-
"unix_time_mcu": obj.get("unixTimeMcu"),
|
|
443
503
|
"state": obj.get("state"),
|
|
444
|
-
"
|
|
445
|
-
"
|
|
446
|
-
"
|
|
447
|
-
"
|
|
448
|
-
"
|
|
449
|
-
"error_decoded_dtc_defrost_forbidden": obj.get("errorDecodedDtcDefrostForbidden"),
|
|
450
|
-
"error_decoded_dtc_request_service": obj.get("errorDecodedDtcRequestService"),
|
|
451
|
-
"error_decoded_dtc_use_heating_curve": obj.get("errorDecodedDtcUseHeatingCurve"),
|
|
452
|
-
"error_decoded_dtc_dhw_forbidden": obj.get("errorDecodedDtcDhwForbidden"),
|
|
453
|
-
"error_decoded_dtc_error": obj.get("errorDecodedDtcError"),
|
|
454
|
-
"error_decoded_dtc_inactive": obj.get("errorDecodedDtcInactive"),
|
|
455
|
-
"heatsink": obj.get("heatsink"),
|
|
456
|
-
"si5": obj.get("si5"),
|
|
457
|
-
"e80": obj.get("e80"),
|
|
458
|
-
"e81": obj.get("e81"),
|
|
459
|
-
"e84": obj.get("e84"),
|
|
460
|
-
"e85": obj.get("e85"),
|
|
461
|
-
"control_bridge_status": obj.get("controlBridgeStatus"),
|
|
462
|
-
"control_bridge_status_decoded_water_pump": obj.get("controlBridgeStatusDecodedWaterPump"),
|
|
463
|
-
"control_bridge_status_decoded_dhw_valve": obj.get("controlBridgeStatusDecodedDhwValve"),
|
|
464
|
-
"control_bridge_status_decoded_gas_boiler": obj.get("controlBridgeStatusDecodedGasBoiler"),
|
|
465
|
-
"control_bridge_status_decoded_electric_heater": obj.get("controlBridgeStatusDecodedElectricHeater"),
|
|
466
|
-
"control_bridge_status_decoded_water_pump2": obj.get("controlBridgeStatusDecodedWaterPump2"),
|
|
467
|
-
"input_status": obj.get("inputStatus"),
|
|
468
|
-
"current_control_method": obj.get("currentControlMethod"),
|
|
469
|
-
"signal_strength": obj.get("signalStrength"),
|
|
504
|
+
"controlBridgeStatus": obj.get("controlBridgeStatus"),
|
|
505
|
+
"controlBridgeStatusDecodedWaterPump": obj.get("controlBridgeStatusDecodedWaterPump"),
|
|
506
|
+
"controlBridgeStatusDecodedGasBoiler": obj.get("controlBridgeStatusDecodedGasBoiler"),
|
|
507
|
+
"controlBridgeStatusDecodedElectricHeater": obj.get("controlBridgeStatusDecodedElectricHeater"),
|
|
508
|
+
"controlBridgeStatusDecodedWaterPump2": obj.get("controlBridgeStatusDecodedWaterPump2"),
|
|
470
509
|
"t1": obj.get("t1"),
|
|
471
510
|
"t2": obj.get("t2"),
|
|
472
|
-
"
|
|
473
|
-
"
|
|
474
|
-
"
|
|
475
|
-
"
|
|
476
|
-
"
|
|
477
|
-
"t_water_out": obj.get("tWaterOut"),
|
|
478
|
-
"t_water_house_in": obj.get("tWaterHouseIn"),
|
|
511
|
+
"tAirIn": obj.get("tAirIn"),
|
|
512
|
+
"tAirOut": obj.get("tAirOut"),
|
|
513
|
+
"tWaterIn": obj.get("tWaterIn"),
|
|
514
|
+
"tWaterOut": obj.get("tWaterOut"),
|
|
515
|
+
"tWaterHouseIn": obj.get("tWaterHouseIn"),
|
|
479
516
|
"rpm": obj.get("rpm"),
|
|
480
|
-
"
|
|
481
|
-
"
|
|
482
|
-
"
|
|
483
|
-
"
|
|
484
|
-
"
|
|
485
|
-
"
|
|
486
|
-
"
|
|
487
|
-
"
|
|
488
|
-
"
|
|
489
|
-
"
|
|
490
|
-
"
|
|
491
|
-
"
|
|
517
|
+
"onOffThermostatState": obj.get("onOffThermostatState"),
|
|
518
|
+
"tRoom": obj.get("tRoom"),
|
|
519
|
+
"tRoomTarget": obj.get("tRoomTarget"),
|
|
520
|
+
"tThermostatSetpoint": obj.get("tThermostatSetpoint"),
|
|
521
|
+
"otBoilerFeedTemperature": obj.get("otBoilerFeedTemperature"),
|
|
522
|
+
"otBoilerReturnTemperature": obj.get("otBoilerReturnTemperature"),
|
|
523
|
+
"centralHeatingFlow": obj.get("centralHeatingFlow"),
|
|
524
|
+
"dhwFlow": obj.get("dhwFlow"),
|
|
525
|
+
"interval": obj.get("interval"),
|
|
526
|
+
"inputStatus": obj.get("inputStatus"),
|
|
527
|
+
"currentControlMethod": obj.get("currentControlMethod"),
|
|
528
|
+
"signalStrength": obj.get("signalStrength"),
|
|
529
|
+
"rpmLimiter": obj.get("rpmLimiter"),
|
|
530
|
+
"rpmLimiterType": obj.get("rpmLimiterType"),
|
|
531
|
+
"pCompressorIn": obj.get("pCompressorIn"),
|
|
532
|
+
"pCompressorOut": obj.get("pCompressorOut"),
|
|
533
|
+
"pCompressorInTarget": obj.get("pCompressorInTarget"),
|
|
534
|
+
"tCompressorIn": obj.get("tCompressorIn"),
|
|
535
|
+
"tCompressorOut": obj.get("tCompressorOut"),
|
|
536
|
+
"tCompressorInTransient": obj.get("tCompressorInTransient"),
|
|
537
|
+
"tCompressorOutTransient": obj.get("tCompressorOutTransient"),
|
|
538
|
+
"deltaTCompressorInSuperheat": obj.get("deltaTCompressorInSuperheat"),
|
|
492
539
|
"fan": obj.get("fan"),
|
|
493
|
-
"
|
|
540
|
+
"fanPower": obj.get("fanPower"),
|
|
541
|
+
"temperatureErrorIntegral": obj.get("temperatureErrorIntegral"),
|
|
542
|
+
"thermostatStatus": obj.get("thermostatStatus"),
|
|
543
|
+
"otBoilerStatus": obj.get("otBoilerStatus"),
|
|
544
|
+
"centralHeatingPwmRequestedDutyCycle": obj.get("centralHeatingPwmRequestedDutyCycle"),
|
|
545
|
+
"dhwPwmRequestedDutyCycle": obj.get("dhwPwmRequestedDutyCycle"),
|
|
546
|
+
"sinr": obj.get("sinr"),
|
|
547
|
+
"error": obj.get("error"),
|
|
548
|
+
"errorDecodedDtcNone": obj.get("errorDecodedDtcNone"),
|
|
549
|
+
"errorDecodedDtcContinue": obj.get("errorDecodedDtcContinue"),
|
|
550
|
+
"errorDecodedDtcCompressorOff": obj.get("errorDecodedDtcCompressorOff"),
|
|
551
|
+
"errorDecodedDtcDefrostForbidden": obj.get("errorDecodedDtcDefrostForbidden"),
|
|
552
|
+
"errorDecodedDtcRequestService": obj.get("errorDecodedDtcRequestService"),
|
|
553
|
+
"errorDecodedDtcUseHeatingCurve": obj.get("errorDecodedDtcUseHeatingCurve"),
|
|
554
|
+
"errorDecodedDtcDhwForbidden": obj.get("errorDecodedDtcDhwForbidden"),
|
|
555
|
+
"errorDecodedDtcError": obj.get("errorDecodedDtcError"),
|
|
556
|
+
"errorDecodedDtcInactive": obj.get("errorDecodedDtcInactive"),
|
|
557
|
+
"controlBridgeStatusDecodedDhwValve": obj.get("controlBridgeStatusDecodedDhwValve"),
|
|
558
|
+
"tBoard": obj.get("tBoard"),
|
|
559
|
+
"tInverter": obj.get("tInverter"),
|
|
560
|
+
"compressorPowerLowAccuracy": obj.get("compressorPowerLowAccuracy"),
|
|
494
561
|
"valve": obj.get("valve"),
|
|
495
|
-
"
|
|
496
|
-
"
|
|
497
|
-
"
|
|
498
|
-
"
|
|
499
|
-
"
|
|
500
|
-
"
|
|
501
|
-
"
|
|
502
|
-
"
|
|
503
|
-
"
|
|
504
|
-
"
|
|
505
|
-
"
|
|
506
|
-
"ot_boiler_status": obj.get("otBoilerStatus"),
|
|
507
|
-
"ot_boiler_feed_temperature": obj.get("otBoilerFeedTemperature"),
|
|
508
|
-
"ot_boiler_return_temperature": obj.get("otBoilerReturnTemperature"),
|
|
509
|
-
"interval": obj.get("interval")
|
|
562
|
+
"inverterInputVoltage": obj.get("inverterInputVoltage"),
|
|
563
|
+
"indoorUnitHeaterTemperature": obj.get("indoorUnitHeaterTemperature"),
|
|
564
|
+
"indoorUnitInputCurrent": obj.get("indoorUnitInputCurrent"),
|
|
565
|
+
"coolingStatus": obj.get("coolingStatus"),
|
|
566
|
+
"cmMassPowerIn": obj.get("cmMassPowerIn"),
|
|
567
|
+
"cmMassPowerOut": obj.get("cmMassPowerOut"),
|
|
568
|
+
"debugVariable1": obj.get("debugVariable1"),
|
|
569
|
+
"debugVariable2": obj.get("debugVariable2"),
|
|
570
|
+
"debugVariable3": obj.get("debugVariable3"),
|
|
571
|
+
"debugVariable4": obj.get("debugVariable4"),
|
|
572
|
+
"debugVariable5": obj.get("debugVariable5")
|
|
510
573
|
})
|
|
511
574
|
return _obj
|
|
512
575
|
|