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.
- weheat/__init__.py +45 -0
- weheat/abstractions/__init__.py +3 -0
- weheat/abstractions/auth.py +34 -0
- weheat/abstractions/discovery.py +62 -0
- weheat/abstractions/heat_pump.py +273 -0
- weheat/abstractions/user.py +23 -0
- weheat/api/__init__.py +7 -0
- weheat/api/energy_log_api.py +230 -0
- weheat/api/heat_pump_api.py +532 -0
- weheat/api/heat_pump_log_api.py +554 -0
- weheat/api/user_api.py +193 -0
- weheat/api_client.py +766 -0
- weheat/api_response.py +29 -0
- weheat/configuration.py +442 -0
- weheat/exceptions.py +166 -0
- weheat/models/__init__.py +24 -0
- weheat/models/boiler_type.py +42 -0
- weheat/models/device_state.py +46 -0
- weheat/models/dhw_type.py +41 -0
- weheat/models/energy_view_dto.py +121 -0
- weheat/models/heat_pump_log_view_dto.py +771 -0
- weheat/models/heat_pump_model.py +44 -0
- weheat/models/heat_pump_status_enum.py +46 -0
- weheat/models/heat_pump_type.py +42 -0
- weheat/models/raw_heat_pump_log_dto.py +517 -0
- weheat/models/read_all_heat_pump_dto.py +124 -0
- weheat/models/read_heat_pump_dto.py +117 -0
- weheat/models/read_user_dto.py +102 -0
- weheat/models/role.py +46 -0
- weheat/py.typed +0 -0
- weheat/rest.py +327 -0
- weheat-2025.1.14rc1.dist-info/LICENSE +21 -0
- weheat-2025.1.14rc1.dist-info/METADATA +117 -0
- weheat-2025.1.14rc1.dist-info/RECORD +36 -0
- weheat-2025.1.14rc1.dist-info/WHEEL +5 -0
- weheat-2025.1.14rc1.dist-info/top_level.txt +1 -0
|
@@ -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
|
+
|