weheat 2025.1.14rc1__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.

Potentially problematic release.


This version of weheat might be problematic. Click here for more details.

@@ -0,0 +1,44 @@
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
+ import json
16
+ import pprint
17
+ import re # noqa: F401
18
+ from aenum import Enum, no_arg
19
+
20
+
21
+
22
+
23
+
24
+ class HeatPumpModel(int, Enum):
25
+ """
26
+ Model of the heat pump - BlackBirdP80: BlackBird P80 heat pump (0) - BlackBirdP60: BlackBird P60 heat pump (1) - SparrowP60Brown: Sparrow P60 heat pump, colour brown (default) (2) - SparrowP60Green: Sparrow P60 heat pump, colour green (3) - SparrowP60Grey: Sparrow P60 heat pump, colour grey (4) - FlintP40: Flint P40 heat pump (5)
27
+ """
28
+
29
+ """
30
+ allowed enum values
31
+ """
32
+ NUMBER_0 = 0
33
+ NUMBER_1 = 1
34
+ NUMBER_2 = 2
35
+ NUMBER_3 = 3
36
+ NUMBER_4 = 4
37
+ NUMBER_5 = 5
38
+
39
+ @classmethod
40
+ def from_json(cls, json_str: str) -> HeatPumpModel:
41
+ """Create an instance of HeatPumpModel from a JSON string"""
42
+ return HeatPumpModel(json.loads(json_str))
43
+
44
+
@@ -0,0 +1,46 @@
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
+ import json
16
+ import pprint
17
+ import re # noqa: F401
18
+ from aenum import Enum, no_arg
19
+
20
+
21
+
22
+
23
+
24
+ class HeatPumpStatusEnum(int, Enum):
25
+ """
26
+ Last status of the heat pump from the last heat pump log - Standby (40) - Heating (70) - Defrost (90) - Cooling (130) - DHW (150) - Lionelle (160) - SelfTest (170) - ManualControl (180)
27
+ """
28
+
29
+ """
30
+ allowed enum values
31
+ """
32
+ NUMBER_40 = 40
33
+ NUMBER_70 = 70
34
+ NUMBER_90 = 90
35
+ NUMBER_130 = 130
36
+ NUMBER_150 = 150
37
+ NUMBER_160 = 160
38
+ NUMBER_170 = 170
39
+ NUMBER_180 = 180
40
+
41
+ @classmethod
42
+ def from_json(cls, json_str: str) -> HeatPumpStatusEnum:
43
+ """Create an instance of HeatPumpStatusEnum from a JSON string"""
44
+ return HeatPumpStatusEnum(json.loads(json_str))
45
+
46
+
@@ -0,0 +1,42 @@
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
+ import json
16
+ import pprint
17
+ import re # noqa: F401
18
+ from aenum import Enum, no_arg
19
+
20
+
21
+
22
+
23
+
24
+ class HeatPumpType(int, Enum):
25
+ """
26
+ LEGACY TYPE, Obsolete please do not use HeatPumpType, new properties split up into HeatPumpModel, DhwType and BoilerType
27
+ """
28
+
29
+ """
30
+ allowed enum values
31
+ """
32
+ NUMBER_0 = 0
33
+ NUMBER_1 = 1
34
+ NUMBER_2 = 2
35
+ NUMBER_3 = 3
36
+
37
+ @classmethod
38
+ def from_json(cls, json_str: str) -> HeatPumpType:
39
+ """Create an instance of HeatPumpType from a JSON string"""
40
+ return HeatPumpType(json.loads(json_str))
41
+
42
+
@@ -0,0 +1,517 @@
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 Optional, Union
22
+ try:
23
+ from pydantic.v1 import BaseModel, Field, StrictBool, StrictFloat, StrictInt, StrictStr
24
+ except ImportError:
25
+ from pydantic import BaseModel, Field, StrictBool, StrictFloat, StrictInt, StrictStr
26
+
27
+
28
+ class RawHeatPumpLogDto(BaseModel):
29
+ """
30
+ Raw heat pump log as given by a heat pump (Required star states that it will always be there for any roll, otherwise it is filtered for customers) # noqa: E501
31
+ """
32
+ heat_pump_id: StrictStr = Field(..., alias="heatPumpId", description="Identifier of the Heat Pump")
33
+ timestamp: datetime = Field(..., description="Timestamp of when this was logged to the server")
34
+ firmware_revision: Optional[StrictInt] = Field(None, alias="firmwareRevision", description="Version of heat pump logs (should be 1026)")
35
+ packet_counter: Optional[StrictInt] = Field(None, alias="packetCounter", description="Packet counter of inside the control board")
36
+ unix_time_mcu: Optional[StrictInt] = Field(None, alias="unixTimeMcu", description="Unix time inside the control board at the time it send this log")
37
+ state: Optional[StrictInt] = Field(None, description="Current heat pump state (which is decoded in the view)")
38
+ rpm_ctrl: Optional[StrictInt] = Field(None, alias="rpmCtrl", description="Current mode of RPM control (which is decoded in the view)")
39
+ error: Optional[StrictInt] = Field(None, description="Current state of error in the heat pump (which is decoded in the view)")
40
+ error_decoded_dtc_none: Optional[StrictBool] = Field(None, alias="errorDecodedDtcNone", description="None state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
41
+ error_decoded_dtc_continue: Optional[StrictBool] = Field(None, alias="errorDecodedDtcContinue", description="DTC continue state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
42
+ error_decoded_dtc_compressor_off: Optional[StrictBool] = Field(None, alias="errorDecodedDtcCompressorOff", description="DTC off state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
43
+ error_decoded_dtc_defrost_forbidden: Optional[StrictBool] = Field(None, alias="errorDecodedDtcDefrostForbidden", description="DTC defrost forbidden state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
44
+ error_decoded_dtc_request_service: Optional[StrictBool] = Field(None, alias="errorDecodedDtcRequestService", description="DTC request service state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
45
+ error_decoded_dtc_use_heating_curve: Optional[StrictBool] = Field(None, alias="errorDecodedDtcUseHeatingCurve", description="DTC use heating curve state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
46
+ error_decoded_dtc_dhw_forbidden: Optional[StrictBool] = Field(None, alias="errorDecodedDtcDhwForbidden", description="DTC use heating curve state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
47
+ error_decoded_dtc_error: Optional[StrictBool] = Field(None, alias="errorDecodedDtcError", description="DTC use heating curve state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
48
+ error_decoded_dtc_inactive: Optional[StrictBool] = Field(None, alias="errorDecodedDtcInactive", description="DTC Inactive state of the error flag which isn't raw for practical timescale purposes (it was bitwise encoded)")
49
+ heatsink: Optional[StrictInt] = Field(None, description="Raw state of the where the heat pump is dumping it's heat")
50
+ si5: Optional[StrictInt] = Field(None, description="Raw state of the heat pump")
51
+ e80: Optional[StrictInt] = Field(None, description="Raw error code state 80 of the heat pump")
52
+ e81: Optional[StrictInt] = Field(None, description="Raw error code state 81 of the heat pump")
53
+ e84: Optional[StrictInt] = Field(None, description="Raw error code state 84 of the heat pump")
54
+ e85: Optional[StrictInt] = Field(None, description="Raw error code state 85 of the heat pump")
55
+ control_bridge_status: Optional[StrictInt] = Field(None, alias="controlBridgeStatus", description="Raw control bridge status of the heat pump (bitwise encoded)")
56
+ control_bridge_status_decoded_water_pump: Optional[StrictBool] = Field(None, alias="controlBridgeStatusDecodedWaterPump", description="Water pump (requested) on/off flag of the control bridge status (0x01)")
57
+ control_bridge_status_decoded_dhw_valve: Optional[StrictBool] = Field(None, alias="controlBridgeStatusDecodedDhwValve", description="DhwValve (requested) open/closed flag of the control bridge status (0x02) (DHW Only)")
58
+ control_bridge_status_decoded_gas_boiler: Optional[StrictBool] = Field(None, alias="controlBridgeStatusDecodedGasBoiler", description="Gas boiler assistance (requested) on/off flag of the control bridge status (0x04) (Hybrid Only)")
59
+ control_bridge_status_decoded_electric_heater: Optional[StrictBool] = Field(None, alias="controlBridgeStatusDecodedElectricHeater", description="Electric heater assistance (requested) on/off flag of the control bridge status (0x08) (DHW Only)")
60
+ control_bridge_status_decoded_water_pump2: Optional[StrictBool] = Field(None, alias="controlBridgeStatusDecodedWaterPump2", description="Second water pump (requested) on/off flag of the control bridge status (0x010) (DHW Only)")
61
+ input_status: Optional[StrictInt] = Field(None, alias="inputStatus", description="Raw input status of the heat pump")
62
+ current_control_method: Optional[StrictInt] = Field(None, alias="currentControlMethod", description="Raw current control method state of the heat pump")
63
+ signal_strength: Optional[StrictInt] = Field(None, alias="signalStrength", description="Signal strength (rssi) reported by the modem of the control board")
64
+ t1: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Temperature T1 (TOP) of the DHW sensors")
65
+ t2: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Temperature T2 (BOTTOM) of the DHW sensors")
66
+ t_spare_ntc: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tSpareNtc", description="Spare temperature sensor (for DHW)")
67
+ t_board: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tBoard", description="Temperature of the control board")
68
+ t_air_in: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tAirIn", description="Temperature of the air going into the heat pump")
69
+ t_air_out: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tAirOut", description="Temperature of the air going out of the heat pump")
70
+ t_water_in: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tWaterIn", description="Temperature of the water going into the heat pump")
71
+ t_water_out: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tWaterOut", description="Temperature of the water going out of the heat pump")
72
+ t_water_house_in: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tWaterHouseIn", description="Temperature of the water going into the building")
73
+ rpm: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Rpm of the compressor")
74
+ rpm_limiter: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="rpmLimiter", description="Rpm limit of the compressor")
75
+ rpm_limiter_type: Optional[StrictInt] = Field(None, alias="rpmLimiterType", description="Type of why the rpm is limited")
76
+ p_compressor_in: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="pCompressorIn", description="Pressure of the compressor of the side where air goes into the compressor")
77
+ p_compressor_out: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="pCompressorOut", description="Pressure of the compressor of the side where air goes out of the compressor")
78
+ p_compressor_in_target: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="pCompressorInTarget", description="Target pressure of the compressor of the side where air goes into the compressor")
79
+ t_inverter: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tInverter", description="Temperature of the inverter")
80
+ t_compressor_in: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tCompressorIn", description="Temperature of the compressor of the side where air goes into the compressor")
81
+ t_compressor_out: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tCompressorOut", description="Temperature of the compressor of the side where air goes out of the compressor")
82
+ t_compressor_in_transient: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tCompressorInTransient", description="Temperature transient of the compressor of the side where air goes into the compressor")
83
+ t_compressor_out_transient: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tCompressorOutTransient", description="Temperature transient of the compressor of the side where air goes out of the compressor")
84
+ delta_t_compressor_in_superheat: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="deltaTCompressorInSuperheat", description="Difference in temperature for superheat based on the compressor temperatures")
85
+ compressor_power_low_accuracy: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="compressorPowerLowAccuracy", description="Power used by the compressor (low accuracy)")
86
+ fan: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="State of the fan")
87
+ fan_power: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="fanPower", description="Power used by the fan")
88
+ valve: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="Position value of the valve")
89
+ exv_flow_step_gain: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="exvFlowStepGain")
90
+ cm_mass_flow: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="cmMassFlow", description="Flow of the water going through the heat pump")
91
+ cm_mass_power_in: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="cmMassPowerIn", description="Power going into the heat pump")
92
+ cm_mass_power_out: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="cmMassPowerOut", description="Power going out of the heat pump (in the form of usable heat)")
93
+ p_requested: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="pRequested", description="Power requested by the heat pump")
94
+ power_error_integral: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="powerErrorIntegral", description="Current value of the power error integral")
95
+ on_off_thermostat_state: Optional[StrictInt] = Field(None, alias="onOffThermostatState", description="State of the on/off thermostat")
96
+ thermostat_status: Optional[StrictInt] = Field(None, alias="thermostatStatus", description="Status of the OpenTherm thermostat")
97
+ t_room: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tRoom", description="Temperature of the room given by the OpenTherm thermostat")
98
+ t_room_target: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tRoomTarget", description="Target temperature of the room given by the OpenTherm thermostat")
99
+ t_thermostat_setpoint: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="tThermostatSetpoint", description="Setpoint temperature of the OpenTherm thermostat OR the water setpoint of the heat pump")
100
+ ot_boiler_status: Optional[StrictInt] = Field(None, alias="otBoilerStatus", description="Status of the OpenTherm boiler")
101
+ ot_boiler_feed_temperature: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="otBoilerFeedTemperature", description="Feed temperature of the OpenTherm boiler")
102
+ ot_boiler_return_temperature: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="otBoilerReturnTemperature", description="Return temperature of the OpenTherm boiler")
103
+ interval: StrictInt = Field(..., description="Interval for this log in seconds")
104
+ __properties = ["heatPumpId", "timestamp", "firmwareRevision", "packetCounter", "unixTimeMcu", "state", "rpmCtrl", "error", "errorDecodedDtcNone", "errorDecodedDtcContinue", "errorDecodedDtcCompressorOff", "errorDecodedDtcDefrostForbidden", "errorDecodedDtcRequestService", "errorDecodedDtcUseHeatingCurve", "errorDecodedDtcDhwForbidden", "errorDecodedDtcError", "errorDecodedDtcInactive", "heatsink", "si5", "e80", "e81", "e84", "e85", "controlBridgeStatus", "controlBridgeStatusDecodedWaterPump", "controlBridgeStatusDecodedDhwValve", "controlBridgeStatusDecodedGasBoiler", "controlBridgeStatusDecodedElectricHeater", "controlBridgeStatusDecodedWaterPump2", "inputStatus", "currentControlMethod", "signalStrength", "t1", "t2", "tSpareNtc", "tBoard", "tAirIn", "tAirOut", "tWaterIn", "tWaterOut", "tWaterHouseIn", "rpm", "rpmLimiter", "rpmLimiterType", "pCompressorIn", "pCompressorOut", "pCompressorInTarget", "tInverter", "tCompressorIn", "tCompressorOut", "tCompressorInTransient", "tCompressorOutTransient", "deltaTCompressorInSuperheat", "compressorPowerLowAccuracy", "fan", "fanPower", "valve", "exvFlowStepGain", "cmMassFlow", "cmMassPowerIn", "cmMassPowerOut", "pRequested", "powerErrorIntegral", "onOffThermostatState", "thermostatStatus", "tRoom", "tRoomTarget", "tThermostatSetpoint", "otBoilerStatus", "otBoilerFeedTemperature", "otBoilerReturnTemperature", "interval"]
105
+
106
+ class Config:
107
+ """Pydantic configuration"""
108
+ allow_population_by_field_name = True
109
+ validate_assignment = True
110
+
111
+ def to_str(self) -> str:
112
+ """Returns the string representation of the model using alias"""
113
+ return pprint.pformat(self.dict(by_alias=True))
114
+
115
+ def to_json(self) -> str:
116
+ """Returns the JSON representation of the model using alias"""
117
+ return json.dumps(self.to_dict())
118
+
119
+ @classmethod
120
+ def from_json(cls, json_str: str) -> RawHeatPumpLogDto:
121
+ """Create an instance of RawHeatPumpLogDto from a JSON string"""
122
+ return cls.from_dict(json.loads(json_str))
123
+
124
+ def to_dict(self):
125
+ """Returns the dictionary representation of the model using alias"""
126
+ _dict = self.dict(by_alias=True,
127
+ exclude={
128
+ },
129
+ exclude_none=True)
130
+ # set to None if firmware_revision (nullable) is None
131
+ # and __fields_set__ contains the field
132
+ if self.firmware_revision is None and "firmware_revision" in self.__fields_set__:
133
+ _dict['firmwareRevision'] = None
134
+
135
+ # set to None if packet_counter (nullable) is None
136
+ # and __fields_set__ contains the field
137
+ if self.packet_counter is None and "packet_counter" in self.__fields_set__:
138
+ _dict['packetCounter'] = None
139
+
140
+ # set to None if unix_time_mcu (nullable) is None
141
+ # and __fields_set__ contains the field
142
+ if self.unix_time_mcu is None and "unix_time_mcu" in self.__fields_set__:
143
+ _dict['unixTimeMcu'] = None
144
+
145
+ # set to None if error (nullable) is None
146
+ # and __fields_set__ contains the field
147
+ if self.error is None and "error" in self.__fields_set__:
148
+ _dict['error'] = None
149
+
150
+ # set to None if error_decoded_dtc_none (nullable) is None
151
+ # and __fields_set__ contains the field
152
+ if self.error_decoded_dtc_none is None and "error_decoded_dtc_none" in self.__fields_set__:
153
+ _dict['errorDecodedDtcNone'] = None
154
+
155
+ # set to None if error_decoded_dtc_continue (nullable) is None
156
+ # and __fields_set__ contains the field
157
+ if self.error_decoded_dtc_continue is None and "error_decoded_dtc_continue" in self.__fields_set__:
158
+ _dict['errorDecodedDtcContinue'] = None
159
+
160
+ # set to None if error_decoded_dtc_compressor_off (nullable) is None
161
+ # and __fields_set__ contains the field
162
+ if self.error_decoded_dtc_compressor_off is None and "error_decoded_dtc_compressor_off" in self.__fields_set__:
163
+ _dict['errorDecodedDtcCompressorOff'] = None
164
+
165
+ # set to None if error_decoded_dtc_defrost_forbidden (nullable) is None
166
+ # and __fields_set__ contains the field
167
+ if self.error_decoded_dtc_defrost_forbidden is None and "error_decoded_dtc_defrost_forbidden" in self.__fields_set__:
168
+ _dict['errorDecodedDtcDefrostForbidden'] = None
169
+
170
+ # set to None if error_decoded_dtc_request_service (nullable) is None
171
+ # and __fields_set__ contains the field
172
+ if self.error_decoded_dtc_request_service is None and "error_decoded_dtc_request_service" in self.__fields_set__:
173
+ _dict['errorDecodedDtcRequestService'] = None
174
+
175
+ # set to None if error_decoded_dtc_use_heating_curve (nullable) is None
176
+ # and __fields_set__ contains the field
177
+ if self.error_decoded_dtc_use_heating_curve is None and "error_decoded_dtc_use_heating_curve" in self.__fields_set__:
178
+ _dict['errorDecodedDtcUseHeatingCurve'] = None
179
+
180
+ # set to None if error_decoded_dtc_dhw_forbidden (nullable) is None
181
+ # and __fields_set__ contains the field
182
+ if self.error_decoded_dtc_dhw_forbidden is None and "error_decoded_dtc_dhw_forbidden" in self.__fields_set__:
183
+ _dict['errorDecodedDtcDhwForbidden'] = None
184
+
185
+ # set to None if error_decoded_dtc_error (nullable) is None
186
+ # and __fields_set__ contains the field
187
+ if self.error_decoded_dtc_error is None and "error_decoded_dtc_error" in self.__fields_set__:
188
+ _dict['errorDecodedDtcError'] = None
189
+
190
+ # set to None if error_decoded_dtc_inactive (nullable) is None
191
+ # and __fields_set__ contains the field
192
+ if self.error_decoded_dtc_inactive is None and "error_decoded_dtc_inactive" in self.__fields_set__:
193
+ _dict['errorDecodedDtcInactive'] = None
194
+
195
+ # set to None if heatsink (nullable) is None
196
+ # and __fields_set__ contains the field
197
+ if self.heatsink is None and "heatsink" in self.__fields_set__:
198
+ _dict['heatsink'] = None
199
+
200
+ # set to None if si5 (nullable) is None
201
+ # and __fields_set__ contains the field
202
+ if self.si5 is None and "si5" in self.__fields_set__:
203
+ _dict['si5'] = None
204
+
205
+ # set to None if e80 (nullable) is None
206
+ # and __fields_set__ contains the field
207
+ if self.e80 is None and "e80" in self.__fields_set__:
208
+ _dict['e80'] = None
209
+
210
+ # set to None if e81 (nullable) is None
211
+ # and __fields_set__ contains the field
212
+ if self.e81 is None and "e81" in self.__fields_set__:
213
+ _dict['e81'] = None
214
+
215
+ # set to None if e84 (nullable) is None
216
+ # and __fields_set__ contains the field
217
+ if self.e84 is None and "e84" in self.__fields_set__:
218
+ _dict['e84'] = None
219
+
220
+ # set to None if e85 (nullable) is None
221
+ # and __fields_set__ contains the field
222
+ if self.e85 is None and "e85" in self.__fields_set__:
223
+ _dict['e85'] = None
224
+
225
+ # set to None if control_bridge_status (nullable) is None
226
+ # and __fields_set__ contains the field
227
+ if self.control_bridge_status is None and "control_bridge_status" in self.__fields_set__:
228
+ _dict['controlBridgeStatus'] = None
229
+
230
+ # set to None if control_bridge_status_decoded_water_pump (nullable) is None
231
+ # and __fields_set__ contains the field
232
+ if self.control_bridge_status_decoded_water_pump is None and "control_bridge_status_decoded_water_pump" in self.__fields_set__:
233
+ _dict['controlBridgeStatusDecodedWaterPump'] = None
234
+
235
+ # set to None if control_bridge_status_decoded_dhw_valve (nullable) is None
236
+ # and __fields_set__ contains the field
237
+ if self.control_bridge_status_decoded_dhw_valve is None and "control_bridge_status_decoded_dhw_valve" in self.__fields_set__:
238
+ _dict['controlBridgeStatusDecodedDhwValve'] = None
239
+
240
+ # set to None if control_bridge_status_decoded_gas_boiler (nullable) is None
241
+ # and __fields_set__ contains the field
242
+ if self.control_bridge_status_decoded_gas_boiler is None and "control_bridge_status_decoded_gas_boiler" in self.__fields_set__:
243
+ _dict['controlBridgeStatusDecodedGasBoiler'] = None
244
+
245
+ # set to None if control_bridge_status_decoded_electric_heater (nullable) is None
246
+ # and __fields_set__ contains the field
247
+ if self.control_bridge_status_decoded_electric_heater is None and "control_bridge_status_decoded_electric_heater" in self.__fields_set__:
248
+ _dict['controlBridgeStatusDecodedElectricHeater'] = None
249
+
250
+ # set to None if control_bridge_status_decoded_water_pump2 (nullable) is None
251
+ # and __fields_set__ contains the field
252
+ if self.control_bridge_status_decoded_water_pump2 is None and "control_bridge_status_decoded_water_pump2" in self.__fields_set__:
253
+ _dict['controlBridgeStatusDecodedWaterPump2'] = None
254
+
255
+ # set to None if input_status (nullable) is None
256
+ # and __fields_set__ contains the field
257
+ if self.input_status is None and "input_status" in self.__fields_set__:
258
+ _dict['inputStatus'] = None
259
+
260
+ # set to None if current_control_method (nullable) is None
261
+ # and __fields_set__ contains the field
262
+ if self.current_control_method is None and "current_control_method" in self.__fields_set__:
263
+ _dict['currentControlMethod'] = None
264
+
265
+ # set to None if signal_strength (nullable) is None
266
+ # and __fields_set__ contains the field
267
+ if self.signal_strength is None and "signal_strength" in self.__fields_set__:
268
+ _dict['signalStrength'] = None
269
+
270
+ # set to None if t1 (nullable) is None
271
+ # and __fields_set__ contains the field
272
+ if self.t1 is None and "t1" in self.__fields_set__:
273
+ _dict['t1'] = None
274
+
275
+ # set to None if t2 (nullable) is None
276
+ # and __fields_set__ contains the field
277
+ if self.t2 is None and "t2" in self.__fields_set__:
278
+ _dict['t2'] = None
279
+
280
+ # set to None if t_spare_ntc (nullable) is None
281
+ # and __fields_set__ contains the field
282
+ if self.t_spare_ntc is None and "t_spare_ntc" in self.__fields_set__:
283
+ _dict['tSpareNtc'] = None
284
+
285
+ # set to None if t_board (nullable) is None
286
+ # and __fields_set__ contains the field
287
+ if self.t_board is None and "t_board" in self.__fields_set__:
288
+ _dict['tBoard'] = None
289
+
290
+ # set to None if rpm (nullable) is None
291
+ # and __fields_set__ contains the field
292
+ if self.rpm is None and "rpm" in self.__fields_set__:
293
+ _dict['rpm'] = None
294
+
295
+ # set to None if rpm_limiter (nullable) is None
296
+ # and __fields_set__ contains the field
297
+ if self.rpm_limiter is None and "rpm_limiter" in self.__fields_set__:
298
+ _dict['rpmLimiter'] = None
299
+
300
+ # set to None if rpm_limiter_type (nullable) is None
301
+ # and __fields_set__ contains the field
302
+ if self.rpm_limiter_type is None and "rpm_limiter_type" in self.__fields_set__:
303
+ _dict['rpmLimiterType'] = None
304
+
305
+ # set to None if p_compressor_in (nullable) is None
306
+ # and __fields_set__ contains the field
307
+ if self.p_compressor_in is None and "p_compressor_in" in self.__fields_set__:
308
+ _dict['pCompressorIn'] = None
309
+
310
+ # set to None if p_compressor_out (nullable) is None
311
+ # and __fields_set__ contains the field
312
+ if self.p_compressor_out is None and "p_compressor_out" in self.__fields_set__:
313
+ _dict['pCompressorOut'] = None
314
+
315
+ # set to None if p_compressor_in_target (nullable) is None
316
+ # and __fields_set__ contains the field
317
+ if self.p_compressor_in_target is None and "p_compressor_in_target" in self.__fields_set__:
318
+ _dict['pCompressorInTarget'] = None
319
+
320
+ # set to None if t_inverter (nullable) is None
321
+ # and __fields_set__ contains the field
322
+ if self.t_inverter is None and "t_inverter" in self.__fields_set__:
323
+ _dict['tInverter'] = None
324
+
325
+ # set to None if t_compressor_in (nullable) is None
326
+ # and __fields_set__ contains the field
327
+ if self.t_compressor_in is None and "t_compressor_in" in self.__fields_set__:
328
+ _dict['tCompressorIn'] = None
329
+
330
+ # set to None if t_compressor_out (nullable) is None
331
+ # and __fields_set__ contains the field
332
+ if self.t_compressor_out is None and "t_compressor_out" in self.__fields_set__:
333
+ _dict['tCompressorOut'] = None
334
+
335
+ # set to None if t_compressor_in_transient (nullable) is None
336
+ # and __fields_set__ contains the field
337
+ if self.t_compressor_in_transient is None and "t_compressor_in_transient" in self.__fields_set__:
338
+ _dict['tCompressorInTransient'] = None
339
+
340
+ # set to None if t_compressor_out_transient (nullable) is None
341
+ # and __fields_set__ contains the field
342
+ if self.t_compressor_out_transient is None and "t_compressor_out_transient" in self.__fields_set__:
343
+ _dict['tCompressorOutTransient'] = None
344
+
345
+ # set to None if delta_t_compressor_in_superheat (nullable) is None
346
+ # and __fields_set__ contains the field
347
+ if self.delta_t_compressor_in_superheat is None and "delta_t_compressor_in_superheat" in self.__fields_set__:
348
+ _dict['deltaTCompressorInSuperheat'] = None
349
+
350
+ # set to None if compressor_power_low_accuracy (nullable) is None
351
+ # and __fields_set__ contains the field
352
+ if self.compressor_power_low_accuracy is None and "compressor_power_low_accuracy" in self.__fields_set__:
353
+ _dict['compressorPowerLowAccuracy'] = None
354
+
355
+ # set to None if fan (nullable) is None
356
+ # and __fields_set__ contains the field
357
+ if self.fan is None and "fan" in self.__fields_set__:
358
+ _dict['fan'] = None
359
+
360
+ # set to None if fan_power (nullable) is None
361
+ # and __fields_set__ contains the field
362
+ if self.fan_power is None and "fan_power" in self.__fields_set__:
363
+ _dict['fanPower'] = None
364
+
365
+ # set to None if valve (nullable) is None
366
+ # and __fields_set__ contains the field
367
+ if self.valve is None and "valve" in self.__fields_set__:
368
+ _dict['valve'] = None
369
+
370
+ # set to None if exv_flow_step_gain (nullable) is None
371
+ # and __fields_set__ contains the field
372
+ if self.exv_flow_step_gain is None and "exv_flow_step_gain" in self.__fields_set__:
373
+ _dict['exvFlowStepGain'] = None
374
+
375
+ # set to None if cm_mass_flow (nullable) is None
376
+ # and __fields_set__ contains the field
377
+ if self.cm_mass_flow is None and "cm_mass_flow" in self.__fields_set__:
378
+ _dict['cmMassFlow'] = None
379
+
380
+ # set to None if cm_mass_power_in (nullable) is None
381
+ # and __fields_set__ contains the field
382
+ if self.cm_mass_power_in is None and "cm_mass_power_in" in self.__fields_set__:
383
+ _dict['cmMassPowerIn'] = None
384
+
385
+ # set to None if cm_mass_power_out (nullable) is None
386
+ # and __fields_set__ contains the field
387
+ if self.cm_mass_power_out is None and "cm_mass_power_out" in self.__fields_set__:
388
+ _dict['cmMassPowerOut'] = None
389
+
390
+ # set to None if p_requested (nullable) is None
391
+ # and __fields_set__ contains the field
392
+ if self.p_requested is None and "p_requested" in self.__fields_set__:
393
+ _dict['pRequested'] = None
394
+
395
+ # set to None if power_error_integral (nullable) is None
396
+ # and __fields_set__ contains the field
397
+ if self.power_error_integral is None and "power_error_integral" in self.__fields_set__:
398
+ _dict['powerErrorIntegral'] = None
399
+
400
+ # set to None if thermostat_status (nullable) is None
401
+ # and __fields_set__ contains the field
402
+ if self.thermostat_status is None and "thermostat_status" in self.__fields_set__:
403
+ _dict['thermostatStatus'] = None
404
+
405
+ # set to None if t_room (nullable) is None
406
+ # and __fields_set__ contains the field
407
+ if self.t_room is None and "t_room" in self.__fields_set__:
408
+ _dict['tRoom'] = None
409
+
410
+ # set to None if t_room_target (nullable) is None
411
+ # and __fields_set__ contains the field
412
+ if self.t_room_target is None and "t_room_target" in self.__fields_set__:
413
+ _dict['tRoomTarget'] = None
414
+
415
+ # set to None if ot_boiler_status (nullable) is None
416
+ # and __fields_set__ contains the field
417
+ if self.ot_boiler_status is None and "ot_boiler_status" in self.__fields_set__:
418
+ _dict['otBoilerStatus'] = None
419
+
420
+ # set to None if ot_boiler_feed_temperature (nullable) is None
421
+ # and __fields_set__ contains the field
422
+ if self.ot_boiler_feed_temperature is None and "ot_boiler_feed_temperature" in self.__fields_set__:
423
+ _dict['otBoilerFeedTemperature'] = None
424
+
425
+ # set to None if ot_boiler_return_temperature (nullable) is None
426
+ # and __fields_set__ contains the field
427
+ if self.ot_boiler_return_temperature is None and "ot_boiler_return_temperature" in self.__fields_set__:
428
+ _dict['otBoilerReturnTemperature'] = None
429
+
430
+ return _dict
431
+
432
+ @classmethod
433
+ def from_dict(cls, obj: dict) -> RawHeatPumpLogDto:
434
+ """Create an instance of RawHeatPumpLogDto from a dict"""
435
+ if obj is None:
436
+ return None
437
+
438
+ if not isinstance(obj, dict):
439
+ return RawHeatPumpLogDto.parse_obj(obj)
440
+
441
+ _obj = RawHeatPumpLogDto.parse_obj({
442
+ "heat_pump_id": obj.get("heatPumpId"),
443
+ "timestamp": obj.get("timestamp"),
444
+ "firmware_revision": obj.get("firmwareRevision"),
445
+ "packet_counter": obj.get("packetCounter"),
446
+ "unix_time_mcu": obj.get("unixTimeMcu"),
447
+ "state": obj.get("state"),
448
+ "rpm_ctrl": obj.get("rpmCtrl"),
449
+ "error": obj.get("error"),
450
+ "error_decoded_dtc_none": obj.get("errorDecodedDtcNone"),
451
+ "error_decoded_dtc_continue": obj.get("errorDecodedDtcContinue"),
452
+ "error_decoded_dtc_compressor_off": obj.get("errorDecodedDtcCompressorOff"),
453
+ "error_decoded_dtc_defrost_forbidden": obj.get("errorDecodedDtcDefrostForbidden"),
454
+ "error_decoded_dtc_request_service": obj.get("errorDecodedDtcRequestService"),
455
+ "error_decoded_dtc_use_heating_curve": obj.get("errorDecodedDtcUseHeatingCurve"),
456
+ "error_decoded_dtc_dhw_forbidden": obj.get("errorDecodedDtcDhwForbidden"),
457
+ "error_decoded_dtc_error": obj.get("errorDecodedDtcError"),
458
+ "error_decoded_dtc_inactive": obj.get("errorDecodedDtcInactive"),
459
+ "heatsink": obj.get("heatsink"),
460
+ "si5": obj.get("si5"),
461
+ "e80": obj.get("e80"),
462
+ "e81": obj.get("e81"),
463
+ "e84": obj.get("e84"),
464
+ "e85": obj.get("e85"),
465
+ "control_bridge_status": obj.get("controlBridgeStatus"),
466
+ "control_bridge_status_decoded_water_pump": obj.get("controlBridgeStatusDecodedWaterPump"),
467
+ "control_bridge_status_decoded_dhw_valve": obj.get("controlBridgeStatusDecodedDhwValve"),
468
+ "control_bridge_status_decoded_gas_boiler": obj.get("controlBridgeStatusDecodedGasBoiler"),
469
+ "control_bridge_status_decoded_electric_heater": obj.get("controlBridgeStatusDecodedElectricHeater"),
470
+ "control_bridge_status_decoded_water_pump2": obj.get("controlBridgeStatusDecodedWaterPump2"),
471
+ "input_status": obj.get("inputStatus"),
472
+ "current_control_method": obj.get("currentControlMethod"),
473
+ "signal_strength": obj.get("signalStrength"),
474
+ "t1": obj.get("t1"),
475
+ "t2": obj.get("t2"),
476
+ "t_spare_ntc": obj.get("tSpareNtc"),
477
+ "t_board": obj.get("tBoard"),
478
+ "t_air_in": obj.get("tAirIn"),
479
+ "t_air_out": obj.get("tAirOut"),
480
+ "t_water_in": obj.get("tWaterIn"),
481
+ "t_water_out": obj.get("tWaterOut"),
482
+ "t_water_house_in": obj.get("tWaterHouseIn"),
483
+ "rpm": obj.get("rpm"),
484
+ "rpm_limiter": obj.get("rpmLimiter"),
485
+ "rpm_limiter_type": obj.get("rpmLimiterType"),
486
+ "p_compressor_in": obj.get("pCompressorIn"),
487
+ "p_compressor_out": obj.get("pCompressorOut"),
488
+ "p_compressor_in_target": obj.get("pCompressorInTarget"),
489
+ "t_inverter": obj.get("tInverter"),
490
+ "t_compressor_in": obj.get("tCompressorIn"),
491
+ "t_compressor_out": obj.get("tCompressorOut"),
492
+ "t_compressor_in_transient": obj.get("tCompressorInTransient"),
493
+ "t_compressor_out_transient": obj.get("tCompressorOutTransient"),
494
+ "delta_t_compressor_in_superheat": obj.get("deltaTCompressorInSuperheat"),
495
+ "compressor_power_low_accuracy": obj.get("compressorPowerLowAccuracy"),
496
+ "fan": obj.get("fan"),
497
+ "fan_power": obj.get("fanPower"),
498
+ "valve": obj.get("valve"),
499
+ "exv_flow_step_gain": obj.get("exvFlowStepGain"),
500
+ "cm_mass_flow": obj.get("cmMassFlow"),
501
+ "cm_mass_power_in": obj.get("cmMassPowerIn"),
502
+ "cm_mass_power_out": obj.get("cmMassPowerOut"),
503
+ "p_requested": obj.get("pRequested"),
504
+ "power_error_integral": obj.get("powerErrorIntegral"),
505
+ "on_off_thermostat_state": obj.get("onOffThermostatState"),
506
+ "thermostat_status": obj.get("thermostatStatus"),
507
+ "t_room": obj.get("tRoom"),
508
+ "t_room_target": obj.get("tRoomTarget"),
509
+ "t_thermostat_setpoint": obj.get("tThermostatSetpoint"),
510
+ "ot_boiler_status": obj.get("otBoilerStatus"),
511
+ "ot_boiler_feed_temperature": obj.get("otBoilerFeedTemperature"),
512
+ "ot_boiler_return_temperature": obj.get("otBoilerReturnTemperature"),
513
+ "interval": obj.get("interval")
514
+ })
515
+ return _obj
516
+
517
+