Skip to content

Message Factory

Auto-generated documentation from the message factory module.

Base Message Types

pysamsungnasa.protocol.factory.types

Message factory for NASA protocol.

BaseMessage

Bases: ABC

Base class for all NASA protocol messages.

Source code in pysamsungnasa/protocol/factory/types.py
25
26
27
28
29
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
class BaseMessage(ABC):
    """Base class for all NASA protocol messages."""

    MESSAGE_ID: ClassVar[Optional[int]] = None
    MESSAGE_NAME: ClassVar[Optional[str]] = None
    MESSAGE_ENUM: ClassVar[Optional[type[SamsungEnum]]] = None
    ENUM_DEFAULT: ClassVar[Optional[Any]] = None
    UNIT_OF_MEASUREMENT: ClassVar[Optional[str]] = None

    def __init__(self, value: Any, raw_payload: bytes = b"", options: Optional[list[str]] = None):
        self.VALUE = value  # pylint: disable=invalid-name
        self.RAW_PAYLOAD = raw_payload  # pylint: disable=invalid-name
        self.OPTIONS = options  # pylint: disable=invalid-name

    @property
    def is_fsv_message(self) -> bool:
        """Return True if this message is an FSV configuration message."""
        if self.MESSAGE_NAME is None:
            return False
        assert self.__doc__ is not None
        return "FSV" in (self.MESSAGE_NAME.upper() or self.__doc__.upper())

    @property
    def as_dict(self) -> dict:
        """Return the message as a dictionary."""
        return {
            "message_id": self.MESSAGE_ID,
            "message_name": self.MESSAGE_NAME,
            "unit_of_measurement": self.UNIT_OF_MEASUREMENT,
            "value": self.VALUE,
            "is_fsv_message": self.is_fsv_message,
        }

    @classmethod
    def parse_payload(cls, payload: bytes) -> "BaseMessage":
        """Parse the payload into a message instance."""
        raise NotImplementedError("parse_payload must be implemented in subclasses.")

    @classmethod
    def to_bytes(cls, value: Any) -> bytes:
        """Convert a value into bytes for sending."""
        raise NotImplementedError("to_bytes must be implemented in subclasses.")

as_dict property

Return the message as a dictionary.

is_fsv_message property

Return True if this message is an FSV configuration message.

parse_payload(payload) classmethod

Parse the payload into a message instance.

Source code in pysamsungnasa/protocol/factory/types.py
58
59
60
61
@classmethod
def parse_payload(cls, payload: bytes) -> "BaseMessage":
    """Parse the payload into a message instance."""
    raise NotImplementedError("parse_payload must be implemented in subclasses.")

to_bytes(value) classmethod

Convert a value into bytes for sending.

Source code in pysamsungnasa/protocol/factory/types.py
63
64
65
66
@classmethod
def to_bytes(cls, value: Any) -> bytes:
    """Convert a value into bytes for sending."""
    raise NotImplementedError("to_bytes must be implemented in subclasses.")

BasicCurrentMessage

Bases: FloatMessage

Parser for basic current messages (A).

Source code in pysamsungnasa/protocol/factory/types.py
263
264
265
266
267
class BasicCurrentMessage(FloatMessage):
    """Parser for basic current messages (A)."""

    ARITHMETIC = 0.1
    UNIT_OF_MEASUREMENT = "A"

BasicEnergyMessage

Bases: FloatMessage

Parser for basic energy messages (kWh).

Source code in pysamsungnasa/protocol/factory/types.py
256
257
258
259
260
class BasicEnergyMessage(FloatMessage):
    """Parser for basic energy messages (kWh)."""

    ARITHMETIC = 0.1
    UNIT_OF_MEASUREMENT = "kWh"

BasicPowerMessage

Bases: FloatMessage

Parser for basic power messages (kW).

Source code in pysamsungnasa/protocol/factory/types.py
249
250
251
252
253
class BasicPowerMessage(FloatMessage):
    """Parser for basic power messages (kW)."""

    ARITHMETIC = 0.1
    UNIT_OF_MEASUREMENT = "kW"

BasicTemperatureMessage

Bases: FloatMessage

Parser for basic temperature messages.

Source code in pysamsungnasa/protocol/factory/types.py
242
243
244
245
246
class BasicTemperatureMessage(FloatMessage):
    """Parser for basic temperature messages."""

    ARITHMETIC = 0.1
    UNIT_OF_MEASUREMENT = "C"

BoolMessage

Bases: BaseMessage

Parser for boolean messages.

Source code in pysamsungnasa/protocol/factory/types.py
85
86
87
88
89
90
91
92
93
94
95
96
class BoolMessage(BaseMessage):
    """Parser for boolean messages."""

    @classmethod
    def parse_payload(cls, payload: bytes) -> "BoolMessage":
        """Parse the payload into a boolean value."""
        return cls(value=bool(payload[0]), raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: bool) -> bytes:
        """Convert a boolean value into bytes."""
        return b"\x01" if value else b"\x00"

parse_payload(payload) classmethod

Parse the payload into a boolean value.

Source code in pysamsungnasa/protocol/factory/types.py
88
89
90
91
@classmethod
def parse_payload(cls, payload: bytes) -> "BoolMessage":
    """Parse the payload into a boolean value."""
    return cls(value=bool(payload[0]), raw_payload=payload)

to_bytes(value) classmethod

Convert a boolean value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
93
94
95
96
@classmethod
def to_bytes(cls, value: bool) -> bytes:
    """Convert a boolean value into bytes."""
    return b"\x01" if value else b"\x00"

EnumMessage

Bases: BaseMessage

Parser for enum messages.

Source code in pysamsungnasa/protocol/factory/types.py
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
class EnumMessage(BaseMessage):
    """Parser for enum messages."""

    @classmethod
    def parse_payload(cls, payload: bytes) -> "EnumMessage":
        """Parse the payload into an enum value."""
        if cls.MESSAGE_ENUM is None:
            raise ValueError(f"{cls.__name__} does not have a MESSAGE_ENUM defined.")
        if not isinstance(cls.MESSAGE_ENUM, type) or not issubclass(cls.MESSAGE_ENUM, SamsungEnum):
            raise TypeError(f"{cls.__name__}.MESSAGE_ENUM must be a SamsungEnum subclass.")

        enum_cls = cls.MESSAGE_ENUM  # Type narrowing for the checker
        if enum_cls.has_value(payload[0]):
            return cls(
                value=enum_cls._value2member_map_[payload[0]],  # type: ignore[attr-defined]
                options=[option.name for option in enum_cls],
                raw_payload=payload,
            )
        else:
            return cls(
                value=cls.ENUM_DEFAULT,
                options=[option.name for option in enum_cls],
                raw_payload=payload,
            )

    @classmethod
    def to_bytes(cls, value: SamsungEnum) -> bytes:
        """Convert an enum value into bytes."""
        return bytes([value.value])

parse_payload(payload) classmethod

Parse the payload into an enum value.

Source code in pysamsungnasa/protocol/factory/types.py
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
@classmethod
def parse_payload(cls, payload: bytes) -> "EnumMessage":
    """Parse the payload into an enum value."""
    if cls.MESSAGE_ENUM is None:
        raise ValueError(f"{cls.__name__} does not have a MESSAGE_ENUM defined.")
    if not isinstance(cls.MESSAGE_ENUM, type) or not issubclass(cls.MESSAGE_ENUM, SamsungEnum):
        raise TypeError(f"{cls.__name__}.MESSAGE_ENUM must be a SamsungEnum subclass.")

    enum_cls = cls.MESSAGE_ENUM  # Type narrowing for the checker
    if enum_cls.has_value(payload[0]):
        return cls(
            value=enum_cls._value2member_map_[payload[0]],  # type: ignore[attr-defined]
            options=[option.name for option in enum_cls],
            raw_payload=payload,
        )
    else:
        return cls(
            value=cls.ENUM_DEFAULT,
            options=[option.name for option in enum_cls],
            raw_payload=payload,
        )

to_bytes(value) classmethod

Convert an enum value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
212
213
214
215
@classmethod
def to_bytes(cls, value: SamsungEnum) -> bytes:
    """Convert an enum value into bytes."""
    return bytes([value.value])

FloatMessage

Bases: BaseMessage

Parser for a float message.

Source code in pysamsungnasa/protocol/factory/types.py
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
class FloatMessage(BaseMessage):
    """Parser for a float message."""

    ARITHMETIC: ClassVar[float] = 0
    SIGNED: ClassVar[bool] = True
    PAYLOAD_SIZE: ClassVar[int | None] = None  # None = auto-detect, 1/2/4 = force size

    @classmethod
    def parse_payload(cls, payload: bytes) -> "FloatMessage":
        """Parse the payload into a float value."""
        parsed_value: float | None = None
        if payload:
            raw_int_value: int
            payload_len = len(payload)
            try:
                # Determine format string based on length and signedness
                if payload_len == 1:
                    # 1-byte values are typically handled by EnumMessage/BoolMessage,
                    # but handle here defensively if needed. Assume signed if not specified.
                    fmt = ">b" if cls.SIGNED else ">B"
                elif payload_len == 2:
                    fmt = ">h" if cls.SIGNED else ">H"
                elif payload_len == 4:
                    fmt = ">l" if cls.SIGNED else ">L"
                else:
                    raise ValueError(
                        f"Unsupported payload length for {cls.__name__}: {payload_len} bytes. "
                        f"Expected 1, 2, or 4. Payload: {payload.hex()}"
                    )
                raw_int_value = struct.unpack(fmt, payload)[0]
                parsed_value = float(raw_int_value) * cls.ARITHMETIC
            except struct.error as e:
                raise ValueError(f"Error unpacking payload for {cls.__name__}: {e}. Payload: {payload.hex()}") from e
            except ValueError as e:
                raise ValueError(f"Error processing payload for {cls.__name__}: {e}") from e

        return cls(value=parsed_value, raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: float) -> bytes:
        """Convert a float value into bytes."""
        if cls.ARITHMETIC == 0:
            raise ValueError(f"ARITHMETIC cannot be zero for {cls.__name__}.")
        int_value = int(value / cls.ARITHMETIC)

        # Determine byte length: use PAYLOAD_SIZE if specified, otherwise auto-detect
        if cls.PAYLOAD_SIZE is not None:
            payload_size = cls.PAYLOAD_SIZE
        else:
            # Auto-detect based on value range
            if -128 <= int_value <= 127 and cls.SIGNED:
                payload_size = 1
            elif 0 <= int_value <= 255 and not cls.SIGNED:
                payload_size = 1
            elif -32768 <= int_value <= 32767 and cls.SIGNED:
                payload_size = 2
            elif 0 <= int_value <= 65535 and not cls.SIGNED:
                payload_size = 2
            else:
                payload_size = 4

        # Pack with determined size
        if payload_size == 1:
            fmt = ">b" if cls.SIGNED else ">B"
        elif payload_size == 2:
            fmt = ">h" if cls.SIGNED else ">H"
        elif payload_size == 4:
            fmt = ">l" if cls.SIGNED else ">L"
        else:
            raise ValueError(f"Unsupported PAYLOAD_SIZE {payload_size} for {cls.__name__}.")

        return struct.pack(fmt, int_value)

parse_payload(payload) classmethod

Parse the payload into a float value.

Source code in pysamsungnasa/protocol/factory/types.py
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
@classmethod
def parse_payload(cls, payload: bytes) -> "FloatMessage":
    """Parse the payload into a float value."""
    parsed_value: float | None = None
    if payload:
        raw_int_value: int
        payload_len = len(payload)
        try:
            # Determine format string based on length and signedness
            if payload_len == 1:
                # 1-byte values are typically handled by EnumMessage/BoolMessage,
                # but handle here defensively if needed. Assume signed if not specified.
                fmt = ">b" if cls.SIGNED else ">B"
            elif payload_len == 2:
                fmt = ">h" if cls.SIGNED else ">H"
            elif payload_len == 4:
                fmt = ">l" if cls.SIGNED else ">L"
            else:
                raise ValueError(
                    f"Unsupported payload length for {cls.__name__}: {payload_len} bytes. "
                    f"Expected 1, 2, or 4. Payload: {payload.hex()}"
                )
            raw_int_value = struct.unpack(fmt, payload)[0]
            parsed_value = float(raw_int_value) * cls.ARITHMETIC
        except struct.error as e:
            raise ValueError(f"Error unpacking payload for {cls.__name__}: {e}. Payload: {payload.hex()}") from e
        except ValueError as e:
            raise ValueError(f"Error processing payload for {cls.__name__}: {e}") from e

    return cls(value=parsed_value, raw_payload=payload)

to_bytes(value) classmethod

Convert a float value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
@classmethod
def to_bytes(cls, value: float) -> bytes:
    """Convert a float value into bytes."""
    if cls.ARITHMETIC == 0:
        raise ValueError(f"ARITHMETIC cannot be zero for {cls.__name__}.")
    int_value = int(value / cls.ARITHMETIC)

    # Determine byte length: use PAYLOAD_SIZE if specified, otherwise auto-detect
    if cls.PAYLOAD_SIZE is not None:
        payload_size = cls.PAYLOAD_SIZE
    else:
        # Auto-detect based on value range
        if -128 <= int_value <= 127 and cls.SIGNED:
            payload_size = 1
        elif 0 <= int_value <= 255 and not cls.SIGNED:
            payload_size = 1
        elif -32768 <= int_value <= 32767 and cls.SIGNED:
            payload_size = 2
        elif 0 <= int_value <= 65535 and not cls.SIGNED:
            payload_size = 2
        else:
            payload_size = 4

    # Pack with determined size
    if payload_size == 1:
        fmt = ">b" if cls.SIGNED else ">B"
    elif payload_size == 2:
        fmt = ">h" if cls.SIGNED else ">H"
    elif payload_size == 4:
        fmt = ">l" if cls.SIGNED else ">L"
    else:
        raise ValueError(f"Unsupported PAYLOAD_SIZE {payload_size} for {cls.__name__}.")

    return struct.pack(fmt, int_value)

IntegerMessage

Bases: BaseMessage

Parser for a basic integer message.

Source code in pysamsungnasa/protocol/factory/types.py
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
class IntegerMessage(BaseMessage):
    """Parser for a basic integer message."""

    @classmethod
    def parse_payload(cls, payload: bytes) -> "IntegerMessage":
        """Parse the payload into an integer value."""
        # Basic integer is the hex as an int
        parsed_value: Optional[int] = None
        if payload:
            parsed_value = int(payload.hex(), 16)
        return cls(value=parsed_value, raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: int | float) -> bytes:
        """Convert an integer value into bytes."""
        # Determine the minimum number of bytes needed to represent the integer
        if isinstance(value, float):
            value = int(value)
        if value < 0:
            raise ValueError("IntegerMessage only supports non-negative integers.")
        byte_length = (value.bit_length() + 7) // 8 or 1
        return value.to_bytes(byte_length, byteorder="big")

parse_payload(payload) classmethod

Parse the payload into an integer value.

Source code in pysamsungnasa/protocol/factory/types.py
221
222
223
224
225
226
227
228
@classmethod
def parse_payload(cls, payload: bytes) -> "IntegerMessage":
    """Parse the payload into an integer value."""
    # Basic integer is the hex as an int
    parsed_value: Optional[int] = None
    if payload:
        parsed_value = int(payload.hex(), 16)
    return cls(value=parsed_value, raw_payload=payload)

to_bytes(value) classmethod

Convert an integer value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
230
231
232
233
234
235
236
237
238
239
@classmethod
def to_bytes(cls, value: int | float) -> bytes:
    """Convert an integer value into bytes."""
    # Determine the minimum number of bytes needed to represent the integer
    if isinstance(value, float):
        value = int(value)
    if value < 0:
        raise ValueError("IntegerMessage only supports non-negative integers.")
    byte_length = (value.bit_length() + 7) // 8 or 1
    return value.to_bytes(byte_length, byteorder="big")

RawMessage

Bases: BaseMessage

Parser for raw messages.

Source code in pysamsungnasa/protocol/factory/types.py
69
70
71
72
73
74
75
76
77
78
79
80
81
82
class RawMessage(BaseMessage):
    """Parser for raw messages."""

    MESSAGE_NAME = "UNKNOWN"

    @classmethod
    def parse_payload(cls, payload: bytes) -> "RawMessage":
        """Parse the payload into a raw hex string."""
        return cls(value=payload.hex() if payload else None, raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: Any) -> bytes:
        """Convert a hex string value into bytes."""
        raise NotImplementedError("RawMessage does not support to_bytes conversion.")

parse_payload(payload) classmethod

Parse the payload into a raw hex string.

Source code in pysamsungnasa/protocol/factory/types.py
74
75
76
77
@classmethod
def parse_payload(cls, payload: bytes) -> "RawMessage":
    """Parse the payload into a raw hex string."""
    return cls(value=payload.hex() if payload else None, raw_payload=payload)

to_bytes(value) classmethod

Convert a hex string value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
79
80
81
82
@classmethod
def to_bytes(cls, value: Any) -> bytes:
    """Convert a hex string value into bytes."""
    raise NotImplementedError("RawMessage does not support to_bytes conversion.")

SendMessage dataclass

Base class that represents all sent NASA messages.

Source code in pysamsungnasa/protocol/factory/types.py
17
18
19
20
21
22
@dataclass
class SendMessage:
    """Base class that represents all sent NASA messages."""

    MESSAGE_ID: int  # pylint: disable=invalid-name
    PAYLOAD: bytes  # pylint: disable=invalid-name

StrMessage

Bases: BaseMessage

Parser for str messages.

Source code in pysamsungnasa/protocol/factory/types.py
 99
100
101
102
103
104
105
106
107
108
109
110
class StrMessage(BaseMessage):
    """Parser for str messages."""

    @classmethod
    def parse_payload(cls, payload: bytes) -> "StrMessage":
        """Parse the payload into a string value."""
        return cls(value=payload.decode("utf-8") if payload else None, raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: str) -> bytes:
        """Convert a string value into bytes."""
        raise NotImplementedError("StrMessage does not support to_bytes conversion.")

parse_payload(payload) classmethod

Parse the payload into a string value.

Source code in pysamsungnasa/protocol/factory/types.py
102
103
104
105
@classmethod
def parse_payload(cls, payload: bytes) -> "StrMessage":
    """Parse the payload into a string value."""
    return cls(value=payload.decode("utf-8") if payload else None, raw_payload=payload)

to_bytes(value) classmethod

Convert a string value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
107
108
109
110
@classmethod
def to_bytes(cls, value: str) -> bytes:
    """Convert a string value into bytes."""
    raise NotImplementedError("StrMessage does not support to_bytes conversion.")

StructureMessage

Bases: BaseMessage

Parser for structure messages containing nested sub-messages.

Source code in pysamsungnasa/protocol/factory/types.py
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
class StructureMessage(BaseMessage):
    """Parser for structure messages containing nested sub-messages."""

    @classmethod
    def parse_payload(cls, payload: bytes) -> "StructureMessage":
        """Parse the payload into a structure message with nested sub-messages.

        When payload is bytes, parse TLV-encoded sub-messages and attempt to join them
        into a single string representation when possible. The implementor is responsible
        for properly defining how the struct message is parsed through this method.

        Args:
            payload: Bytes (raw TLV data)

        Returns:
            StructureMessage instance with parsed VALUE
        """
        from .parser import parse_tlv_structure

        return cls(value=parse_tlv_structure(payload), raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: Any) -> bytes:
        """Convert a structure value into bytes."""
        raise NotImplementedError("StructureMessage does not support to_bytes conversion.")

parse_payload(payload) classmethod

Parse the payload into a structure message with nested sub-messages.

When payload is bytes, parse TLV-encoded sub-messages and attempt to join them into a single string representation when possible. The implementor is responsible for properly defining how the struct message is parsed through this method.

Parameters:

Name Type Description Default
payload bytes

Bytes (raw TLV data)

required

Returns:

Type Description
'StructureMessage'

StructureMessage instance with parsed VALUE

Source code in pysamsungnasa/protocol/factory/types.py
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
@classmethod
def parse_payload(cls, payload: bytes) -> "StructureMessage":
    """Parse the payload into a structure message with nested sub-messages.

    When payload is bytes, parse TLV-encoded sub-messages and attempt to join them
    into a single string representation when possible. The implementor is responsible
    for properly defining how the struct message is parsed through this method.

    Args:
        payload: Bytes (raw TLV data)

    Returns:
        StructureMessage instance with parsed VALUE
    """
    from .parser import parse_tlv_structure

    return cls(value=parse_tlv_structure(payload), raw_payload=payload)

to_bytes(value) classmethod

Convert a structure value into bytes.

Source code in pysamsungnasa/protocol/factory/types.py
291
292
293
294
@classmethod
def to_bytes(cls, value: Any) -> bytes:
    """Convert a structure value into bytes."""
    raise NotImplementedError("StructureMessage does not support to_bytes conversion.")

Indoor Messages

pysamsungnasa.protocol.factory.messages.indoor

Messages from the indoor unit.

DhwCurrentTemperature

Bases: BasicTemperatureMessage

Parser for 0x4237 (Indoor DHW Current Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1674
1675
1676
1677
1678
class DhwCurrentTemperature(BasicTemperatureMessage):
    """Parser for 0x4237 (Indoor DHW Current Temperature)."""

    MESSAGE_ID = 0x4237
    MESSAGE_NAME = "Indoor DHW Current Temperature"

DhwReferenceTemperatureMessage

Bases: EnumMessage

Parser for message 0x406F (Indoor DHW Reference Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
496
497
498
499
500
501
class DhwReferenceTemperatureMessage(EnumMessage):
    """Parser for message 0x406F (Indoor DHW Reference Temperature)."""

    MESSAGE_ID = 0x406F
    MESSAGE_NAME = "Indoor DHW Reference Temperature"
    MESSAGE_ENUM = DhwReferenceTemp

DhwTargetTemperature

Bases: BasicTemperatureMessage

Parser for 0x4235 (Indoor DHW Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1659
1660
1661
1662
1663
1664
class DhwTargetTemperature(BasicTemperatureMessage):
    """Parser for 0x4235 (Indoor DHW Target Temperature)."""

    MESSAGE_ID = 0x4235
    MESSAGE_NAME = "Indoor DHW Target Temperature"
    SIGNED = True

In2WayValveMessage

Bases: EnumMessage

Parser for message 0x408A (Indoor 2-Way Valve).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
595
596
597
598
599
600
class In2WayValveMessage(EnumMessage):
    """Parser for message 0x408A (Indoor 2-Way Valve)."""

    MESSAGE_ID = 0x408A
    MESSAGE_NAME = "Indoor 2-Way Valve"
    MESSAGE_ENUM = In2WayValve

In3WayValve2Message

Bases: EnumMessage

Parser for message 0x4113 (3-Way Valve 2 control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1321
1322
1323
1324
1325
1326
class In3WayValve2Message(EnumMessage):
    """Parser for message 0x4113 (3-Way Valve 2 control)."""

    MESSAGE_ID = 0x4113
    MESSAGE_NAME = "3-Way Valve 2 control"
    MESSAGE_ENUM = In3WayValve

In3WayValveMessage

Bases: EnumMessage

Parser for message 0x4067 (3-Way Valve control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
434
435
436
437
438
439
class In3WayValveMessage(EnumMessage):
    """Parser for message 0x4067 (3-Way Valve control)."""

    MESSAGE_ID = 0x4067
    MESSAGE_NAME = "3-Way Valve control"
    MESSAGE_ENUM = In3WayValve

InAltModeMessage

Bases: EnumMessage

Parser for message 0x4060 (Indoor Alternative Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
411
412
413
414
415
416
class InAltModeMessage(EnumMessage):
    """Parser for message 0x4060 (Indoor Alternative Mode)."""

    MESSAGE_ID = 0x4060
    MESSAGE_NAME = "Indoor Alternative Mode"
    MESSAGE_ENUM = InAltMode

InAutoStaticPressureMessage

Bases: EnumMessage

Parser for message 0x40BB (Automatic pressure control status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1031
1032
1033
1034
1035
1036
class InAutoStaticPressureMessage(EnumMessage):
    """Parser for message 0x40BB (Automatic pressure control status)."""

    MESSAGE_ID = 0x40BB
    MESSAGE_NAME = "Automatic pressure control status"
    MESSAGE_ENUM = InAutoStaticPressure

InAutomaticCleaning

Bases: BoolMessage

Parser for message 0x4111 (Indoor Automatic Cleaning).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1314
1315
1316
1317
1318
class InAutomaticCleaning(BoolMessage):
    """Parser for message 0x4111 (Indoor Automatic Cleaning)."""

    MESSAGE_ID = 0x4111
    MESSAGE_NAME = "Indoor Automatic Cleaning"

InBackupHeater

Bases: EnumMessage

Parser for message 0x406C (Indoor Backup Heater Status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
474
475
476
477
478
479
class InBackupHeater(EnumMessage):
    """Parser for message 0x406C (Indoor Backup Heater Status)."""

    MESSAGE_ID = 0x406C
    MESSAGE_NAME = "Indoor Backup Heater"
    MESSAGE_ENUM = InBackupHeaterEnum

InBackupHeaterPowerMessage

Bases: EnumMessage

Parser for message 0x4029 (Indoor Backup Heater Power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
273
274
275
276
277
278
class InBackupHeaterPowerMessage(EnumMessage):
    """Parser for message 0x4029 (Indoor Backup Heater Power)."""

    MESSAGE_ID = 0x4029
    MESSAGE_NAME = "Indoor Backup Heater Power"
    MESSAGE_ENUM = InBackupHeaterPower

InBoosterHeaterMessage

Bases: BoolMessage

Parser for message 0x4087 (Booster Heater).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
581
582
583
584
585
class InBoosterHeaterMessage(BoolMessage):
    """Parser for message 0x4087 (Booster Heater)."""

    MESSAGE_ID = 0x4087
    MESSAGE_NAME = "Booster Heater"

InCapacityAbsoluteMessage

Bases: FloatMessage

Parser for message 0x4212 (Capacity Absolute).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1630
1631
1632
1633
1634
class InCapacityAbsoluteMessage(FloatMessage):
    """Parser for message 0x4212 (Capacity Absolute)."""

    MESSAGE_ID = 0x4212
    MESSAGE_NAME = "Capacity Absolute"

InCapacityRequestMessage

Bases: FloatMessage

Parser for message 0x4211 (Capacity Request).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1623
1624
1625
1626
1627
class InCapacityRequestMessage(FloatMessage):
    """Parser for message 0x4211 (Capacity Request)."""

    MESSAGE_ID = 0x4211
    MESSAGE_NAME = "Capacity Request"

InCapacityVentilationRequestMessage

Bases: FloatMessage

Parser for message 0x4302 (Capacity ventilation request).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3172
3173
3174
3175
3176
3177
3178
class InCapacityVentilationRequestMessage(FloatMessage):
    """Parser for message 0x4302 (Capacity ventilation request)."""

    MESSAGE_ID = 0x4302
    MESSAGE_NAME = "Capacity Ventilation Request"
    UNIT = "kW"
    ARITHMETIC = 0.116279  # 1 / 8.6

InChillerExtWaterOutInput

Bases: BoolMessage

Parser for message 0x4101 (Indoor Chiller External Water Out Input).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1234
1235
1236
1237
1238
class InChillerExtWaterOutInput(BoolMessage):
    """Parser for message 0x4101 (Indoor Chiller External Water Out Input)."""

    MESSAGE_ID = 0x4101
    MESSAGE_NAME = "Indoor Chiller External Water Out Input"

InChillerSettingDemandLevelMessage

Bases: EnumMessage

Parser for message 0x40FC (Set chiller demand level).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1226
1227
1228
1229
1230
1231
class InChillerSettingDemandLevelMessage(EnumMessage):
    """Parser for message 0x40FC (Set chiller demand level)."""

    MESSAGE_ID = 0x40FC
    MESSAGE_NAME = "Set chiller demand level"
    MESSAGE_ENUM = InChillerSettingDemandLevel

InChillerSettingSilentLevelMessage

Bases: EnumMessage

Parser for message 0x40FB (Set chiller silence level).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1218
1219
1220
1221
1222
1223
class InChillerSettingSilentLevelMessage(EnumMessage):
    """Parser for message 0x40FB (Set chiller silence level)."""

    MESSAGE_ID = 0x40FB
    MESSAGE_NAME = "Set chiller silence level"
    MESSAGE_ENUM = InChillerSettingSilentLevel

InChillerWaterlawMessage

Bases: EnumMessage

Parser for message 0x40F7 (Enable chiller WL).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1210
1211
1212
1213
1214
1215
class InChillerWaterlawMessage(EnumMessage):
    """Parser for message 0x40F7 (Enable chiller WL)."""

    MESSAGE_ID = 0x40F7
    MESSAGE_NAME = "Enable chiller WL"
    MESSAGE_ENUM = InChillerWaterlaw

InChillerWaterlawSensorMessage

Bases: EnumMessage

Parser for message 0x40E7 (Set chiller WL sensor).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1202
1203
1204
1205
1206
1207
class InChillerWaterlawSensorMessage(EnumMessage):
    """Parser for message 0x40E7 (Set chiller WL sensor)."""

    MESSAGE_ID = 0x40E7
    MESSAGE_NAME = "Set chiller WL sensor"
    MESSAGE_ENUM = InChillerWaterlawSensor

InCoilFreezingControlMessage

Bases: EnumMessage

Parser for message 0x402B (Indoor Coil Freezing Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
289
290
291
292
293
294
class InCoilFreezingControlMessage(EnumMessage):
    """Parser for message 0x402B (Indoor Coil Freezing Control)."""

    MESSAGE_ID = 0x402B
    MESSAGE_NAME = "Indoor Coil Freezing Control"
    MESSAGE_ENUM = InCoilFreezingControl

InCurrentTimeMessage

Bases: RawMessage

Parser for message 0x4319 (Current time).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3321
3322
3323
3324
3325
class InCurrentTimeMessage(RawMessage):
    """Parser for message 0x4319 (Current time)."""

    MESSAGE_ID = 0x4319
    MESSAGE_NAME = "Current Time"

InDefrostSchedule1Message

Bases: RawMessage

Parser for message 0x430D (Defrost schedule 1).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3251
3252
3253
3254
3255
class InDefrostSchedule1Message(RawMessage):
    """Parser for message 0x430D (Defrost schedule 1)."""

    MESSAGE_ID = 0x430D
    MESSAGE_NAME = "Defrost Schedule 1"

InDefrostSchedule2Message

Bases: RawMessage

Parser for message 0x430E (Defrost schedule 2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3258
3259
3260
3261
3262
class InDefrostSchedule2Message(RawMessage):
    """Parser for message 0x430E (Defrost schedule 2)."""

    MESSAGE_ID = 0x430E
    MESSAGE_NAME = "Defrost Schedule 2"

InDefrostSchedule3Message

Bases: RawMessage

Parser for message 0x430F (Defrost schedule 3).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3265
3266
3267
3268
3269
class InDefrostSchedule3Message(RawMessage):
    """Parser for message 0x430F (Defrost schedule 3)."""

    MESSAGE_ID = 0x430F
    MESSAGE_NAME = "Defrost Schedule 3"

InDefrostSchedule4Message

Bases: RawMessage

Parser for message 0x4310 (Defrost schedule 4).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3272
3273
3274
3275
3276
class InDefrostSchedule4Message(RawMessage):
    """Parser for message 0x4310 (Defrost schedule 4)."""

    MESSAGE_ID = 0x4310
    MESSAGE_NAME = "Defrost Schedule 4"

InDefrostSchedule5Message

Bases: RawMessage

Parser for message 0x4311 (Defrost schedule 5).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3279
3280
3281
3282
3283
class InDefrostSchedule5Message(RawMessage):
    """Parser for message 0x4311 (Defrost schedule 5)."""

    MESSAGE_ID = 0x4311
    MESSAGE_NAME = "Defrost Schedule 5"

InDefrostSchedule6Message

Bases: RawMessage

Parser for message 0x4312 (Defrost schedule 6).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3286
3287
3288
3289
3290
class InDefrostSchedule6Message(RawMessage):
    """Parser for message 0x4312 (Defrost schedule 6)."""

    MESSAGE_ID = 0x4312
    MESSAGE_NAME = "Defrost Schedule 6"

InDefrostSchedule7Message

Bases: RawMessage

Parser for message 0x4313 (Defrost schedule 7).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3293
3294
3295
3296
3297
class InDefrostSchedule7Message(RawMessage):
    """Parser for message 0x4313 (Defrost schedule 7)."""

    MESSAGE_ID = 0x4313
    MESSAGE_NAME = "Defrost Schedule 7"

InDefrostSchedule8Message

Bases: RawMessage

Parser for message 0x4314 (Defrost schedule 8).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3300
3301
3302
3303
3304
class InDefrostSchedule8Message(RawMessage):
    """Parser for message 0x4314 (Defrost schedule 8)."""

    MESSAGE_ID = 0x4314
    MESSAGE_NAME = "Defrost Schedule 8"

InDeviceStatusMessage

Bases: RawMessage

Parser for message 0x440A (Device Status - Heatpump/Boiler).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3412
3413
3414
3415
3416
class InDeviceStatusMessage(RawMessage):
    """Parser for message 0x440A (Device Status - Heatpump/Boiler)."""

    MESSAGE_ID = 0x440A
    MESSAGE_NAME = "Device Status"

InDhwOpMode

Bases: EnumMessage

Parser for message 0x4066 (Indoor DHW Operation Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
426
427
428
429
430
431
class InDhwOpMode(EnumMessage):
    """Parser for message 0x4066 (Indoor DHW Operation Mode)."""

    MESSAGE_ID = 0x4066
    MESSAGE_NAME = "Indoor DHW Operation Mode"
    MESSAGE_ENUM = DhwOpMode

InDhwOperating

Bases: BoolMessage

Parser for message 0x408b (Indoor DHW Operating).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
603
604
605
606
607
class InDhwOperating(BoolMessage):
    """Parser for message 0x408b (Indoor DHW Operating)."""

    MESSAGE_ID = 0x408B
    MESSAGE_NAME = "Indoor DHW Operating"

InDhwWaterHeaterPower

Bases: BoolMessage

Parser for message 0x4065 (Indoor DHW Water Heater Power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
419
420
421
422
423
class InDhwWaterHeaterPower(BoolMessage):
    """Parser for message 0x4065 (Indoor DHW Water Heater Power)."""

    MESSAGE_ID = 0x4065
    MESSAGE_NAME = "Indoor DHW Water Heater Power"

InDiffuserOperationMessage

Bases: BoolMessage

Parser for message 0x4149 (Diffuser operation).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1565
1566
1567
1568
1569
class InDiffuserOperationMessage(BoolMessage):
    """Parser for message 0x4149 (Diffuser operation)."""

    MESSAGE_ID = 0x4149
    MESSAGE_NAME = "Diffuser operation"

InDischargeTempControlMessage

Bases: EnumMessage

Parser for message 0x4070 (Indoor Discharge Temperature Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
504
505
506
507
508
509
class InDischargeTempControlMessage(EnumMessage):
    """Parser for message 0x4070 (Indoor Discharge Temperature Control)."""

    MESSAGE_ID = 0x4070
    MESSAGE_NAME = "Indoor Discharge Temperature Control"
    MESSAGE_ENUM = InDischargeTempControl

InDrainPumpPowerMessage

Bases: EnumMessage

Parser for message 0x4027 (Indoor Drain Pump Power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
258
259
260
261
262
263
class InDrainPumpPowerMessage(EnumMessage):
    """Parser for message 0x4027 (Indoor Drain Pump Power)."""

    MESSAGE_ID = 0x4027
    MESSAGE_NAME = "Indoor Drain Pump Power"
    MESSAGE_ENUM = InDrainPumpPower

InDustSensorPM10Value

Bases: FloatMessage

Parser for message 0x42D1 (Dust Sensor PM10.0 Value).

Represents the particulate matter (PM10.0) measurement from the dust sensor. Type: VAR (2 bytes, unsigned) Unit: μg/m³ (micrograms per cubic meter)

Note: 0xFFFF (65535) typically indicates sensor not available or error.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
class InDustSensorPM10Value(FloatMessage):
    """Parser for message 0x42D1 (Dust Sensor PM10.0 Value).

    Represents the particulate matter (PM10.0) measurement from the dust sensor.
    Type: VAR (2 bytes, unsigned)
    Unit: μg/m³ (micrograms per cubic meter)

    Note: 0xFFFF (65535) typically indicates sensor not available or error.
    """

    MESSAGE_ID = 0x42D1
    MESSAGE_NAME = "Dust Sensor PM10.0 Value"
    UNIT_OF_MEASUREMENT = "μg/m³"
    SIGNED = False

InDustSensorPM1Value

Bases: FloatMessage

Parser for message 0x42D3 (Dust Sensor PM1.0 Value).

Represents the very fine particulate matter (PM1.0) measurement from the dust sensor. Type: VAR (2 bytes, unsigned) Unit: μg/m³ (micrograms per cubic meter)

Note: 0xFFFF (65535) typically indicates sensor not available or error.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
class InDustSensorPM1Value(FloatMessage):
    """Parser for message 0x42D3 (Dust Sensor PM1.0 Value).

    Represents the very fine particulate matter (PM1.0) measurement from the dust sensor.
    Type: VAR (2 bytes, unsigned)
    Unit: μg/m³ (micrograms per cubic meter)

    Note: 0xFFFF (65535) typically indicates sensor not available or error.
    """

    MESSAGE_ID = 0x42D3
    MESSAGE_NAME = "Dust Sensor PM1.0 Value"
    UNIT_OF_MEASUREMENT = "μg/m³"
    SIGNED = False

InDustSensorPM25Value

Bases: FloatMessage

Parser for message 0x42D2 (Dust Sensor PM2.5 Value).

Represents the fine particulate matter (PM2.5) measurement from the dust sensor. Type: VAR (2 bytes, unsigned) Unit: μg/m³ (micrograms per cubic meter)

Note: 0xFFFF (65535) typically indicates sensor not available or error.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
class InDustSensorPM25Value(FloatMessage):
    """Parser for message 0x42D2 (Dust Sensor PM2.5 Value).

    Represents the fine particulate matter (PM2.5) measurement from the dust sensor.
    Type: VAR (2 bytes, unsigned)
    Unit: μg/m³ (micrograms per cubic meter)

    Note: 0xFFFF (65535) typically indicates sensor not available or error.
    """

    MESSAGE_ID = 0x42D2
    MESSAGE_NAME = "Dust Sensor PM2.5 Value"
    UNIT_OF_MEASUREMENT = "μg/m³"
    SIGNED = False

InEevValue1Message

Bases: FloatMessage

Parser for message 0x4217 (Current EEV Development Level 1).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1644
1645
1646
1647
1648
class InEevValue1Message(FloatMessage):
    """Parser for message 0x4217 (Current EEV Development Level 1)."""

    MESSAGE_ID = 0x4217
    MESSAGE_NAME = "EEV Value 1"

InEnterRoomControlMessage

Bases: BoolMessage

Parser for message 0x40D5 (Enable room entry control option).

Enables/disables room entry control functionality. Default: 0 (Disabled), Range: 0-1

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1184
1185
1186
1187
1188
1189
1190
1191
1192
class InEnterRoomControlMessage(BoolMessage):
    """Parser for message 0x40D5 (Enable room entry control option).

    Enables/disables room entry control functionality.
    Default: 0 (Disabled), Range: 0-1
    """

    MESSAGE_ID = 0x40D5
    MESSAGE_NAME = "Enable room entry control option"

InEnthalpyControlMessage

Bases: EnumMessage

Parser for message 0x4105 (Set enthalpy control state).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1264
1265
1266
1267
1268
1269
class InEnthalpyControlMessage(EnumMessage):
    """Parser for message 0x4105 (Set enthalpy control state)."""

    MESSAGE_ID = 0x4105
    MESSAGE_NAME = "Set enthalpy control state"
    MESSAGE_ENUM = InEnthalpyControl

InEnthalpySensorOutputMessage

Bases: FloatMessage

Parser for message 0x42CF (Enthalpy Sensor Output).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2721
2722
2723
2724
2725
2726
2727
2728
class InEnthalpySensorOutputMessage(FloatMessage):
    """Parser for message 0x42CF (Enthalpy Sensor Output)."""

    MESSAGE_ID = 0x42CF
    MESSAGE_NAME = "Enthalpy Sensor Output"
    UNIT_OF_MEASUREMENT = "Enthalpy"
    SIGNED = False
    ARITHMETIC = 0.1

InEnumUnknown40b5Message

Bases: RawMessage

Parser for message 0x40B5 (Unknown enum message).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1024
1025
1026
1027
1028
class InEnumUnknown40b5Message(RawMessage):
    """Parser for message 0x40B5 (Unknown enum message)."""

    MESSAGE_ID = 0x40B5
    MESSAGE_NAME = "InEnumUnknown40b5Message"

InEnumUnknown40c6Message

Bases: RawMessage

Parser for message 0x40C6 (Unknown enum message).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1177
1178
1179
1180
1181
class InEnumUnknown40c6Message(RawMessage):
    """Parser for message 0x40C6 (Unknown enum message)."""

    MESSAGE_ID = 0x40C6
    MESSAGE_NAME = "InEnumUnknown40c6Message"

InEnumUnknown4117Message

Bases: RawMessage

Parser for message 0x4117 (Unknown enum message).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1329
1330
1331
1332
1333
class InEnumUnknown4117Message(RawMessage):
    """Parser for message 0x4117 (Unknown enum message)."""

    MESSAGE_ID = 0x4117
    MESSAGE_NAME = "InEnumUnknown4117Message"

InEnumUnknown6086Message

Bases: RawMessage

Parser for message 0x4086 (Unknown enum message).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
574
575
576
577
578
class InEnumUnknown6086Message(RawMessage):
    """Parser for message 0x4086 (Unknown enum message)."""

    MESSAGE_ID = 0x4086
    MESSAGE_NAME = "InEnumUnknown6086Message"

InErrorHistoryClearMessage

Bases: BoolMessage

Parser for message 0x40D6 (Indoor Error History Clear).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1195
1196
1197
1198
1199
class InErrorHistoryClearMessage(BoolMessage):
    """Parser for message 0x40D6 (Indoor Error History Clear)."""

    MESSAGE_ID = 0x40D6
    MESSAGE_NAME = "Indoor Error History Clear"

InErrorInOutMessage

Bases: RawMessage

Parser for message 0x440F (Error In Out).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3447
3448
3449
3450
3451
class InErrorInOutMessage(RawMessage):
    """Parser for message 0x440F (Error In Out)."""

    MESSAGE_ID = 0x440F
    MESSAGE_NAME = "Error In Out"

InErvFanSpeedMessage

Bases: EnumMessage

Parser for message 0x4008 (Indoor ERV Fan Speed).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
179
180
181
182
183
184
class InErvFanSpeedMessage(EnumMessage):
    """Parser for message 0x4008 (Indoor ERV Fan Speed)."""

    MESSAGE_ID = 0x4008
    MESSAGE_NAME = "Indoor ERV Fan Speed"
    MESSAGE_ENUM = ErvFanSpeed

InFanModeMessage

Bases: EnumMessage

Parser for message 0x4006 (Indoor Fan Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
163
164
165
166
167
168
class InFanModeMessage(EnumMessage):
    """Parser for message 0x4006 (Indoor Fan Mode)."""

    MESSAGE_ID = 0x4006
    MESSAGE_NAME = "Indoor Fan Mode"
    MESSAGE_ENUM = InFanMode

InFanModeRealMessage

Bases: EnumMessage

Parser for message 0x4007 (Indoor Fan Mode Real).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
171
172
173
174
175
176
class InFanModeRealMessage(EnumMessage):
    """Parser for message 0x4007 (Indoor Fan Mode Real)."""

    MESSAGE_ID = 0x4007
    MESSAGE_NAME = "Indoor Fan Mode Real"
    MESSAGE_ENUM = InFanModeReal

InFlowSensorCalculationMessage

Bases: FloatMessage

Parser for message 0x42E9 (Flow Sensor Calculation).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2912
2913
2914
2915
2916
2917
2918
2919
class InFlowSensorCalculationMessage(FloatMessage):
    """Parser for message 0x42E9 (Flow Sensor Calculation)."""

    MESSAGE_ID = 0x42E9
    MESSAGE_NAME = "Flow Sensor Calculation"
    SIGNED = False
    UNIT_OF_MEASUREMENT = "L/min"
    ARITHMETIC = 0.1

InFlowSensorVoltageMessage

Bases: FloatMessage

Parser for message 0x42E8 (Flow Sensor Voltage).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2902
2903
2904
2905
2906
2907
2908
2909
class InFlowSensorVoltageMessage(FloatMessage):
    """Parser for message 0x42E8 (Flow Sensor Voltage)."""

    MESSAGE_ID = 0x42E8
    MESSAGE_NAME = "Flow Sensor Voltage"
    UNIT_OF_MEASUREMENT = "V"
    SIGNED = False
    ARITHMETIC = 0.1

InFreeCoolingMessage

Bases: EnumMessage

Parser for message 0x410D (Set free cooling state).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1306
1307
1308
1309
1310
1311
class InFreeCoolingMessage(EnumMessage):
    """Parser for message 0x410D (Set free cooling state)."""

    MESSAGE_ID = 0x410D
    MESSAGE_NAME = "Set free cooling state"
    MESSAGE_ENUM = InFreeCooling

InFsv1011Message

Bases: BasicTemperatureMessage

Parser for message 0x424A (FSV 1011 - Water Out Temp for Cooling Max).

Target water outlet temperature upper limit for cooling mode. Default: 25°C, Range: 18-25°C

Combined with FSV 1012, users can set target water outlet temperature between 5-25°C.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
class InFsv1011Message(BasicTemperatureMessage):
    """Parser for message 0x424A (FSV 1011 - Water Out Temp for Cooling Max).

    Target water outlet temperature upper limit for cooling mode.
    Default: 25°C, Range: 18-25°C

    Combined with FSV 1012, users can set target water outlet temperature between 5-25°C.
    """

    MESSAGE_ID = 0x424A
    MESSAGE_NAME = "FSV 1011 Cool Max Water Temperature"

InFsv1012Message

Bases: BasicTemperatureMessage

Parser for message 0x424B (FSV 1012 - Water Out Temp for Cooling Min).

Target water outlet temperature lower limit for cooling mode. Default: 16°C, Range: 5-18°C

Combined with FSV 1011, users can set target water outlet temperature between 5-25°C.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
class InFsv1012Message(BasicTemperatureMessage):
    """Parser for message 0x424B (FSV 1012 - Water Out Temp for Cooling Min).

    Target water outlet temperature lower limit for cooling mode.
    Default: 16°C, Range: 5-18°C

    Combined with FSV 1011, users can set target water outlet temperature between 5-25°C.
    """

    MESSAGE_ID = 0x424B
    MESSAGE_NAME = "FSV 1012 Cool Min Water Temperature"

InFsv1021Message

Bases: BasicTemperatureMessage

Parser for message 0x424C (FSV 1021 - Room Temp for Cooling Max).

Target room temperature upper limit for cooling mode. Default: 30°C, Range: 28-30°C

Combined with FSV 1022, users can set target room temperature between 18-30°C. Note: Setting a higher room set point for cooling may result in saving energy and reducing energy costs.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
class InFsv1021Message(BasicTemperatureMessage):
    """Parser for message 0x424C (FSV 1021 - Room Temp for Cooling Max).

    Target room temperature upper limit for cooling mode.
    Default: 30°C, Range: 28-30°C

    Combined with FSV 1022, users can set target room temperature between 18-30°C.
    Note: Setting a higher room set point for cooling may result in saving energy and reducing energy costs.
    """

    MESSAGE_ID = 0x424C
    MESSAGE_NAME = "FSV 1021 Cool Max Room Temperature"

InFsv1022Message

Bases: BasicTemperatureMessage

Parser for message 0x424D (FSV 1022 - Room Temp for Cooling Min).

Target room temperature lower limit for cooling mode. Default: 18°C, Range: 18-28°C

Combined with FSV 1021, users can set target room temperature between 18-30°C.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
class InFsv1022Message(BasicTemperatureMessage):
    """Parser for message 0x424D (FSV 1022 - Room Temp for Cooling Min).

    Target room temperature lower limit for cooling mode.
    Default: 18°C, Range: 18-28°C

    Combined with FSV 1021, users can set target room temperature between 18-30°C.
    """

    MESSAGE_ID = 0x424D
    MESSAGE_NAME = "FSV 1022 Cool Min Room Temperature"

InFsv1031Message

Bases: BasicTemperatureMessage

Parser for message 0x424E (FSV 1031 - Water Out Temp for Heating Max).

Target water outlet temperature upper limit for heating mode. Default: 70°C, Range: 37-70°C

Combined with FSV 1032, users can set target water outlet temperature between 15-70°C.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
class InFsv1031Message(BasicTemperatureMessage):
    """Parser for message 0x424E (FSV 1031 - Water Out Temp for Heating Max).

    Target water outlet temperature upper limit for heating mode.
    Default: 70°C, Range: 37-70°C

    Combined with FSV 1032, users can set target water outlet temperature between 15-70°C.
    """

    MESSAGE_ID = 0x424E
    MESSAGE_NAME = "FSV 1031 Heat Max Water Temperature"

InFsv1032Message

Bases: BasicTemperatureMessage

Parser for message 0x424F (FSV 1032 - Water Out Temp for Heating Min).

Target water outlet temperature lower limit for heating mode. Default: 25°C, Range: 15-37°C

Combined with FSV 1031, users can set target water outlet temperature between 15-70°C.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
class InFsv1032Message(BasicTemperatureMessage):
    """Parser for message 0x424F (FSV 1032 - Water Out Temp for Heating Min).

    Target water outlet temperature lower limit for heating mode.
    Default: 25°C, Range: 15-37°C

    Combined with FSV 1031, users can set target water outlet temperature between 15-70°C.
    """

    MESSAGE_ID = 0x424F
    MESSAGE_NAME = "FSV 1032 Heat Min Water Temperature"

InFsv1041Message

Bases: BasicTemperatureMessage

Parser for message 0x4250 (FSV 1041 - Room Temp for Heating Max).

Target room temperature upper limit for heating mode. Default: 30°C, Range: 18-30°C

Combined with FSV 1042, users can set target room temperature between 16-30°C.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
class InFsv1041Message(BasicTemperatureMessage):
    """Parser for message 0x4250 (FSV 1041 - Room Temp for Heating Max).

    Target room temperature upper limit for heating mode.
    Default: 30°C, Range: 18-30°C

    Combined with FSV 1042, users can set target room temperature between 16-30°C.
    """

    MESSAGE_ID = 0x4250
    MESSAGE_NAME = "FSV 1041 Heat Max Room Temperature"

InFsv1042Message

Bases: BasicTemperatureMessage

Parser for message 0x4251 (FSV 1042 - Room Temp for Heating Min).

Target room temperature lower limit for heating mode. Default: 16°C, Range: 16-18°C

Combined with FSV 1041, users can set target room temperature between 16-30°C. Note: Setting a lower room heating set point may result in saving energy and reducing energy costs.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
class InFsv1042Message(BasicTemperatureMessage):
    """Parser for message 0x4251 (FSV 1042 - Room Temp for Heating Min).

    Target room temperature lower limit for heating mode.
    Default: 16°C, Range: 16-18°C

    Combined with FSV 1041, users can set target room temperature between 16-30°C.
    Note: Setting a lower room heating set point may result in saving energy and reducing energy costs.
    """

    MESSAGE_ID = 0x4251
    MESSAGE_NAME = "FSV 1042 Heat Min Room Temperature"

InFsv1051Message

Bases: BasicTemperatureMessage

Parser for message 0x4252 (FSV 1051 - DHW tank Temp Max).

Target domestic hot water tank temperature upper limit. Default: 55°C, Range: 50-70°C

Combined with FSV 1052, users can set target tank temperature between 30-70°C. Note: A lower DHW set temperature may result in higher efficiency of the heat pump.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
class InFsv1051Message(BasicTemperatureMessage):
    """Parser for message 0x4252 (FSV 1051 - DHW tank Temp Max).

    Target domestic hot water tank temperature upper limit.
    Default: 55°C, Range: 50-70°C

    Combined with FSV 1052, users can set target tank temperature between 30-70°C.
    Note: A lower DHW set temperature may result in higher efficiency of the heat pump.
    """

    MESSAGE_ID = 0x4252
    MESSAGE_NAME = "FSV 1051 DHW Max Temperature"

InFsv1052Message

Bases: BasicTemperatureMessage

Parser for message 0x4253 (FSV 1052 - DHW tank Temp Min).

Target domestic hot water tank temperature lower limit. Default: 40°C, Range: 30-40°C

Combined with FSV 1051, users can set target tank temperature between 30-70°C. Note: A lower DHW set temperature may limit the total number of showers before recharging.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
class InFsv1052Message(BasicTemperatureMessage):
    """Parser for message 0x4253 (FSV 1052 - DHW tank Temp Min).

    Target domestic hot water tank temperature lower limit.
    Default: 40°C, Range: 30-40°C

    Combined with FSV 1051, users can set target tank temperature between 30-70°C.
    Note: A lower DHW set temperature may limit the total number of showers before recharging.
    """

    MESSAGE_ID = 0x4253
    MESSAGE_NAME = "FSV 1052 DHW Min Temperature"

InFsv1061Message

Bases: BasicTemperatureMessage

Parser for message 0x431E (FSV 1061 - LWT hysteresis for heating).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3328
3329
3330
3331
3332
class InFsv1061Message(BasicTemperatureMessage):
    """Parser for message 0x431E (FSV 1061 - LWT hysteresis for heating)."""

    MESSAGE_ID = 0x431E
    MESSAGE_NAME = "FSV 1061 LWT Hysteresis Heating"

InFsv1062Message

Bases: BasicTemperatureMessage

Parser for message 0x431F (FSV 1062 - LWT hysteresis for cooling).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3335
3336
3337
3338
3339
class InFsv1062Message(BasicTemperatureMessage):
    """Parser for message 0x431F (FSV 1062 - LWT hysteresis for cooling)."""

    MESSAGE_ID = 0x431F
    MESSAGE_NAME = "FSV 1062 LWT Hysteresis Cooling"

InFsv1063Message

Bases: BasicTemperatureMessage

Parser for message 0x4320 (FSV 1063 - Roomstat hysteresis for heating).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3342
3343
3344
3345
3346
class InFsv1063Message(BasicTemperatureMessage):
    """Parser for message 0x4320 (FSV 1063 - Roomstat hysteresis for heating)."""

    MESSAGE_ID = 0x4320
    MESSAGE_NAME = "FSV 1063 Roomstat Hysteresis Heating"

InFsv1064Message

Bases: BasicTemperatureMessage

Parser for message 0x4321 (FSV 1064 - Roomstat hysteresis for cooling).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3349
3350
3351
3352
3353
class InFsv1064Message(BasicTemperatureMessage):
    """Parser for message 0x4321 (FSV 1064 - Roomstat hysteresis for cooling)."""

    MESSAGE_ID = 0x4321
    MESSAGE_NAME = "FSV 1064 Roomstat Hysteresis Cooling"

InFsv2011OutdoorTempHeatingMax

Bases: BasicTemperatureMessage

Parser for message 0x4254 (FSV 2011 - Outdoor Temp for Water Law Heating Max).

Outdoor air temperature upper limit (Point ①) for water law heating control. This is the outdoor temperature at which water outlet reaches its maximum setpoint. Default: -10°C, Range: -20 to 5°C

Combined with FSV 2012, defines the outdoor temperature range for heating water law. With defaults (-10 to 15°C), the system automatically adjusts water temperature based on outdoor conditions to optimize heating efficiency.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
class InFsv2011OutdoorTempHeatingMax(BasicTemperatureMessage):
    """Parser for message 0x4254 (FSV 2011 - Outdoor Temp for Water Law Heating Max).

    Outdoor air temperature upper limit (Point â‘ ) for water law heating control.
    This is the outdoor temperature at which water outlet reaches its maximum setpoint.
    Default: -10°C, Range: -20 to 5°C

    Combined with FSV 2012, defines the outdoor temperature range for heating water law.
    With defaults (-10 to 15°C), the system automatically adjusts water temperature based on
    outdoor conditions to optimize heating efficiency.
    """

    MESSAGE_ID = 0x4254
    MESSAGE_NAME = "FSV 2011 Outdoor Temp for Heating Max"

InFsv2012OutdoorTempHeatingMin

Bases: BasicTemperatureMessage

Parser for message 0x4255 (FSV 2012 - Outdoor Temp for Water Law Heating Min).

Outdoor air temperature lower limit (Point ②) for water law heating control. This is the outdoor temperature at which water outlet reaches its minimum setpoint. Default: 15°C, Range: 10 to 20°C

Combined with FSV 2011, defines the outdoor temperature range for heating water law.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
class InFsv2012OutdoorTempHeatingMin(BasicTemperatureMessage):
    """Parser for message 0x4255 (FSV 2012 - Outdoor Temp for Water Law Heating Min).

    Outdoor air temperature lower limit (Point â‘¡) for water law heating control.
    This is the outdoor temperature at which water outlet reaches its minimum setpoint.
    Default: 15°C, Range: 10 to 20°C

    Combined with FSV 2011, defines the outdoor temperature range for heating water law.
    """

    MESSAGE_ID = 0x4255
    MESSAGE_NAME = "FSV 2012 Outdoor Temp for Heating Min"

InFsv2021WaterOutTempWL1HeatingMax

Bases: BasicTemperatureMessage

Parser for message 0x4256 (FSV 2021 - Water Out Temp for WL1 Heat Max).

Maximum water outlet temperature for WL1 (floor/UFH) heating operation. Upper limit (Point ①) of water temperature control curve for floor heating. Default: 40°C, Range: 17 to 65°C

Combined with FSV 2022, defines the water temperature range for floor heating water law. With defaults (25-40°C), the system maintains optimal floor heating temperature.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
class InFsv2021WaterOutTempWL1HeatingMax(BasicTemperatureMessage):
    """Parser for message 0x4256 (FSV 2021 - Water Out Temp for WL1 Heat Max).

    Maximum water outlet temperature for WL1 (floor/UFH) heating operation.
    Upper limit (Point â‘ ) of water temperature control curve for floor heating.
    Default: 40°C, Range: 17 to 65°C

    Combined with FSV 2022, defines the water temperature range for floor heating water law.
    With defaults (25-40°C), the system maintains optimal floor heating temperature.
    """

    MESSAGE_ID = 0x4256
    MESSAGE_NAME = "FSV 2021 Water Out Temp WL1 Heating Max"

InFsv2022WaterOutTempWL1HeatingMin

Bases: BasicTemperatureMessage

Parser for message 0x4257 (FSV 2022 - Water Out Temp for WL1 Heat Min).

Minimum water outlet temperature for WL1 (floor/UFH) heating operation. Lower limit (Point ②) of water temperature control curve for floor heating. Default: 25°C, Range: 17 to 65°C

Combined with FSV 2021, defines the water temperature range for floor heating water law.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
class InFsv2022WaterOutTempWL1HeatingMin(BasicTemperatureMessage):
    """Parser for message 0x4257 (FSV 2022 - Water Out Temp for WL1 Heat Min).

    Minimum water outlet temperature for WL1 (floor/UFH) heating operation.
    Lower limit (Point â‘¡) of water temperature control curve for floor heating.
    Default: 25°C, Range: 17 to 65°C

    Combined with FSV 2021, defines the water temperature range for floor heating water law.
    """

    MESSAGE_ID = 0x4257
    MESSAGE_NAME = "FSV 2022 Water Out Temp WL1 Heating Min"

InFsv2031WaterOutTempWL2HeatingMax

Bases: BasicTemperatureMessage

Parser for message 0x4258 (FSV 2031 - Water Out Temp for WL2 Heat Max).

Maximum water outlet temperature for WL2 (FCU/radiator) heating operation. Upper limit (Point ①) of water temperature control curve for fan coil unit heating. Default: 50°C, Range: 17 to 65°C

Combined with FSV 2032, defines the water temperature range for FCU heating water law. With defaults (35-50°C), the system maintains optimal FCU heating temperature.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
class InFsv2031WaterOutTempWL2HeatingMax(BasicTemperatureMessage):
    """Parser for message 0x4258 (FSV 2031 - Water Out Temp for WL2 Heat Max).

    Maximum water outlet temperature for WL2 (FCU/radiator) heating operation.
    Upper limit (Point â‘ ) of water temperature control curve for fan coil unit heating.
    Default: 50°C, Range: 17 to 65°C

    Combined with FSV 2032, defines the water temperature range for FCU heating water law.
    With defaults (35-50°C), the system maintains optimal FCU heating temperature.
    """

    MESSAGE_ID = 0x4258
    MESSAGE_NAME = "FSV 2031 Water Out Temp WL2 Heating Max"

InFsv2032WaterOutTempWL2HeatingMin

Bases: BasicTemperatureMessage

Parser for message 0x4259 (FSV 2032 - Water Out Temp for WL2 Heat Min).

Minimum water outlet temperature for WL2 (FCU/radiator) heating operation. Lower limit (Point ②) of water temperature control curve for fan coil unit heating. Default: 35°C, Range: 17 to 65°C

Combined with FSV 2031, defines the water temperature range for FCU heating water law.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
class InFsv2032WaterOutTempWL2HeatingMin(BasicTemperatureMessage):
    """Parser for message 0x4259 (FSV 2032 - Water Out Temp for WL2 Heat Min).

    Minimum water outlet temperature for WL2 (FCU/radiator) heating operation.
    Lower limit (Point â‘¡) of water temperature control curve for fan coil unit heating.
    Default: 35°C, Range: 17 to 65°C

    Combined with FSV 2031, defines the water temperature range for FCU heating water law.
    """

    MESSAGE_ID = 0x4259
    MESSAGE_NAME = "FSV 2032 Water Out Temp WL2 Heating Min"

InFsv2041WaterLawTypeHeating

Bases: EnumMessage

Parser for message 0x4093 (FSV 2041 Water Law Type Heating).

Selects water law control type for heating based on heating device type. Default: 1 (Floor/UFH), Range: 1-2

1 = WL1 for floor heating (UFHs) 2 = WL2 for fan coil units (FCUs) or radiators

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
610
611
612
613
614
615
616
617
618
619
620
621
622
class InFsv2041WaterLawTypeHeating(EnumMessage):
    """Parser for message 0x4093 (FSV 2041 Water Law Type Heating).

    Selects water law control type for heating based on heating device type.
    Default: 1 (Floor/UFH), Range: 1-2

    1 = WL1 for floor heating (UFHs)
    2 = WL2 for fan coil units (FCUs) or radiators
    """

    MESSAGE_ID = 0x4093
    MESSAGE_NAME = "FSV 2041 Water Law Type Heating"
    MESSAGE_ENUM = InFsv2041WaterLawTypeHeatingEnum

InFsv2051OutdoorTempCoolingMax

Bases: BasicTemperatureMessage

Parser for message 0x425A (FSV 2051 - Outdoor Temp for Water Law Cooling Max).

Outdoor air temperature upper limit (Point ①) for water law cooling control. This is the outdoor temperature at which water outlet reaches its maximum setpoint. Default: 30°C, Range: 25 to 35°C

Combined with FSV 2052, defines the outdoor temperature range for cooling water law. With defaults (30-40°C), the system automatically adjusts water temperature based on outdoor conditions to optimize cooling efficiency.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
class InFsv2051OutdoorTempCoolingMax(BasicTemperatureMessage):
    """Parser for message 0x425A (FSV 2051 - Outdoor Temp for Water Law Cooling Max).

    Outdoor air temperature upper limit (Point â‘ ) for water law cooling control.
    This is the outdoor temperature at which water outlet reaches its maximum setpoint.
    Default: 30°C, Range: 25 to 35°C

    Combined with FSV 2052, defines the outdoor temperature range for cooling water law.
    With defaults (30-40°C), the system automatically adjusts water temperature based on
    outdoor conditions to optimize cooling efficiency.
    """

    MESSAGE_ID = 0x425A
    MESSAGE_NAME = "FSV 2051 Outdoor Temp for Cooling Max"

InFsv2052OutdoorTempCoolingMin

Bases: BasicTemperatureMessage

Parser for message 0x425B (FSV 2052 - Outdoor Temp for Water Law Cooling Min).

Outdoor air temperature lower limit (Point ②) for water law cooling control. This is the outdoor temperature at which water outlet reaches its minimum setpoint. Default: 40°C, Range: 35 to 45°C

Combined with FSV 2051, defines the outdoor temperature range for cooling water law.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
class InFsv2052OutdoorTempCoolingMin(BasicTemperatureMessage):
    """Parser for message 0x425B (FSV 2052 - Outdoor Temp for Water Law Cooling Min).

    Outdoor air temperature lower limit (Point â‘¡) for water law cooling control.
    This is the outdoor temperature at which water outlet reaches its minimum setpoint.
    Default: 40°C, Range: 35 to 45°C

    Combined with FSV 2051, defines the outdoor temperature range for cooling water law.
    """

    MESSAGE_ID = 0x425B
    MESSAGE_NAME = "FSV 2052 Outdoor Temp for Cooling Min"

InFsv2061WaterOutTempWL1CoolingMax

Bases: BasicTemperatureMessage

Parser for message 0x425C (FSV 2061 - Water Out Temp for WL1 Cool Max).

Maximum water outlet temperature for WL1 (floor/UFH) cooling operation. Upper limit (Point ①) of water temperature control curve for floor cooling. Default: 25°C, Range: 5 to 25°C

Combined with FSV 2062, defines the water temperature range for floor cooling water law. With defaults (18-25°C), the system maintains optimal floor cooling temperature. Note: Water temperature must remain above 16°C during cooling to prevent condensation.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
class InFsv2061WaterOutTempWL1CoolingMax(BasicTemperatureMessage):
    """Parser for message 0x425C (FSV 2061 - Water Out Temp for WL1 Cool Max).

    Maximum water outlet temperature for WL1 (floor/UFH) cooling operation.
    Upper limit (Point â‘ ) of water temperature control curve for floor cooling.
    Default: 25°C, Range: 5 to 25°C

    Combined with FSV 2062, defines the water temperature range for floor cooling water law.
    With defaults (18-25°C), the system maintains optimal floor cooling temperature.
    Note: Water temperature must remain above 16°C during cooling to prevent condensation.
    """

    MESSAGE_ID = 0x425C
    MESSAGE_NAME = "FSV 2061 Water Out Temp WL1 Cooling Max"

InFsv2062WaterOutTempWL1CoolingMin

Bases: BasicTemperatureMessage

Parser for message 0x425D (FSV 2062 - Water Out Temp for WL1 Cool Min).

Minimum water outlet temperature for WL1 (floor/UFH) cooling operation. Lower limit (Point ②) of water temperature control curve for floor cooling. Default: 18°C, Range: 5 to 25°C

Combined with FSV 2061, defines the water temperature range for floor cooling water law.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
class InFsv2062WaterOutTempWL1CoolingMin(BasicTemperatureMessage):
    """Parser for message 0x425D (FSV 2062 - Water Out Temp for WL1 Cool Min).

    Minimum water outlet temperature for WL1 (floor/UFH) cooling operation.
    Lower limit (Point â‘¡) of water temperature control curve for floor cooling.
    Default: 18°C, Range: 5 to 25°C

    Combined with FSV 2061, defines the water temperature range for floor cooling water law.
    """

    MESSAGE_ID = 0x425D
    MESSAGE_NAME = "FSV 2062 Water Out Temp WL1 Cooling Min"

InFsv2071WaterOutTempWL2CoolingMax

Bases: BasicTemperatureMessage

Parser for message 0x425E (FSV 2071 - Water Out Temp for WL2 Cool Max).

Maximum water outlet temperature for WL2 (FCU/radiator) cooling operation. Upper limit (Point ①) of water temperature control curve for fan coil unit cooling. Default: 18°C, Range: 5 to 25°C

Combined with FSV 2072, defines the water temperature range for FCU cooling water law. With defaults (5-18°C), the system maintains optimal FCU cooling temperature.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
class InFsv2071WaterOutTempWL2CoolingMax(BasicTemperatureMessage):
    """Parser for message 0x425E (FSV 2071 - Water Out Temp for WL2 Cool Max).

    Maximum water outlet temperature for WL2 (FCU/radiator) cooling operation.
    Upper limit (Point â‘ ) of water temperature control curve for fan coil unit cooling.
    Default: 18°C, Range: 5 to 25°C

    Combined with FSV 2072, defines the water temperature range for FCU cooling water law.
    With defaults (5-18°C), the system maintains optimal FCU cooling temperature.
    """

    MESSAGE_ID = 0x425E
    MESSAGE_NAME = "FSV 2071 Water Out Temp WL2 Cooling Max"

InFsv2072WaterOutTempWL2CoolingMin

Bases: BasicTemperatureMessage

Parser for message 0x425F (FSV 2072 - Water Out Temp for WL2 Cool Min).

Minimum water outlet temperature for WL2 (FCU/radiator) cooling operation. Lower limit (Point ②) of water temperature control curve for fan coil unit cooling. Default: 5°C, Range: 5 to 25°C

Combined with FSV 2071, defines the water temperature range for FCU cooling water law.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
class InFsv2072WaterOutTempWL2CoolingMin(BasicTemperatureMessage):
    """Parser for message 0x425F (FSV 2072 - Water Out Temp for WL2 Cool Min).

    Minimum water outlet temperature for WL2 (FCU/radiator) cooling operation.
    Lower limit (Point â‘¡) of water temperature control curve for fan coil unit cooling.
    Default: 5°C, Range: 5 to 25°C

    Combined with FSV 2071, defines the water temperature range for FCU cooling water law.
    """

    MESSAGE_ID = 0x425F
    MESSAGE_NAME = "FSV 2072 Water Out Temp WL2 Cooling Min"

InFsv2081WaterLawTypeCooling

Bases: EnumMessage

Parser for message 0x4094 (FSV 2081 Water Law Type Cooling).

Selects water law control type for cooling based on cooling device type. Default: 1 (Floor/UFH), Range: 1-2

1 = WL1 for floor cooling (UFHs) 2 = WL2 for fan coil units (FCUs) or radiators

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
625
626
627
628
629
630
631
632
633
634
635
636
637
class InFsv2081WaterLawTypeCooling(EnumMessage):
    """Parser for message 0x4094 (FSV 2081 Water Law Type Cooling).

    Selects water law control type for cooling based on cooling device type.
    Default: 1 (Floor/UFH), Range: 1-2

    1 = WL1 for floor cooling (UFHs)
    2 = WL2 for fan coil units (FCUs) or radiators
    """

    MESSAGE_ID = 0x4094
    MESSAGE_NAME = "FSV 2081 Water Law Type Cooling"
    MESSAGE_ENUM = InFsv2081WaterLawTypeCoolingEnum

InFsv2091UseThermostat1

Bases: EnumMessage

Parser for message 0x4095 (FSV 2091 Use Thermostat 1).

External room thermostat control for UFHs (floor heating/cooling). Default: 0 (No thermostat), Range: 0-4

0 = Disable (use wired remote controller) 1 = Thermostat only controls compressor on/off 2-4 = Thermostat controls compressor + water pump based on WL mode

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
640
641
642
643
644
645
646
647
648
649
650
651
652
653
class InFsv2091UseThermostat1(EnumMessage):
    """Parser for message 0x4095 (FSV 2091 Use Thermostat 1).

    External room thermostat control for UFHs (floor heating/cooling).
    Default: 0 (No thermostat), Range: 0-4

    0 = Disable (use wired remote controller)
    1 = Thermostat only controls compressor on/off
    2-4 = Thermostat controls compressor + water pump based on WL mode
    """

    MESSAGE_ID = 0x4095
    MESSAGE_NAME = "FSV 2091 Use Thermostat 1"
    MESSAGE_ENUM = InUseThermostat

InFsv2092UseThermostat2

Bases: EnumMessage

Parser for message 0x4096 (FSV 2092 Use Thermostat 2).

External room thermostat control for FCUs (fan coil units). Default: 0 (No thermostat), Range: 0-4

0 = Disable (use wired remote controller) 1 = Thermostat only controls compressor on/off 2 = Thermostat controls compressor + water pump off when disabled 3 = Thermostat controls compressor + water pump stays on when disabled 4 = Thermostat controls compressor + water pump cycles (7min off, 3min on)

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
class InFsv2092UseThermostat2(EnumMessage):
    """Parser for message 0x4096 (FSV 2092 Use Thermostat 2).

    External room thermostat control for FCUs (fan coil units).
    Default: 0 (No thermostat), Range: 0-4

    0 = Disable (use wired remote controller)
    1 = Thermostat only controls compressor on/off
    2 = Thermostat controls compressor + water pump off when disabled
    3 = Thermostat controls compressor + water pump stays on when disabled
    4 = Thermostat controls compressor + water pump cycles (7min off, 3min on)
    """

    MESSAGE_ID = 0x4096
    MESSAGE_NAME = "FSV 2092 Use Thermostat 2"
    MESSAGE_ENUM = InUseThermostat

InFsv2093

Bases: EnumMessage

Parser for message 0x4127 (FSV 2093 Remote Controller Room Temp Control).

Room temperature sensor control mode for wired remote controller. Default: 4, Range: 1-4

1 = Compressor controlled only by room temperature sensor 2 = Compressor controlled by room sensor or WL discharged water temp; pump off when WL disabled 3 = Compressor controlled by room sensor or WL discharged water temp; pump stays on 4 = Compressor controlled by room sensor or WL discharged water temp; pump cycles (7min off, 3min on)

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
class InFsv2093(EnumMessage):
    """Parser for message 0x4127 (FSV 2093 Remote Controller Room Temp Control).

    Room temperature sensor control mode for wired remote controller.
    Default: 4, Range: 1-4

    1 = Compressor controlled only by room temperature sensor
    2 = Compressor controlled by room sensor or WL discharged water temp; pump off when WL disabled
    3 = Compressor controlled by room sensor or WL discharged water temp; pump stays on
    4 = Compressor controlled by room sensor or WL discharged water temp; pump cycles (7min off, 3min on)
    """

    MESSAGE_ID = 0x4127
    MESSAGE_NAME = "FSV 2093"
    MESSAGE_ENUM = InFsv2093Enum

InFsv2094Message

Bases: EnumMessage

Parser for message 0x412A (FSV 2094 Heating Water Law for Auto Mode).

Enables heating water law (weather-dependent control) in auto mode operation. Allows the system to adjust water temperature based on outdoor ambient temperature.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
class InFsv2094Message(EnumMessage):
    """Parser for message 0x412A (FSV 2094 Heating Water Law for Auto Mode).

    Enables heating water law (weather-dependent control) in auto mode operation.
    Allows the system to adjust water temperature based on outdoor ambient temperature.
    """

    MESSAGE_ID = 0x412A
    MESSAGE_NAME = "FSV 2094"
    MESSAGE_ENUM = InFsv2094

InFsv3011EnableDhw

Bases: EnumMessage

Parser for message 0x4097 (FSV 3011 Enable DHW).

Enables DHW (Domestic Hot Water) operation with different control modes. Default: 1 (Yes), Range: 0-2

0 = Disable DHW 1 = DHW starts at thermo on temperature, stops at thermo off temperature 2 = DHW starts immediately, stops based on thermo off temperature

When set to 1: DHW only operates when tank temperature <= thermo on (THP ON) When set to 2: DHW operates on demand regardless of thermo on setting

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
class InFsv3011EnableDhw(EnumMessage):
    """Parser for message 0x4097 (FSV 3011 Enable DHW).

    Enables DHW (Domestic Hot Water) operation with different control modes.
    Default: 1 (Yes), Range: 0-2

    0 = Disable DHW
    1 = DHW starts at thermo on temperature, stops at thermo off temperature
    2 = DHW starts immediately, stops based on thermo off temperature

    When set to 1: DHW only operates when tank temperature <= thermo on (THP ON)
    When set to 2: DHW operates on demand regardless of thermo on setting
    """

    MESSAGE_ID = 0x4097
    MESSAGE_NAME = "FSV 3011 Enable DHW"
    MESSAGE_ENUM = InFsv3011EnableDhwEnum

InFsv3021

Bases: BasicTemperatureMessage

Parser for message 0x4260 (FSV 3021 - DHW Heat Pump Max Temperature).

Maximum water temperature available through heat pump operation (THP MAX). Default: 55°C, Range: 45-55°C

This sets the upper limit for heat pump DHW heating. Booster heater activates when target temperature exceeds this value. Thermo off/on control is based on temperature difference from this maximum.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
class InFsv3021(BasicTemperatureMessage):
    """Parser for message 0x4260 (FSV 3021 - DHW Heat Pump Max Temperature).

    Maximum water temperature available through heat pump operation (THP MAX).
    Default: 55°C, Range: 45-55°C

    This sets the upper limit for heat pump DHW heating. Booster heater activates
    when target temperature exceeds this value. Thermo off/on control is based on
    temperature difference from this maximum.
    """

    MESSAGE_ID = 0x4260
    MESSAGE_NAME = "FSV 3021 DHW Heating Mode Max"

InFsv3022

Bases: BasicTemperatureMessage

Parser for message 0x4261 (FSV 3022 - DHW Heat Pump Stop Temperature Difference).

Temperature difference determining heat pump OFF temperature. Default: 0°C, Range: 0-10°C

THP OFF = THP MAX + FSV #3022 When tank temperature reaches this point, heat pump stops DHW operation.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
class InFsv3022(BasicTemperatureMessage):
    """Parser for message 0x4261 (FSV 3022 - DHW Heat Pump Stop Temperature Difference).

    Temperature difference determining heat pump OFF temperature.
    Default: 0°C, Range: 0-10°C

    THP OFF = THP MAX + FSV #3022
    When tank temperature reaches this point, heat pump stops DHW operation.
    """

    MESSAGE_ID = 0x4261
    MESSAGE_NAME = "FSV 3022 DHW Heat Pump Stop Temperature Difference"

InFsv3023

Bases: BasicTemperatureMessage

Parser for message 0x4262 (FSV 3023 - DHW Heat Pump Start Temperature Difference).

Temperature difference determining heat pump ON temperature. Default: 5°C, Range: 5-30°C

THP ON = THP OFF - FSV #3023 When tank temperature drops below this point, heat pump restarts DHW operation. Represents hysteresis between on/off temperatures for stable control.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
class InFsv3023(BasicTemperatureMessage):
    """Parser for message 0x4262 (FSV 3023 - DHW Heat Pump Start Temperature Difference).

    Temperature difference determining heat pump ON temperature.
    Default: 5°C, Range: 5-30°C

    THP ON = THP OFF - FSV #3023
    When tank temperature drops below this point, heat pump restarts DHW operation.
    Represents hysteresis between on/off temperatures for stable control.
    """

    MESSAGE_ID = 0x4262
    MESSAGE_NAME = "FSV 3023 DHW Heat Pump Start"

InFsv3024

Bases: FloatMessage

Parser for message 0x4263 (FSV 3024 - Min Space Heating Operation Time).

Minimum time space heating must operate when both DHW and heating are requested. Default: 5 min, Range: 1-20 min

Ensures space heating receives minimum operating time during combined DHW/heating mode timer operation. Applied only when both DHW and space heating requests exist.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
class InFsv3024(FloatMessage):
    """Parser for message 0x4263 (FSV 3024 - Min Space Heating Operation Time).

    Minimum time space heating must operate when both DHW and heating are requested.
    Default: 5 min, Range: 1-20 min

    Ensures space heating receives minimum operating time during combined DHW/heating
    mode timer operation. Applied only when both DHW and space heating requests exist.
    """

    MESSAGE_ID = 0x4263
    MESSAGE_NAME = "FSV 3024 DHW Min Operating Time"
    UNIT_OF_MEASUREMENT = "min"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv3025

Bases: FloatMessage

Parser for message 0x4264 (FSV 3025 - Max DHW Operation Time).

Maximum time DHW operation can run when both DHW and space heating are requested. Default: 30 min, Range: 5-95 min

Limits DHW heating during combined DHW/heating mode timer operation. Applied only when both DHW and space heating requests exist. In single DHW operation, heating continues until target temperature is reached.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
class InFsv3025(FloatMessage):
    """Parser for message 0x4264 (FSV 3025 - Max DHW Operation Time).

    Maximum time DHW operation can run when both DHW and space heating are requested.
    Default: 30 min, Range: 5-95 min

    Limits DHW heating during combined DHW/heating mode timer operation.
    Applied only when both DHW and space heating requests exist.
    In single DHW operation, heating continues until target temperature is reached.
    """

    MESSAGE_ID = 0x4264
    MESSAGE_NAME = "FSV 3025 DHW Max Operating Time"
    UNIT_OF_MEASUREMENT = "min"
    SIGNED = False
    ARITHMETIC = 1.0
    PAYLOAD_SIZE = 2

InFsv3026

Bases: FloatMessage

Parser for message 0x4265 (FSV 3026 - Max Space Heating Operation Time).

Maximum time space heating can operate after DHW during combined mode. Default: 3 hours, Range: 0.5-10 hours

Controls duration of space heating operation following DHW mode in mode timer management. Applied only when both DHW and space heating requests exist.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
class InFsv3026(FloatMessage):
    """Parser for message 0x4265 (FSV 3026 - Max Space Heating Operation Time).

    Maximum time space heating can operate after DHW during combined mode.
    Default: 3 hours, Range: 0.5-10 hours

    Controls duration of space heating operation following DHW mode in mode timer
    management. Applied only when both DHW and space heating requests exist.
    """

    MESSAGE_ID = 0x4265
    MESSAGE_NAME = "FSV 3026 Max Space Heating Operation Time"
    UNIT_OF_MEASUREMENT = "h"
    SIGNED = False
    ARITHMETIC = 1.0
    PAYLOAD_SIZE = 2

InFsv302LouverControlMessage

Bases: EnumMessage

Parser for message 0x407B (Indoor FSV 302 Louver Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
543
544
545
546
547
548
class InFsv302LouverControlMessage(EnumMessage):
    """Parser for message 0x407B (Indoor FSV 302 Louver Control)."""

    MESSAGE_ID = 0x407B
    MESSAGE_NAME = "Indoor FSV 302 Louver Control"
    MESSAGE_ENUM = InFsv302LouverControl

InFsv302LouverValueMessage

Bases: EnumMessage

Parser for message 0x407D (Indoor FSV 302 Louver Value).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
551
552
553
554
555
556
class InFsv302LouverValueMessage(EnumMessage):
    """Parser for message 0x407D (Indoor FSV 302 Louver Value)."""

    MESSAGE_ID = 0x407D
    MESSAGE_NAME = "Indoor FSV 302 Louver Value"
    MESSAGE_ENUM = InFsv302LouverValue

InFsv302TimeScheduleMessage

Bases: EnumMessage

Parser for message 0x4085 (Indoor FSV 302 Time Schedule).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
566
567
568
569
570
571
class InFsv302TimeScheduleMessage(EnumMessage):
    """Parser for message 0x4085 (Indoor FSV 302 Time Schedule)."""

    MESSAGE_ID = 0x4085
    MESSAGE_NAME = "Indoor FSV 302 Time Schedule"
    MESSAGE_ENUM = InFsv302TimeSchedule

InFsv3031

Bases: BoolMessage

Parser for message 0x4098 (FSV 3031 - Enable Booster Heater).

Enable booster heater as additional heat source for DHW tank. Default: 1 (On), Range: 0-1

0 = Disable booster heater 1 = Enable booster heater for DHW tank heating

Booster heater activates when target temperature exceeds heat pump maximum (THP MAX). Operates with configurable delay (FSV #3032) from heat pump startup.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
class InFsv3031(BoolMessage):
    """Parser for message 0x4098 (FSV 3031 - Enable Booster Heater).

    Enable booster heater as additional heat source for DHW tank.
    Default: 1 (On), Range: 0-1

    0 = Disable booster heater
    1 = Enable booster heater for DHW tank heating

    Booster heater activates when target temperature exceeds heat pump maximum (THP MAX).
    Operates with configurable delay (FSV #3032) from heat pump startup.
    """

    MESSAGE_ID = 0x4098
    MESSAGE_NAME = "NASA_USE_BOOSTER_HEATER"

InFsv3032

Bases: FloatMessage

Parser for message 0x4266 (FSV 3032 - Booster Heater Delay Time).

Startup delay timer for booster heater DHW operation. Default: 20 min, Range: 20-95 min

Delays booster heater activation compared to heat pump when DHW is requested. In Power/Forced DHW mode, delay is bypassed and booster starts immediately. In Economic DHW mode, only heat pump operates (no booster). Must be smaller than maximum heat pump time (FSV #3025).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
class InFsv3032(FloatMessage):
    """Parser for message 0x4266 (FSV 3032 - Booster Heater Delay Time).

    Startup delay timer for booster heater DHW operation.
    Default: 20 min, Range: 20-95 min

    Delays booster heater activation compared to heat pump when DHW is requested.
    In Power/Forced DHW mode, delay is bypassed and booster starts immediately.
    In Economic DHW mode, only heat pump operates (no booster).
    Must be smaller than maximum heat pump time (FSV #3025).
    """

    MESSAGE_ID = 0x4266
    MESSAGE_NAME = "FSV 3032 Booster Heater Delay Time"
    UNIT_OF_MEASUREMENT = "min"
    SIGNED = False
    ARITHMETIC = 1.0
    PAYLOAD_SIZE = 2

InFsv3033

Bases: BasicTemperatureMessage

Parser for message 0x4267 (FSV 3033 - Booster Heater Overshoot Temperature).

Temperature difference for booster heater OFF control. Default: 0°C, Range: 0-4°C

Tbsh OFF = Target temperature + FSV #3033 Tbsh ON = Tbsh OFF - 2°C

Controls when booster heater stops operating. Higher values extend heating duration. Used only when target temperature exceeds heat pump maximum (THP MAX).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
class InFsv3033(BasicTemperatureMessage):
    """Parser for message 0x4267 (FSV 3033 - Booster Heater Overshoot Temperature).

    Temperature difference for booster heater OFF control.
    Default: 0°C, Range: 0-4°C

    Tbsh OFF = Target temperature + FSV #3033
    Tbsh ON = Tbsh OFF - 2°C

    Controls when booster heater stops operating. Higher values extend heating duration.
    Used only when target temperature exceeds heat pump maximum (THP MAX).
    """

    MESSAGE_ID = 0x4267
    MESSAGE_NAME = "FSV 3033 Booster Heater Overshoot"
    SIGNED = True

InFsv3041

Bases: BoolMessage

Parser for message 0x4099 (FSV 3041 - Enable Disinfection).

Enable periodic disinfection heating of DHW tank. Default: 1 (On), Range: 0-1

0 = Disable periodic disinfection 1 = Enable periodic disinfection cycle

When enabled, tank is automatically heated to target temperature (FSV #3044) on specified interval (FSV #3042) at configured time (FSV #3043).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
class InFsv3041(BoolMessage):
    """Parser for message 0x4099 (FSV 3041 - Enable Disinfection).

    Enable periodic disinfection heating of DHW tank.
    Default: 1 (On), Range: 0-1

    0 = Disable periodic disinfection
    1 = Enable periodic disinfection cycle

    When enabled, tank is automatically heated to target temperature (FSV #3044)
    on specified interval (FSV #3042) at configured time (FSV #3043).
    """

    MESSAGE_ID = 0x4099
    MESSAGE_NAME = "FSV 3041"

InFsv3042

Bases: EnumMessage

Parser for message 0x409A (FSV 3042 - Disinfection Interval Day).

Day of week for periodic disinfection heating cycle. Default: 5 (Friday), Range: 0-7

0 = Sunday 1 = Monday 2 = Tuesday 3 = Wednesday 4 = Thursday 5 = Friday 6 = Saturday 7 = All days (daily)

Disinfection runs on selected day at time specified in FSV #3043.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
class InFsv3042(EnumMessage):
    """Parser for message 0x409A (FSV 3042 - Disinfection Interval Day).

    Day of week for periodic disinfection heating cycle.
    Default: 5 (Friday), Range: 0-7

    0 = Sunday
    1 = Monday
    2 = Tuesday
    3 = Wednesday
    4 = Thursday
    5 = Friday
    6 = Saturday
    7 = All days (daily)

    Disinfection runs on selected day at time specified in FSV #3043.
    """

    MESSAGE_ID = 0x409A
    MESSAGE_NAME = "FSV Day of Week"
    MESSAGE_ENUM = InFsv3042DayOfWeek

InFsv3043

Bases: FloatMessage

Parser for message 0x4269 (FSV 3043 - Disinfection Start Time).

Start time for periodic disinfection heating cycle. Default: 23 (11 PM), Range: 0-23 (hour of day)

Disinfection automatically starts at this hour to heat tank to target temperature for the specified duration. Operates on schedule defined by FSV #3042 (interval).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
class InFsv3043(FloatMessage):
    """Parser for message 0x4269 (FSV 3043 - Disinfection Start Time).

    Start time for periodic disinfection heating cycle.
    Default: 23 (11 PM), Range: 0-23 (hour of day)

    Disinfection automatically starts at this hour to heat tank to target temperature
    for the specified duration. Operates on schedule defined by FSV #3042 (interval).
    """

    MESSAGE_ID = 0x4269
    MESSAGE_NAME = "FSV 3043 Disinfection Start Time"
    UNIT_OF_MEASUREMENT = "h"
    SIGNED = False
    ARITHMETIC = 1.0
    PAYLOAD_SIZE = 2

InFsv3044

Bases: BasicTemperatureMessage

Parser for message 0x426A (FSV 3044 - Disinfection Target Temperature).

Target water temperature for periodic disinfection heating cycle. Default: 70°C, Range: 40-70°C

Tank is heated to this temperature during disinfection operation. Must be maintained for duration specified in FSV #3045.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
class InFsv3044(BasicTemperatureMessage):
    """Parser for message 0x426A (FSV 3044 - Disinfection Target Temperature).

    Target water temperature for periodic disinfection heating cycle.
    Default: 70°C, Range: 40-70°C

    Tank is heated to this temperature during disinfection operation.
    Must be maintained for duration specified in FSV #3045.
    """

    MESSAGE_ID = 0x426A
    MESSAGE_NAME = "FSV 3044 Disinfection Target Temp"
    SIGNED = True

InFsv3045

Bases: FloatMessage

Parser for message 0x426B (FSV 3045 - Disinfection Duration).

Time duration that disinfection heating must maintain target temperature. Default: 10 min, Range: 5-60 min

Tank must remain at target temperature (FSV #3044) for this duration to complete disinfection cycle. Runs on schedule (FSV #3042) starting at specified time (FSV #3043).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
class InFsv3045(FloatMessage):
    """Parser for message 0x426B (FSV 3045 - Disinfection Duration).

    Time duration that disinfection heating must maintain target temperature.
    Default: 10 min, Range: 5-60 min

    Tank must remain at target temperature (FSV #3044) for this duration
    to complete disinfection cycle. Runs on schedule (FSV #3042) starting
    at specified time (FSV #3043).
    """

    MESSAGE_ID = 0x426B
    MESSAGE_NAME = "FSV 3045 Disinfection Duration"
    UNIT_OF_MEASUREMENT = "min"
    SIGNED = False
    ARITHMETIC = 1.0
    PAYLOAD_SIZE = 2

InFsv3046

Bases: FloatMessage

Parser for message 0x426E (FSV 3046 - Disinfection Max Time).

Maximum time allowed for disinfection heating cycle to complete. Default: 8 hours, Range: 1-24 hours

If target temperature is not reached within this time, disinfection cycle is terminated. Prevents excessive heating operation during disinfection.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
class InFsv3046(FloatMessage):
    """Parser for message 0x426E (FSV 3046 - Disinfection Max Time).

    Maximum time allowed for disinfection heating cycle to complete.
    Default: 8 hours, Range: 1-24 hours

    If target temperature is not reached within this time, disinfection cycle
    is terminated. Prevents excessive heating operation during disinfection.
    """

    MESSAGE_ID = 0x42CE
    MESSAGE_NAME = "FSV 3046 Disinfection Max Time"
    UNIT_OF_MEASUREMENT = "h"
    SIGNED = False
    ARITHMETIC = 1.0
    PAYLOAD_SIZE = 2

InFsv3051

Bases: BoolMessage

Parser for message 0x409B (FSV 3051 - Forced DHW Timer Function).

Enable/disable timer-based forced DHW operation. Default: 0 (No), Range: 0-1

0 = Disable forced DHW timer 1 = Enable forced DHW with duration specified in FSV #3052

When enabled, DHW operates for the set duration independent of tank temperature.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
750
751
752
753
754
755
756
757
758
759
760
761
762
763
class InFsv3051(BoolMessage):
    """Parser for message 0x409B (FSV 3051 - Forced DHW Timer Function).

    Enable/disable timer-based forced DHW operation.
    Default: 0 (No), Range: 0-1

    0 = Disable forced DHW timer
    1 = Enable forced DHW with duration specified in FSV #3052

    When enabled, DHW operates for the set duration independent of tank temperature.
    """

    MESSAGE_ID = 0x409B
    MESSAGE_NAME = "FSV 3051"

InFsv3052

Bases: FloatMessage

Parser for message 0x426C (FSV 3052 - Forced DHW Time Duration).

Duration for forced DHW operation when timer function is enabled. Default: 6 (×10 min = 60 min), Range: 3-30 (×10 min = 30-300 min)

When FSV #3051 is enabled, DHW runs for this duration in forced mode. Value is multiplied by 10 minutes (e.g., 6 = 60 minutes).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
class InFsv3052(FloatMessage):
    """Parser for message 0x426C (FSV 3052 - Forced DHW Time Duration).

    Duration for forced DHW operation when timer function is enabled.
    Default: 6 (×10 min = 60 min), Range: 3-30 (×10 min = 30-300 min)

    When FSV #3051 is enabled, DHW runs for this duration in forced mode.
    Value is multiplied by 10 minutes (e.g., 6 = 60 minutes).
    """

    MESSAGE_ID = 0x426C
    MESSAGE_NAME = "FSV 3052 Forced DHW Time Duration"
    UNIT_OF_MEASUREMENT = "min"
    SIGNED = True
    ARITHMETIC = 10.0

InFsv3061UseDhwThermostat

Bases: EnumMessage

Parser for message 0x409C (FSV 3061 - DHW Thermostat Control).

External room thermostat control for DHW operation. Default: 0 (No), Range: 0-2

0 = Disable thermostat (use wired remote controller) 1 = Thermostat only (not supported in typical installations) 2 = Combined thermostat and water law control

Note: Solar panel application (FSV #3061 = 1) not supported - requires secondary coil.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
class InFsv3061UseDhwThermostat(EnumMessage):
    """Parser for message 0x409C (FSV 3061 - DHW Thermostat Control).

    External room thermostat control for DHW operation.
    Default: 0 (No), Range: 0-2

    0 = Disable thermostat (use wired remote controller)
    1 = Thermostat only (not supported in typical installations)
    2 = Combined thermostat and water law control

    Note: Solar panel application (FSV #3061 = 1) not supported - requires secondary coil.
    """

    MESSAGE_ID = 0x409C
    MESSAGE_NAME = "FSV 3061 Use DHW Thermostat"
    MESSAGE_ENUM = InFsv3061UseDhwThermostatEnum

InFsv3071

Bases: EnumMessage

Parser for message 0x409D (FSV 3071 - 3-Way Valve Direction).

Default water flow direction for 3-way diverter valve. Default: 0 (Room), Range: 0-1

0 = Room/Space heating (water flows to heating) 1 = Tank/DHW (water flows to DHW tank)

Determines which circuit receives water flow when valve is in neutral position.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
class InFsv3071(EnumMessage):
    """Parser for message 0x409D (FSV 3071 - 3-Way Valve Direction).

    Default water flow direction for 3-way diverter valve.
    Default: 0 (Room), Range: 0-1

    0 = Room/Space heating (water flows to heating)
    1 = Tank/DHW (water flows to DHW tank)

    Determines which circuit receives water flow when valve is in neutral position.
    """

    MESSAGE_ID = 0x409D
    MESSAGE_NAME = "FSV 3071"
    MESSAGE_ENUM = InFsv3071Enum

InFsv3081

Bases: FloatMessage

Parser for message 0x42ED (FSV 3081 - BUH 1 Step Capacity).

Backup Unit Heater (BUH) 1 electric heating step capacity in kW. Default: 2 kW, Range: 1-6 kW, Step: 1 kW

Sets the heating capacity of the first auxiliary electric heater step. Used in systems without booster heater or with split heating stages. Combined with FSV 3082, provides total backup heating capacity.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
class InFsv3081(FloatMessage):
    """Parser for message 0x42ED (FSV 3081 - BUH 1 Step Capacity).

    Backup Unit Heater (BUH) 1 electric heating step capacity in kW.
    Default: 2 kW, Range: 1-6 kW, Step: 1 kW

    Sets the heating capacity of the first auxiliary electric heater step.
    Used in systems without booster heater or with split heating stages.
    Combined with FSV 3082, provides total backup heating capacity.
    """

    MESSAGE_ID = 0x42ED
    MESSAGE_NAME = "FSV 3081 BUH 1 Step Capacity"
    UNIT_OF_MEASUREMENT = "kW"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv3082

Bases: FloatMessage

Parser for message 0x42EE (FSV 3082 - BUH 2 Step Capacity).

Backup Unit Heater (BUH) 2 electric heating step capacity in kW. Default: 2 kW, Range: 0-6 kW, Step: 1 kW

Sets the heating capacity of the second auxiliary electric heater step. Can be set to 0 if second step is not required. Combined with FSV 3081 for total backup heating capacity (max 12 kW when both at 6 kW).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
class InFsv3082(FloatMessage):
    """Parser for message 0x42EE (FSV 3082 - BUH 2 Step Capacity).

    Backup Unit Heater (BUH) 2 electric heating step capacity in kW.
    Default: 2 kW, Range: 0-6 kW, Step: 1 kW

    Sets the heating capacity of the second auxiliary electric heater step.
    Can be set to 0 if second step is not required. Combined with FSV 3081
    for total backup heating capacity (max 12 kW when both at 6 kW).
    """

    MESSAGE_ID = 0x42EE
    MESSAGE_NAME = "FSV 3082 BUH 2 Step Capacity"
    UNIT_OF_MEASUREMENT = "kW"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv3083

Bases: FloatMessage

Parser for message 0x42EF (FSV 3083 - BSH Capacity).

Booster System Heater (BSH) electric heating capacity in kW. Default: 3 kW, Range: 1-6 kW, Step: 1 kW

Sets the heating capacity of the dedicated booster heater. The BSH activates when DHW tank temperature exceeds heat pump maximum (THP MAX, FSV #3021). Primary function is to reach higher DHW temperatures in heating mode.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
class InFsv3083(FloatMessage):
    """Parser for message 0x42EF (FSV 3083 - BSH Capacity).

    Booster System Heater (BSH) electric heating capacity in kW.
    Default: 3 kW, Range: 1-6 kW, Step: 1 kW

    Sets the heating capacity of the dedicated booster heater. The BSH activates
    when DHW tank temperature exceeds heat pump maximum (THP MAX, FSV #3021).
    Primary function is to reach higher DHW temperatures in heating mode.
    """

    MESSAGE_ID = 0x42EF
    MESSAGE_NAME = "FSV 3083 BSH Capacity"
    UNIT_OF_MEASUREMENT = "kW"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv4011

Bases: EnumMessage

Parser for message 0x409E (FSV 4011 - Heat/DHW Priority).

Priority mode selection for simultaneous heating and DHW demands. Default: 0 (DHW), Range: 0-1

When both space heating and DHW heating are required at the same time: - 0 (DHW): DHW takes priority, space heating delayed by mode timer (FSV #3025) - 1 (Heating): Space heating takes priority, but only when outdoor temperature is lower than the threshold temperature specified by FSV #4012

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
class InFsv4011(EnumMessage):
    """Parser for message 0x409E (FSV 4011 - Heat/DHW Priority).

    Priority mode selection for simultaneous heating and DHW demands.
    Default: 0 (DHW), Range: 0-1

    When both space heating and DHW heating are required at the same time:
    - 0 (DHW): DHW takes priority, space heating delayed by mode timer (FSV #3025)
    - 1 (Heating): Space heating takes priority, but only when outdoor temperature
      is lower than the threshold temperature specified by FSV #4012
    """

    MESSAGE_ID = 0x409E
    MESSAGE_NAME = "FSV 4011 Heat/DHW Priority"
    MESSAGE_ENUM = InFsv4011Enum

InFsv4012

Bases: BasicTemperatureMessage

Parser for message 0x426D (FSV 4012 - Outdoor Temp. for Priority).

Outdoor temperature threshold for heating priority changeover. Default: 0°C, Range: -15 to 20°C, Step: 1°C

When FSV #4011 = 1 (Heating priority), space heating only takes priority when outdoor temperature falls below this threshold. Above this temperature, DHW priority (FSV #4011 = 0) behavior is used instead.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
class InFsv4012(BasicTemperatureMessage):
    """Parser for message 0x426D (FSV 4012 - Outdoor Temp. for Priority).

    Outdoor temperature threshold for heating priority changeover.
    Default: 0°C, Range: -15 to 20°C, Step: 1°C

    When FSV #4011 = 1 (Heating priority), space heating only takes priority
    when outdoor temperature falls below this threshold. Above this temperature,
    DHW priority (FSV #4011 = 0) behavior is used instead.
    """

    MESSAGE_ID = 0x426D
    MESSAGE_NAME = "FSV 4012 Outdoor Temp for Priority"
    SIGNED = True

InFsv4013

Bases: BasicTemperatureMessage

Parser for message 0x426E (FSV 4013 - Heat OFF).

Outdoor temperature at which space heating stops. Default: 35°C, Range: 14-35°C, Step: 1°C

When outdoor temperature exceeds this threshold, the heat pump stops operating for space heating. DHW heating can still operate via booster heater (BSH) if needed. This prevents unnecessary heating operation during mild/warm weather.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
class InFsv4013(BasicTemperatureMessage):
    """Parser for message 0x426E (FSV 4013 - Heat OFF).

    Outdoor temperature at which space heating stops.
    Default: 35°C, Range: 14-35°C, Step: 1°C

    When outdoor temperature exceeds this threshold, the heat pump stops operating
    for space heating. DHW heating can still operate via booster heater (BSH) if needed.
    This prevents unnecessary heating operation during mild/warm weather.
    """

    MESSAGE_ID = 0x426E
    MESSAGE_NAME = "FSV 4013 Heat OFF Outdoor Temp"
    SIGNED = True

InFsv4021

Bases: EnumMessage

Parser for message 0x409F (FSV 4021 - Backup Heater Application).

Enables electric backup heater for space heating support. Default: 0 (No), Range: 0-2

Modes: - 0 (No): Backup heater disabled - 1 (BUH 1+2): Two-step backup heater (BUH 1 + BUH 2) for total capacity - 2 (BUH 1 only): Single-step backup heater (BUH 1) only

Backup heater provides supplementary heating below threshold temperature (FSV #4024) or during defrost mode (FSV #4025).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
class InFsv4021(EnumMessage):
    """Parser for message 0x409F (FSV 4021 - Backup Heater Application).

    Enables electric backup heater for space heating support.
    Default: 0 (No), Range: 0-2

    Modes:
    - 0 (No): Backup heater disabled
    - 1 (BUH 1+2): Two-step backup heater (BUH 1 + BUH 2) for total capacity
    - 2 (BUH 1 only): Single-step backup heater (BUH 1) only

    Backup heater provides supplementary heating below threshold temperature
    (FSV #4024) or during defrost mode (FSV #4025).
    """

    MESSAGE_ID = 0x409F
    MESSAGE_NAME = "FSV 4021 Backup Heater Application"
    MESSAGE_ENUM = InFsv4021Enum

InFsv4022

Bases: EnumMessage

Parser for message 0x40A0 (FSV 4022 - BUH/BSH Priority).

Priority selection between Booster Heater (BSH) and Backup Heater (BUH). Default: 2 (BSH), Range: 0-2

Modes: - 0 (Both): Both heaters can operate simultaneously - 1 (BUH): Backup heater has priority, booster heater idle until BUH offline - 2 (BSH): Booster heater has priority (default), backup heater only when BSH is unavailable

When BSH has priority: DHW uses booster first, backup heater assists or provides alternative when booster demand is low.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
class InFsv4022(EnumMessage):
    """Parser for message 0x40A0 (FSV 4022 - BUH/BSH Priority).

    Priority selection between Booster Heater (BSH) and Backup Heater (BUH).
    Default: 2 (BSH), Range: 0-2

    Modes:
    - 0 (Both): Both heaters can operate simultaneously
    - 1 (BUH): Backup heater has priority, booster heater idle until BUH offline
    - 2 (BSH): Booster heater has priority (default), backup heater only when BSH is unavailable

    When BSH has priority: DHW uses booster first, backup heater assists or provides
    alternative when booster demand is low.
    """

    MESSAGE_ID = 0x40A0
    MESSAGE_NAME = "FSV 4022 BUH/BSH Priority"
    MESSAGE_ENUM = InFsv4022Enum

InFsv4023

Bases: BoolMessage

Parser for message 0x40A1 (FSV 4023 - Cold Weather Compensation).

Enables backup heater operation to compensate for reduced heat pump efficiency. Default: 1 (Yes), Range: 0-1

Modes: - 0 (No): Backup heater does not operate for cold weather compensation - 1 (Yes): Backup heater activates below threshold (FSV #4024) to maintain space heating capacity when outdoor temperature is very cold

Automatic mode: Backup heater assists heat pump when outdoor temperature drops and heat pump capacity becomes insufficient.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
class InFsv4023(BoolMessage):
    """Parser for message 0x40A1 (FSV 4023 - Cold Weather Compensation).

    Enables backup heater operation to compensate for reduced heat pump efficiency.
    Default: 1 (Yes), Range: 0-1

    Modes:
    - 0 (No): Backup heater does not operate for cold weather compensation
    - 1 (Yes): Backup heater activates below threshold (FSV #4024) to maintain
      space heating capacity when outdoor temperature is very cold

    Automatic mode: Backup heater assists heat pump when outdoor temperature
    drops and heat pump capacity becomes insufficient.
    """

    MESSAGE_ID = 0x40A1
    MESSAGE_NAME = "FSV 4023 Cold Weather Compensation"

InFsv4024

Bases: BasicTemperatureMessage

Parser for message 0x4270 (FSV 4024 - Threshold Temp).

Threshold outdoor temperature for backup heater cold weather compensation. Default: 0°C, Range: -25 to 35°C, Step: 1°C

When enabled (FSV #4023 = 1), backup heater activates below this temperature to maintain space heating capacity when heat pump efficiency drops due to extremely cold outdoor conditions. Range allows flexibility for different climates.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
class InFsv4024(BasicTemperatureMessage):
    """Parser for message 0x4270 (FSV 4024 - Threshold Temp).

    Threshold outdoor temperature for backup heater cold weather compensation.
    Default: 0°C, Range: -25 to 35°C, Step: 1°C

    When enabled (FSV #4023 = 1), backup heater activates below this temperature
    to maintain space heating capacity when heat pump efficiency drops due to
    extremely cold outdoor conditions. Range allows flexibility for different climates.
    """

    MESSAGE_ID = 0x4270
    MESSAGE_NAME = "FSV 4024 Backup Heater Threshold Temp"
    SIGNED = True

InFsv4025

Bases: BasicTemperatureMessage

Parser for message 0x4271 (FSV 4025 - Defrost Backup Temp).

Water outlet temperature at which backup heater activates during defrost mode. Default: 15°C, Range: 10-55°C, Step: 5°C

During defrost operation, heat pump reverses to cooling mode (water gets cold). When water outlet temperature falls below this threshold, backup heater activates to prevent cold draft/discomfort from chilled water circulation in heating circuits. Higher values = earlier backup heater activation during defrost.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
class InFsv4025(BasicTemperatureMessage):
    """Parser for message 0x4271 (FSV 4025 - Defrost Backup Temp).

    Water outlet temperature at which backup heater activates during defrost mode.
    Default: 15°C, Range: 10-55°C, Step: 5°C

    During defrost operation, heat pump reverses to cooling mode (water gets cold).
    When water outlet temperature falls below this threshold, backup heater activates
    to prevent cold draft/discomfort from chilled water circulation in heating circuits.
    Higher values = earlier backup heater activation during defrost.
    """

    MESSAGE_ID = 0x4271
    MESSAGE_NAME = "FSV 4025 Defrost Backup Temp"
    SIGNED = True

InFsv4031

Bases: BoolMessage

Parser for message 0x40A2 (FSV 4031 - External Boiler Application).

Enables external backup boiler for space heating support. Default: 0 (No), Range: 0-1

Modes: - 0 (No): External boiler disabled - 1 (Yes): External boiler enabled as backup heat source below threshold temperature

When enabled, boiler operates independently below FSV #4033 threshold, providing alternative heating when heat pump is offline. Boiler requires autonomous operation of its own zone and pump control systems during backup mode.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
class InFsv4031(BoolMessage):
    """Parser for message 0x40A2 (FSV 4031 - External Boiler Application).

    Enables external backup boiler for space heating support.
    Default: 0 (No), Range: 0-1

    Modes:
    - 0 (No): External boiler disabled
    - 1 (Yes): External boiler enabled as backup heat source below threshold temperature

    When enabled, boiler operates independently below FSV #4033 threshold, providing
    alternative heating when heat pump is offline. Boiler requires autonomous operation
    of its own zone and pump control systems during backup mode.
    """

    MESSAGE_ID = 0x40A2
    MESSAGE_NAME = "FSV 4031 Backup Boiler Application"

InFsv4032

Bases: BoolMessage

Parser for message 0x40A3 (FSV 4032 - Boiler Priority).

Prioritizes backup boiler over heat pump for space heating. Default: 0 (No), Range: 0-1

Modes: - 0 (No): Heat pump priority (default), boiler is backup only - 1 (Yes): Boiler priority, boiler operates first below threshold, heat pump idles

When boiler has priority: External boiler system controls space heating below FSV #4033 threshold temperature. Heat pump becomes backup/supplementary source.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
class InFsv4032(BoolMessage):
    """Parser for message 0x40A3 (FSV 4032 - Boiler Priority).

    Prioritizes backup boiler over heat pump for space heating.
    Default: 0 (No), Range: 0-1

    Modes:
    - 0 (No): Heat pump priority (default), boiler is backup only
    - 1 (Yes): Boiler priority, boiler operates first below threshold, heat pump idles

    When boiler has priority: External boiler system controls space heating below
    FSV #4033 threshold temperature. Heat pump becomes backup/supplementary source.
    """

    MESSAGE_ID = 0x40A3
    MESSAGE_NAME = "FSV 4032 Boiler Priority"

InFsv4033

Bases: BasicTemperatureMessage

Parser for message 0x4272 (FSV 4033 - Boiler Threshold Temp).

Outdoor temperature at which backup boiler activates for space heating. Default: -15°C, Range: -20 to 5°C, Step: 1°C

When outdoor temperature falls below this threshold, backup boiler becomes active (if FSV #4031 = 1). Boiler release/deactivation occurs when outdoor temperature exceeds FSV #4033 + 3°C (3°C hysteresis prevents chattering).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
class InFsv4033(BasicTemperatureMessage):
    """Parser for message 0x4272 (FSV 4033 - Boiler Threshold Temp).

    Outdoor temperature at which backup boiler activates for space heating.
    Default: -15°C, Range: -20 to 5°C, Step: 1°C

    When outdoor temperature falls below this threshold, backup boiler becomes
    active (if FSV #4031 = 1). Boiler release/deactivation occurs when outdoor
    temperature exceeds FSV #4033 + 3°C (3°C hysteresis prevents chattering).
    """

    MESSAGE_ID = 0x4272
    MESSAGE_NAME = "FSV 4033 Boiler Threshold Temp"
    SIGNED = True

InFsv4041

Bases: EnumMessage

Parser for message 0x40C0 (FSV 4041 - Mixing Valve Application).

Enables and selects control mode for mixing valve installation. Default: 0 (No), Range: 0-2

Modes: - 0 (No): Mixing valve disabled/not installed - 1 (ΔT control): Valve modulates based on temperature difference target (FSV #4042, #4043) - 2 (WL control): Valve modulates based on Water Law (WL) value from control system

Mixing valve reduces excessive heat pump outlet temperature by blending hot water with return circuit water. Improves floor heating comfort and reduces energy.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
class InFsv4041(EnumMessage):
    """Parser for message 0x40C0 (FSV 4041 - Mixing Valve Application).

    Enables and selects control mode for mixing valve installation.
    Default: 0 (No), Range: 0-2

    Modes:
    - 0 (No): Mixing valve disabled/not installed
    - 1 (ΔT control): Valve modulates based on temperature difference target (FSV #4042, #4043)
    - 2 (WL control): Valve modulates based on Water Law (WL) value from control system

    Mixing valve reduces excessive heat pump outlet temperature by blending hot
    water with return circuit water. Improves floor heating comfort and reduces energy.
    """

    MESSAGE_ID = 0x40C0
    MESSAGE_NAME = "FSV 4041 Mixing Valve Application"
    MESSAGE_ENUM = InFsv4041Enum

InFsv4042

Bases: BasicTemperatureMessage

Parser for message 0x4286 (FSV 4042 - Target ΔT Heating).

Target temperature difference between supply and return for heating mode. Default: 10°C, Range: 5-15°C, Step: 1°C

When FSV #4041 = 1 (ΔT control), mixing valve maintains this temperature difference. Higher values = greater supply-return difference = less mixing. Used for underfloor heating comfort: typical 8-12°C for floor heating systems.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
class InFsv4042(BasicTemperatureMessage):
    """Parser for message 0x4286 (FSV 4042 - Target ΔT Heating).

    Target temperature difference between supply and return for heating mode.
    Default: 10°C, Range: 5-15°C, Step: 1°C

    When FSV #4041 = 1 (ΔT control), mixing valve maintains this temperature
    difference. Higher values = greater supply-return difference = less mixing.
    Used for underfloor heating comfort: typical 8-12°C for floor heating systems.
    """

    MESSAGE_ID = 0x4286
    MESSAGE_NAME = "FSV 4042 Target Delta-T Heating"
    SIGNED = True

InFsv4043

Bases: BasicTemperatureMessage

Parser for message 0x4287 (FSV 4043 - Target ΔT Cooling).

Target temperature difference between supply and return for cooling mode. Default: 10°C, Range: 5-15°C, Step: 1°C

When FSV #4041 = 1 (ΔT control), mixing valve maintains this temperature difference during cooling operation. Ensures consistent cooling circuit conditions for floor cooling comfort and system stability.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
class InFsv4043(BasicTemperatureMessage):
    """Parser for message 0x4287 (FSV 4043 - Target ΔT Cooling).

    Target temperature difference between supply and return for cooling mode.
    Default: 10°C, Range: 5-15°C, Step: 1°C

    When FSV #4041 = 1 (ΔT control), mixing valve maintains this temperature
    difference during cooling operation. Ensures consistent cooling circuit
    conditions for floor cooling comfort and system stability.
    """

    MESSAGE_ID = 0x4287
    MESSAGE_NAME = "FSV 4043 Target Delta-T Cooling"
    SIGNED = True

InFsv4044

Bases: IntegerMessage

Parser for message 0x40C1 (FSV 4044 - Control Factor).

Mixing valve response speed/aggressiveness to temperature error. Default: 2, Range: 1-5

Control factor determines how quickly valve responds to deviations from target temperature difference (FSV #4042, #4043): - 1 (Slow): Gentle, gradual response (lowest energy waste) - 2-3 (Medium): Balanced response - 4-5 (Fast): Quick, aggressive response (may cause temperature fluctuation)

Increase factor for faster control, but risk overshooting and discomfort.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
class InFsv4044(IntegerMessage):
    """Parser for message 0x40C1 (FSV 4044 - Control Factor).

    Mixing valve response speed/aggressiveness to temperature error.
    Default: 2, Range: 1-5

    Control factor determines how quickly valve responds to deviations from
    target temperature difference (FSV #4042, #4043):
    - 1 (Slow): Gentle, gradual response (lowest energy waste)
    - 2-3 (Medium): Balanced response
    - 4-5 (Fast): Quick, aggressive response (may cause temperature fluctuation)

    Increase factor for faster control, but risk overshooting and discomfort.
    """

    MESSAGE_ID = 0x40C1
    MESSAGE_NAME = "FSV 4044 Mixing Valve Control Factor"

InFsv4045

Bases: FloatMessage

Parser for message 0x4288 (FSV 4045 - Control Interval).

Time interval between mixing valve position adjustments. Default: 2 minutes, Range: 1-30 minutes, Step: 1 minute

How often the control system recalculates and adjusts mixing valve position based on temperature feedback. Shorter intervals = more responsive but more valve movement. Longer intervals = smoother operation but slower response. Typical: 1-5 minutes for stable underfloor heating operation.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
class InFsv4045(FloatMessage):
    """Parser for message 0x4288 (FSV 4045 - Control Interval).

    Time interval between mixing valve position adjustments.
    Default: 2 minutes, Range: 1-30 minutes, Step: 1 minute

    How often the control system recalculates and adjusts mixing valve position
    based on temperature feedback. Shorter intervals = more responsive but more
    valve movement. Longer intervals = smoother operation but slower response.
    Typical: 1-5 minutes for stable underfloor heating operation.
    """

    MESSAGE_ID = 0x4288
    MESSAGE_NAME = "FSV 4045 Mixing Valve Control Interval"
    UNIT_OF_MEASUREMENT = "min"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv4046

Bases: FloatMessage

Parser for message 0x4289 (FSV 4046 - Running Time).

Total time duration for mixing valve actuator full stroke operation. Default: 9 (×10 sec = 90 sec), Range: 6-24 (×10 sec = 60-240 sec) Step: 3 (×10 sec = 30 sec increments)

Specifies how long the valve actuator takes to move from fully open to fully closed (or vice versa). Typical: 90-120 seconds for proportional mixing valves. Used for calculating valve response speed and movement rate per control interval.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
class InFsv4046(FloatMessage):
    """Parser for message 0x4289 (FSV 4046 - Running Time).

    Total time duration for mixing valve actuator full stroke operation.
    Default: 9 (×10 sec = 90 sec), Range: 6-24 (×10 sec = 60-240 sec)
    Step: 3 (×10 sec = 30 sec increments)

    Specifies how long the valve actuator takes to move from fully open to fully
    closed (or vice versa). Typical: 90-120 seconds for proportional mixing valves.
    Used for calculating valve response speed and movement rate per control interval.
    """

    MESSAGE_ID = 0x4289
    MESSAGE_NAME = "FSV 4046 Mixing Valve Running Time"
    UNIT_OF_MEASUREMENT = "×10 sec"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv4051

Bases: EnumMessage

Parser for message 0x40C2 (FSV 4051 - Inverter Pump Application).

Enables variable-speed inverter pump and sets maximum PWM output level. Default: 1 (Yes/100%), Range: 0-2

Modes: - 0 (No): Inverter pump disabled, fixed-speed pump operation - 1 (Yes/100%): Inverter pump enabled, full PWM output (0-100%) - 2 (Yes/70%): Inverter pump enabled, limited PWM output (0-70% max)

Inverter pump reduces energy consumption by modulating flow based on demand. 70% mode reduces max pump speed for systems with oversized circulation capacity.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
class InFsv4051(EnumMessage):
    """Parser for message 0x40C2 (FSV 4051 - Inverter Pump Application).

    Enables variable-speed inverter pump and sets maximum PWM output level.
    Default: 1 (Yes/100%), Range: 0-2

    Modes:
    - 0 (No): Inverter pump disabled, fixed-speed pump operation
    - 1 (Yes/100%): Inverter pump enabled, full PWM output (0-100%)
    - 2 (Yes/70%): Inverter pump enabled, limited PWM output (0-70% max)

    Inverter pump reduces energy consumption by modulating flow based on demand.
    70% mode reduces max pump speed for systems with oversized circulation capacity.
    """

    MESSAGE_ID = 0x40C2
    MESSAGE_NAME = "FSV 4051 Inverter Pump Application"
    MESSAGE_ENUM = InFsv4051Enum

InFsv4052

Bases: BasicTemperatureMessage

Parser for message 0x428A (FSV 4052 - Target ΔT).

Target temperature difference between supply (Tw2) and return (Tw1) water. Default: 5°C, Range: 2-8°C, Step: 1°C

When inverter pump is enabled (FSV #4051 > 0), pump speed modulates to maintain this temperature difference. Inverter pump reduces circulation flow during partial loads to minimize energy consumption. Higher target ΔT = lower flow rate = less pump energy. Typical: 3-6°C for hydronic heating systems.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
class InFsv4052(BasicTemperatureMessage):
    """Parser for message 0x428A (FSV 4052 - Target ΔT).

    Target temperature difference between supply (Tw2) and return (Tw1) water.
    Default: 5°C, Range: 2-8°C, Step: 1°C

    When inverter pump is enabled (FSV #4051 > 0), pump speed modulates to
    maintain this temperature difference. Inverter pump reduces circulation flow
    during partial loads to minimize energy consumption. Higher target ΔT = lower
    flow rate = less pump energy. Typical: 3-6°C for hydronic heating systems.
    """

    MESSAGE_ID = 0x428A
    MESSAGE_NAME = "FSV 4052 Inverter Pump Target Delta-T"
    SIGNED = True

InFsv4053

Bases: IntegerMessage

Parser for message 0x40C3 (FSV 4053 - Control Factor).

Inverter pump response speed to temperature difference error. Default: 2, Range: 1-3

Control factor determines how quickly pump speed adjusts when actual temperature difference deviates from target (FSV #4052): - 1 (Slow): Gradual speed adjustment, stable flow - 2 (Medium): Balanced response (default) - 3 (Fast): Quick speed adjustment, responsive to load changes

Higher factor = faster response but more pump speed variations/noise.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
class InFsv4053(IntegerMessage):
    """Parser for message 0x40C3 (FSV 4053 - Control Factor).

    Inverter pump response speed to temperature difference error.
    Default: 2, Range: 1-3

    Control factor determines how quickly pump speed adjusts when actual
    temperature difference deviates from target (FSV #4052):
    - 1 (Slow): Gradual speed adjustment, stable flow
    - 2 (Medium): Balanced response (default)
    - 3 (Fast): Quick speed adjustment, responsive to load changes

    Higher factor = faster response but more pump speed variations/noise.
    """

    MESSAGE_ID = 0x40C3
    MESSAGE_NAME = "FSV 4053 Inverter Pump Control Factor"

InFsv4061Message

Bases: EnumMessage

Parser for message 0x411A (FSV 4061 - Zone Control Application).

Enables two-zone heating/cooling control via wired remote controller. Default: 0 (No), Range: 0-1

Modes: - 0 (No): Single-zone operation (zone control disabled) - 1 (Yes): Two-zone control enabled via wired remote controller as room sensor

When enabled, the MWR-WW10** wired remote controller acts as zone 1 room sensor, allowing separate temperature control for Zone 1 and Zone 2. Requires disabling external thermostat control (FSV #2091 and #2092 = 0) to avoid conflicts.

NOTE: Model MIM-E03EN supports this function. MIM-E03CN does not. When connecting to upper-level controllers, disable zone control to avoid conflicts.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
class InFsv4061Message(EnumMessage):
    """Parser for message 0x411A (FSV 4061 - Zone Control Application).

    Enables two-zone heating/cooling control via wired remote controller.
    Default: 0 (No), Range: 0-1

    Modes:
    - 0 (No): Single-zone operation (zone control disabled)
    - 1 (Yes): Two-zone control enabled via wired remote controller as room sensor

    When enabled, the MWR-WW10** wired remote controller acts as zone 1 room sensor,
    allowing separate temperature control for Zone 1 and Zone 2. Requires disabling
    external thermostat control (FSV #2091 and #2092 = 0) to avoid conflicts.

    NOTE: Model MIM-E03EN supports this function. MIM-E03CN does not.
    When connecting to upper-level controllers, disable zone control to avoid conflicts.
    """

    MESSAGE_ID = 0x411A
    MESSAGE_NAME = "FSV 4061 Zone Control Application"
    MESSAGE_ENUM = InFsv4061Enum

InFsv5011Message

Bases: FloatMessage

Parser for message 0x4273 (FSV 5011 - Water Out Temp for Cooling in Outing Mode).

Target water outlet temperature during outing mode in cooling operation. Default: 25°C, Range: 5-25°C, Step: 1°C

When outing mode is activated, the system reduces cooling capacity by setting a higher target water outlet temperature. This prevents unnecessary system operation during extended absence, reducing energy consumption while maintaining equipment protection.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
class InFsv5011Message(FloatMessage):
    """Parser for message 0x4273 (FSV 5011 - Water Out Temp for Cooling in Outing Mode).

    Target water outlet temperature during outing mode in cooling operation.
    Default: 25°C, Range: 5-25°C, Step: 1°C

    When outing mode is activated, the system reduces cooling capacity by setting a higher
    target water outlet temperature. This prevents unnecessary system operation during
    extended absence, reducing energy consumption while maintaining equipment protection.

    Related: FSV #5012 (room temp cooling), FSV #5013 (water temp heating),
            FSV #5014 (room temp heating).
    """

    MESSAGE_ID = 0x4273
    MESSAGE_NAME = "Outing Mode Water Out Temp (Cooling)"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5012Message

Bases: FloatMessage

Parser for message 0x4274 (FSV 5012 - Room Temperature for Cooling in Outing Mode).

Target room temperature during outing mode in cooling operation. Default: 30°C, Range: 18-30°C, Step: 1°C

When outing mode is activated, the system reduces cooling by setting a higher target room temperature. This relaxed temperature setpoint combined with higher water outlet temperature (FSV #5011) minimizes system runtime during extended absence.

For energy-conscious users, higher values (28-30°C) reduce energy consumption while preventing heat accumulation in the home.

Related: FSV #5011 (water temp cooling), FSV #5013/5014 (heating temps).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
class InFsv5012Message(FloatMessage):
    """Parser for message 0x4274 (FSV 5012 - Room Temperature for Cooling in Outing Mode).

    Target room temperature during outing mode in cooling operation.
    Default: 30°C, Range: 18-30°C, Step: 1°C

    When outing mode is activated, the system reduces cooling by setting a higher target
    room temperature. This relaxed temperature setpoint combined with higher water outlet
    temperature (FSV #5011) minimizes system runtime during extended absence.

    For energy-conscious users, higher values (28-30°C) reduce energy consumption while
    preventing heat accumulation in the home.

    Related: FSV #5011 (water temp cooling), FSV #5013/5014 (heating temps).
    """

    MESSAGE_ID = 0x4274
    MESSAGE_NAME = "Outing Mode Room Temp (Cooling)"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5013Message

Bases: FloatMessage

Parser for message 0x4275 (FSV 5013 - Water Out Temp for Heating in Outing Mode).

Target water outlet temperature during outing mode in heating operation. Default: 15°C, Range: 15-55°C, Step: 1°C

When outing mode is activated during winter/heating season, the system reduces heating capacity by setting a lower target water outlet temperature. Prevents overheating during extended absence while maintaining frost protection for the system.

Lower values (15-20°C) provide minimal heating energy while protecting the home and equipment. System may circulate water periodically for freeze protection.

Related: FSV #5014 (room temp heating), FSV #5011/5012 (cooling temps).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
class InFsv5013Message(FloatMessage):
    """Parser for message 0x4275 (FSV 5013 - Water Out Temp for Heating in Outing Mode).

    Target water outlet temperature during outing mode in heating operation.
    Default: 15°C, Range: 15-55°C, Step: 1°C

    When outing mode is activated during winter/heating season, the system reduces heating
    capacity by setting a lower target water outlet temperature. Prevents overheating during
    extended absence while maintaining frost protection for the system.

    Lower values (15-20°C) provide minimal heating energy while protecting the home and
    equipment. System may circulate water periodically for freeze protection.

    Related: FSV #5014 (room temp heating), FSV #5011/5012 (cooling temps).
    """

    MESSAGE_ID = 0x4275
    MESSAGE_NAME = "Outing Mode Water Out Temp (Heating)"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5014Message

Bases: FloatMessage

Parser for message 0x4276 (FSV 5014 - Room Temperature for Heating in Outing Mode).

Target room temperature during outing mode in heating operation. Default: 16°C, Range: 16-30°C, Step: 1°C

When outing mode is activated during heating season, the system reduces heating by setting a lower target room temperature. Combined with lower water outlet temperature (FSV #5013), this minimizes heating system runtime during extended absence while maintaining frost protection (typically 16°C is above freeze threshold).

Balances energy savings with protection: 16-18°C provides freeze protection while reducing heating costs substantially compared to normal operation.

Related: FSV #5013 (water temp heating), FSV #5011/5012 (cooling temps).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
class InFsv5014Message(FloatMessage):
    """Parser for message 0x4276 (FSV 5014 - Room Temperature for Heating in Outing Mode).

    Target room temperature during outing mode in heating operation.
    Default: 16°C, Range: 16-30°C, Step: 1°C

    When outing mode is activated during heating season, the system reduces heating by
    setting a lower target room temperature. Combined with lower water outlet temperature
    (FSV #5013), this minimizes heating system runtime during extended absence while
    maintaining frost protection (typically 16°C is above freeze threshold).

    Balances energy savings with protection: 16-18°C provides freeze protection while
    reducing heating costs substantially compared to normal operation.

    Related: FSV #5013 (water temp heating), FSV #5011/5012 (cooling temps).
    """

    MESSAGE_ID = 0x4276
    MESSAGE_NAME = "Outing Mode Room Temp (Heating)"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5015Message

Bases: FloatMessage

Parser for message 0x4277 (FSV 5015 - Auto Cooling WL1 Water Temp in Outing Mode).

Water Law 1 (WL1) target water outlet temperature during auto cooling in outing mode. Default: 25°C, Range: 5-25°C, Step: 1°C

When outing mode and auto cooling are both active, the system uses Water Law curve (adjusting water temp based on outdoor temp) but limits it to this maximum value. For WL1 (outdoor temp -5°C to 20°C), prevents excessive cooling during absence.

This parameter constrains the automatic water temperature calculation to prevent overshooting during outing periods. Values match FSV #5011 semantics (high water temp = reduced cooling). WL1 typically covers mild/moderate outdoor conditions.

Related: FSV #5016 (WL2 auto cool), FSV #5017/5018 (auto heating WL1/WL2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
class InFsv5015Message(FloatMessage):
    """Parser for message 0x4277 (FSV 5015 - Auto Cooling WL1 Water Temp in Outing Mode).

    Water Law 1 (WL1) target water outlet temperature during auto cooling in outing mode.
    Default: 25°C, Range: 5-25°C, Step: 1°C

    When outing mode and auto cooling are both active, the system uses Water Law curve
    (adjusting water temp based on outdoor temp) but limits it to this maximum value.
    For WL1 (outdoor temp -5°C to 20°C), prevents excessive cooling during absence.

    This parameter constrains the automatic water temperature calculation to prevent
    overshooting during outing periods. Values match FSV #5011 semantics (high water temp
    = reduced cooling). WL1 typically covers mild/moderate outdoor conditions.

    Related: FSV #5016 (WL2 auto cool), FSV #5017/5018 (auto heating WL1/WL2).
    """

    MESSAGE_ID = 0x4277
    MESSAGE_NAME = "Outing Mode Auto Cool WL1 Water Temp"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5016Message

Bases: FloatMessage

Parser for message 0x4278 (FSV 5016 - Auto Cooling WL2 Water Temp in Outing Mode).

Water Law 2 (WL2) target water outlet temperature during auto cooling in outing mode. Default: 25°C, Range: 5-25°C, Step: 1°C

When outing mode and auto cooling are active, system uses Water Law curve limited to this maximum value for WL2 (outdoor temp ≥20°C). Prevents excessive cooling during extended absence in warmer conditions.

WL2 typically covers moderate to warm outdoor conditions (≥20°C). This parameter maintains consistency with FSV #5015 for different outdoor temp ranges, ensuring outing mode energy savings across all seasons.

For dual-stage cooling systems, both WL1 and WL2 can be active simultaneously depending on outdoor temperature region. Outing mode dampens both to save energy.

Related: FSV #5015 (WL1 auto cool), FSV #5017/5018 (auto heating WL1/WL2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
class InFsv5016Message(FloatMessage):
    """Parser for message 0x4278 (FSV 5016 - Auto Cooling WL2 Water Temp in Outing Mode).

    Water Law 2 (WL2) target water outlet temperature during auto cooling in outing mode.
    Default: 25°C, Range: 5-25°C, Step: 1°C

    When outing mode and auto cooling are active, system uses Water Law curve limited to
    this maximum value for WL2 (outdoor temp ≥20°C). Prevents excessive cooling during
    extended absence in warmer conditions.

    WL2 typically covers moderate to warm outdoor conditions (≥20°C). This parameter
    maintains consistency with FSV #5015 for different outdoor temp ranges, ensuring
    outing mode energy savings across all seasons.

    For dual-stage cooling systems, both WL1 and WL2 can be active simultaneously
    depending on outdoor temperature region. Outing mode dampens both to save energy.

    Related: FSV #5015 (WL1 auto cool), FSV #5017/5018 (auto heating WL1/WL2).
    """

    MESSAGE_ID = 0x4278
    MESSAGE_NAME = "Outing Mode Auto Cool WL2 Water Temp"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5017Message

Bases: FloatMessage

Parser for message 0x4279 (FSV 5017 - Auto Heating WL1 Water Temp in Outing Mode).

Water Law 1 (WL1) target water outlet temperature during auto heating in outing mode. Default: 15°C, Range: 15-55°C, Step: 1°C

When outing mode and auto heating are active, system uses Water Law curve (adjusting water temp based on outdoor temp) limited to this minimum value for WL1 (outdoor temp -5°C to 20°C). Reduces heating capacity during extended absence.

WL1 covers cold to mild outdoor conditions. Lower water temperature reduces heating energy while maintaining frost protection. System circulates periodically for equipment protection even at reduced temperature setting.

Auto heating mode dynamically adjusts water temperature based on outdoor conditions, but FSV #5017 prevents excessive heating during outing periods. Particularly important for preventing unnecessary heating on mild winter days during absence.

Related: FSV #5018 (WL2 auto heat), FSV #5015/5016 (auto cooling WL1/WL2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
class InFsv5017Message(FloatMessage):
    """Parser for message 0x4279 (FSV 5017 - Auto Heating WL1 Water Temp in Outing Mode).

    Water Law 1 (WL1) target water outlet temperature during auto heating in outing mode.
    Default: 15°C, Range: 15-55°C, Step: 1°C

    When outing mode and auto heating are active, system uses Water Law curve (adjusting
    water temp based on outdoor temp) limited to this minimum value for WL1 (outdoor temp
    -5°C to 20°C). Reduces heating capacity during extended absence.

    WL1 covers cold to mild outdoor conditions. Lower water temperature reduces heating
    energy while maintaining frost protection. System circulates periodically for equipment
    protection even at reduced temperature setting.

    Auto heating mode dynamically adjusts water temperature based on outdoor conditions,
    but FSV #5017 prevents excessive heating during outing periods. Particularly important
    for preventing unnecessary heating on mild winter days during absence.

    Related: FSV #5018 (WL2 auto heat), FSV #5015/5016 (auto cooling WL1/WL2).
    """

    MESSAGE_ID = 0x4279
    MESSAGE_NAME = "Outing Mode Auto Heat WL1 Water Temp"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5018Message

Bases: FloatMessage

Parser for message 0x427A (FSV 5018 - Auto Heating WL2 Water Temp in Outing Mode).

Water Law 2 (WL2) target water outlet temperature during auto heating in outing mode. Default: 15°C, Range: 15-55°C, Step: 1°C

When outing mode and auto heating are active, system uses Water Law curve limited to this minimum value for WL2 (outdoor temp ≥20°C, moderate to warm conditions). Reduces heating during extended absence even in warmer winter weather.

WL2 covers moderate/warm outdoor conditions. Though heating demand is typically lower in these conditions, outing mode still constrains the Water Law calculation to prevent any unnecessary system operation. Maintains consistent energy-saving behavior across all outdoor temperature ranges.

For systems with dual outdoor temperature zones (WL1/WL2), both regions are covered by outing mode restrictions. This ensures predictable energy savings regardless of current outdoor temperature. Minimum 15°C protects against freeze conditions.

Related: FSV #5017 (WL1 auto heat), FSV #5015/5016 (auto cooling WL1/WL2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
class InFsv5018Message(FloatMessage):
    """Parser for message 0x427A (FSV 5018 - Auto Heating WL2 Water Temp in Outing Mode).

    Water Law 2 (WL2) target water outlet temperature during auto heating in outing mode.
    Default: 15°C, Range: 15-55°C, Step: 1°C

    When outing mode and auto heating are active, system uses Water Law curve limited to
    this minimum value for WL2 (outdoor temp ≥20°C, moderate to warm conditions).
    Reduces heating during extended absence even in warmer winter weather.

    WL2 covers moderate/warm outdoor conditions. Though heating demand is typically lower
    in these conditions, outing mode still constrains the Water Law calculation to prevent
    any unnecessary system operation. Maintains consistent energy-saving behavior across
    all outdoor temperature ranges.

    For systems with dual outdoor temperature zones (WL1/WL2), both regions are covered
    by outing mode restrictions. This ensures predictable energy savings regardless of
    current outdoor temperature. Minimum 15°C protects against freeze conditions.

    Related: FSV #5017 (WL1 auto heat), FSV #5015/5016 (auto cooling WL1/WL2).
    """

    MESSAGE_ID = 0x427A
    MESSAGE_NAME = "Outing Mode Auto Heat WL2 Water Temp"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5019Message

Bases: FloatMessage

Parser for message 0x427B (FSV 5019 - Target Tank Temperature in Outing Mode).

DHW tank temperature setpoint during outing mode. Default: 30°C, Range: 30-70°C, Step: 1°C

When outing mode is active, the system reduces DHW (Domestic Hot Water) heating to this lower temperature. Lower tank temperature reduces standby losses and heating time, saving energy during extended absence while ensuring some hot water availability if occupants return unexpectedly.

Default 30°C provides minimal heating (tank won't freeze, has some warm water) while consuming significantly less energy than normal operation (typically 45-55°C). For extended holidays, minimum value (30°C) maximizes savings. For weekend trips, slightly higher values (35-40°C) provide more convenient hot water if residents return early.

Smart scheduling: Can combine outing mode timing with FSV #5022 (DHW Saving mode) for layered energy savings. Outing mode reduces tank temp during absence; DHW Saving mode reduces it further during off-peak hours when occupied.

Related: FSV #5022 (DHW Saving mode), FSV #3051 (DHW timer), FSV #3001 (DHW ON/OFF).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
class InFsv5019Message(FloatMessage):
    """Parser for message 0x427B (FSV 5019 - Target Tank Temperature in Outing Mode).

    DHW tank temperature setpoint during outing mode.
    Default: 30°C, Range: 30-70°C, Step: 1°C

    When outing mode is active, the system reduces DHW (Domestic Hot Water) heating to
    this lower temperature. Lower tank temperature reduces standby losses and heating time,
    saving energy during extended absence while ensuring some hot water availability if
    occupants return unexpectedly.

    Default 30°C provides minimal heating (tank won't freeze, has some warm water) while
    consuming significantly less energy than normal operation (typically 45-55°C). For
    extended holidays, minimum value (30°C) maximizes savings. For weekend trips, slightly
    higher values (35-40°C) provide more convenient hot water if residents return early.

    Smart scheduling: Can combine outing mode timing with FSV #5022 (DHW Saving mode)
    for layered energy savings. Outing mode reduces tank temp during absence; DHW Saving
    mode reduces it further during off-peak hours when occupied.

    Related: FSV #5022 (DHW Saving mode), FSV #3051 (DHW timer), FSV #3001 (DHW ON/OFF).
    """

    MESSAGE_ID = 0x427B
    MESSAGE_NAME = "Outing Mode Target Tank Temp"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = True
    ARITHMETIC = 1.0

InFsv5021

Bases: FloatMessage

Parser for message 0x427C (FSV 5021 - DHW Saving Temp).

Temperature reduction offset for DHW energy saving mode. Default: 5°C, Range: 0-40°C, Step: 1°C

In DHW Saving (Eco) mode, the system reduces the target DHW temperature by this offset. For example: User sets 45°C, system targets 45°C - 5°C = 40°C for energy saving. Reduces energy consumption while still providing sufficient hot water.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
class InFsv5021(FloatMessage):
    """Parser for message 0x427C (FSV 5021 - DHW Saving Temp).

    Temperature reduction offset for DHW energy saving mode.
    Default: 5°C, Range: 0-40°C, Step: 1°C

    In DHW Saving (Eco) mode, the system reduces the target DHW temperature by this offset.
    For example: User sets 45°C, system targets 45°C - 5°C = 40°C for energy saving.
    Reduces energy consumption while still providing sufficient hot water.
    """

    MESSAGE_ID = 0x427C
    MESSAGE_NAME = "FSV 5021 DHW Saving Temp Offset"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv5022

Bases: EnumMessage

Parser for message 0x4128 (FSV 5022 - DHW Saving Mode).

Selects DHW energy saving mode operation type. Default: 0, Range: 0-1

Modes: - 0 (Standard): DHW Saving Temp offset (FSV #5021) active, thermostat off until offset - 1 (Advanced): Custom thermo on temperature (FSV #5023) enables earlier heating restart

In Eco mode of wired remote controller, system reduces target DHW temperature by FSV #5021 offset. Mode 1 allows setting custom thermo activation point (FSV #5023) for more precise energy saving control. Mode 0 (default) provides simpler operation.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
class InFsv5022(EnumMessage):
    """Parser for message 0x4128 (FSV 5022 - DHW Saving Mode).

    Selects DHW energy saving mode operation type.
    Default: 0, Range: 0-1

    Modes:
    - 0 (Standard): DHW Saving Temp offset (FSV #5021) active, thermostat off until offset
    - 1 (Advanced): Custom thermo on temperature (FSV #5023) enables earlier heating restart

    In Eco mode of wired remote controller, system reduces target DHW temperature
    by FSV #5021 offset. Mode 1 allows setting custom thermo activation point (FSV #5023)
    for more precise energy saving control. Mode 0 (default) provides simpler operation.
    """

    MESSAGE_ID = 0x4128
    MESSAGE_NAME = "FSV 5022 DHW Saving Mode"
    MESSAGE_ENUM = InFsv5022Enum

InFsv5023

Bases: FloatMessage

Parser for message 0x42F0 (FSV 5023 - DHW Saving Thermo on Temp).

Temperature threshold for heating activation in DHW saving mode. Default: 25°C, Range: 0-40°C, Step: 1°C

Sets the water temperature at which thermostat heating turns on during DHW Saving mode. When water cools below this temperature in Eco mode, heat pump activates. Lower values = less frequent heating operation = more energy saving.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
class InFsv5023(FloatMessage):
    """Parser for message 0x42F0 (FSV 5023 - DHW Saving Thermo on Temp).

    Temperature threshold for heating activation in DHW saving mode.
    Default: 25°C, Range: 0-40°C, Step: 1°C

    Sets the water temperature at which thermostat heating turns on during DHW Saving mode.
    When water cools below this temperature in Eco mode, heat pump activates.
    Lower values = less frequent heating operation = more energy saving.
    """

    MESSAGE_ID = 0x42F0
    MESSAGE_NAME = "FSV 5023 DHW Saving Thermo On Temp"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = False
    ARITHMETIC = 1.0

InFsv5033Message

Bases: EnumMessage

Parser for message 0x4107 (FSV 5033 - TDM Priority A2A vs DHW).

Priority control when both air-to-air and DHW heating compete for capacity. Default: 0 (A2A priority), Range: 0-1

TDM (Time Division Mode) switches between different operating modes to serve multiple heating zones. When a system has both space heating (CH = Central Heating) and hot water demands simultaneously, this FSV determines which system gets priority time.

  • Value 0 (A2A Priority): Space heating via indoor unit heat exchanger prioritized
  • Value 1 (DHW Priority): Domestic hot water tank heating prioritized

Selection depends on user comfort needs: Active heating zones require more continuous operation than DHW, which can tolerate periodic heating. In systems with passive radiators, DHW priority works well. In systems with active A2A zones, A2A priority is more comfortable for occupants.

Related: FSV #5061 (CH/DHW supply ratio for systems with simultaneous operation).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
class InFsv5033Message(EnumMessage):
    """Parser for message 0x4107 (FSV 5033 - TDM Priority A2A vs DHW).

    Priority control when both air-to-air and DHW heating compete for capacity.
    Default: 0 (A2A priority), Range: 0-1

    TDM (Time Division Mode) switches between different operating modes to serve multiple
    heating zones. When a system has both space heating (CH = Central Heating) and hot water
    demands simultaneously, this FSV determines which system gets priority time.

    - Value 0 (A2A Priority): Space heating via indoor unit heat exchanger prioritized
    - Value 1 (DHW Priority): Domestic hot water tank heating prioritized

    Selection depends on user comfort needs: Active heating zones require more continuous
    operation than DHW, which can tolerate periodic heating. In systems with passive
    radiators, DHW priority works well. In systems with active A2A zones, A2A priority
    is more comfortable for occupants.

    Related: FSV #5061 (CH/DHW supply ratio for systems with simultaneous operation).
    """

    MESSAGE_ID = 0x4107
    MESSAGE_NAME = "TDM Priority (A2A vs DHW)"
    MESSAGE_ENUM = InFsv5033

InFsv5041

Bases: BoolMessage

Parser for message 0x40A4 (FSV 5041 - Power Peak Control Application).

Enables Power Peak Control function for demand limiting via external input signal. Default: 0 (No), Range: 0-1

Modes: - 0 (No): Power Peak Control disabled - 1 (Yes): Power Peak Control enabled

When enabled, accepts external signal (input contact) from power company to reduce system load during power surges. System enters forced off mode (Thermo off) for selected components (FSV #5042) when signal is received. Signal type determined by FSV #5043 (High/Low). Typical power company demand limit functionality.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
class InFsv5041(BoolMessage):
    """Parser for message 0x40A4 (FSV 5041 - Power Peak Control Application).

    Enables Power Peak Control function for demand limiting via external input signal.
    Default: 0 (No), Range: 0-1

    Modes:
    - 0 (No): Power Peak Control disabled
    - 1 (Yes): Power Peak Control enabled

    When enabled, accepts external signal (input contact) from power company to reduce
    system load during power surges. System enters forced off mode (Thermo off) for
    selected components (FSV #5042) when signal is received. Signal type determined
    by FSV #5043 (High/Low). Typical power company demand limit functionality.
    """

    MESSAGE_ID = 0x40A4
    MESSAGE_NAME = "FSV 5041 Power Peak Control Application"

InFsv5042

Bases: IntegerMessage

Parser for message 0x40A5 (FSV 5042 - Select Forced Off Parts).

Selects which system components are forced off during Power Peak Control. Default: 0 (All off), Range: 0-3

When external power limit signal is received (FSV #5041 = 1): - 0 (All): Booster heater OFF, Backup heater OFF, Compressor ON - 1 (Booster): Booster heater OFF, Backup heater OFF, Compressor ON - 2 (Backup): Backup heater OFF, Booster heater ON, Compressor ON - 3 (All): Booster heater OFF, Backup heater OFF, Compressor OFF

Allows flexible load shedding during power surges from utility grid.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
class InFsv5042(IntegerMessage):
    """Parser for message 0x40A5 (FSV 5042 - Select Forced Off Parts).

    Selects which system components are forced off during Power Peak Control.
    Default: 0 (All off), Range: 0-3

    When external power limit signal is received (FSV #5041 = 1):
    - 0 (All): Booster heater OFF, Backup heater OFF, Compressor ON
    - 1 (Booster): Booster heater OFF, Backup heater OFF, Compressor ON
    - 2 (Backup): Backup heater OFF, Booster heater ON, Compressor ON
    - 3 (All): Booster heater OFF, Backup heater OFF, Compressor OFF

    Allows flexible load shedding during power surges from utility grid.
    """

    MESSAGE_ID = 0x40A5
    MESSAGE_NAME = "FSV 5042 Power Peak Control Forced Off Parts"

InFsv5043

Bases: BoolMessage

Parser for message 0x40A6 (FSV 5043 - Using Input Voltage).

Selects input signal type for Power Peak Control. Default: 1 (High), Range: 0-1

Modes: - 0 (Low): Low input signal (voltage not applied triggers forced off) - 1 (High): High input signal (voltage applied triggers forced off)

When signal matches configured level, system enters forced off mode according to FSV #5042. Adapts to different power company signaling requirements.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
class InFsv5043(BoolMessage):
    """Parser for message 0x40A6 (FSV 5043 - Using Input Voltage).

    Selects input signal type for Power Peak Control.
    Default: 1 (High), Range: 0-1

    Modes:
    - 0 (Low): Low input signal (voltage not applied triggers forced off)
    - 1 (High): High input signal (voltage applied triggers forced off)

    When signal matches configured level, system enters forced off mode according to FSV #5042.
    Adapts to different power company signaling requirements.
    """

    MESSAGE_ID = 0x40A6
    MESSAGE_NAME = "FSV 5043 Power Peak Control Input Voltage Type"

InFsv5051

Bases: BoolMessage

Parser for message 0x40A7 (FSV 5051 - Frequency Ratio Control).

Enables external compressor frequency control for demand limiting. Default: 0 (Disable), Range: 0-1

Modes: - 0 (Disable): Frequency ratio control disabled - 1 (Use): Frequency ratio control enabled

When enabled, accepts external DC signal (0-10V) or Modbus communication to limit compressor frequency between 50-150% of normal operation. Prevents grid overload during peak demand periods. Maps DC voltage to frequency ratio: 0V=50%, 5V=100%, 10V=150% with intermediate 10% steps.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
class InFsv5051(BoolMessage):
    """Parser for message 0x40A7 (FSV 5051 - Frequency Ratio Control).

    Enables external compressor frequency control for demand limiting.
    Default: 0 (Disable), Range: 0-1

    Modes:
    - 0 (Disable): Frequency ratio control disabled
    - 1 (Use): Frequency ratio control enabled

    When enabled, accepts external DC signal (0-10V) or Modbus communication to limit
    compressor frequency between 50-150% of normal operation. Prevents grid overload
    during peak demand periods. Maps DC voltage to frequency ratio:
    0V=50%, 5V=100%, 10V=150% with intermediate 10% steps.
    """

    MESSAGE_ID = 0x40A7
    MESSAGE_NAME = "FSV 5051 Frequency Ratio Control"

InFsv5061Message

Bases: EnumMessage

Parser for message 0x40B4 (FSV 5061 - CH/DHW Supply Ratio).

Controls the heat supply ratio between space heating (CH) and domestic hot water (DHW). Default: 4 (1:1 balanced ratio), Range: 1-7

Determines energy distribution when both CH (space heating) and DHW demands exist simultaneously. The heat pump prioritizes one system over the other based on this ratio.

Ratio meanings: - Value 1: Maximum DHW priority (1 part CH, 7 parts DHW) - Value 2: 2/5 CH, 5/7 DHW - Value 3: 3/7 CH, 4/7 DHW - Value 4: Balanced 4/7 CH, 3/7 DHW (default, slightly CH-favoring) - Value 5: 5/7 CH, 2/7 DHW - Value 6: 6/7 CH, 1/7 DHW - Value 7: Maximum CH priority (7 parts CH, 0 parts DHW)

Practical usage: For homes with radiant heating, higher ratios (5-7) ensure room comfort. For homes relying on DHW for comfort and heating, lower ratios (1-3) ensure hot water availability. Balanced ratio (4) suits general applications.

Note: Different from FSV #5033 (TDM priority), which determines timing in sequential operation. FSV #5061 controls energy split when simultaneous operation occurs.

Related: FSV #5033 (TDM priority for sequential operation).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
class InFsv5061Message(EnumMessage):
    """Parser for message 0x40B4 (FSV 5061 - CH/DHW Supply Ratio).

    Controls the heat supply ratio between space heating (CH) and domestic hot water (DHW).
    Default: 4 (1:1 balanced ratio), Range: 1-7

    Determines energy distribution when both CH (space heating) and DHW demands exist
    simultaneously. The heat pump prioritizes one system over the other based on this ratio.

    Ratio meanings:
    - Value 1: Maximum DHW priority (1 part CH, 7 parts DHW)
    - Value 2: 2/5 CH, 5/7 DHW
    - Value 3: 3/7 CH, 4/7 DHW
    - Value 4: Balanced 4/7 CH, 3/7 DHW (default, slightly CH-favoring)
    - Value 5: 5/7 CH, 2/7 DHW
    - Value 6: 6/7 CH, 1/7 DHW
    - Value 7: Maximum CH priority (7 parts CH, 0 parts DHW)

    Practical usage: For homes with radiant heating, higher ratios (5-7) ensure room
    comfort. For homes relying on DHW for comfort and heating, lower ratios (1-3) ensure
    hot water availability. Balanced ratio (4) suits general applications.

    Note: Different from FSV #5033 (TDM priority), which determines timing in sequential
    operation. FSV #5061 controls energy split when simultaneous operation occurs.

    Related: FSV #5033 (TDM priority for sequential operation).
    """

    MESSAGE_ID = 0x40B4
    MESSAGE_NAME = "CH/DHW Supply Ratio"
    MESSAGE_ENUM = InFsv5061

InFsv5081Message

Bases: BoolMessage

Parser for message 0x411B (FSV 5081 - PV Control Application).

Enables/disables automatic optimization for photovoltaic (solar) energy usage. Default: 0 (Disabled), Range: 0-1

PV Control automatically adjusts heating and cooling setpoints based on solar generation to maximize use of free solar energy and reduce grid consumption.

  • Value 0: PV control disabled; system operates normally
  • Value 1: PV control enabled; system adjusts setpoints based on PV generation signal

When enabled: - During high PV generation (cooling needed): System reduces cooling setpoints (increases room/water temps) by FSV #5082, reducing cooling capacity needed

  • During high PV generation (heating needed): System increases heating setpoints (increases room/water temps) by FSV #5083, shifting heat pump load to sunny periods

External signal source: Modbus, M-Bus, or on/off relay from PV inverter/monitoring system. Signal indicates available solar surplus that can be utilized immediately.

Energy-saving benefit: Typically 5-10% additional efficiency by shifting electric loads toward high-sun periods. Combines with FSV #5091 (Smart Grid) for comprehensive demand-side management and renewable integration.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
class InFsv5081Message(BoolMessage):
    """Parser for message 0x411B (FSV 5081 - PV Control Application).

    Enables/disables automatic optimization for photovoltaic (solar) energy usage.
    Default: 0 (Disabled), Range: 0-1

    PV Control automatically adjusts heating and cooling setpoints based on solar
    generation to maximize use of free solar energy and reduce grid consumption.

    - Value 0: PV control disabled; system operates normally
    - Value 1: PV control enabled; system adjusts setpoints based on PV generation signal

    When enabled:
    - During high PV generation (cooling needed): System reduces cooling setpoints
      (increases room/water temps) by FSV #5082, reducing cooling capacity needed

    - During high PV generation (heating needed): System increases heating setpoints
      (increases room/water temps) by FSV #5083, shifting heat pump load to sunny periods

    External signal source: Modbus, M-Bus, or on/off relay from PV inverter/monitoring system.
    Signal indicates available solar surplus that can be utilized immediately.

    Energy-saving benefit: Typically 5-10% additional efficiency by shifting electric
    loads toward high-sun periods. Combines with FSV #5091 (Smart Grid) for comprehensive
    demand-side management and renewable integration.

    Related: FSV #5082 (cooling temp shift), FSV #5083 (heating temp shift),
            FSV #5091 (smart grid control).
    """

    MESSAGE_ID = 0x411B
    MESSAGE_NAME = "PV Control Application"

InFsv5082

Bases: FloatMessage

Parser for message 0x42DB (FSV 5082 - Setting Temp. Shift Value Cool).

Temperature reduction offset during PV solar generation mode (cooling). Default: 1°C, Range: 0-5°C, Step: 0.5°C

When PV panels generate surplus solar energy, system reduces cooling setpoints by this offset to utilize the free energy: - Room sensor: Current value - FSV #5082 (Min = FSV #1022) - Water outlet: Current value - FSV #5082 (Min = FSV #1012) - Water Law: Current value - FSV #5082 (Min = FSV #2061/2062/2071/2072)

Except DHW mode, only active during outing mode.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
class InFsv5082(FloatMessage):
    """Parser for message 0x42DB (FSV 5082 - Setting Temp. Shift Value Cool).

    Temperature reduction offset during PV solar generation mode (cooling).
    Default: 1°C, Range: 0-5°C, Step: 0.5°C

    When PV panels generate surplus solar energy, system reduces cooling setpoints
    by this offset to utilize the free energy:
    - Room sensor: Current value - FSV #5082 (Min = FSV #1022)
    - Water outlet: Current value - FSV #5082 (Min = FSV #1012)
    - Water Law: Current value - FSV #5082 (Min = FSV #2061/2062/2071/2072)

    Except DHW mode, only active during outing mode.
    """

    MESSAGE_ID = 0x42DB
    MESSAGE_NAME = "FSV 5082 PV Control Cool Temp Shift"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = False
    ARITHMETIC = 0.5

InFsv5083

Bases: FloatMessage

Parser for message 0x42DC (FSV 5083 - Setting Temp. Shift Value Heat).

Temperature increase offset during PV solar generation mode (heating). Default: 1°C, Range: 0-5°C, Step: 0.5°C

When PV panels generate surplus solar energy, system raises heating setpoints by this offset to utilize the free energy: - Room sensor: Current value + FSV #5083 (Max = FSV #1041) - Water outlet: Current value + FSV #5083 (Max = FSV #1031) - Water Law: Current value + FSV #5083 (Max = FSV #2021/2022/2031/2032)

DHW mode always operates at maximum (FSV #1051) regardless of outing mode. Only active during outing mode for space heating/cooling.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
class InFsv5083(FloatMessage):
    """Parser for message 0x42DC (FSV 5083 - Setting Temp. Shift Value Heat).

    Temperature increase offset during PV solar generation mode (heating).
    Default: 1°C, Range: 0-5°C, Step: 0.5°C

    When PV panels generate surplus solar energy, system raises heating setpoints
    by this offset to utilize the free energy:
    - Room sensor: Current value + FSV #5083 (Max = FSV #1041)
    - Water outlet: Current value + FSV #5083 (Max = FSV #1031)
    - Water Law: Current value + FSV #5083 (Max = FSV #2021/2022/2031/2032)

    DHW mode always operates at maximum (FSV #1051) regardless of outing mode.
    Only active during outing mode for space heating/cooling.
    """

    MESSAGE_ID = 0x42DC
    MESSAGE_NAME = "FSV 5083 PV Control Heat Temp Shift"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = False
    ARITHMETIC = 0.5

InFsv5091Message

Bases: BoolMessage

Parser for message 0x411C (FSV 5091 - Smart Grid Control Application).

Enables/disables Smart Grid coordination functionality. Default: 0 (Disabled), Range: 0-1

Smart Grid Control allows the heat pump system to participate in demand response and grid stability programs. External signals from utility grids or aggregators instruct the system to adjust heating/cooling operation to balance grid load.

  • Value 0: Smart Grid disabled; system operates independently based on user setpoints
  • Value 1: Smart Grid enabled; system receives external control signals

When enabled, the system can: - Reduce heating/DHW capacity during peak demand (load shedding) - Increase heating/DHW during off-peak hours (load shifting) - Participate in frequency regulation by adjusting compressor speed - Support renewable energy integration by shifting loads to high-wind/solar periods

Control signal format: Via Modbus, M-Bus, or on/off relay depending on system type. Response modes set by FSV #5092 (heat temp adjustment) and FSV #5093 (DHW adjustment).

Energy-saving potential: Users allowing grid control typically reduce peak-time energy costs by automatically consuming more during low-cost off-peak periods. Combines with FSV #5082/5083 (PV control) and FSV #5022 (DHW Saving) for maximum flexibility.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
class InFsv5091Message(BoolMessage):
    """Parser for message 0x411C (FSV 5091 - Smart Grid Control Application).

    Enables/disables Smart Grid coordination functionality.
    Default: 0 (Disabled), Range: 0-1

    Smart Grid Control allows the heat pump system to participate in demand response and
    grid stability programs. External signals from utility grids or aggregators instruct
    the system to adjust heating/cooling operation to balance grid load.

    - Value 0: Smart Grid disabled; system operates independently based on user setpoints
    - Value 1: Smart Grid enabled; system receives external control signals

    When enabled, the system can:
    - Reduce heating/DHW capacity during peak demand (load shedding)
    - Increase heating/DHW during off-peak hours (load shifting)
    - Participate in frequency regulation by adjusting compressor speed
    - Support renewable energy integration by shifting loads to high-wind/solar periods

    Control signal format: Via Modbus, M-Bus, or on/off relay depending on system type.
    Response modes set by FSV #5092 (heat temp adjustment) and FSV #5093 (DHW adjustment).

    Energy-saving potential: Users allowing grid control typically reduce peak-time energy
    costs by automatically consuming more during low-cost off-peak periods. Combines with
    FSV #5082/5083 (PV control) and FSV #5022 (DHW Saving) for maximum flexibility.

    Related: FSV #5092 (smart grid heat response), FSV #5093 (smart grid DHW response),
            FSV #5094 (smart grid DHW mode).
    """

    MESSAGE_ID = 0x411C
    MESSAGE_NAME = "Smart Grid Control Application"

InFsv5092

Bases: FloatMessage

Parser for message 0x42DD (FSV 5092 - Setting Temp. Shift Value Heat).

Temperature increase offset for Smart Grid Mode 3 & 4 (heating). Default: 2°C, Range: 2-5°C, Step: 0.5°C

When Smart Grid signals step-up operation (Mode 3 or 4): - Mode 3: Heating/Room/WL = Current + FSV #5092 (+3°C additional for WL) - Mode 4: Heating/WL = Current + FSV #5092 + 5°C, Room = Current + FSV #5092 + 3°C

Allows power company to request higher heating setpoints during periods of grid abundance to store energy and prevent overload situations.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
class InFsv5092(FloatMessage):
    """Parser for message 0x42DD (FSV 5092 - Setting Temp. Shift Value Heat).

    Temperature increase offset for Smart Grid Mode 3 & 4 (heating).
    Default: 2°C, Range: 2-5°C, Step: 0.5°C

    When Smart Grid signals step-up operation (Mode 3 or 4):
    - Mode 3: Heating/Room/WL = Current + FSV #5092 (+3°C additional for WL)
    - Mode 4: Heating/WL = Current + FSV #5092 + 5°C, Room = Current + FSV #5092 + 3°C

    Allows power company to request higher heating setpoints during periods of
    grid abundance to store energy and prevent overload situations.
    """

    MESSAGE_ID = 0x42DD
    MESSAGE_NAME = "FSV 5092 Smart Grid Heat Temp Shift"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = False
    ARITHMETIC = 0.5

InFsv5093

Bases: FloatMessage

Parser for message 0x42DE (FSV 5093 - Setting Temp. Shift Value DHW).

Temperature increase offset for Smart Grid Mode 3 DHW operation. Default: 5°C, Range: 2-5°C, Step: 0.5°C

In Smart Grid Mode 3 (step-up), DHW setpoint = Current + FSV #5093 Raises target DHW temperature during grid abundance periods to store more hot water energy and reduce strain on the electrical grid.

Note: Mode 4 DHW behavior is controlled by FSV #5094 instead: - FSV #5094 = 0: Target 55°C (heat pump only) - FSV #5094 = 1: Target 70°C (heat pump + booster heater)

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
class InFsv5093(FloatMessage):
    """Parser for message 0x42DE (FSV 5093 - Setting Temp. Shift Value DHW).

    Temperature increase offset for Smart Grid Mode 3 DHW operation.
    Default: 5°C, Range: 2-5°C, Step: 0.5°C

    In Smart Grid Mode 3 (step-up), DHW setpoint = Current + FSV #5093
    Raises target DHW temperature during grid abundance periods to store more
    hot water energy and reduce strain on the electrical grid.

    Note: Mode 4 DHW behavior is controlled by FSV #5094 instead:
    - FSV #5094 = 0: Target 55°C (heat pump only)
    - FSV #5094 = 1: Target 70°C (heat pump + booster heater)
    """

    MESSAGE_ID = 0x42DE
    MESSAGE_NAME = "FSV 5093 Smart Grid DHW Temp Shift"
    UNIT_OF_MEASUREMENT = "°C"
    SIGNED = False
    ARITHMETIC = 0.5

InFsv5094Message

Bases: EnumMessage

Parser for message 0x411D (FSV 5094 - Smart Grid DHW Mode).

Controls DHW behavior when Smart Grid signals demand reduction. Default: 0 (Maintain comfort), Range: 0-1

When the utility grid requests load shedding via Smart Grid Control (FSV #5091), this parameter determines how the system manages domestic hot water during the event.

  • Value 0: Comfort mode; DHW heating continues normally despite grid signal System maintains target tank temperature, may defer space heating instead Users always have hot water available, maximum comfort

  • Value 1: Demand response mode; DHW heating stops/reduces when grid signal active System prioritizes grid participation over DHW comfort Reduces peak demand more aggressively for better load management Risk: Tank may cool below comfort temperature; users may face cold water

Typical usage: - Comfort-focused homes: Value 0 (DHW continues, CH adjusts) - Homes with backup electric heater: Value 1 (grid controls everything, backup available) - Grid-sensitive areas: Value 1 (aggressive load shedding for stability)

This works with FSV #5092 (space heating temp response during grid events). Together they allow fine-tuning which loads get priority during demand response.

Safety note: Even in value 1 (demand response), system maintains minimum tank temp to prevent bacterial growth and equipment damage. Does not run indefinitely cold.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
class InFsv5094Message(EnumMessage):
    """Parser for message 0x411D (FSV 5094 - Smart Grid DHW Mode).

    Controls DHW behavior when Smart Grid signals demand reduction.
    Default: 0 (Maintain comfort), Range: 0-1

    When the utility grid requests load shedding via Smart Grid Control (FSV #5091),
    this parameter determines how the system manages domestic hot water during the event.

    - Value 0: Comfort mode; DHW heating continues normally despite grid signal
      System maintains target tank temperature, may defer space heating instead
      Users always have hot water available, maximum comfort

    - Value 1: Demand response mode; DHW heating stops/reduces when grid signal active
      System prioritizes grid participation over DHW comfort
      Reduces peak demand more aggressively for better load management
      Risk: Tank may cool below comfort temperature; users may face cold water

    Typical usage:
    - Comfort-focused homes: Value 0 (DHW continues, CH adjusts)
    - Homes with backup electric heater: Value 1 (grid controls everything, backup available)
    - Grid-sensitive areas: Value 1 (aggressive load shedding for stability)

    This works with FSV #5092 (space heating temp response during grid events).
    Together they allow fine-tuning which loads get priority during demand response.

    Safety note: Even in value 1 (demand response), system maintains minimum tank temp
    to prevent bacterial growth and equipment damage. Does not run indefinitely cold.

    Related: FSV #5091 (enable/disable smart grid), FSV #5092 (heating temp response),
            FSV #5093 (DHW temp shift during response).
    """

    MESSAGE_ID = 0x411D
    MESSAGE_NAME = "Smart Grid DHW Mode"
    MESSAGE_ENUM = InFsv5094

InFsvLoadSave

Bases: BoolMessage

Parser for message 0x4125 (Indoor FSV Load Save).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1494
1495
1496
1497
1498
class InFsvLoadSave(BoolMessage):
    """Parser for message 0x4125 (Indoor FSV Load Save)."""

    MESSAGE_ID = 0x4125
    MESSAGE_NAME = "Indoor FSV Load Save"

InFsvLoadSaveAlt

Bases: BoolMessage

Parser for message 0x412D (Indoor FSV Load Save Alternative).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1550
1551
1552
1553
1554
class InFsvLoadSaveAlt(BoolMessage):
    """Parser for message 0x412D (Indoor FSV Load Save Alternative)."""

    MESSAGE_ID = 0x412D
    MESSAGE_NAME = "Indoor FSV Load Save Alternative"

InGasLevelMessage

Bases: EnumMessage

Parser for message 0x4147 (Gas level / Refrigerant inventory).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1557
1558
1559
1560
1561
1562
class InGasLevelMessage(EnumMessage):
    """Parser for message 0x4147 (Gas level / Refrigerant inventory)."""

    MESSAGE_ID = 0x4147
    MESSAGE_NAME = "Gas level"
    MESSAGE_ENUM = InGasLevel

InGeneratedPowerLastMinute

Bases: BasicPowerMessage

Parser for message 0x4426 (Generated power last minute).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3554
3555
3556
3557
3558
3559
3560
class InGeneratedPowerLastMinute(BasicPowerMessage):
    """Parser for message 0x4426 (Generated power last minute)."""

    MESSAGE_ID = 0x4426
    MESSAGE_NAME = "Generated Power Last Minute"
    SIGNED = False
    ARITHMETIC = 0.001

InHumidity

Bases: FloatMessage

Parser for message 0x4038 (Indoor Humidity).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
337
338
339
340
341
342
343
344
class InHumidity(FloatMessage):
    """Parser for message 0x4038 (Indoor Humidity)."""

    MESSAGE_ID = 0x4038
    MESSAGE_NAME = "Indoor Humidity"
    UNIT_OF_MEASUREMENT = "%"
    SIGNED = False
    ARITHMETIC = 1.0

InIceCheckPointMessage

Bases: EnumMessage

Parser for message 0x4043 (Indoor Ice Check Point).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
347
348
349
350
351
352
class InIceCheckPointMessage(EnumMessage):
    """Parser for message 0x4043 (Indoor Ice Check Point)."""

    MESSAGE_ID = 0x4043
    MESSAGE_NAME = "Indoor Ice Check Point"
    MESSAGE_ENUM = InIceCheckPoint

InIceCtrlStateMessage

Bases: EnumMessage

Parser for message 0x402A (Indoor Ice Control State).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
281
282
283
284
285
286
class InIceCtrlStateMessage(EnumMessage):
    """Parser for message 0x402A (Indoor Ice Control State)."""

    MESSAGE_ID = 0x402A
    MESSAGE_NAME = "Indoor Ice Control State"
    MESSAGE_ENUM = InIceCtrlState

InIndoorOuterTempMessage

Bases: BasicTemperatureMessage

Parser for message 0x420C (Indoor Outer Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1616
1617
1618
1619
1620
class InIndoorOuterTempMessage(BasicTemperatureMessage):
    """Parser for message 0x420C (Indoor Outer Temperature)."""

    MESSAGE_ID = 0x420C
    MESSAGE_NAME = "Indoor Outer Temperature"

InLayerVariableIndoorUnknown1Message

Bases: RawMessage

Parser for message 0x440E (Layer Variable Indoor Unknown 1).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3440
3441
3442
3443
3444
class InLayerVariableIndoorUnknown1Message(RawMessage):
    """Parser for message 0x440E (Layer Variable Indoor Unknown 1)."""

    MESSAGE_ID = 0x440E
    MESSAGE_NAME = "Layer Variable Indoor Unknown 1"

InLayerVariableIndoorUnknownMessage

Bases: RawMessage

Parser for message 0x4401 (Layer Variable Indoor Unknown).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3405
3406
3407
3408
3409
class InLayerVariableIndoorUnknownMessage(RawMessage):
    """Parser for message 0x4401 (Layer Variable Indoor Unknown)."""

    MESSAGE_ID = 0x4401
    MESSAGE_NAME = "Layer Variable Indoor Unknown"

InLayerVariableUnknown440bMessage

Bases: RawMessage

Parser for message 0x440B (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3419
3420
3421
3422
3423
class InLayerVariableUnknown440bMessage(RawMessage):
    """Parser for message 0x440B (Unknown layer variable)."""

    MESSAGE_ID = 0x440B
    MESSAGE_NAME = "InLayerVariableUnknown440bMessage"

InLayerVariableUnknown440cMessage

Bases: RawMessage

Parser for message 0x440C (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3426
3427
3428
3429
3430
class InLayerVariableUnknown440cMessage(RawMessage):
    """Parser for message 0x440C (Unknown layer variable)."""

    MESSAGE_ID = 0x440C
    MESSAGE_NAME = "InLayerVariableUnknown440cMessage"

InLayerVariableUnknown440dMessage

Bases: RawMessage

Parser for message 0x440D (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3433
3434
3435
3436
3437
class InLayerVariableUnknown440dMessage(RawMessage):
    """Parser for message 0x440D (Unknown layer variable)."""

    MESSAGE_ID = 0x440D
    MESSAGE_NAME = "InLayerVariableUnknown440dMessage"

InLayerVariableUnknown4410Message

Bases: RawMessage

Parser for message 0x4410 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3454
3455
3456
3457
3458
class InLayerVariableUnknown4410Message(RawMessage):
    """Parser for message 0x4410 (Unknown layer variable)."""

    MESSAGE_ID = 0x4410
    MESSAGE_NAME = "InLayerVariableUnknown4410Message"

InLayerVariableUnknown4411Message

Bases: RawMessage

Parser for message 0x4411 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3461
3462
3463
3464
3465
class InLayerVariableUnknown4411Message(RawMessage):
    """Parser for message 0x4411 (Unknown layer variable)."""

    MESSAGE_ID = 0x4411
    MESSAGE_NAME = "InLayerVariableUnknown4411Message"

InLayerVariableUnknown4412Message

Bases: RawMessage

Parser for message 0x4412 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3468
3469
3470
3471
3472
class InLayerVariableUnknown4412Message(RawMessage):
    """Parser for message 0x4412 (Unknown layer variable)."""

    MESSAGE_ID = 0x4412
    MESSAGE_NAME = "InLayerVariableUnknown4412Message"

InLayerVariableUnknown4413Message

Bases: RawMessage

Parser for message 0x4413 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3475
3476
3477
3478
3479
class InLayerVariableUnknown4413Message(RawMessage):
    """Parser for message 0x4413 (Unknown layer variable)."""

    MESSAGE_ID = 0x4413
    MESSAGE_NAME = "InLayerVariableUnknown4413Message"

InLayerVariableUnknown4414Message

Bases: RawMessage

Parser for message 0x4414 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3482
3483
3484
3485
3486
class InLayerVariableUnknown4414Message(RawMessage):
    """Parser for message 0x4414 (Unknown layer variable)."""

    MESSAGE_ID = 0x4414
    MESSAGE_NAME = "InLayerVariableUnknown4414Message"

InLayerVariableUnknown4416Message

Bases: RawMessage

Parser for message 0x4416 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3489
3490
3491
3492
3493
class InLayerVariableUnknown4416Message(RawMessage):
    """Parser for message 0x4416 (Unknown layer variable)."""

    MESSAGE_ID = 0x4416
    MESSAGE_NAME = "InLayerVariableUnknown4416Message"

InLayerVariableUnknown4417Message

Bases: RawMessage

Parser for message 0x4417 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3496
3497
3498
3499
3500
class InLayerVariableUnknown4417Message(RawMessage):
    """Parser for message 0x4417 (Unknown layer variable)."""

    MESSAGE_ID = 0x4417
    MESSAGE_NAME = "InLayerVariableUnknown4417Message"

InLayerVariableUnknown4419Message

Bases: RawMessage

Parser for message 0x4419 (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3503
3504
3505
3506
3507
class InLayerVariableUnknown4419Message(RawMessage):
    """Parser for message 0x4419 (Unknown layer variable)."""

    MESSAGE_ID = 0x4419
    MESSAGE_NAME = "InLayerVariableUnknown4419Message"

InLayerVariableUnknown441aMessage

Bases: RawMessage

Parser for message 0x441A (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3510
3511
3512
3513
3514
class InLayerVariableUnknown441aMessage(RawMessage):
    """Parser for message 0x441A (Unknown layer variable)."""

    MESSAGE_ID = 0x441A
    MESSAGE_NAME = "InLayerVariableUnknown441aMessage"

InLayerVariableUnknown441cMessage

Bases: RawMessage

Parser for message 0x441C (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3517
3518
3519
3520
3521
class InLayerVariableUnknown441cMessage(RawMessage):
    """Parser for message 0x441C (Unknown layer variable)."""

    MESSAGE_ID = 0x441C
    MESSAGE_NAME = "InLayerVariableUnknown441cMessage"

InLayerVariableUnknown441dMessage

Bases: RawMessage

Parser for message 0x441D (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3524
3525
3526
3527
3528
class InLayerVariableUnknown441dMessage(RawMessage):
    """Parser for message 0x441D (Unknown layer variable)."""

    MESSAGE_ID = 0x441D
    MESSAGE_NAME = "InLayerVariableUnknown441dMessage"

InLayerVariableUnknown441eMessage

Bases: RawMessage

Parser for message 0x441E (Unknown layer variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3531
3532
3533
3534
3535
class InLayerVariableUnknown441eMessage(RawMessage):
    """Parser for message 0x441E (Unknown layer variable)."""

    MESSAGE_ID = 0x441E
    MESSAGE_NAME = "InLayerVariableUnknown441eMessage"

InLouverHlAutoMessage

Bases: EnumMessage

Parser for message 0x4073 (Indoor Louver HL Auto).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
512
513
514
515
516
517
class InLouverHlAutoMessage(EnumMessage):
    """Parser for message 0x4073 (Indoor Louver HL Auto)."""

    MESSAGE_ID = 0x4073
    MESSAGE_NAME = "Indoor Louver HL Auto"
    MESSAGE_ENUM = InLouverHlAuto

InLouverHlAutoUpDownMessage

Bases: EnumMessage

Parser for message 0x4074 (Indoor Louver HL Auto Up Down).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
520
521
522
523
524
525
class InLouverHlAutoUpDownMessage(EnumMessage):
    """Parser for message 0x4074 (Indoor Louver HL Auto Up Down)."""

    MESSAGE_ID = 0x4074
    MESSAGE_NAME = "Indoor Louver HL Auto Up Down"
    MESSAGE_ENUM = InLouverHlAutoUpDown

InLouverHlDownUpMessage

Bases: EnumMessage

Parser for message 0x4051 (Indoor Louver HL Down Up).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
387
388
389
390
391
392
class InLouverHlDownUpMessage(EnumMessage):
    """Parser for message 0x4051 (Indoor Louver HL Down Up)."""

    MESSAGE_ID = 0x4051
    MESSAGE_NAME = "Indoor Louver HL Down Up"
    MESSAGE_ENUM = InLouverHlDownUp

InLouverHlNowPosMessage

Bases: EnumMessage

Parser for message 0x4059 (Indoor Louver HL Now Position).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
395
396
397
398
399
400
class InLouverHlNowPosMessage(EnumMessage):
    """Parser for message 0x4059 (Indoor Louver HL Now Position)."""

    MESSAGE_ID = 0x4059
    MESSAGE_NAME = "Indoor Louver HL Now Position"
    MESSAGE_ENUM = InLouverHlNowPos

InLouverHlPartSwingMessage

Bases: EnumMessage

Parser for message 0x4012 (Indoor Louver HL Part Swing).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
210
211
212
213
214
215
class InLouverHlPartSwingMessage(EnumMessage):
    """Parser for message 0x4012 (Indoor Louver HL Part Swing)."""

    MESSAGE_ID = 0x4012
    MESSAGE_NAME = "Indoor Louver HL Part Swing"
    MESSAGE_ENUM = InLouverHlPartSwing

InLouverHlSwing

Bases: BoolMessage

Parser for message 0x4011 (Indoor Louver HL Swing).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
203
204
205
206
207
class InLouverHlSwing(BoolMessage):
    """Parser for message 0x4011 (Indoor Louver HL Swing)."""

    MESSAGE_ID = 0x4011
    MESSAGE_NAME = "Indoor Louver HL Swing"

InLouverLrFullMessage

Bases: EnumMessage

Parser for message 0x4019 (Indoor Louver LR Full).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
226
227
228
229
230
231
class InLouverLrFullMessage(EnumMessage):
    """Parser for message 0x4019 (Indoor Louver LR Full)."""

    MESSAGE_ID = 0x4019
    MESSAGE_NAME = "Indoor Louver LR Full"
    MESSAGE_ENUM = InLouverLrFull

InLouverLrMessage

Bases: EnumMessage

Parser for message 0x401B (Indoor Louver LR).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
234
235
236
237
238
239
class InLouverLrMessage(EnumMessage):
    """Parser for message 0x401B (Indoor Louver LR)."""

    MESSAGE_ID = 0x401B
    MESSAGE_NAME = "Indoor Louver LR"
    MESSAGE_ENUM = InLouverLr

InLouverLrSwing

Bases: BoolMessage

Parser for message 0x407E (Indoor Louver LR Swing).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
559
560
561
562
563
class InLouverLrSwing(BoolMessage):
    """Parser for message 0x407E (Indoor Louver LR Swing)."""

    MESSAGE_ID = 0x407E
    MESSAGE_NAME = "Indoor Louver LR Swing"

InLouverVlFullMessage

Bases: EnumMessage

Parser for message 0x4031 (Indoor Louver VL Full).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
321
322
323
324
325
326
class InLouverVlFullMessage(EnumMessage):
    """Parser for message 0x4031 (Indoor Louver VL Full)."""

    MESSAGE_ID = 0x4031
    MESSAGE_NAME = "Indoor Louver VL Full"
    MESSAGE_ENUM = InLouverVlFull

InLouverVlLeftDownSwingMessage

Bases: EnumMessage

Parser for message 0x4024 (Indoor Louver VL Left Down Swing).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
250
251
252
253
254
255
class InLouverVlLeftDownSwingMessage(EnumMessage):
    """Parser for message 0x4024 (Indoor Louver VL Left Down Swing)."""

    MESSAGE_ID = 0x4024
    MESSAGE_NAME = "Indoor Louver VL Left Down Swing"
    MESSAGE_ENUM = InLouverVlLeftDownSwing

InLouverVlMessage

Bases: EnumMessage

Parser for message 0x404F (Indoor Louver VL).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
379
380
381
382
383
384
class InLouverVlMessage(EnumMessage):
    """Parser for message 0x404F (Indoor Louver VL)."""

    MESSAGE_ID = 0x404F
    MESSAGE_NAME = "Indoor Louver VL"
    MESSAGE_ENUM = InLouverVl

InLouverVlPosMessage

Bases: EnumMessage

Parser for message 0x405F (Indoor Louver VL Position).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
403
404
405
406
407
408
class InLouverVlPosMessage(EnumMessage):
    """Parser for message 0x405F (Indoor Louver VL Position)."""

    MESSAGE_ID = 0x405F
    MESSAGE_NAME = "Indoor Louver VL Position"
    MESSAGE_ENUM = InLouverVlPos

InLouverVlRightDownSwingMessage

Bases: EnumMessage

Parser for message 0x4023 (Indoor Louver VL Right Down Swing).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
242
243
244
245
246
247
class InLouverVlRightDownSwingMessage(EnumMessage):
    """Parser for message 0x4023 (Indoor Louver VL Right Down Swing)."""

    MESSAGE_ID = 0x4023
    MESSAGE_NAME = "Indoor Louver VL Right Down Swing"
    MESSAGE_ENUM = InLouverVlRightDownSwing

InMinutesActiveMessage

Bases: IntegerMessage

Parser for message 0x4424 (Minutes Active).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3546
3547
3548
3549
3550
3551
class InMinutesActiveMessage(IntegerMessage):
    """Parser for message 0x4424 (Minutes Active)."""

    MESSAGE_ID = 0x4424
    MESSAGE_NAME = "Minutes Active"
    UNIT_OF_MEASUREMENT = "min"

InMinutesSinceInstallationMessage

Bases: IntegerMessage

Parser for message 0x4423 (Minutes Since Installation).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3538
3539
3540
3541
3542
3543
class InMinutesSinceInstallationMessage(IntegerMessage):
    """Parser for message 0x4423 (Minutes Since Installation)."""

    MESSAGE_ID = 0x4423
    MESSAGE_NAME = "Minutes Since Installation"
    UNIT_OF_MEASUREMENT = "min"

InModelCode2Message

Bases: RawMessage

Parser for message 0x0D00 (Model/Build Identifier 2).

Submessage returned as part of the indoor unit model information query. Contains model-specific or build-specific identifier code. Value may change based on device configuration or operation state.

Example: "08000efe" or "00000efe"

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
101
102
103
104
105
106
107
108
109
110
111
112
class InModelCode2Message(RawMessage):
    """Parser for message 0x0D00 (Model/Build Identifier 2).

    Submessage returned as part of the indoor unit model information query.
    Contains model-specific or build-specific identifier code.
    Value may change based on device configuration or operation state.

    Example: "08000efe" or "00000efe"
    """

    MESSAGE_ID = 0x0D00
    MESSAGE_NAME = "Model Code 2"

InModelInformationMessage

Bases: EnumMessage

Parser for message 0x4229 (Indoor Model Information).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1651
1652
1653
1654
1655
1656
class InModelInformationMessage(EnumMessage):
    """Parser for message 0x4229 (Indoor Model Information)."""

    MESSAGE_ID = 0x4229
    MESSAGE_NAME = "Indoor Model Information"
    MESSAGE_ENUM = InModelInformation

InModifiedCurrentTempMessage

Bases: BasicTemperatureMessage

Parser for message 0x4204 (Modified Current Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1595
1596
1597
1598
1599
class InModifiedCurrentTempMessage(BasicTemperatureMessage):
    """Parser for message 0x4204 (Modified Current Temperature)."""

    MESSAGE_ID = 0x4204
    MESSAGE_NAME = "Modified Current Temperature"

InModulatingFanMessage

Bases: FloatMessage

Parser for message 0x42CC (Modulating Fan).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2688
2689
2690
2691
2692
class InModulatingFanMessage(FloatMessage):
    """Parser for message 0x42CC (Modulating Fan)."""

    MESSAGE_ID = 0x42CC
    MESSAGE_NAME = "Modulating Fan"

InModulatingValve1Message

Bases: FloatMessage

Parser for message 0x42CA (Modulating Valve 1).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2674
2675
2676
2677
2678
class InModulatingValve1Message(FloatMessage):
    """Parser for message 0x42CA (Modulating Valve 1)."""

    MESSAGE_ID = 0x42CA
    MESSAGE_NAME = "Modulating Valve 1"

InModulatingValve2Message

Bases: FloatMessage

Parser for message 0x42CB (Modulating Valve 2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2681
2682
2683
2684
2685
class InModulatingValve2Message(FloatMessage):
    """Parser for message 0x42CB (Modulating Valve 2)."""

    MESSAGE_ID = 0x42CB
    MESSAGE_NAME = "Modulating Valve 2"

InMtfcMessage

Bases: EnumMessage

Parser for message 0x402F (Indoor MTFC).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
313
314
315
316
317
318
class InMtfcMessage(EnumMessage):
    """Parser for message 0x402F (Indoor MTFC)."""

    MESSAGE_ID = 0x402F
    MESSAGE_NAME = "Indoor MTFC"
    MESSAGE_ENUM = InMtfc

InNightEndScheduleMessage

Bases: RawMessage

Parser for message 0x4318 (Night time end schedule).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3314
3315
3316
3317
3318
class InNightEndScheduleMessage(RawMessage):
    """Parser for message 0x4318 (Night time end schedule)."""

    MESSAGE_ID = 0x4318
    MESSAGE_NAME = "Night Time End Schedule"

InNightStartScheduleMessage

Bases: RawMessage

Parser for message 0x4317 (Night time start schedule).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3307
3308
3309
3310
3311
class InNightStartScheduleMessage(RawMessage):
    """Parser for message 0x4317 (Night time start schedule)."""

    MESSAGE_ID = 0x4317
    MESSAGE_NAME = "Night Time Start Schedule"

InOperationModeMessage

Bases: EnumMessage

Parser for message 0x4001 (Indoor Operation Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
123
124
125
126
127
128
class InOperationModeMessage(EnumMessage):
    """Parser for message 0x4001 (Indoor Operation Mode)."""

    MESSAGE_ID = 0x4001
    MESSAGE_NAME = "Indoor Operation Mode"
    MESSAGE_ENUM = InOperationMode

InOperationModeRealMessage

Bases: EnumMessage

Parser for message 0x4002 (Indoor Operation Mode Real).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
131
132
133
134
135
136
class InOperationModeRealMessage(EnumMessage):
    """Parser for message 0x4002 (Indoor Operation Mode Real)."""

    MESSAGE_ID = 0x4002
    MESSAGE_NAME = "Indoor Operation Mode Real"
    MESSAGE_ENUM = InOperationModeReal

InOperationOutdoorFanMessage

Bases: EnumMessage

Parser for message 0x4015 (Indoor Operation Outdoor Fan).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
218
219
220
221
222
223
class InOperationOutdoorFanMessage(EnumMessage):
    """Parser for message 0x4015 (Indoor Operation Outdoor Fan)."""

    MESSAGE_ID = 0x4015
    MESSAGE_NAME = "Indoor Operation Outdoor Fan"
    MESSAGE_ENUM = InOperationOutdoorFan

InOperationPowerMessage

Bases: EnumMessage

Parser for message 0x4000 (Indoor Operation Power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
115
116
117
118
119
120
class InOperationPowerMessage(EnumMessage):
    """Parser for message 0x4000 (Indoor Operation Power)."""

    MESSAGE_ID = 0x4000
    MESSAGE_NAME = "Indoor Operation Power"
    MESSAGE_ENUM = InOperationPower

InOperationRoomFanControlMessage

Bases: EnumMessage

Parser for message 0x4010 (Indoor Operation Room Fan Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
195
196
197
198
199
200
class InOperationRoomFanControlMessage(EnumMessage):
    """Parser for message 0x4010 (Indoor Operation Room Fan Control)."""

    MESSAGE_ID = 0x4010
    MESSAGE_NAME = "Indoor Operation Room Fan Control"
    MESSAGE_ENUM = InOperationRoomFanControl

InOperationRoomFanMessage

Bases: EnumMessage

Parser for message 0x400F (Indoor Operation Room Fan).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
187
188
189
190
191
192
class InOperationRoomFanMessage(EnumMessage):
    """Parser for message 0x400F (Indoor Operation Room Fan)."""

    MESSAGE_ID = 0x400F
    MESSAGE_NAME = "Indoor Operation Room Fan"
    MESSAGE_ENUM = InOperationRoomFan

InOperationVentModeMessage

Bases: EnumMessage

Parser for message 0x4004 (Indoor Operation Ventilation Mode Setting).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
147
148
149
150
151
152
class InOperationVentModeMessage(EnumMessage):
    """Parser for message 0x4004 (Indoor Operation Ventilation Mode Setting)."""

    MESSAGE_ID = 0x4004
    MESSAGE_NAME = "Indoor Operation Ventilation Mode Setting"
    MESSAGE_ENUM = InOperationVentPowerSetting

InOperationVentModeMessage2

Bases: EnumMessage

Parser for message 0x4005 (Indoor Operation Ventilation Mode 2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
155
156
157
158
159
160
class InOperationVentModeMessage2(EnumMessage):
    """Parser for message 0x4005 (Indoor Operation Ventilation Mode 2)."""

    MESSAGE_ID = 0x4005
    MESSAGE_NAME = "Indoor Operation Ventilation Mode 2"
    MESSAGE_ENUM = InOperationVentMode

InOperationVentPowerMessage

Bases: EnumMessage

Parser for message 0x4003 (Indoor Operation Ventilation Power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
139
140
141
142
143
144
class InOperationVentPowerMessage(EnumMessage):
    """Parser for message 0x4003 (Indoor Operation Ventilation Power)."""

    MESSAGE_ID = 0x4003
    MESSAGE_NAME = "Indoor Operation Ventilation Power"
    MESSAGE_ENUM = InOperationVentPower

InOutdoorCompressorFrequencyRateControlMessage

Bases: StructureMessage

Parser for message 0x42F1 (Outdoor Compressor Frequency Rate Control).

Structured message for external compressor frequency control (FRC). Allows dynamic adjustment of compressor speed for demand limiting and optimization.

Message structure (2 bytes VAR): - Byte 0-1: Frequency ratio (raw value, offset by -256 to get percentage)

Frequency ratio encoding (values must be in 10-unit increments): - Raw value 306 decimal = 50% minimum frequency - Raw value 316 decimal = 60% - Raw value 326 decimal = 70% - Raw value 336 decimal = 80% - Raw value 346 decimal = 90% - Raw value 356 decimal = 100% normal frequency (reference) - Raw value 366 decimal = 110% - Raw value 376 decimal = 120% - Raw value 386 decimal = 130% - Raw value 396 decimal = 140% - Raw value 406 decimal = 150% maximum frequency - Formula: percentage = (raw_value - 256)

CRITICAL OPERATIONAL NOTES: 1. Timeout (1 hour): Written values are only valid for 1 hour, then revert to 0 (disabled). Controllers must continuously write desired values at regular intervals (recommended every 30-60 min). 2. Increment constraint: Values MUST be in steps of 10. Valid range: [306, 316, 326, ..., 406]. Invalid values auto-correct: if you write 311, system reverts to nearest valid value (306 = 50%). 3. Compressor step-down behavior: Compressor will slowly step down to the maximum capacity percentage set by FRC. This provides smooth deceleration rather than abrupt frequency changes. Changes can take 5 to 10 monites to take affect. 4. Stability use case: Setting weather curve flat with exclusive pump/FRC control provides more stable compressor operation than direct temperature targets, reducing oscillation.

Only active when FSV #5051 (Frequency Ratio Control) = 1 (enabled). Used for demand limiting, load shedding, and compressor stabilization during peak grid periods. Note: Only available on tank-integrated hydronic units.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
class InOutdoorCompressorFrequencyRateControlMessage(StructureMessage):
    """Parser for message 0x42F1 (Outdoor Compressor Frequency Rate Control).

    Structured message for external compressor frequency control (FRC).
    Allows dynamic adjustment of compressor speed for demand limiting and optimization.

    Message structure (2 bytes VAR):
    - Byte 0-1: Frequency ratio (raw value, offset by -256 to get percentage)

    Frequency ratio encoding (values must be in 10-unit increments):
    - Raw value 306 decimal = 50% minimum frequency
    - Raw value 316 decimal = 60%
    - Raw value 326 decimal = 70%
    - Raw value 336 decimal = 80%
    - Raw value 346 decimal = 90%
    - Raw value 356 decimal = 100% normal frequency (reference)
    - Raw value 366 decimal = 110%
    - Raw value 376 decimal = 120%
    - Raw value 386 decimal = 130%
    - Raw value 396 decimal = 140%
    - Raw value 406 decimal = 150% maximum frequency
    - Formula: percentage = (raw_value - 256)

    CRITICAL OPERATIONAL NOTES:
    1. **Timeout (1 hour)**: Written values are only valid for 1 hour, then revert to 0 (disabled).
       Controllers must continuously write desired values at regular intervals (recommended every 30-60 min).
    2. **Increment constraint**: Values MUST be in steps of 10. Valid range: [306, 316, 326, ..., 406].
       Invalid values auto-correct: if you write 311, system reverts to nearest valid value (306 = 50%).
    3. **Compressor step-down behavior**: Compressor will slowly step down to the maximum capacity percentage
       set by FRC. This provides smooth deceleration rather than abrupt frequency changes.
       Changes can take 5 to 10 monites to take affect.
    4. **Stability use case**: Setting weather curve flat with exclusive pump/FRC control provides
       more stable compressor operation than direct temperature targets, reducing oscillation.

    Only active when FSV #5051 (Frequency Ratio Control) = 1 (enabled).
    Used for demand limiting, load shedding, and compressor stabilization during peak grid periods.
    Note: Only available on tank-integrated hydronic units.
    """

    MESSAGE_ID = 0x42F1
    MESSAGE_NAME = "Outdoor Compressor Frequency Rate Control"

    # Valid FRC values in 10-unit increments
    VALID_INCREMENTS = [306, 316, 326, 336, 346, 356, 366, 376, 386, 396, 406]

    @classmethod
    def parse_payload(cls, payload: bytes) -> "InOutdoorCompressorFrequencyRateControlMessage":
        """Parse the 2-byte payload into frequency ratio.

        Converts raw value to percentage using offset formula: percentage = value - 256
        Special case: raw_value of 0 indicates FRC not yet initialized (needs configuration).

        Note: Whether FRC is enabled or disabled is controlled by FSV #5051, not this message.
        This message only contains the frequency ratio setpoint.
        """
        if not payload or len(payload) < 2:
            return cls(value=payload.hex() if payload else None, raw_payload=payload)

        try:
            # Read as 16-bit VAR (2 bytes, little-endian by default in protocol)
            raw_value = int.from_bytes(payload[0:2], byteorder="little")

            # Special case: raw_value of 0 means FRC not yet initialized
            if raw_value == 0:
                return cls(
                    value={
                        "frequency_ratio_percent": None,
                        "raw_value": raw_value,
                        "is_valid_increment": False,
                        "nearest_valid_value": 306,  # Suggest minimum valid value
                        "nearest_valid_percent": 50,
                        "formatted": "FRC not initialized (write desired percentage to activate)",
                        "status": "NOT_INITIALIZED",
                    },
                    raw_payload=payload,
                )

            # Extract frequency ratio percentage using offset formula
            frequency_ratio_percent = raw_value - 256

            # Check if value is valid (in 10-unit increments)
            is_valid = raw_value in cls.VALID_INCREMENTS
            nearest_valid = None
            if not is_valid:
                # Find nearest valid value
                nearest_valid = min(cls.VALID_INCREMENTS, key=lambda x: abs(x - raw_value))

            return cls(
                value={
                    "frequency_ratio_percent": frequency_ratio_percent,
                    "raw_value": raw_value,
                    "is_valid_increment": is_valid,
                    "nearest_valid_value": nearest_valid,
                    "nearest_valid_percent": (nearest_valid - 256) if nearest_valid else None,
                    "formatted": f"{frequency_ratio_percent}%"
                    + (
                        f" [WARNING: Invalid increment, will revert to {nearest_valid - 256}%]"
                        if not is_valid and nearest_valid
                        else ""
                    ),
                    "status": "VALID" if is_valid else "INVALID_INCREMENT",
                },
                raw_payload=payload,
            )
        except (IndexError, ValueError):
            return cls(value=payload.hex() if payload else None, raw_payload=payload)

    @classmethod
    def to_bytes(cls, value: dict) -> bytes:
        """Convert frequency ratio dict to 2-byte payload for writing to device.

        Args:
            value: Dictionary containing frequency control parameters. Supports:
                - 'frequency_ratio_percent' (int): Desired frequency ratio (50-150%). Must be valid increment.
                - 'raw_value' (int): Alternatively, specify raw value directly.
                - Other keys are ignored.

        Returns:
            2-byte payload (little-endian VAR format) ready to write to 0x42F1.

        Raises:
            ValueError: If frequency_ratio_percent is not a valid increment (50, 60, 70, ..., 150).
            TypeError: If value is not a dict or missing required fields.

        Examples:
            >>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
            ...     {'frequency_ratio_percent': 100}
            ... )
            >>> payload.hex()
            '6401'  # 356 in little-endian (100% FRC)

            >>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
            ...     {'frequency_ratio_percent': 50}
            ... )
            >>> payload.hex()
            '3201'  # 306 in little-endian (50% FRC)

            >>> # Can also pass raw_value directly
            >>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
            ...     {'raw_value': 356}
            ... )
            >>> payload.hex()
            '6401'
        """
        if not isinstance(value, dict):
            raise TypeError(f"Expected dict, got {type(value).__name__}")

        # Extract frequency ratio from dict
        if "raw_value" in value:
            raw_value = value["raw_value"]
        elif "frequency_ratio_percent" in value:
            frequency_ratio_percent = value["frequency_ratio_percent"]
            raw_value = frequency_ratio_percent + 256
        else:
            raise ValueError("Dict must contain either 'frequency_ratio_percent' or 'raw_value' key")

        # Validate that this is a valid increment
        if raw_value not in cls.VALID_INCREMENTS:
            nearest = min(cls.VALID_INCREMENTS, key=lambda x: abs(x - raw_value))
            raise ValueError(
                f"Invalid frequency ratio value {raw_value} (percentage: {raw_value - 256}%). "
                f"Must be a valid increment: {cls.VALID_INCREMENTS}. "
                f"Nearest valid value: {nearest} (percentage: {nearest - 256}%)"
            )

        # Convert to 2-byte little-endian VAR
        payload = raw_value.to_bytes(2, byteorder="little")

        return payload

parse_payload(payload) classmethod

Parse the 2-byte payload into frequency ratio.

Converts raw value to percentage using offset formula: percentage = value - 256 Special case: raw_value of 0 indicates FRC not yet initialized (needs configuration).

Note: Whether FRC is enabled or disabled is controlled by FSV #5051, not this message. This message only contains the frequency ratio setpoint.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
@classmethod
def parse_payload(cls, payload: bytes) -> "InOutdoorCompressorFrequencyRateControlMessage":
    """Parse the 2-byte payload into frequency ratio.

    Converts raw value to percentage using offset formula: percentage = value - 256
    Special case: raw_value of 0 indicates FRC not yet initialized (needs configuration).

    Note: Whether FRC is enabled or disabled is controlled by FSV #5051, not this message.
    This message only contains the frequency ratio setpoint.
    """
    if not payload or len(payload) < 2:
        return cls(value=payload.hex() if payload else None, raw_payload=payload)

    try:
        # Read as 16-bit VAR (2 bytes, little-endian by default in protocol)
        raw_value = int.from_bytes(payload[0:2], byteorder="little")

        # Special case: raw_value of 0 means FRC not yet initialized
        if raw_value == 0:
            return cls(
                value={
                    "frequency_ratio_percent": None,
                    "raw_value": raw_value,
                    "is_valid_increment": False,
                    "nearest_valid_value": 306,  # Suggest minimum valid value
                    "nearest_valid_percent": 50,
                    "formatted": "FRC not initialized (write desired percentage to activate)",
                    "status": "NOT_INITIALIZED",
                },
                raw_payload=payload,
            )

        # Extract frequency ratio percentage using offset formula
        frequency_ratio_percent = raw_value - 256

        # Check if value is valid (in 10-unit increments)
        is_valid = raw_value in cls.VALID_INCREMENTS
        nearest_valid = None
        if not is_valid:
            # Find nearest valid value
            nearest_valid = min(cls.VALID_INCREMENTS, key=lambda x: abs(x - raw_value))

        return cls(
            value={
                "frequency_ratio_percent": frequency_ratio_percent,
                "raw_value": raw_value,
                "is_valid_increment": is_valid,
                "nearest_valid_value": nearest_valid,
                "nearest_valid_percent": (nearest_valid - 256) if nearest_valid else None,
                "formatted": f"{frequency_ratio_percent}%"
                + (
                    f" [WARNING: Invalid increment, will revert to {nearest_valid - 256}%]"
                    if not is_valid and nearest_valid
                    else ""
                ),
                "status": "VALID" if is_valid else "INVALID_INCREMENT",
            },
            raw_payload=payload,
        )
    except (IndexError, ValueError):
        return cls(value=payload.hex() if payload else None, raw_payload=payload)

to_bytes(value) classmethod

Convert frequency ratio dict to 2-byte payload for writing to device.

Parameters:

Name Type Description Default
value dict

Dictionary containing frequency control parameters. Supports: - 'frequency_ratio_percent' (int): Desired frequency ratio (50-150%). Must be valid increment. - 'raw_value' (int): Alternatively, specify raw value directly. - Other keys are ignored.

required

Returns:

Type Description
bytes

2-byte payload (little-endian VAR format) ready to write to 0x42F1.

Raises:

Type Description
ValueError

If frequency_ratio_percent is not a valid increment (50, 60, 70, ..., 150).

TypeError

If value is not a dict or missing required fields.

Examples:

>>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
...     {'frequency_ratio_percent': 100}
... )
>>> payload.hex()
'6401'  # 356 in little-endian (100% FRC)
>>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
...     {'frequency_ratio_percent': 50}
... )
>>> payload.hex()
'3201'  # 306 in little-endian (50% FRC)
>>> # Can also pass raw_value directly
>>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
...     {'raw_value': 356}
... )
>>> payload.hex()
'6401'
Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
@classmethod
def to_bytes(cls, value: dict) -> bytes:
    """Convert frequency ratio dict to 2-byte payload for writing to device.

    Args:
        value: Dictionary containing frequency control parameters. Supports:
            - 'frequency_ratio_percent' (int): Desired frequency ratio (50-150%). Must be valid increment.
            - 'raw_value' (int): Alternatively, specify raw value directly.
            - Other keys are ignored.

    Returns:
        2-byte payload (little-endian VAR format) ready to write to 0x42F1.

    Raises:
        ValueError: If frequency_ratio_percent is not a valid increment (50, 60, 70, ..., 150).
        TypeError: If value is not a dict or missing required fields.

    Examples:
        >>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
        ...     {'frequency_ratio_percent': 100}
        ... )
        >>> payload.hex()
        '6401'  # 356 in little-endian (100% FRC)

        >>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
        ...     {'frequency_ratio_percent': 50}
        ... )
        >>> payload.hex()
        '3201'  # 306 in little-endian (50% FRC)

        >>> # Can also pass raw_value directly
        >>> payload = InOutdoorCompressorFrequencyRateControlMessage.to_bytes(
        ...     {'raw_value': 356}
        ... )
        >>> payload.hex()
        '6401'
    """
    if not isinstance(value, dict):
        raise TypeError(f"Expected dict, got {type(value).__name__}")

    # Extract frequency ratio from dict
    if "raw_value" in value:
        raw_value = value["raw_value"]
    elif "frequency_ratio_percent" in value:
        frequency_ratio_percent = value["frequency_ratio_percent"]
        raw_value = frequency_ratio_percent + 256
    else:
        raise ValueError("Dict must contain either 'frequency_ratio_percent' or 'raw_value' key")

    # Validate that this is a valid increment
    if raw_value not in cls.VALID_INCREMENTS:
        nearest = min(cls.VALID_INCREMENTS, key=lambda x: abs(x - raw_value))
        raise ValueError(
            f"Invalid frequency ratio value {raw_value} (percentage: {raw_value - 256}%). "
            f"Must be a valid increment: {cls.VALID_INCREMENTS}. "
            f"Nearest valid value: {nearest} (percentage: {nearest - 256}%)"
        )

    # Convert to 2-byte little-endian VAR
    payload = raw_value.to_bytes(2, byteorder="little")

    return payload

InOutingModeMessage

Bases: BoolMessage

Parser for message 0x406D (Indoor Outing Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
482
483
484
485
486
class InOutingModeMessage(BoolMessage):
    """Parser for message 0x406D (Indoor Outing Mode)."""

    MESSAGE_ID = 0x406D
    MESSAGE_NAME = "Indoor Outing Mode"

InPvContactStateMessage

Bases: BoolMessage

Parser for message 0x4123 (PV Contact State).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1479
1480
1481
1482
1483
class InPvContactStateMessage(BoolMessage):
    """Parser for message 0x4123 (PV Contact State)."""

    MESSAGE_ID = 0x4123
    MESSAGE_NAME = "PV Contact State"

InQuietModeMessage

Bases: BoolMessage

Parser for message 0x406E (Indoor Quiet Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
489
490
491
492
493
class InQuietModeMessage(BoolMessage):
    """Parser for message 0x406E (Indoor Quiet Mode)."""

    MESSAGE_ID = 0x406E
    MESSAGE_NAME = "Indoor Quiet Mode"

InRoomTempSensorMessage

Bases: BoolMessage

Parser for message 0x4076 (Indoor Room Temperature Sensor).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
528
529
530
531
532
class InRoomTempSensorMessage(BoolMessage):
    """Parser for message 0x4076 (Indoor Room Temperature Sensor)."""

    MESSAGE_ID = 0x4076
    MESSAGE_NAME = "Indoor Room Temperature Sensor"

InRoomTemperature

Bases: BasicTemperatureMessage

Parser for message 0x4203 (Indoor Room Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1587
1588
1589
1590
1591
1592
class InRoomTemperature(BasicTemperatureMessage):
    """Parser for message 0x4203 (Indoor Room Temperature)."""

    MESSAGE_ID = 0x4203
    MESSAGE_NAME = "Indoor Room Temperature"
    SIGNED = True

InSgReadyModeStateMessage

Bases: EnumMessage

Parser for message 0x4124 (SG Ready Mode State).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1486
1487
1488
1489
1490
1491
class InSgReadyModeStateMessage(EnumMessage):
    """Parser for message 0x4124 (SG Ready Mode State)."""

    MESSAGE_ID = 0x4124
    MESSAGE_NAME = "SG Ready Mode State"
    MESSAGE_ENUM = InSgReadyModeState

InSilenceMessage

Bases: EnumMessage

Parser for message 0x4046 (Indoor Silence Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
355
356
357
358
359
360
class InSilenceMessage(EnumMessage):
    """Parser for message 0x4046 (Indoor Silence Mode)."""

    MESSAGE_ID = 0x4046
    MESSAGE_NAME = "Indoor Silence Mode"
    MESSAGE_ENUM = InSilence

InSolarPumpMessage

Bases: EnumMessage

Parser for message 0x4068 (Indoor Solar Pump).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
442
443
444
445
446
447
class InSolarPumpMessage(EnumMessage):
    """Parser for message 0x4068 (Indoor Solar Pump)."""

    MESSAGE_ID = 0x4068
    MESSAGE_NAME = "Indoor Solar Pump"
    MESSAGE_ENUM = InSolarPump

InStateDefrostControlMessage

Bases: EnumMessage

Parser for message 0x402D (Indoor State Defrost Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
297
298
299
300
301
302
class InStateDefrostControlMessage(EnumMessage):
    """Parser for message 0x402D (Indoor State Defrost Control)."""

    MESSAGE_ID = 0x402D
    MESSAGE_NAME = "Indoor State Defrost Control"
    MESSAGE_ENUM = InStateDefrostControl

InStateDefrostModeMessage

Bases: EnumMessage

Parser for message 0x402E (Indoor State Defrost Mode).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
305
306
307
308
309
310
class InStateDefrostModeMessage(EnumMessage):
    """Parser for message 0x402E (Indoor State Defrost Mode)."""

    MESSAGE_ID = 0x402E
    MESSAGE_NAME = "Indoor State Defrost Mode"
    MESSAGE_ENUM = InStateDefrostMode

InStateFlowCheck

Bases: BoolMessage

Parser for message 0x4102 (Indoor Flow Check State).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1241
1242
1243
1244
1245
class InStateFlowCheck(BoolMessage):
    """Parser for message 0x4102 (Indoor Flow Check State)."""

    MESSAGE_ID = 0x4102
    MESSAGE_NAME = "Indoor Flow Check State"

InStateThermo

Bases: BoolMessage

Parser for message 0x4028 (Indoor Thermo State).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
266
267
268
269
270
class InStateThermo(BoolMessage):
    """Parser for message 0x4028 (Indoor Thermo State)."""

    MESSAGE_ID = 0x4028
    MESSAGE_NAME = "Indoor Thermo State"

InTargetTemperature

Bases: BasicTemperatureMessage

Parser for message 0x4201 (Indoor Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1572
1573
1574
1575
1576
1577
class InTargetTemperature(BasicTemperatureMessage):
    """Parser for message 0x4201 (Indoor Target Temperature)."""

    MESSAGE_ID = 0x4201
    MESSAGE_NAME = "Indoor Target Temperature"
    SIGNED = True

InTdmIndoorTypeMessage

Bases: EnumMessage

Parser for message 0x4108 (Set TDM equipment type).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1298
1299
1300
1301
1302
1303
class InTdmIndoorTypeMessage(EnumMessage):
    """Parser for message 0x4108 (Set TDM equipment type)."""

    MESSAGE_ID = 0x4108
    MESSAGE_NAME = "Set TDM equipment type"
    MESSAGE_ENUM = InTdmIndoorType

InTempAlarmLowerMessage

Bases: BasicTemperatureMessage

Parser for message 0x430B (Lower temperature alarm).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3237
3238
3239
3240
3241
class InTempAlarmLowerMessage(BasicTemperatureMessage):
    """Parser for message 0x430B (Lower temperature alarm)."""

    MESSAGE_ID = 0x430B
    MESSAGE_NAME = "Lower Temperature Alarm"

InTempAlarmUpperMessage

Bases: BasicTemperatureMessage

Parser for message 0x430A (Upper temperature alarm).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3230
3231
3232
3233
3234
class InTempAlarmUpperMessage(BasicTemperatureMessage):
    """Parser for message 0x430A (Upper temperature alarm)."""

    MESSAGE_ID = 0x430A
    MESSAGE_NAME = "Upper Temperature Alarm"

InTempDefrostFahrenheitMessage

Bases: BasicTemperatureMessage

Parser for message 0x4309 (Defrost measured temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3223
3224
3225
3226
3227
class InTempDefrostFahrenheitMessage(BasicTemperatureMessage):
    """Parser for message 0x4309 (Defrost measured temperature)."""

    MESSAGE_ID = 0x4309
    MESSAGE_NAME = "Defrost Measured Temperature"

InTempDefrostTargetFahrenheitMessage

Bases: BasicTemperatureMessage

Parser for message 0x4308 (Defrost target temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3216
3217
3218
3219
3220
class InTempDefrostTargetFahrenheitMessage(BasicTemperatureMessage):
    """Parser for message 0x4308 (Defrost target temperature)."""

    MESSAGE_ID = 0x4308
    MESSAGE_NAME = "Defrost Target Temperature"

InTempEvaIn

Bases: BasicTemperatureMessage

Parser for 0x4205 (Indoor Temp Eva In).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1602
1603
1604
1605
1606
class InTempEvaIn(BasicTemperatureMessage):
    """Parser for 0x4205 (Indoor Temp Eva In)."""

    MESSAGE_ID = 0x4205
    MESSAGE_NAME = "Indoor Temp Eva In"

InTempEvaOut

Bases: BasicTemperatureMessage

Parser for 0x4206 (Indoor Temp Eva Out).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1609
1610
1611
1612
1613
class InTempEvaOut(BasicTemperatureMessage):
    """Parser for 0x4206 (Indoor Temp Eva Out)."""

    MESSAGE_ID = 0x4206
    MESSAGE_NAME = "Indoor Temp Eva Out"

InTempMixingValveFahrenheitMessage

Bases: BasicTemperatureMessage

Parser for message 0x428C (Mixing valve temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2660
2661
2662
2663
2664
class InTempMixingValveFahrenheitMessage(BasicTemperatureMessage):
    """Parser for message 0x428C (Mixing valve temperature)."""

    MESSAGE_ID = 0x428C
    MESSAGE_NAME = "InTempMixingValveFahrenheitMessage"

InTempRoomAdjustMessage

Bases: BasicTemperatureMessage

Parser for message 0x430C (Room temperature adjustment).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3244
3245
3246
3247
3248
class InTempRoomAdjustMessage(BasicTemperatureMessage):
    """Parser for message 0x430C (Room temperature adjustment)."""

    MESSAGE_ID = 0x430C
    MESSAGE_NAME = "Room Temperature Adjustment"

InTempWaterInMessage

Bases: BasicTemperatureMessage

Parser for message 0x4236 (Return Water Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1667
1668
1669
1670
1671
class InTempWaterInMessage(BasicTemperatureMessage):
    """Parser for message 0x4236 (Return Water Temperature)."""

    MESSAGE_ID = 0x4236
    MESSAGE_NAME = "Return Water Temperature"

InTempWaterLawMessage

Bases: BasicTemperatureMessage

Parser for message 0x427F (Water Law Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2566
2567
2568
2569
2570
class InTempWaterLawMessage(BasicTemperatureMessage):
    """Parser for message 0x427F (Water Law Target Temperature)."""

    MESSAGE_ID = 0x427F
    MESSAGE_NAME = "Water Law Target Temperature"

InTempWaterOut2Message

Bases: BasicTemperatureMessage

Parser for message 0x4239 (Heater Out Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1688
1689
1690
1691
1692
class InTempWaterOut2Message(BasicTemperatureMessage):
    """Parser for message 0x4239 (Heater Out Temperature)."""

    MESSAGE_ID = 0x4239
    MESSAGE_NAME = "Heater Out Temperature"

InThermistorOpenMessage

Bases: EnumMessage

Parser for message 0x4035 (Indoor Thermistor Open).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
329
330
331
332
333
334
class InThermistorOpenMessage(EnumMessage):
    """Parser for message 0x4035 (Indoor Thermistor Open)."""

    MESSAGE_ID = 0x4035
    MESSAGE_NAME = "Indoor Thermistor Open"
    MESSAGE_ENUM = InThermistorOpen

InThermostat0Message

Bases: EnumMessage

Parser for message 0x406B (Indoor Thermostat 0).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
466
467
468
469
470
471
class InThermostat0Message(EnumMessage):
    """Parser for message 0x406B (Indoor Thermostat 0)."""

    MESSAGE_ID = 0x406B
    MESSAGE_NAME = "Indoor Thermostat 0"
    MESSAGE_ENUM = InThermostat0

InThermostatInputStatusMessage

Bases: RawMessage

Parser for message 0x4306 (Thermostat input status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3202
3203
3204
3205
3206
class InThermostatInputStatusMessage(RawMessage):
    """Parser for message 0x4306 (Thermostat input status)."""

    MESSAGE_ID = 0x4306
    MESSAGE_NAME = "Thermostat Input Status"

InThermostatOutputStatusMessage

Bases: RawMessage

Parser for message 0x4307 (Thermostat output status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3209
3210
3211
3212
3213
class InThermostatOutputStatusMessage(RawMessage):
    """Parser for message 0x4307 (Thermostat output status)."""

    MESSAGE_ID = 0x4307
    MESSAGE_NAME = "Thermostat Output Status"

InThermostatWaterHeaterMessage

Bases: RawMessage

Parser for message 0x40C5 (Thermostat Water Heater).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1170
1171
1172
1173
1174
class InThermostatWaterHeaterMessage(RawMessage):
    """Parser for message 0x40C5 (Thermostat Water Heater)."""

    MESSAGE_ID = 0x40C5
    MESSAGE_NAME = "Thermostat Water Heater"

InThermostatZone1Status

Bases: EnumMessage

Parser for message 0x4069 (Indoor Thermostat Zone 1 Status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
450
451
452
453
454
455
class InThermostatZone1Status(EnumMessage):
    """Parser for message 0x4069 (Indoor Thermostat Zone 1 Status)."""

    MESSAGE_ID = 0x4069
    MESSAGE_NAME = "Indoor Thermostat Zone 1 Status"
    MESSAGE_ENUM = InThermostatStatus

InThermostatZone2Status

Bases: EnumMessage

Parser for message 0x4068 (Indoor Thermostat Zone 2 Status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
458
459
460
461
462
463
class InThermostatZone2Status(EnumMessage):
    """Parser for message 0x4068 (Indoor Thermostat Zone 2 Status)."""

    MESSAGE_ID = 0x406A
    MESSAGE_NAME = "Indoor Thermostat Zone 2 Status"
    MESSAGE_ENUM = InThermostatStatus

InUnknown423eMessage

Bases: RawMessage

Parser for message 0x423E (Unknown/Undocumented).

Not found in NASA.ptc documentation. Gap between 0x4239 and 0x4247. May be device-specific or reserved for future use.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1695
1696
1697
1698
1699
1700
1701
1702
1703
class InUnknown423eMessage(RawMessage):
    """Parser for message 0x423E (Unknown/Undocumented).

    Not found in NASA.ptc documentation. Gap between 0x4239 and 0x4247.
    May be device-specific or reserved for future use.
    """

    MESSAGE_ID = 0x423E
    MESSAGE_NAME = "Unknown 423E"

InVacancyControlMessage

Bases: BoolMessage

Parser for message 0x40BD (Vacancy control).

Enables/disables vacancy detection and energy-saving operation mode. Default: 0 (Disabled), Range: 0-1

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1046
1047
1048
1049
1050
1051
1052
1053
1054
class InVacancyControlMessage(BoolMessage):
    """Parser for message 0x40BD (Vacancy control).

    Enables/disables vacancy detection and energy-saving operation mode.
    Default: 0 (Disabled), Range: 0-1
    """

    MESSAGE_ID = 0x40BD
    MESSAGE_NAME = "Vacancy control"

InVariableIndoorUnknownMessage

Bases: RawMessage

Parser for message 0x4301 (Variable Indoor Unknown).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3165
3166
3167
3168
3169
class InVariableIndoorUnknownMessage(RawMessage):
    """Parser for message 0x4301 (Variable Indoor Unknown)."""

    MESSAGE_ID = 0x4301
    MESSAGE_NAME = "Variable Indoor Unknown"

InVariableUnknown4202Message

Bases: BasicTemperatureMessage

Parser for message 0x4202 (Unknown temperature variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1580
1581
1582
1583
1584
class InVariableUnknown4202Message(BasicTemperatureMessage):
    """Parser for message 0x4202 (Unknown temperature variable)."""

    MESSAGE_ID = 0x4202
    MESSAGE_NAME = "InVariableUnknown4202Message"

InVariableUnknown4213Message

Bases: RawMessage

Parser for message 0x4213 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1637
1638
1639
1640
1641
class InVariableUnknown4213Message(RawMessage):
    """Parser for message 0x4213 (Unknown variable)."""

    MESSAGE_ID = 0x4213
    MESSAGE_NAME = "InVariableUnknown4213Message"

InVariableUnknown428dMessage

Bases: RawMessage

Parser for message 0x428D (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2667
2668
2669
2670
2671
class InVariableUnknown428dMessage(RawMessage):
    """Parser for message 0x428D (Unknown variable)."""

    MESSAGE_ID = 0x428D
    MESSAGE_NAME = "InVariableUnknown428dMessage"

InVariableUnknown4303Message

Bases: RawMessage

Parser for message 0x4303 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3181
3182
3183
3184
3185
class InVariableUnknown4303Message(RawMessage):
    """Parser for message 0x4303 (Unknown variable)."""

    MESSAGE_ID = 0x4303
    MESSAGE_NAME = "InVariableUnknown4303Message"

InVariableUnknown4304Message

Bases: RawMessage

Parser for message 0x4304 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3188
3189
3190
3191
3192
class InVariableUnknown4304Message(RawMessage):
    """Parser for message 0x4304 (Unknown variable)."""

    MESSAGE_ID = 0x4304
    MESSAGE_NAME = "InVariableUnknown4304Message"

InVariableUnknown4305Message

Bases: RawMessage

Parser for message 0x4305 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3195
3196
3197
3198
3199
class InVariableUnknown4305Message(RawMessage):
    """Parser for message 0x4305 (Unknown variable)."""

    MESSAGE_ID = 0x4305
    MESSAGE_NAME = "InVariableUnknown4305Message"

InVariableUnknown4322Message

Bases: RawMessage

Parser for message 0x4322 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3356
3357
3358
3359
3360
class InVariableUnknown4322Message(RawMessage):
    """Parser for message 0x4322 (Unknown variable)."""

    MESSAGE_ID = 0x4322
    MESSAGE_NAME = "InVariableUnknown4322Message"

InVariableUnknown4323Message

Bases: RawMessage

Parser for message 0x4323 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3363
3364
3365
3366
3367
class InVariableUnknown4323Message(RawMessage):
    """Parser for message 0x4323 (Unknown variable)."""

    MESSAGE_ID = 0x4323
    MESSAGE_NAME = "InVariableUnknown4323Message"

InVariableUnknown4324Message

Bases: RawMessage

Parser for message 0x4324 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3370
3371
3372
3373
3374
class InVariableUnknown4324Message(RawMessage):
    """Parser for message 0x4324 (Unknown variable)."""

    MESSAGE_ID = 0x4324
    MESSAGE_NAME = "InVariableUnknown4324Message"

InVariableUnknown4325Message

Bases: RawMessage

Parser for message 0x4325 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3377
3378
3379
3380
3381
class InVariableUnknown4325Message(RawMessage):
    """Parser for message 0x4325 (Unknown variable)."""

    MESSAGE_ID = 0x4325
    MESSAGE_NAME = "InVariableUnknown4325Message"

InVariableUnknown4326Message

Bases: RawMessage

Parser for message 0x4326 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3384
3385
3386
3387
3388
class InVariableUnknown4326Message(RawMessage):
    """Parser for message 0x4326 (Unknown variable)."""

    MESSAGE_ID = 0x4326
    MESSAGE_NAME = "InVariableUnknown4326Message"

InVariableUnknown4327Message

Bases: RawMessage

Parser for message 0x4327 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3391
3392
3393
3394
3395
class InVariableUnknown4327Message(RawMessage):
    """Parser for message 0x4327 (Unknown variable)."""

    MESSAGE_ID = 0x4327
    MESSAGE_NAME = "InVariableUnknown4327Message"

InVariableUnknown4328Message

Bases: RawMessage

Parser for message 0x4328 (Unknown variable).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3398
3399
3400
3401
3402
class InVariableUnknown4328Message(RawMessage):
    """Parser for message 0x4328 (Unknown variable)."""

    MESSAGE_ID = 0x4328
    MESSAGE_NAME = "InVariableUnknown4328Message"

InWallMountedRemoteControlMessage

Bases: EnumMessage

Parser for message 0x4077 (Indoor Wall Mounted Remote Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
535
536
537
538
539
540
class InWallMountedRemoteControlMessage(EnumMessage):
    """Parser for message 0x4077 (Indoor Wall Mounted Remote Control)."""

    MESSAGE_ID = 0x4077
    MESSAGE_NAME = "Indoor Wall Mounted Remote Control"
    MESSAGE_ENUM = InWallMountedRemoteControl

InWaterInletTemperature2Message

Bases: FloatMessage

Parser for message 0x42CD (Water Inlet Temperature 2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2695
2696
2697
2698
2699
2700
class InWaterInletTemperature2Message(FloatMessage):
    """Parser for message 0x42CD (Water Inlet Temperature 2)."""

    MESSAGE_ID = 0x42CD
    MESSAGE_NAME = "Water Inlet Temperature 2"
    UNIT_OF_MEASUREMENT = "°C"

InWaterLawTargetTemperature

Bases: BasicTemperatureMessage

Parser for message 0x4248 (Indoor Water Law Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1714
1715
1716
1717
1718
1719
class InWaterLawTargetTemperature(BasicTemperatureMessage):
    """Parser for message 0x4248 (Indoor Water Law Target Temperature)."""

    MESSAGE_ID = 0x4248
    MESSAGE_NAME = "Indoor Water Law Target Temperature"
    SIGNED = True

InWaterOutletTargetTemperature

Bases: BasicTemperatureMessage

Parser for message 0x4247 (Indoor Water Outlet Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1706
1707
1708
1709
1710
1711
class InWaterOutletTargetTemperature(BasicTemperatureMessage):
    """Parser for message 0x4247 (Indoor Water Outlet Target Temperature)."""

    MESSAGE_ID = 0x4247
    MESSAGE_NAME = "Indoor Water Outlet Target Temperature"
    SIGNED = True

InWaterPumpPwmValueMessage

Bases: IntegerMessage

Parser for message 0x40C4 (Water Pump PWM Value).

Controls the PWM (Pulse Width Modulation) output for the integrated inverter pump that manages main water flow rate in R290 heat pump systems.

Value Range and Behavior: - 25-100: Fixed PWM value (percentage). The pump operates at this exact speed regardless of the controller's computed optimal value. This forces a specific flow rate and persists after power cycles. - 255 (0xFF): Automatic mode. The pump returns to dynamic PWM adjustment, allowing the controller to compute and apply the optimal value based on system conditions.

Important Distinction from FSV#4054: - FSV#4054: Sets a minimum PWM value but still allows dynamic adjustment within the allowed interval based on system demand. - 0x40C4: Sets a FIXED PWM value when 25-100, overriding all controller optimization. Only returns to automatic when set to 0xFF (255).

Example Use Cases: - Force full speed: Set to 100 (100% PWM) - Force half speed: Set to 50 (50% PWM) - Return to automatic: Set to 255 (0xFF)

After a power outage, if the pump operates at unexpectedly low flow rate,

check if this value was previously set to force a specific speed. It will be retained in the controller's memory.

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
class InWaterPumpPwmValueMessage(IntegerMessage):
    """Parser for message 0x40C4 (Water Pump PWM Value).

    Controls the PWM (Pulse Width Modulation) output for the integrated inverter pump
    that manages main water flow rate in R290 heat pump systems.

    Value Range and Behavior:
    - 25-100: Fixed PWM value (percentage). The pump operates at this exact speed
             regardless of the controller's computed optimal value. This forces
             a specific flow rate and persists after power cycles.
    - 255 (0xFF): Automatic mode. The pump returns to dynamic PWM adjustment,
                  allowing the controller to compute and apply the optimal value
                  based on system conditions.

    Important Distinction from FSV#4054:
    - FSV#4054: Sets a minimum PWM value but still allows dynamic adjustment
               within the allowed interval based on system demand.
    - 0x40C4: Sets a FIXED PWM value when 25-100, overriding all controller
              optimization. Only returns to automatic when set to 0xFF (255).

    Example Use Cases:
    - Force full speed: Set to 100 (100% PWM)
    - Force half speed: Set to 50 (50% PWM)
    - Return to automatic: Set to 255 (0xFF)

    Note: After a power outage, if the pump operates at unexpectedly low flow rate,
          check if this value was previously set to force a specific speed. It will
          be retained in the controller's memory.
    """

    MESSAGE_ID = 0x40C4
    MESSAGE_NAME = "Water Pump Speed"
    UNIT_OF_MEASUREMENT = "%"

InWaterPumpStateMessage

Bases: BoolMessage

Parser for message 0x4089 (Water Pump State).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
588
589
590
591
592
class InWaterPumpStateMessage(BoolMessage):
    """Parser for message 0x4089 (Water Pump State)."""

    MESSAGE_ID = 0x4089
    MESSAGE_NAME = "Water Pump State"

InWaterValve1Message

Bases: EnumMessage

Parser for message 0x4103 (Set water valve 1).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1248
1249
1250
1251
1252
1253
class InWaterValve1Message(EnumMessage):
    """Parser for message 0x4103 (Set water valve 1)."""

    MESSAGE_ID = 0x4103
    MESSAGE_NAME = "Set water valve 1"
    MESSAGE_ENUM = InWaterValve

InWaterValve2Message

Bases: EnumMessage

Parser for message 0x4104 (Set water valve 2).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1256
1257
1258
1259
1260
1261
class InWaterValve2Message(EnumMessage):
    """Parser for message 0x4104 (Set water valve 2)."""

    MESSAGE_ID = 0x4104
    MESSAGE_NAME = "Set water valve 2"
    MESSAGE_ENUM = InWaterValve

InWifiKitControlMessage

Bases: EnumMessage

Parser for message 0x4048 (Indoor WiFi Kit Control).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
371
372
373
374
375
376
class InWifiKitControlMessage(EnumMessage):
    """Parser for message 0x4048 (Indoor WiFi Kit Control)."""

    MESSAGE_ID = 0x4048
    MESSAGE_NAME = "Indoor WiFi Kit Control"
    MESSAGE_ENUM = InWifiKitControl

InWifiKitPowerMessage

Bases: EnumMessage

Parser for message 0x4047 (Indoor WiFi Kit Power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
363
364
365
366
367
368
class InWifiKitPowerMessage(EnumMessage):
    """Parser for message 0x4047 (Indoor WiFi Kit Power)."""

    MESSAGE_ID = 0x4047
    MESSAGE_NAME = "Indoor WiFi Kit Power"
    MESSAGE_ENUM = InWifiKitPower

InZone1PowerMessage

Bases: BoolMessage

Parser for message 0x4119 (Zone 1 operating power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1336
1337
1338
1339
1340
class InZone1PowerMessage(BoolMessage):
    """Parser for message 0x4119 (Zone 1 operating power)."""

    MESSAGE_ID = 0x4119
    MESSAGE_NAME = "Zone 1 operating power"

InZone1WaterOutletTemperatureFahrenheitMessage

Bases: BasicTemperatureMessage

Parser for message 0x42D8 (Zone 1 Water Outlet Temperature Fahrenheit).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2800
2801
2802
2803
2804
class InZone1WaterOutletTemperatureFahrenheitMessage(BasicTemperatureMessage):
    """Parser for message 0x42D8 (Zone 1 Water Outlet Temperature Fahrenheit)."""

    MESSAGE_ID = 0x42D8
    MESSAGE_NAME = "Zone 1 Water Outlet Temperature Fahrenheit"

InZone2PowerMessage

Bases: BoolMessage

Parser for message 0x411E (Zone 2 operating power).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1472
1473
1474
1475
1476
class InZone2PowerMessage(BoolMessage):
    """Parser for message 0x411E (Zone 2 operating power)."""

    MESSAGE_ID = 0x411E
    MESSAGE_NAME = "Zone 2 operating power"

InZone2RoomTemperatureFahrenheitMessage

Bases: BasicTemperatureMessage

Parser for message 0x42D4 (Zone 2 Room Temperature Fahrenheit).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2779
2780
2781
2782
2783
class InZone2RoomTemperatureFahrenheitMessage(BasicTemperatureMessage):
    """Parser for message 0x42D4 (Zone 2 Room Temperature Fahrenheit)."""

    MESSAGE_ID = 0x42D4
    MESSAGE_NAME = "Zone 2 Room Temperature Fahrenheit"

InZone2TargetTempMessage

Bases: BasicTemperatureMessage

Parser for message 0x42D6 (Zone 2 Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2786
2787
2788
2789
2790
class InZone2TargetTempMessage(BasicTemperatureMessage):
    """Parser for message 0x42D6 (Zone 2 Target Temperature)."""

    MESSAGE_ID = 0x42D6
    MESSAGE_NAME = "Zone 2 Target Temperature"

InZone2WaterOutletTargetTempMessage

Bases: BasicTemperatureMessage

Parser for message 0x42D7 (Zone 2 Water Outlet Target Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2793
2794
2795
2796
2797
class InZone2WaterOutletTargetTempMessage(BasicTemperatureMessage):
    """Parser for message 0x42D7 (Zone 2 Water Outlet Target Temperature)."""

    MESSAGE_ID = 0x42D7
    MESSAGE_NAME = "Zone 2 Water Outlet Target Temperature"

InZone2WaterOutletTemperatureFahrenheitMessage

Bases: BasicTemperatureMessage

Parser for message 0x42D9 (Zone 2 Water Outlet Temperature Fahrenheit).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
2807
2808
2809
2810
2811
class InZone2WaterOutletTemperatureFahrenheitMessage(BasicTemperatureMessage):
    """Parser for message 0x42D9 (Zone 2 Water Outlet Temperature Fahrenheit)."""

    MESSAGE_ID = 0x42D9
    MESSAGE_NAME = "Zone 2 Water Outlet Temperature Fahrenheit"

IndoorFlowTemperature

Bases: BasicTemperatureMessage

Parser for 0x4238 (Leaving Water Temperature).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1681
1682
1683
1684
1685
class IndoorFlowTemperature(BasicTemperatureMessage):
    """Parser for 0x4238 (Leaving Water Temperature)."""

    MESSAGE_ID = 0x4238
    MESSAGE_NAME = "Leaving Water Temperature"

TotalEnergyGenerated

Bases: BasicPowerMessage

Parser for message 0x4427 (Total energy generated).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
3563
3564
3565
3566
3567
3568
3569
class TotalEnergyGenerated(BasicPowerMessage):
    """Parser for message 0x4427 (Total energy generated)."""

    MESSAGE_ID = 0x4427
    MESSAGE_NAME = "Total Energy Generated"
    SIGNED = False
    ARITHMETIC = 0.001

VacancyStatus

Bases: BoolMessage

Parser for message 0x40BC (Indoor Vacancy Status).

Source code in pysamsungnasa/protocol/factory/messages/indoor.py
1039
1040
1041
1042
1043
class VacancyStatus(BoolMessage):
    """Parser for message 0x40BC (Indoor Vacancy Status)."""

    MESSAGE_ID = 0x40BC
    MESSAGE_NAME = "Indoor Vacancy Status"

Outdoor Messages

pysamsungnasa.protocol.factory.messages.outdoor

Outdoor unit messages.

CondenserInTemperature

Bases: BasicTemperatureMessage

Parser for message 0x820A (Condenser In Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
783
784
785
786
787
class CondenserInTemperature(BasicTemperatureMessage):
    """Parser for message 0x820A (Condenser In Temperature)."""

    MESSAGE_ID = 0x820A
    MESSAGE_NAME = "Condenser In Temperature"

CondenserOutTemperature

Bases: BasicTemperatureMessage

Parser for message 0x82DE (Condenser Out Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1585
1586
1587
1588
1589
class CondenserOutTemperature(BasicTemperatureMessage):
    """Parser for message 0x82DE (Condenser Out Temperature)."""

    MESSAGE_ID = 0x82DE
    MESSAGE_NAME = "Condenser Out Temperature"

HeatPumpVoltage

Bases: FloatMessage

Parser for message 0x24FC (Heat Pump Voltage).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
35
36
37
38
39
40
41
42
class HeatPumpVoltage(FloatMessage):
    """Parser for message 0x24FC (Heat Pump Voltage)."""

    MESSAGE_ID = 0x24FC
    MESSAGE_NAME = "Heat Pump Voltage"
    UNIT_OF_MEASUREMENT = "V"
    SIGNED = False
    ARITHMETIC = 1.0

OutLayerVariableOut1Message

Bases: FloatMessage

Parser for message 0x840F (Layer Variable OUT 1).

Undocumented outdoor unit layer variable. Appears to be a numeric value (4 bytes, 0x00001280 = 4736 decimal). Possibly related to system configuration or status.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
class OutLayerVariableOut1Message(FloatMessage):
    """Parser for message 0x840F (Layer Variable OUT 1).

    Undocumented outdoor unit layer variable.
    Appears to be a numeric value (4 bytes, 0x00001280 = 4736 decimal).
    Possibly related to system configuration or status.
    """

    MESSAGE_ID = 0x840F
    MESSAGE_NAME = "Layer Variable OUT 1"

Outdoor4wayValve2StatusMessage

Bases: EnumMessage

Parser for message 0x802A (4Way valve 2 status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
219
220
221
222
223
224
class Outdoor4wayValve2StatusMessage(EnumMessage):
    """Parser for message 0x802A (4Way valve 2 status)."""

    MESSAGE_ID = 0x802A
    MESSAGE_NAME = "4-Way Valve 2 Load"
    MESSAGE_ENUM = Outdoor4WayLoad

OutdoorA2CurrentMode

Bases: RawMessage

Parser for message 0x80BE (A2* current mode).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
699
700
701
702
703
class OutdoorA2CurrentMode(RawMessage):
    """Parser for message 0x80BE (A2* current mode)."""

    MESSAGE_ID = 0x80BE
    MESSAGE_NAME = "A2* current mode"

OutdoorA2aValveStatus

Bases: RawMessage

Parser for message 0x80C1 (A2A valve status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
713
714
715
716
717
class OutdoorA2aValveStatus(RawMessage):
    """Parser for message 0x80C1 (A2A valve status)."""

    MESSAGE_ID = 0x80C1
    MESSAGE_NAME = "A2A valve status"

OutdoorAccumulatorReturnValveStatus

Bases: RawMessage

Parser for message 0x8037 (Accumulator return valve status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
255
256
257
258
259
class OutdoorAccumulatorReturnValveStatus(RawMessage):
    """Parser for message 0x8037 (Accumulator return valve status)."""

    MESSAGE_ID = 0x8037
    MESSAGE_NAME = "Accumulator return valve status"

OutdoorAccumulatorTemp

Bases: FloatMessage

Parser for message 0x82C8 (Accumulator temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1471
1472
1473
1474
1475
class OutdoorAccumulatorTemp(FloatMessage):
    """Parser for message 0x82C8 (Accumulator temp)."""

    MESSAGE_ID = 0x82C8
    MESSAGE_NAME = "Accumulator temp"

OutdoorAccumulatorValveStatus

Bases: RawMessage

Parser for message 0x80B4 (Accumulator valve status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
664
665
666
667
668
class OutdoorAccumulatorValveStatus(RawMessage):
    """Parser for message 0x80B4 (Accumulator valve status)."""

    MESSAGE_ID = 0x80B4
    MESSAGE_NAME = "Accumulator valve status"

OutdoorAirTemperature

Bases: BasicTemperatureMessage

Parser for message 0x8204 (Outdoor Air Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
762
763
764
765
766
class OutdoorAirTemperature(BasicTemperatureMessage):
    """Parser for message 0x8204 (Outdoor Air Temperature)."""

    MESSAGE_ID = 0x8204
    MESSAGE_NAME = "Outdoor Air Temperature"

OutdoorAppearanceRpm

Bases: FloatMessage

Parser for message 0x82D0 (Appearance rpm?).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1527
1528
1529
1530
1531
class OutdoorAppearanceRpm(FloatMessage):
    """Parser for message 0x82D0 (Appearance rpm?)."""

    MESSAGE_ID = 0x82D0
    MESSAGE_NAME = "Appearance rpm?"

OutdoorAutomaticCheckStatus

Bases: RawMessage

Parser for message 0x8046 (Automatic check status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
290
291
292
293
294
class OutdoorAutomaticCheckStatus(RawMessage):
    """Parser for message 0x8046 (Automatic check status)."""

    MESSAGE_ID = 0x8046
    MESSAGE_NAME = "Automatic check status"

OutdoorAutomaticCheckStep

Bases: RawMessage

Parser for message 0x803C (Automatic check step).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
269
270
271
272
273
class OutdoorAutomaticCheckStep(RawMessage):
    """Parser for message 0x803C (Automatic check step)."""

    MESSAGE_ID = 0x803C
    MESSAGE_NAME = "Automatic check step"

OutdoorBackupOperationStatus

Bases: RawMessage

Parser for message 0x80A5 (Backup operation status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
608
609
610
611
612
class OutdoorBackupOperationStatus(RawMessage):
    """Parser for message 0x80A5 (Backup operation status)."""

    MESSAGE_ID = 0x80A5
    MESSAGE_NAME = "Backup operation status"

OutdoorBaseHeater

Bases: RawMessage

Parser for message 0x80AF (Base Heater).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
643
644
645
646
647
class OutdoorBaseHeater(RawMessage):
    """Parser for message 0x80AF (Base Heater)."""

    MESSAGE_ID = 0x80AF
    MESSAGE_NAME = "Base Heater"

OutdoorBaseOptionInfo

Bases: RawMessage

Parser for message 0x860A (Base option info).

This is a binary structure message containing base/default option settings for the outdoor unit. The structure format is: - Bytes 0-3: Header (reserved/metadata) - Bytes 4+: Variable-length configuration fields

Example payload breakdown: Header: 00000000 (metadata) Data: Configuration option bytes

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
class OutdoorBaseOptionInfo(RawMessage):
    """Parser for message 0x860A (Base option info).

    This is a binary structure message containing base/default option settings
    for the outdoor unit. The structure format is:
    - Bytes 0-3: Header (reserved/metadata)
    - Bytes 4+: Variable-length configuration fields

    Example payload breakdown:
    Header: 00000000 (metadata)
    Data: Configuration option bytes
    """

    MESSAGE_ID = 0x860A
    MESSAGE_NAME = "Base option info"

    @classmethod
    def parse_payload(cls, payload: bytes) -> "OutdoorBaseOptionInfo":
        """Parse the payload into a structured representation."""
        if not payload or len(payload) < 4:
            return cls(value=payload.hex() if payload else None)

        # Extract header (4 bytes) - contains metadata about the structure
        header_bytes = payload[0:4]
        header_int = int.from_bytes(header_bytes, byteorder="big")

        # Extract data portion (remaining bytes)
        data_portion = payload[4:]

        # Return decoded structure with hex representation and interpretations
        result = {
            "header_hex": header_bytes.hex(),
            "header_value": header_int,
            "data_hex": data_portion.hex() if data_portion else "",
            "data_length": len(data_portion),
            "total_length": len(payload),
            "raw_hex": payload.hex(),
            "note": "Structure definition not yet available in NASA.ptc - fields represent outdoor unit base option configuration",
        }
        return cls(value=result, raw_payload=payload)

parse_payload(payload) classmethod

Parse the payload into a structured representation.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
@classmethod
def parse_payload(cls, payload: bytes) -> "OutdoorBaseOptionInfo":
    """Parse the payload into a structured representation."""
    if not payload or len(payload) < 4:
        return cls(value=payload.hex() if payload else None)

    # Extract header (4 bytes) - contains metadata about the structure
    header_bytes = payload[0:4]
    header_int = int.from_bytes(header_bytes, byteorder="big")

    # Extract data portion (remaining bytes)
    data_portion = payload[4:]

    # Return decoded structure with hex representation and interpretations
    result = {
        "header_hex": header_bytes.hex(),
        "header_value": header_int,
        "data_hex": data_portion.hex() if data_portion else "",
        "data_length": len(data_portion),
        "total_length": len(payload),
        "raw_hex": payload.hex(),
        "note": "Structure definition not yet available in NASA.ptc - fields represent outdoor unit base option configuration",
    }
    return cls(value=result, raw_payload=payload)

OutdoorCboxCoolingFanStatus

Bases: RawMessage

Parser for message 0x809E (Cbox cooling fan status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
601
602
603
604
605
class OutdoorCboxCoolingFanStatus(RawMessage):
    """Parser for message 0x809E (Cbox cooling fan status)."""

    MESSAGE_ID = 0x809E
    MESSAGE_NAME = "Cbox cooling fan status"

OutdoorCch1LoadMessage

Bases: EnumMessage

Parser for message 0x8013 (Outdoor CCH1 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
107
108
109
110
111
112
class OutdoorCch1LoadMessage(EnumMessage):
    """Parser for message 0x8013 (Outdoor CCH1 Load)."""

    MESSAGE_ID = 0x8013
    MESSAGE_NAME = "Outdoor CCH1 Load"
    MESSAGE_ENUM = OutdoorCchLoad

OutdoorCch2LoadMessage

Bases: EnumMessage

Parser for message 0x8014 (Outdoor CCH2 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
115
116
117
118
119
120
class OutdoorCch2LoadMessage(EnumMessage):
    """Parser for message 0x8014 (Outdoor CCH2 Load)."""

    MESSAGE_ID = 0x8014
    MESSAGE_NAME = "Outdoor CCH2 Load"
    MESSAGE_ENUM = OutdoorCchLoad

OutdoorCombinedSuctionTemp

Bases: FloatMessage

Parser for message 0x82E7 (Evaporator Out Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1613
1614
1615
1616
1617
class OutdoorCombinedSuctionTemp(FloatMessage):
    """Parser for message 0x82E7 (Evaporator Out Temperature)."""

    MESSAGE_ID = 0x82E7
    MESSAGE_NAME = "Evaporator Out Temperature"

OutdoorCompressor1LoadMessage

Bases: EnumMessage

Parser for message 0x8010 (Outdoor Compressor 1 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
83
84
85
86
87
88
class OutdoorCompressor1LoadMessage(EnumMessage):
    """Parser for message 0x8010 (Outdoor Compressor 1 Load)."""

    MESSAGE_ID = 0x8010
    MESSAGE_NAME = "Outdoor Compressor 1 Load"
    MESSAGE_ENUM = OutdoorCompressorLoad

OutdoorCompressor2Current

Bases: FloatMessage

Parser for message 0x8277 (Compressor 2 current).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1303
1304
1305
1306
1307
class OutdoorCompressor2Current(FloatMessage):
    """Parser for message 0x8277 (Compressor 2 current)."""

    MESSAGE_ID = 0x8277
    MESSAGE_NAME = "Compressor 2 current"

OutdoorCompressor2CurrentFrequency

Bases: IntegerMessage

Parser for message 0x8276 (Compressor 2 current frequency).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1296
1297
1298
1299
1300
class OutdoorCompressor2CurrentFrequency(IntegerMessage):
    """Parser for message 0x8276 (Compressor 2 current frequency)."""

    MESSAGE_ID = 0x8276
    MESSAGE_NAME = "Compressor 2 current frequency"

OutdoorCompressor2LoadMessage

Bases: EnumMessage

Parser for message 0x8011 (Outdoor Compressor 2 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
91
92
93
94
95
96
class OutdoorCompressor2LoadMessage(EnumMessage):
    """Parser for message 0x8011 (Outdoor Compressor 2 Load)."""

    MESSAGE_ID = 0x8011
    MESSAGE_NAME = "Outdoor Compressor 2 Load"
    MESSAGE_ENUM = OutdoorCompressorLoad

OutdoorCompressor2OrderFrequency

Bases: IntegerMessage

Parser for message 0x8274 (Compressor 2 order frequency).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1282
1283
1284
1285
1286
class OutdoorCompressor2OrderFrequency(IntegerMessage):
    """Parser for message 0x8274 (Compressor 2 order frequency)."""

    MESSAGE_ID = 0x8274
    MESSAGE_NAME = "Compressor 2 order frequency"

OutdoorCompressor2RunningTime

Bases: FloatMessage

Parser for message 0x8406 (Compressor running time 2).

Represents the total cumulative running time of compressor 2 in hours. Type: LVAR (Long Variable - 4 bytes, unsigned) Unit: hours

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
class OutdoorCompressor2RunningTime(FloatMessage):
    """Parser for message 0x8406 (Compressor running time 2).

    Represents the total cumulative running time of compressor 2 in hours.
    Type: LVAR (Long Variable - 4 bytes, unsigned)
    Unit: hours
    """

    MESSAGE_ID = 0x8406
    MESSAGE_NAME = "Compressor running time 2"
    ARITHMETIC = 1  # Direct value, no scaling
    SIGNED = False  # Unsigned integer

OutdoorCompressor2SuctionTemp

Bases: FloatMessage

Parser for message 0x829A (Compressor 2 suction temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1359
1360
1361
1362
1363
class OutdoorCompressor2SuctionTemp(FloatMessage):
    """Parser for message 0x829A (Compressor 2 suction temp)."""

    MESSAGE_ID = 0x829A
    MESSAGE_NAME = "Compressor 2 suction temp"

OutdoorCompressor2TargetFrequency

Bases: IntegerMessage

Parser for message 0x8275 (Compressor 2 target frequency).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1289
1290
1291
1292
1293
class OutdoorCompressor2TargetFrequency(IntegerMessage):
    """Parser for message 0x8275 (Compressor 2 target frequency)."""

    MESSAGE_ID = 0x8275
    MESSAGE_NAME = "Compressor 2 target frequency"

OutdoorCompressor3LoadMessage

Bases: EnumMessage

Parser for message 0x8012 (Outdoor Compressor 3 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
 99
100
101
102
103
104
class OutdoorCompressor3LoadMessage(EnumMessage):
    """Parser for message 0x8012 (Outdoor Compressor 3 Load)."""

    MESSAGE_ID = 0x8012
    MESSAGE_NAME = "Outdoor Compressor 3 Load"
    MESSAGE_ENUM = OutdoorCompressorLoad

OutdoorCompressorDischarge2

Bases: FloatMessage

Parser for message 0x820C (Compressor discharge2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
790
791
792
793
794
class OutdoorCompressorDischarge2(FloatMessage):
    """Parser for message 0x820C (Compressor discharge2)."""

    MESSAGE_ID = 0x820C
    MESSAGE_NAME = "Compressor discharge2"

OutdoorCompressorDischarge3

Bases: FloatMessage

Parser for message 0x820E (Compressor discharge3).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
797
798
799
800
801
class OutdoorCompressorDischarge3(FloatMessage):
    """Parser for message 0x820E (Compressor discharge3)."""

    MESSAGE_ID = 0x820E
    MESSAGE_NAME = "Compressor discharge3"

OutdoorCompressorInterstagePressure

Bases: FloatMessage

Parser for message 0x82B8 (Compressor interstage pressure).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1436
1437
1438
1439
1440
class OutdoorCompressorInterstagePressure(FloatMessage):
    """Parser for message 0x82B8 (Compressor interstage pressure)."""

    MESSAGE_ID = 0x82B8
    MESSAGE_NAME = "Compressor interstage pressure"

OutdoorCompressorOrderFrequency

Bases: IntegerMessage

Parser for message 0x8236 (Outdoor Compressor Order Frequency).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
956
957
958
959
960
961
class OutdoorCompressorOrderFrequency(IntegerMessage):
    """Parser for message 0x8236 (Outdoor Compressor Order Frequency)."""

    MESSAGE_ID = 0x8236
    MESSAGE_NAME = "Outdoor Compressor Order Frequency"
    UNIT_OF_MEASUREMENT = "Hz"

OutdoorCompressorProtectionControlOperationStatus

Bases: RawMessage

Parser for message 0x80A6 (Compressor protection control operation status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
615
616
617
618
619
class OutdoorCompressorProtectionControlOperationStatus(RawMessage):
    """Parser for message 0x80A6 (Compressor protection control operation status)."""

    MESSAGE_ID = 0x80A6
    MESSAGE_NAME = "Compressor protection control operation status"

OutdoorCompressorRunFrequency

Bases: IntegerMessage

Parser for message 0x8238 (Outdoor Compressor Run Frequency).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
972
973
974
975
976
977
class OutdoorCompressorRunFrequency(IntegerMessage):
    """Parser for message 0x8238 (Outdoor Compressor Run Frequency)."""

    MESSAGE_ID = 0x8238
    MESSAGE_NAME = "Outdoor Compressor Run Frequency"
    UNIT_OF_MEASUREMENT = "Hz"

OutdoorCompressorRunning

Bases: FloatMessage

Parser for message 0x8231 (Compressor running?).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
926
927
928
929
930
class OutdoorCompressorRunning(FloatMessage):
    """Parser for message 0x8231 (Compressor running?)."""

    MESSAGE_ID = 0x8231
    MESSAGE_NAME = "Compressor running?"

OutdoorCompressorRunningTime

Bases: FloatMessage

Parser for message 0x8405 (Compressor running time 1).

Represents the total cumulative running time of compressor 1 in hours. Type: LVAR (Long Variable - 4 bytes, unsigned) Unit: hours

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
class OutdoorCompressorRunningTime(FloatMessage):
    """Parser for message 0x8405 (Compressor running time 1).

    Represents the total cumulative running time of compressor 1 in hours.
    Type: LVAR (Long Variable - 4 bytes, unsigned)
    Unit: hours
    """

    MESSAGE_ID = 0x8405
    MESSAGE_NAME = "Compressor running time 1"
    ARITHMETIC = 1  # Direct value, no scaling
    SIGNED = False  # Unsigned integer

OutdoorCompressorSuction3Temp

Bases: BasicTemperatureMessage

Parser for message 0x82F9 (Compressor suction3 temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1655
1656
1657
1658
1659
class OutdoorCompressorSuction3Temp(BasicTemperatureMessage):
    """Parser for message 0x82F9 (Compressor suction3 temp)."""

    MESSAGE_ID = 0x82F9
    MESSAGE_NAME = "Compressor suction3 temp"

OutdoorCompressorSuctionSuperheat

Bases: FloatMessage

Parser for message 0x82CB (Compressor suction superheat).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1492
1493
1494
1495
1496
class OutdoorCompressorSuctionSuperheat(FloatMessage):
    """Parser for message 0x82CB (Compressor suction superheat)."""

    MESSAGE_ID = 0x82CB
    MESSAGE_NAME = "Compressor suction superheat"

OutdoorCompressorTargetFrequency

Bases: IntegerMessage

Parser for message 0x8237 (Outdoor Compressor Target Frequency).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
964
965
966
967
968
969
class OutdoorCompressorTargetFrequency(IntegerMessage):
    """Parser for message 0x8237 (Outdoor Compressor Target Frequency)."""

    MESSAGE_ID = 0x8237
    MESSAGE_NAME = "Outdoor Compressor Target Frequency"
    UNIT_OF_MEASUREMENT = "Hz"

OutdoorCondenser2OutletTemp

Bases: FloatMessage

Parser for message 0x82BF (Condenser2 outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1464
1465
1466
1467
1468
class OutdoorCondenser2OutletTemp(FloatMessage):
    """Parser for message 0x82BF (Condenser2 outlet temp)."""

    MESSAGE_ID = 0x82BF
    MESSAGE_NAME = "Condenser2 outlet temp"

OutdoorCondenserInstalledSize

Bases: FloatMessage

Parser for message 0x82AF (Condenser installed size).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1415
1416
1417
1418
1419
class OutdoorCondenserInstalledSize(FloatMessage):
    """Parser for message 0x82AF (Condenser installed size)."""

    MESSAGE_ID = 0x82AF
    MESSAGE_NAME = "Condenser installed size"

OutdoorCondenserMidpointTemp

Bases: FloatMessage

Parser for message 0x8285 (Condenser mid-point temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1338
1339
1340
1341
1342
class OutdoorCondenserMidpointTemp(FloatMessage):
    """Parser for message 0x8285 (Condenser mid-point temp)."""

    MESSAGE_ID = 0x8285
    MESSAGE_NAME = "Condenser mid-point temp"

OutdoorCondenserOutletSubcool

Bases: FloatMessage

Parser for message 0x82CE (Condenser outlet subcool).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1513
1514
1515
1516
1517
class OutdoorCondenserOutletSubcool(FloatMessage):
    """Parser for message 0x82CE (Condenser outlet subcool)."""

    MESSAGE_ID = 0x82CE
    MESSAGE_NAME = "Condenser outlet subcool"

OutdoorCondenserOutletSuperheat

Bases: FloatMessage

Parser for message 0x82CC (Condenser outlet superheat).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1499
1500
1501
1502
1503
class OutdoorCondenserOutletSuperheat(FloatMessage):
    """Parser for message 0x82CC (Condenser outlet superheat)."""

    MESSAGE_ID = 0x82CC
    MESSAGE_NAME = "Condenser outlet superheat"

OutdoorCondoutTemp

Bases: BasicTemperatureMessage

Parser for message 0x8218 (Evaporator In Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
813
814
815
816
817
class OutdoorCondoutTemp(BasicTemperatureMessage):
    """Parser for message 0x8218 (Evaporator In Temperature)."""

    MESSAGE_ID = 0x8218
    MESSAGE_NAME = "Evaporator In Temperature"

OutdoorControlBoxTemp

Bases: FloatMessage

Parser for message 0x82BE (Control box temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1457
1458
1459
1460
1461
class OutdoorControlBoxTemp(FloatMessage):
    """Parser for message 0x82BE (Control box temp)."""

    MESSAGE_ID = 0x82BE
    MESSAGE_NAME = "Control box temp"

OutdoorControlPrimeUnit

Bases: FloatMessage

Parser for message 0x823F (Outdoor Control Prime Unit).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1022
1023
1024
1025
1026
class OutdoorControlPrimeUnit(FloatMessage):
    """Parser for message 0x823F (Outdoor Control Prime Unit)."""

    MESSAGE_ID = 0x823F
    MESSAGE_NAME = "Outdoor Control Prime Unit"

OutdoorCoolOnlyModel

Bases: EnumMessage

Parser for message 0x809D (Outdoor Cool Only Model).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
593
594
595
596
597
598
class OutdoorCoolOnlyModel(EnumMessage):
    """Parser for message 0x809D (Outdoor Cool Only Model)."""

    MESSAGE_ID = 0x809D
    MESSAGE_NAME = "Outdoor Cool Only Model"
    MESSAGE_ENUM = OutOutdoorCoolonlyModel

OutdoorCumulativeEnergy

Bases: BasicEnergyMessage

Parser for message 0x8414 (Outdoor Cumulative Energy).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1767
1768
1769
1770
1771
1772
1773
class OutdoorCumulativeEnergy(BasicEnergyMessage):
    """Parser for message 0x8414 (Outdoor Cumulative Energy)."""

    MESSAGE_ID = 0x8414
    MESSAGE_NAME = "Outdoor Cumulative Energy"
    SIGNED = False
    ARITHMETIC = 0.001

OutdoorCurrent

Bases: BasicCurrentMessage

Parser for message 0x8217 (Outdoor Current).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
804
805
806
807
808
809
810
class OutdoorCurrent(BasicCurrentMessage):
    """Parser for message 0x8217 (Outdoor Current)."""

    MESSAGE_ID = 0x8217
    MESSAGE_NAME = "Outdoor Current"
    SIGNED = False
    ARITHMETIC = 0.1

OutdoorDcLinkVoltage

Bases: FloatMessage

Parser for 0x823b (Outdoor DC Link Voltage).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
987
988
989
990
991
992
993
994
class OutdoorDcLinkVoltage(FloatMessage):
    """Parser for 0x823b (Outdoor DC Link Voltage)."""

    MESSAGE_ID = 0x823B
    MESSAGE_NAME = "Outdoor DC Link Voltage"
    UNIT_OF_MEASUREMENT = "V"
    ARITHMETIC = 1.0
    SIGNED = False

OutdoorDefrostStage

Bases: FloatMessage

Parser for message 0x8247 (Outdoor Defrost Stage).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1057
1058
1059
1060
1061
class OutdoorDefrostStage(FloatMessage):
    """Parser for message 0x8247 (Outdoor Defrost Stage)."""

    MESSAGE_ID = 0x8247
    MESSAGE_NAME = "Outdoor Defrost Stage"

OutdoorDefrostStatus

Bases: EnumMessage

Parser for message 0x8061 (Outdoor Defrost Status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
444
445
446
447
448
449
450
class OutdoorDefrostStatus(EnumMessage):
    """Parser for message 0x8061 (Outdoor Defrost Status)."""

    MESSAGE_ID = 0x8061
    MESSAGE_NAME = "Outdoor Defrost Status"
    MESSAGE_ENUM = OutdoorIndoorDefrostStep
    ENUM_DEFAULT = OutdoorIndoorDefrostStep.NO_DEFROST_OPERATION

OutdoorDesuperheaterTemp

Bases: FloatMessage

Parser for message 0x827A (Desuperheater temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1317
1318
1319
1320
1321
class OutdoorDesuperheaterTemp(FloatMessage):
    """Parser for message 0x827A (Desuperheater temp)."""

    MESSAGE_ID = 0x827A
    MESSAGE_NAME = "Desuperheater temp"

OutdoorDoubleTubeTemp

Bases: BasicTemperatureMessage

Parser for message 0x821C (Double tube temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
827
828
829
830
831
class OutdoorDoubleTubeTemp(BasicTemperatureMessage):
    """Parser for message 0x821C (Double tube temp)."""

    MESSAGE_ID = 0x821C
    MESSAGE_NAME = "Double tube temp"

OutdoorEev1Opening

Bases: IntegerMessage

Parser for message 0x8229 (EEV1 Position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
884
885
886
887
888
class OutdoorEev1Opening(IntegerMessage):
    """Parser for message 0x8229 (EEV1 Position)."""

    MESSAGE_ID = 0x8229
    MESSAGE_NAME = "EEV1 Position"

OutdoorEev2Opening

Bases: IntegerMessage

Parser for message 0x822A (EEV2 Position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
891
892
893
894
895
class OutdoorEev2Opening(IntegerMessage):
    """Parser for message 0x822A (EEV2 Position)."""

    MESSAGE_ID = 0x822A
    MESSAGE_NAME = "EEV2 Position"

OutdoorEev3Opening

Bases: IntegerMessage

Parser for message 0x822B (EEV3 Position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
898
899
900
901
902
class OutdoorEev3Opening(IntegerMessage):
    """Parser for message 0x822B (EEV3 Position)."""

    MESSAGE_ID = 0x822B
    MESSAGE_NAME = "EEV3 Position"

OutdoorEev4Opening

Bases: IntegerMessage

Parser for message 0x822C (EEV4 Position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
905
906
907
908
909
class OutdoorEev4Opening(IntegerMessage):
    """Parser for message 0x822C (EEV4 Position)."""

    MESSAGE_ID = 0x822C
    MESSAGE_NAME = "EEV4 Position"

OutdoorEev5Opening

Bases: IntegerMessage

Parser for message 0x822D (EEV5 Position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
912
913
914
915
916
class OutdoorEev5Opening(IntegerMessage):
    """Parser for message 0x822D (EEV5 Position)."""

    MESSAGE_ID = 0x822D
    MESSAGE_NAME = "EEV5 Position"

OutdoorEngineRpm

Bases: FloatMessage

Parser for message 0x82CF (Engine rpm).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1520
1521
1522
1523
1524
class OutdoorEngineRpm(FloatMessage):
    """Parser for message 0x82CF (Engine rpm)."""

    MESSAGE_ID = 0x82CF
    MESSAGE_NAME = "Engine rpm"

OutdoorEngineWaterTemp

Bases: FloatMessage

Parser for message 0x82C9 (Engine water temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1478
1479
1480
1481
1482
class OutdoorEngineWaterTemp(FloatMessage):
    """Parser for message 0x82C9 (Engine water temp)."""

    MESSAGE_ID = 0x82C9
    MESSAGE_NAME = "Engine water temp"

OutdoorErrorCode

Bases: IntegerMessage

Parser for message 0x8235 (Duplicate of 0x0202) - Error code as numeric value.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
949
950
951
952
953
class OutdoorErrorCode(IntegerMessage):
    """Parser for message 0x8235 (Duplicate of 0x0202) - Error code as numeric value."""

    MESSAGE_ID = 0x8235
    MESSAGE_NAME = "Outdoor Error Code"

OutdoorEviBypassLoadMessage

Bases: EnumMessage

Parser for message 0x8021 (EVI Bypass Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
171
172
173
174
175
176
class OutdoorEviBypassLoadMessage(EnumMessage):
    """Parser for message 0x8021 (EVI Bypass Load)."""

    MESSAGE_ID = 0x8021
    MESSAGE_NAME = "EVI Bypass Load"
    MESSAGE_ENUM = OutdoorEviBypassLoad

OutdoorEviEev

Bases: IntegerMessage

Parser for message 0x822E (EVI EEV).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
919
920
921
922
923
class OutdoorEviEev(IntegerMessage):
    """Parser for message 0x822E (EVI EEV)."""

    MESSAGE_ID = 0x822E
    MESSAGE_NAME = "EVI EEV"

OutdoorEviIn

Bases: BasicTemperatureMessage

Parser for message 0x821E (EVI IN).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
834
835
836
837
838
class OutdoorEviIn(BasicTemperatureMessage):
    """Parser for message 0x821E (EVI IN)."""

    MESSAGE_ID = 0x821E
    MESSAGE_NAME = "EVI IN"

OutdoorEviOut

Bases: BasicTemperatureMessage

Parser for message 0x8220 (EVI OUT).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
841
842
843
844
845
class OutdoorEviOut(BasicTemperatureMessage):
    """Parser for message 0x8220 (EVI OUT)."""

    MESSAGE_ID = 0x8220
    MESSAGE_NAME = "EVI OUT"

OutdoorEviSolEev

Bases: FloatMessage

Parser for message 0x82FC (EVI SOL EEV).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1662
1663
1664
1665
1666
class OutdoorEviSolEev(FloatMessage):
    """Parser for message 0x82FC (EVI SOL EEV)."""

    MESSAGE_ID = 0x82FC
    MESSAGE_NAME = "EVI SOL EEV"

OutdoorFanRpm1

Bases: IntegerMessage

Parser for message 0x823D (Outdoor Fan RPM 1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1004
1005
1006
1007
1008
1009
1010
class OutdoorFanRpm1(IntegerMessage):
    """Parser for message 0x823D (Outdoor Fan RPM 1)."""

    MESSAGE_ID = 0x823D
    MESSAGE_NAME = "Outdoor Fan RPM 1"
    UNIT_OF_MEASUREMENT = "RPM"
    SIGNED = False

OutdoorFanRpm2

Bases: IntegerMessage

Parser for message 0x823E (Outdoor Fan RPM 1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1013
1014
1015
1016
1017
1018
1019
class OutdoorFanRpm2(IntegerMessage):
    """Parser for message 0x823E (Outdoor Fan RPM 1)."""

    MESSAGE_ID = 0x823E
    MESSAGE_NAME = "Outdoor Fan RPM 2"
    UNIT_OF_MEASUREMENT = "RPM"
    SIGNED = False

OutdoorFanSpeedStepSetting

Bases: FloatMessage

Parser for message 0x8226 (Fan speed step setting).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
869
870
871
872
873
874
class OutdoorFanSpeedStepSetting(FloatMessage):
    """Parser for message 0x8226 (Fan speed step setting)."""

    MESSAGE_ID = 0x8226
    MESSAGE_NAME = "Fan speed step setting"
    SIGNED = False

OutdoorFlowSwitchStatus

Bases: RawMessage

Parser for message 0x803B (Flow switch status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
262
263
264
265
266
class OutdoorFlowSwitchStatus(RawMessage):
    """Parser for message 0x803B (Flow switch status)."""

    MESSAGE_ID = 0x803B
    MESSAGE_NAME = "Flow switch status"

OutdoorFluxValveLoad

Bases: FloatMessage

Parser for message 0x82BD (Flux valve load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1450
1451
1452
1453
1454
class OutdoorFluxValveLoad(FloatMessage):
    """Parser for message 0x82BD (Flux valve load)."""

    MESSAGE_ID = 0x82BD
    MESSAGE_NAME = "Flux valve load"

OutdoorGasChargeValveStatus

Bases: EnumMessage

Parser for message 0x8025 (Gas charge valve status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
195
196
197
198
199
200
class OutdoorGasChargeValveStatus(EnumMessage):
    """Parser for message 0x8025 (Gas charge valve status)."""

    MESSAGE_ID = 0x8025
    MESSAGE_NAME = "Gas charge valve status"
    MESSAGE_ENUM = OutdoorGasChargeLoad

OutdoorHighPressure

Bases: FloatMessage

Parser for message 0x8206 (High Pressure).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
769
770
771
772
773
class OutdoorHighPressure(FloatMessage):
    """Parser for message 0x8206 (High Pressure)."""

    MESSAGE_ID = 0x8206
    MESSAGE_NAME = "High Pressure"

OutdoorHotGas1LoadMessage

Bases: EnumMessage

Parser for message 0x8017 (Outdoor Hot Gas 1 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
123
124
125
126
127
128
class OutdoorHotGas1LoadMessage(EnumMessage):
    """Parser for message 0x8017 (Outdoor Hot Gas 1 Load)."""

    MESSAGE_ID = 0x8017
    MESSAGE_NAME = "Outdoor Hot Gas 1 Load"
    MESSAGE_ENUM = OutdoorHotGasLoad

OutdoorHotGas2LoadMessage

Bases: EnumMessage

Parser for message 0x8018 (Outdoor Hot Gas 2 Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
131
132
133
134
135
136
class OutdoorHotGas2LoadMessage(EnumMessage):
    """Parser for message 0x8018 (Outdoor Hot Gas 2 Load)."""

    MESSAGE_ID = 0x8018
    MESSAGE_NAME = "Outdoor Hot Gas 2 Load"
    MESSAGE_ENUM = OutdoorHotGasLoad

OutdoorIduAbsoluteCapacity

Bases: FloatMessage

Parser for message 0x82A8 (IDU absolute capacity).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1394
1395
1396
1397
1398
class OutdoorIduAbsoluteCapacity(FloatMessage):
    """Parser for message 0x82A8 (IDU absolute capacity)."""

    MESSAGE_ID = 0x82A8
    MESSAGE_NAME = "IDU absolute capacity"

OutdoorInspectionResult0

Bases: RawMessage

Parser for message 0x840B (Inspection result 0).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1725
1726
1727
1728
1729
class OutdoorInspectionResult0(RawMessage):
    """Parser for message 0x840B (Inspection result 0)."""

    MESSAGE_ID = 0x840B
    MESSAGE_NAME = "Inspection result 0"

OutdoorInspectionResult1

Bases: RawMessage

Parser for message 0x840C (Inspection result 1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1732
1733
1734
1735
1736
class OutdoorInspectionResult1(RawMessage):
    """Parser for message 0x840C (Inspection result 1)."""

    MESSAGE_ID = 0x840C
    MESSAGE_NAME = "Inspection result 1"

OutdoorInstalledCapacity

Bases: FloatMessage

Parser for message 0x8287 (Installed capacity).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1345
1346
1347
1348
1349
class OutdoorInstalledCapacity(FloatMessage):
    """Parser for message 0x8287 (Installed capacity)."""

    MESSAGE_ID = 0x8287
    MESSAGE_NAME = "Installed capacity"

OutdoorInstalledOutdoorUnitModelInfo

Bases: RawMessage

Parser for message 0x860D (Installed Outdoor Unit model info).

This is a binary structure message containing model information for the outdoor unit. The structure format is: - Bytes 0-3: Header (reserved/metadata) - Bytes 4+: Variable-length configuration fields

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
class OutdoorInstalledOutdoorUnitModelInfo(RawMessage):
    """Parser for message 0x860D (Installed Outdoor Unit model info).

    This is a binary structure message containing model information for the
    outdoor unit. The structure format is:
    - Bytes 0-3: Header (reserved/metadata)
    - Bytes 4+: Variable-length configuration fields
    """

    MESSAGE_ID = 0x860D
    MESSAGE_NAME = "Installed Outdoor Unit model info"

    @classmethod
    def parse_payload(cls, payload: bytes) -> "OutdoorInstalledOutdoorUnitModelInfo":
        """Parse the payload into a structured representation."""
        if not payload or len(payload) < 4:
            return cls(value=payload.hex() if payload else None)

        header_bytes = payload[0:4]
        header_int = int.from_bytes(header_bytes, byteorder="big")
        data_portion = payload[4:]

        result = {
            "header_hex": header_bytes.hex(),
            "header_value": header_int,
            "data_hex": data_portion.hex() if data_portion else "",
            "data_length": len(data_portion),
            "total_length": len(payload),
            "raw_hex": payload.hex(),
            "note": "Structure definition not yet available in NASA.ptc - fields represent outdoor unit model information",
        }
        return cls(value=result, raw_payload=payload)

parse_payload(payload) classmethod

Parse the payload into a structured representation.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
@classmethod
def parse_payload(cls, payload: bytes) -> "OutdoorInstalledOutdoorUnitModelInfo":
    """Parse the payload into a structured representation."""
    if not payload or len(payload) < 4:
        return cls(value=payload.hex() if payload else None)

    header_bytes = payload[0:4]
    header_int = int.from_bytes(header_bytes, byteorder="big")
    data_portion = payload[4:]

    result = {
        "header_hex": header_bytes.hex(),
        "header_value": header_int,
        "data_hex": data_portion.hex() if data_portion else "",
        "data_length": len(data_portion),
        "total_length": len(payload),
        "raw_hex": payload.hex(),
        "note": "Structure definition not yet available in NASA.ptc - fields represent outdoor unit model information",
    }
    return cls(value=result, raw_payload=payload)

OutdoorInstalledOutdoorUnitSetupInfo

Bases: RawMessage

Parser for message 0x860F (Installed Outdoor Unit setup info).

This is a binary structure message with the format: - Bytes 0-3: Header (reserved, appears to contain a count or version) - Bytes 4+: Variable-length configuration fields

The payload structure contains installation setup information for the outdoor unit, including various configuration parameters. The exact field definitions are not yet documented in NASA.ptc, but the data is preserved for analysis.

Example payload breakdown: Header: 00000009 (9 configuration items) Data: 7 variable-length fields following

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
class OutdoorInstalledOutdoorUnitSetupInfo(RawMessage):
    """Parser for message 0x860F (Installed Outdoor Unit setup info).

    This is a binary structure message with the format:
    - Bytes 0-3: Header (reserved, appears to contain a count or version)
    - Bytes 4+: Variable-length configuration fields

    The payload structure contains installation setup information for the outdoor unit,
    including various configuration parameters. The exact field definitions are not yet
    documented in NASA.ptc, but the data is preserved for analysis.

    Example payload breakdown:
    Header: 00000009 (9 configuration items)
    Data: 7 variable-length fields following
    """

    MESSAGE_ID = 0x860F
    MESSAGE_NAME = "Installed Outdoor Unit setup info"

    @classmethod
    def parse_payload(cls, payload: bytes) -> "OutdoorInstalledOutdoorUnitSetupInfo":
        """Parse the payload into a structured representation."""
        if not payload or len(payload) < 4:
            return cls(value=payload.hex() if payload else None)

        # Extract header (4 bytes) - contains metadata about the structure
        header_bytes = payload[0:4]
        header_int = int.from_bytes(header_bytes, byteorder="big")

        # Extract data portion (remaining bytes)
        data_portion = payload[4:]

        # Return decoded structure with hex representation and interpretations
        result = {
            "header_hex": header_bytes.hex(),
            "header_value": header_int,
            "data_hex": data_portion.hex() if data_portion else "",
            "data_length": len(data_portion),
            "total_length": len(payload),
            "raw_hex": payload.hex(),
            "note": "Structure definition not yet available in NASA.ptc - fields represent outdoor unit setup configuration",
        }
        return cls(value=result, raw_payload=payload)

parse_payload(payload) classmethod

Parse the payload into a structured representation.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
@classmethod
def parse_payload(cls, payload: bytes) -> "OutdoorInstalledOutdoorUnitSetupInfo":
    """Parse the payload into a structured representation."""
    if not payload or len(payload) < 4:
        return cls(value=payload.hex() if payload else None)

    # Extract header (4 bytes) - contains metadata about the structure
    header_bytes = payload[0:4]
    header_int = int.from_bytes(header_bytes, byteorder="big")

    # Extract data portion (remaining bytes)
    data_portion = payload[4:]

    # Return decoded structure with hex representation and interpretations
    result = {
        "header_hex": header_bytes.hex(),
        "header_value": header_int,
        "data_hex": data_portion.hex() if data_portion else "",
        "data_length": len(data_portion),
        "total_length": len(payload),
        "raw_hex": payload.hex(),
        "note": "Structure definition not yet available in NASA.ptc - fields represent outdoor unit setup configuration",
    }
    return cls(value=result, raw_payload=payload)

OutdoorInstantaneousPower

Bases: BasicPowerMessage

Parser for message 0x8413 (Outdoor Instantaneous Power).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1758
1759
1760
1761
1762
1763
1764
class OutdoorInstantaneousPower(BasicPowerMessage):
    """Parser for message 0x8413 (Outdoor Instantaneous Power)."""

    MESSAGE_ID = 0x8413
    MESSAGE_NAME = "Outdoor Instantaneous Power"
    SIGNED = False
    ARITHMETIC = 0.001

OutdoorInverter1Micom

Bases: StructureMessage

Parser for message 0x8601 (Inverter1 Micom).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1797
1798
1799
1800
1801
class OutdoorInverter1Micom(StructureMessage):
    """Parser for message 0x8601 (Inverter1 Micom)."""

    MESSAGE_ID = 0x8601
    MESSAGE_NAME = "Inverter1 Micom"

OutdoorIpmTemp1

Bases: BasicTemperatureMessage

Parser for message 0x8254 (Outdoor IPM Temp 1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1100
1101
1102
1103
1104
class OutdoorIpmTemp1(BasicTemperatureMessage):
    """Parser for message 0x8254 (Outdoor IPM Temp 1)."""

    MESSAGE_ID = 0x8254
    MESSAGE_NAME = "Outdoor IPM Temp 1"

OutdoorIpmTemp2

Bases: BasicTemperatureMessage

Parser for message 0x8255 (Outdoor IPM Temp 2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1107
1108
1109
1110
1111
class OutdoorIpmTemp2(BasicTemperatureMessage):
    """Parser for message 0x8255 (Outdoor IPM Temp 2)."""

    MESSAGE_ID = 0x8255
    MESSAGE_NAME = "Outdoor IPM Temp 2"

OutdoorLiquidLoadMessage

Bases: EnumMessage

Parser for message 0x8019 (Outdoor Liquid Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
139
140
141
142
143
144
class OutdoorLiquidLoadMessage(EnumMessage):
    """Parser for message 0x8019 (Outdoor Liquid Load)."""

    MESSAGE_ID = 0x8019
    MESSAGE_NAME = "Outdoor Liquid Load"
    MESSAGE_ENUM = OutdoorLiquidLoad

OutdoorLiquidTubeLoadStatus

Bases: RawMessage

Parser for message 0x8034 (Liquid tube load status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
248
249
250
251
252
class OutdoorLiquidTubeLoadStatus(RawMessage):
    """Parser for message 0x8034 (Liquid tube load status)."""

    MESSAGE_ID = 0x8034
    MESSAGE_NAME = "Liquid tube load status"

OutdoorLoad4WayValveMessage

Bases: EnumMessage

Parser for message 0x801A (Outdoor Load 4-Way Valve).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
147
148
149
150
151
152
class OutdoorLoad4WayValveMessage(EnumMessage):
    """Parser for message 0x801A (Outdoor Load 4-Way Valve)."""

    MESSAGE_ID = 0x801A
    MESSAGE_NAME = "Outdoor Load 4-Way Valve"
    MESSAGE_ENUM = Outdoor4WayLoad

OutdoorLoadOutEevMessage

Bases: EnumMessage

Parser for message 0x8020 (Load EEV status) - Enum value indicating on/off state.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
163
164
165
166
167
168
class OutdoorLoadOutEevMessage(EnumMessage):
    """Parser for message 0x8020 (Load EEV status) - Enum value indicating on/off state."""

    MESSAGE_ID = 0x8020
    MESSAGE_NAME = "Load EEV status"
    MESSAGE_ENUM = OutdoorOutEevLoad

OutdoorLowPressure

Bases: FloatMessage

Parser for message 0x8208 (Low Pressure).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
776
777
778
779
780
class OutdoorLowPressure(FloatMessage):
    """Parser for message 0x8208 (Low Pressure)."""

    MESSAGE_ID = 0x8208
    MESSAGE_NAME = "Low Pressure"

OutdoorMainCoolLoadMessage

Bases: EnumMessage

Parser for message 0x801F (Outdoor Main Cool Load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
155
156
157
158
159
160
class OutdoorMainCoolLoadMessage(EnumMessage):
    """Parser for message 0x801F (Outdoor Main Cool Load)."""

    MESSAGE_ID = 0x801F
    MESSAGE_NAME = "Outdoor Main Cool Load"
    MESSAGE_ENUM = OutdoorMainCoolLoad

OutdoorMcuACoolingLoad

Bases: RawMessage

Parser for message 0x8049 (MCU A cooling load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
304
305
306
307
308
class OutdoorMcuACoolingLoad(RawMessage):
    """Parser for message 0x8049 (MCU A cooling load)."""

    MESSAGE_ID = 0x8049
    MESSAGE_NAME = "MCU A cooling load"

OutdoorMcuAHeatingLoad

Bases: RawMessage

Parser for message 0x804A (MCU A heating load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
311
312
313
314
315
class OutdoorMcuAHeatingLoad(RawMessage):
    """Parser for message 0x804A (MCU A heating load)."""

    MESSAGE_ID = 0x804A
    MESSAGE_NAME = "MCU A heating load"

OutdoorMcuBCoolingLoad

Bases: RawMessage

Parser for message 0x804B (MCU B cooling load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
318
319
320
321
322
class OutdoorMcuBCoolingLoad(RawMessage):
    """Parser for message 0x804B (MCU B cooling load)."""

    MESSAGE_ID = 0x804B
    MESSAGE_NAME = "MCU B cooling load"

OutdoorMcuBHeatingLoad

Bases: RawMessage

Parser for message 0x804C (MCU B heating load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
325
326
327
328
329
class OutdoorMcuBHeatingLoad(RawMessage):
    """Parser for message 0x804C (MCU B heating load)."""

    MESSAGE_ID = 0x804C
    MESSAGE_NAME = "MCU B heating load"

OutdoorMcuCCoolingLoad

Bases: RawMessage

Parser for message 0x804D (MCU C cooling load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
332
333
334
335
336
class OutdoorMcuCCoolingLoad(RawMessage):
    """Parser for message 0x804D (MCU C cooling load)."""

    MESSAGE_ID = 0x804D
    MESSAGE_NAME = "MCU C cooling load"

OutdoorMcuCHeatingLoad

Bases: RawMessage

Parser for message 0x804E (MCU C heating load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
339
340
341
342
343
class OutdoorMcuCHeatingLoad(RawMessage):
    """Parser for message 0x804E (MCU C heating load)."""

    MESSAGE_ID = 0x804E
    MESSAGE_NAME = "MCU C heating load"

OutdoorMcuChangeoverEev1

Bases: FloatMessage

Parser for message 0x826E (MCU changeover EEV1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1240
1241
1242
1243
1244
class OutdoorMcuChangeoverEev1(FloatMessage):
    """Parser for message 0x826E (MCU changeover EEV1)."""

    MESSAGE_ID = 0x826E
    MESSAGE_NAME = "MCU changeover EEV1"

OutdoorMcuChangeoverEev2

Bases: FloatMessage

Parser for message 0x826F (MCU changeover EEV2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1247
1248
1249
1250
1251
class OutdoorMcuChangeoverEev2(FloatMessage):
    """Parser for message 0x826F (MCU changeover EEV2)."""

    MESSAGE_ID = 0x826F
    MESSAGE_NAME = "MCU changeover EEV2"

OutdoorMcuChangeoverEev3

Bases: FloatMessage

Parser for message 0x8270 (MCU changeover EEV3).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1254
1255
1256
1257
1258
class OutdoorMcuChangeoverEev3(FloatMessage):
    """Parser for message 0x8270 (MCU changeover EEV3)."""

    MESSAGE_ID = 0x8270
    MESSAGE_NAME = "MCU changeover EEV3"

OutdoorMcuChangeoverEev4

Bases: FloatMessage

Parser for message 0x8271 (MCU changeover EEV4).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1261
1262
1263
1264
1265
class OutdoorMcuChangeoverEev4(FloatMessage):
    """Parser for message 0x8271 (MCU changeover EEV4)."""

    MESSAGE_ID = 0x8271
    MESSAGE_NAME = "MCU changeover EEV4"

OutdoorMcuChangeoverEev5

Bases: FloatMessage

Parser for message 0x8272 (MCU changeover EEV5).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1268
1269
1270
1271
1272
class OutdoorMcuChangeoverEev5(FloatMessage):
    """Parser for message 0x8272 (MCU changeover EEV5)."""

    MESSAGE_ID = 0x8272
    MESSAGE_NAME = "MCU changeover EEV5"

OutdoorMcuChangeoverEev6

Bases: FloatMessage

Parser for message 0x8273 (MCU changeover EEV6).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1275
1276
1277
1278
1279
class OutdoorMcuChangeoverEev6(FloatMessage):
    """Parser for message 0x8273 (MCU changeover EEV6)."""

    MESSAGE_ID = 0x8273
    MESSAGE_NAME = "MCU changeover EEV6"

OutdoorMcuDCoolingLoad

Bases: RawMessage

Parser for message 0x804F (MCU D cooling load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
346
347
348
349
350
class OutdoorMcuDCoolingLoad(RawMessage):
    """Parser for message 0x804F (MCU D cooling load)."""

    MESSAGE_ID = 0x804F
    MESSAGE_NAME = "MCU D cooling load"

OutdoorMcuDHeatingLoad

Bases: RawMessage

Parser for message 0x8050 (MCU D heating load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
353
354
355
356
357
class OutdoorMcuDHeatingLoad(RawMessage):
    """Parser for message 0x8050 (MCU D heating load)."""

    MESSAGE_ID = 0x8050
    MESSAGE_NAME = "MCU D heating load"

OutdoorMcuECoolingLoad

Bases: RawMessage

Parser for message 0x8051 (MCU E cooling load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
360
361
362
363
364
class OutdoorMcuECoolingLoad(RawMessage):
    """Parser for message 0x8051 (MCU E cooling load)."""

    MESSAGE_ID = 0x8051
    MESSAGE_NAME = "MCU E cooling load"

OutdoorMcuEHeatingLoad

Bases: RawMessage

Parser for message 0x8052 (MCU E heating load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
367
368
369
370
371
class OutdoorMcuEHeatingLoad(RawMessage):
    """Parser for message 0x8052 (MCU E heating load)."""

    MESSAGE_ID = 0x8052
    MESSAGE_NAME = "MCU E heating load"

OutdoorMcuFCoolingLoad

Bases: RawMessage

Parser for message 0x8053 (MCU F cooling load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
374
375
376
377
378
class OutdoorMcuFCoolingLoad(RawMessage):
    """Parser for message 0x8053 (MCU F cooling load)."""

    MESSAGE_ID = 0x8053
    MESSAGE_NAME = "MCU F cooling load"

OutdoorMcuFHeatingLoad

Bases: RawMessage

Parser for message 0x8054 (MCU F heating load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
381
382
383
384
385
class OutdoorMcuFHeatingLoad(RawMessage):
    """Parser for message 0x8054 (MCU F heating load)."""

    MESSAGE_ID = 0x8054
    MESSAGE_NAME = "MCU F heating load"

OutdoorMcuLiquidLoad

Bases: RawMessage

Parser for message 0x8055 (MCU liquid load).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
388
389
390
391
392
class OutdoorMcuLiquidLoad(RawMessage):
    """Parser for message 0x8055 (MCU liquid load)."""

    MESSAGE_ID = 0x8055
    MESSAGE_NAME = "MCU liquid load"

OutdoorMcuPort0Address

Bases: RawMessage

Parser for message 0x8058 (MCU port 0 address).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
395
396
397
398
399
class OutdoorMcuPort0Address(RawMessage):
    """Parser for message 0x8058 (MCU port 0 address)."""

    MESSAGE_ID = 0x8058
    MESSAGE_NAME = "MCU port 0 address"

OutdoorMcuPort1Address

Bases: RawMessage

Parser for message 0x8059 (MCU port 1 address).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
402
403
404
405
406
class OutdoorMcuPort1Address(RawMessage):
    """Parser for message 0x8059 (MCU port 1 address)."""

    MESSAGE_ID = 0x8059
    MESSAGE_NAME = "MCU port 1 address"

OutdoorMcuPort2Address

Bases: RawMessage

Parser for message 0x805A (MCU port 2 address).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
409
410
411
412
413
class OutdoorMcuPort2Address(RawMessage):
    """Parser for message 0x805A (MCU port 2 address)."""

    MESSAGE_ID = 0x805A
    MESSAGE_NAME = "MCU port 2 address"

OutdoorMcuPort3Address

Bases: RawMessage

Parser for message 0x805B (MCU port 3 address).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
416
417
418
419
420
class OutdoorMcuPort3Address(RawMessage):
    """Parser for message 0x805B (MCU port 3 address)."""

    MESSAGE_ID = 0x805B
    MESSAGE_NAME = "MCU port 3 address"

OutdoorMcuPort4Address

Bases: RawMessage

Parser for message 0x805C (MCU port 4 address).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
423
424
425
426
427
class OutdoorMcuPort4Address(RawMessage):
    """Parser for message 0x805C (MCU port 4 address)."""

    MESSAGE_ID = 0x805C
    MESSAGE_NAME = "MCU port 4 address"

OutdoorMcuPort5Address

Bases: RawMessage

Parser for message 0x805D (MCU port 5 address).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
430
431
432
433
434
class OutdoorMcuPort5Address(RawMessage):
    """Parser for message 0x805D (MCU port 5 address)."""

    MESSAGE_ID = 0x805D
    MESSAGE_NAME = "MCU port 5 address"

OutdoorMcuSubcoolerEev

Bases: FloatMessage

Parser for message 0x826D (MCU subcooler EEV).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1233
1234
1235
1236
1237
class OutdoorMcuSubcoolerEev(FloatMessage):
    """Parser for message 0x826D (MCU subcooler EEV)."""

    MESSAGE_ID = 0x826D
    MESSAGE_NAME = "MCU subcooler EEV"

OutdoorMcuSubcoolerInletTemp

Bases: FloatMessage

Parser for message 0x826B (MCU subcooler inlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1219
1220
1221
1222
1223
class OutdoorMcuSubcoolerInletTemp(FloatMessage):
    """Parser for message 0x826B (MCU subcooler inlet temp)."""

    MESSAGE_ID = 0x826B
    MESSAGE_NAME = "MCU subcooler inlet temp"

OutdoorMcuSubcoolerOutletTemp

Bases: FloatMessage

Parser for message 0x826C (MCU subcooler outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1226
1227
1228
1229
1230
class OutdoorMcuSubcoolerOutletTemp(FloatMessage):
    """Parser for message 0x826C (MCU subcooler outlet temp)."""

    MESSAGE_ID = 0x826C
    MESSAGE_NAME = "MCU subcooler outlet temp"

OutdoorMessage8005

Bases: RawMessage

Parser for message 0x8005 (Message 8005).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
69
70
71
72
73
class OutdoorMessage8005(RawMessage):
    """Parser for message 0x8005 (Message 8005)."""

    MESSAGE_ID = 0x8005
    MESSAGE_NAME = "Message 8005"

OutdoorMessage800d

Bases: RawMessage

Parser for message 0x800D (Message 800D).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
76
77
78
79
80
class OutdoorMessage800d(RawMessage):
    """Parser for message 0x800D (Message 800D)."""

    MESSAGE_ID = 0x800D
    MESSAGE_NAME = "Message 800D"

OutdoorMessage8031

Bases: RawMessage

Parser for message 0x8031 (Message 8031).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
227
228
229
230
231
class OutdoorMessage8031(RawMessage):
    """Parser for message 0x8031 (Message 8031)."""

    MESSAGE_ID = 0x8031
    MESSAGE_NAME = "Message 8031"

OutdoorMessage8032

Bases: RawMessage

Parser for message 0x8032 (Message 8032).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
234
235
236
237
238
class OutdoorMessage8032(RawMessage):
    """Parser for message 0x8032 (Message 8032)."""

    MESSAGE_ID = 0x8032
    MESSAGE_NAME = "Message 8032"

OutdoorMessage8033

Bases: RawMessage

Parser for message 0x8033 (Message 8033).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
241
242
243
244
245
class OutdoorMessage8033(RawMessage):
    """Parser for message 0x8033 (Message 8033)."""

    MESSAGE_ID = 0x8033
    MESSAGE_NAME = "Message 8033"

OutdoorMessage803f

Bases: RawMessage

Parser for message 0x803F (Message 803F).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
276
277
278
279
280
class OutdoorMessage803f(RawMessage):
    """Parser for message 0x803F (Message 803F)."""

    MESSAGE_ID = 0x803F
    MESSAGE_NAME = "Message 803F"

OutdoorMessage8045

Bases: RawMessage

Parser for message 0x8045 (Message 8045).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
283
284
285
286
287
class OutdoorMessage8045(RawMessage):
    """Parser for message 0x8045 (Message 8045)."""

    MESSAGE_ID = 0x8045
    MESSAGE_NAME = "Message 8045"

OutdoorMessage8048

Bases: RawMessage

Parser for message 0x8048 (Message 8048).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
297
298
299
300
301
class OutdoorMessage8048(RawMessage):
    """Parser for message 0x8048 (Message 8048)."""

    MESSAGE_ID = 0x8048
    MESSAGE_NAME = "Message 8048"

OutdoorMessage805e

Bases: RawMessage

Parser for message 0x805E (Message 805E).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
437
438
439
440
441
class OutdoorMessage805e(RawMessage):
    """Parser for message 0x805E (Message 805E)."""

    MESSAGE_ID = 0x805E
    MESSAGE_NAME = "Message 805E"

OutdoorMessage8062

Bases: RawMessage

Parser for message 0x8062 (Message 8062).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
453
454
455
456
457
class OutdoorMessage8062(RawMessage):
    """Parser for message 0x8062 (Message 8062)."""

    MESSAGE_ID = 0x8062
    MESSAGE_NAME = "Message 8062"

OutdoorMessage8063

Bases: RawMessage

Parser for message 0x8063 (Message 8063).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
460
461
462
463
464
class OutdoorMessage8063(RawMessage):
    """Parser for message 0x8063 (Message 8063)."""

    MESSAGE_ID = 0x8063
    MESSAGE_NAME = "Message 8063"

OutdoorMessage8066

Bases: RawMessage

Parser for message 0x8066 (Message 8066).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
467
468
469
470
471
class OutdoorMessage8066(RawMessage):
    """Parser for message 0x8066 (Message 8066)."""

    MESSAGE_ID = 0x8066
    MESSAGE_NAME = "Message 8066"

OutdoorMessage8075

Bases: RawMessage

Parser for message 0x8075 (Message 8075).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
474
475
476
477
478
class OutdoorMessage8075(RawMessage):
    """Parser for message 0x8075 (Message 8075)."""

    MESSAGE_ID = 0x8075
    MESSAGE_NAME = "Message 8075"

OutdoorMessage8077

Bases: RawMessage

Parser for message 0x8077 (Message 8077).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
481
482
483
484
485
class OutdoorMessage8077(RawMessage):
    """Parser for message 0x8077 (Message 8077)."""

    MESSAGE_ID = 0x8077
    MESSAGE_NAME = "Message 8077"

OutdoorMessage8078

Bases: RawMessage

Parser for message 0x8078 (Message 8078).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
488
489
490
491
492
class OutdoorMessage8078(RawMessage):
    """Parser for message 0x8078 (Message 8078)."""

    MESSAGE_ID = 0x8078
    MESSAGE_NAME = "Message 8078"

OutdoorMessage8079

Bases: RawMessage

Parser for message 0x8079 (Message 8079).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
495
496
497
498
499
class OutdoorMessage8079(RawMessage):
    """Parser for message 0x8079 (Message 8079)."""

    MESSAGE_ID = 0x8079
    MESSAGE_NAME = "Message 8079"

OutdoorMessage807a

Bases: RawMessage

Parser for message 0x807A (Message 807A).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
502
503
504
505
506
class OutdoorMessage807a(RawMessage):
    """Parser for message 0x807A (Message 807A)."""

    MESSAGE_ID = 0x807A
    MESSAGE_NAME = "Message 807A"

OutdoorMessage807b

Bases: RawMessage

Parser for message 0x807B (Message 807B).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
509
510
511
512
513
class OutdoorMessage807b(RawMessage):
    """Parser for message 0x807B (Message 807B)."""

    MESSAGE_ID = 0x807B
    MESSAGE_NAME = "Message 807B"

OutdoorMessage807c

Bases: RawMessage

Parser for message 0x807C (Message 807C).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
516
517
518
519
520
class OutdoorMessage807c(RawMessage):
    """Parser for message 0x807C (Message 807C)."""

    MESSAGE_ID = 0x807C
    MESSAGE_NAME = "Message 807C"

OutdoorMessage807d

Bases: RawMessage

Parser for message 0x807D (Message 807D).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
523
524
525
526
527
class OutdoorMessage807d(RawMessage):
    """Parser for message 0x807D (Message 807D)."""

    MESSAGE_ID = 0x807D
    MESSAGE_NAME = "Message 807D"

OutdoorMessage807e

Bases: RawMessage

Parser for message 0x807E (Message 807E).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
530
531
532
533
534
class OutdoorMessage807e(RawMessage):
    """Parser for message 0x807E (Message 807E)."""

    MESSAGE_ID = 0x807E
    MESSAGE_NAME = "Message 807E"

OutdoorMessage807f

Bases: RawMessage

Parser for message 0x807F (Message 807F).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
537
538
539
540
541
class OutdoorMessage807f(RawMessage):
    """Parser for message 0x807F (Message 807F)."""

    MESSAGE_ID = 0x807F
    MESSAGE_NAME = "Message 807F"

OutdoorMessage8081

Bases: RawMessage

Parser for message 0x8081 (Message 8081).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
544
545
546
547
548
class OutdoorMessage8081(RawMessage):
    """Parser for message 0x8081 (Message 8081)."""

    MESSAGE_ID = 0x8081
    MESSAGE_NAME = "Message 8081"

OutdoorMessage8083

Bases: RawMessage

Parser for message 0x8083 (Message 8083).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
551
552
553
554
555
class OutdoorMessage8083(RawMessage):
    """Parser for message 0x8083 (Message 8083)."""

    MESSAGE_ID = 0x8083
    MESSAGE_NAME = "Message 8083"

OutdoorMessage808d

Bases: RawMessage

Parser for message 0x808D (Message 808D).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
558
559
560
561
562
class OutdoorMessage808d(RawMessage):
    """Parser for message 0x808D (Message 808D)."""

    MESSAGE_ID = 0x808D
    MESSAGE_NAME = "Message 808D"

OutdoorMessage80a7

Bases: RawMessage

Parser for message 0x80A7 (Message 80A7).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
622
623
624
625
626
class OutdoorMessage80a7(RawMessage):
    """Parser for message 0x80A7 (Message 80A7)."""

    MESSAGE_ID = 0x80A7
    MESSAGE_NAME = "Message 80A7"

OutdoorMessage80a9

Bases: RawMessage

Parser for message 0x80A9 (Message 80A9).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
629
630
631
632
633
class OutdoorMessage80a9(RawMessage):
    """Parser for message 0x80A9 (Message 80A9)."""

    MESSAGE_ID = 0x80A9
    MESSAGE_NAME = "Message 80A9"

OutdoorMessage80aa

Bases: RawMessage

Parser for message 0x80AA (Message 80AA).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
636
637
638
639
640
class OutdoorMessage80aa(RawMessage):
    """Parser for message 0x80AA (Message 80AA)."""

    MESSAGE_ID = 0x80AA
    MESSAGE_NAME = "Message 80AA"

OutdoorMessage80b1

Bases: RawMessage

Parser for message 0x80B1 (Message 80B1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
650
651
652
653
654
class OutdoorMessage80b1(RawMessage):
    """Parser for message 0x80B1 (Message 80B1)."""

    MESSAGE_ID = 0x80B1
    MESSAGE_NAME = "Message 80B1"

OutdoorMessage80b2

Bases: RawMessage

Parser for message 0x80B2 (Message 80B2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
657
658
659
660
661
class OutdoorMessage80b2(RawMessage):
    """Parser for message 0x80B2 (Message 80B2)."""

    MESSAGE_ID = 0x80B2
    MESSAGE_NAME = "Message 80B2"

OutdoorMessage80b6

Bases: RawMessage

Parser for message 0x80B6 (Message 80B6).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
671
672
673
674
675
class OutdoorMessage80b6(RawMessage):
    """Parser for message 0x80B6 (Message 80B6)."""

    MESSAGE_ID = 0x80B6
    MESSAGE_NAME = "Message 80B6"

OutdoorMessage80bc

Bases: RawMessage

Parser for message 0x80BC (Message 80BC).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
692
693
694
695
696
class OutdoorMessage80bc(RawMessage):
    """Parser for message 0x80BC (Message 80BC)."""

    MESSAGE_ID = 0x80BC
    MESSAGE_NAME = "Message 80BC"

OutdoorMessage80bf

Bases: RawMessage

Parser for message 0x80BF (Message 80BF).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
706
707
708
709
710
class OutdoorMessage80bf(RawMessage):
    """Parser for message 0x80BF (Message 80BF)."""

    MESSAGE_ID = 0x80BF
    MESSAGE_NAME = "Message 80BF"

OutdoorMessage80ce

Bases: RawMessage

Parser for message 0x80CE (Message 80CE).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
720
721
722
723
724
class OutdoorMessage80ce(RawMessage):
    """Parser for message 0x80CE (Message 80CE)."""

    MESSAGE_ID = 0x80CE
    MESSAGE_NAME = "Message 80CE"

OutdoorMessage80cf

Bases: RawMessage

Parser for message 0x80CF (Message 80CF).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
727
728
729
730
731
class OutdoorMessage80cf(RawMessage):
    """Parser for message 0x80CF (Message 80CF)."""

    MESSAGE_ID = 0x80CF
    MESSAGE_NAME = "Message 80CF"

OutdoorMessage8200

Bases: FloatMessage

Parser for message 0x8200 (Message 8200).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
748
749
750
751
752
class OutdoorMessage8200(FloatMessage):
    """Parser for message 0x8200 (Message 8200)."""

    MESSAGE_ID = 0x8200
    MESSAGE_NAME = "Message 8200"

OutdoorMessage8224

Bases: BasicTemperatureMessage

Parser for message 0x8224 (Message 8224).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
855
856
857
858
859
class OutdoorMessage8224(BasicTemperatureMessage):
    """Parser for message 0x8224 (Message 8224)."""

    MESSAGE_ID = 0x8224
    MESSAGE_NAME = "Message 8224"

OutdoorMessage8227

Bases: FloatMessage

Parser for message 0x8227 (Message 8227).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
877
878
879
880
881
class OutdoorMessage8227(FloatMessage):
    """Parser for message 0x8227 (Message 8227)."""

    MESSAGE_ID = 0x8227
    MESSAGE_NAME = "Message 8227"

OutdoorMessage8234

Bases: FloatMessage

Parser for message 0x8234 (Message 8234).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
942
943
944
945
946
class OutdoorMessage8234(FloatMessage):
    """Parser for message 0x8234 (Message 8234)."""

    MESSAGE_ID = 0x8234
    MESSAGE_NAME = "Message 8234"

OutdoorMessage8239

Bases: FloatMessage

Parser for message 0x8239 (Message 8239).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
980
981
982
983
984
class OutdoorMessage8239(FloatMessage):
    """Parser for message 0x8239 (Message 8239)."""

    MESSAGE_ID = 0x8239
    MESSAGE_NAME = "Message 8239"

OutdoorMessage823c

Bases: FloatMessage

Parser for message 0x823C (Message 823C).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
 997
 998
 999
1000
1001
class OutdoorMessage823c(FloatMessage):
    """Parser for message 0x823C (Message 823C)."""

    MESSAGE_ID = 0x823C
    MESSAGE_NAME = "Message 823C"

OutdoorMessage8240

Bases: FloatMessage

Parser for message 0x8240 (Message 8240).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1029
1030
1031
1032
1033
class OutdoorMessage8240(FloatMessage):
    """Parser for message 0x8240 (Message 8240)."""

    MESSAGE_ID = 0x8240
    MESSAGE_NAME = "Message 8240"

OutdoorMessage8243

Bases: FloatMessage

Parser for message 0x8243 (Message 8243).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1036
1037
1038
1039
1040
class OutdoorMessage8243(FloatMessage):
    """Parser for message 0x8243 (Message 8243)."""

    MESSAGE_ID = 0x8243
    MESSAGE_NAME = "Message 8243"

OutdoorMessage8244

Bases: FloatMessage

Parser for message 0x8244 (Message 8244).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1043
1044
1045
1046
1047
class OutdoorMessage8244(FloatMessage):
    """Parser for message 0x8244 (Message 8244)."""

    MESSAGE_ID = 0x8244
    MESSAGE_NAME = "Message 8244"

OutdoorMessage8245

Bases: FloatMessage

Parser for message 0x8245 (Message 8245).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1050
1051
1052
1053
1054
class OutdoorMessage8245(FloatMessage):
    """Parser for message 0x8245 (Message 8245)."""

    MESSAGE_ID = 0x8245
    MESSAGE_NAME = "Message 8245"

OutdoorMessage8249

Bases: FloatMessage

Parser for message 0x8249 (Message 8249).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1071
1072
1073
1074
1075
class OutdoorMessage8249(FloatMessage):
    """Parser for message 0x8249 (Message 8249)."""

    MESSAGE_ID = 0x8249
    MESSAGE_NAME = "Message 8249"

OutdoorMessage824b

Bases: FloatMessage

Parser for message 0x824B (Message 824B).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1078
1079
1080
1081
1082
class OutdoorMessage824b(FloatMessage):
    """Parser for message 0x824B (Message 824B)."""

    MESSAGE_ID = 0x824B
    MESSAGE_NAME = "Message 824B"

OutdoorMessage824c

Bases: FloatMessage

Parser for message 0x824C (Message 824C).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1085
1086
1087
1088
1089
class OutdoorMessage824c(FloatMessage):
    """Parser for message 0x824C (Message 824C)."""

    MESSAGE_ID = 0x824C
    MESSAGE_NAME = "Message 824C"

OutdoorMessage825a

Bases: FloatMessage

Parser for message 0x825A (Message 825A).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1114
1115
1116
1117
1118
class OutdoorMessage825a(FloatMessage):
    """Parser for message 0x825A (Message 825A)."""

    MESSAGE_ID = 0x825A
    MESSAGE_NAME = "Message 825A"

OutdoorMessage825b

Bases: FloatMessage

Parser for message 0x825B (Message 825B).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1121
1122
1123
1124
1125
class OutdoorMessage825b(FloatMessage):
    """Parser for message 0x825B (Message 825B)."""

    MESSAGE_ID = 0x825B
    MESSAGE_NAME = "Message 825B"

OutdoorMessage825c

Bases: FloatMessage

Parser for message 0x825C (Message 825C).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1128
1129
1130
1131
1132
class OutdoorMessage825c(FloatMessage):
    """Parser for message 0x825C (Message 825C)."""

    MESSAGE_ID = 0x825C
    MESSAGE_NAME = "Message 825C"

OutdoorMessage825d

Bases: FloatMessage

Parser for message 0x825D (Message 825D).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1135
1136
1137
1138
1139
class OutdoorMessage825d(FloatMessage):
    """Parser for message 0x825D (Message 825D)."""

    MESSAGE_ID = 0x825D
    MESSAGE_NAME = "Message 825D"

OutdoorMessage8298

Bases: FloatMessage

Parser for message 0x8298 (Message 8298).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1352
1353
1354
1355
1356
class OutdoorMessage8298(FloatMessage):
    """Parser for message 0x8298 (Message 8298)."""

    MESSAGE_ID = 0x8298
    MESSAGE_NAME = "Message 8298"

OutdoorMessage829b

Bases: FloatMessage

Parser for message 0x829B (Message 829B).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1366
1367
1368
1369
1370
class OutdoorMessage829b(FloatMessage):
    """Parser for message 0x829B (Message 829B)."""

    MESSAGE_ID = 0x829B
    MESSAGE_NAME = "Message 829B"

OutdoorMessage82a2

Bases: FloatMessage

Parser for message 0x82A2 (Message 82A2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1387
1388
1389
1390
1391
class OutdoorMessage82a2(FloatMessage):
    """Parser for message 0x82A2 (Message 82A2)."""

    MESSAGE_ID = 0x82A2
    MESSAGE_NAME = "Message 82A2"

OutdoorMessage82a9

Bases: FloatMessage

Parser for message 0x82A9 (Message 82A9).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1401
1402
1403
1404
1405
class OutdoorMessage82a9(FloatMessage):
    """Parser for message 0x82A9 (Message 82A9)."""

    MESSAGE_ID = 0x82A9
    MESSAGE_NAME = "Message 82A9"

OutdoorMessage82aa

Bases: FloatMessage

Parser for message 0x82AA (Message 82AA).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1408
1409
1410
1411
1412
class OutdoorMessage82aa(FloatMessage):
    """Parser for message 0x82AA (Message 82AA)."""

    MESSAGE_ID = 0x82AA
    MESSAGE_NAME = "Message 82AA"

OutdoorMessage82b2

Bases: FloatMessage

Parser for message 0x82B2 (Message 82B2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1422
1423
1424
1425
1426
class OutdoorMessage82b2(FloatMessage):
    """Parser for message 0x82B2 (Message 82B2)."""

    MESSAGE_ID = 0x82B2
    MESSAGE_NAME = "Message 82B2"

OutdoorMessage82b5

Bases: FloatMessage

Parser for message 0x82B5 (Message 82B5).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1429
1430
1431
1432
1433
class OutdoorMessage82b5(FloatMessage):
    """Parser for message 0x82B5 (Message 82B5)."""

    MESSAGE_ID = 0x82B5
    MESSAGE_NAME = "Message 82B5"

OutdoorMessage82d1

Bases: FloatMessage

Parser for message 0x82D1 (Message 82D1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1534
1535
1536
1537
1538
class OutdoorMessage82d1(FloatMessage):
    """Parser for message 0x82D1 (Message 82D1)."""

    MESSAGE_ID = 0x82D1
    MESSAGE_NAME = "Message 82D1"

OutdoorMessage82d5

Bases: FloatMessage

Parser for message 0x82D5 (Message 82D5).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1548
1549
1550
1551
1552
class OutdoorMessage82d5(FloatMessage):
    """Parser for message 0x82D5 (Message 82D5)."""

    MESSAGE_ID = 0x82D5
    MESSAGE_NAME = "Message 82D5"

OutdoorMessage82d6

Bases: FloatMessage

Parser for message 0x82D6 (Message 82D6).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1555
1556
1557
1558
1559
class OutdoorMessage82d6(FloatMessage):
    """Parser for message 0x82D6 (Message 82D6)."""

    MESSAGE_ID = 0x82D6
    MESSAGE_NAME = "Message 82D6"

OutdoorMessage82d7

Bases: FloatMessage

Parser for message 0x82D7 (Message 82D7).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1562
1563
1564
1565
1566
class OutdoorMessage82d7(FloatMessage):
    """Parser for message 0x82D7 (Message 82D7)."""

    MESSAGE_ID = 0x82D7
    MESSAGE_NAME = "Message 82D7"

OutdoorMessage82d8

Bases: FloatMessage

Parser for message 0x82D8 (Message 82D8).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1569
1570
1571
1572
1573
class OutdoorMessage82d8(FloatMessage):
    """Parser for message 0x82D8 (Message 82D8)."""

    MESSAGE_ID = 0x82D8
    MESSAGE_NAME = "Message 82D8"

OutdoorMessage82ed

Bases: FloatMessage

Parser for message 0x82ED (Message 82ED).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1634
1635
1636
1637
1638
class OutdoorMessage82ed(FloatMessage):
    """Parser for message 0x82ED (Message 82ED)."""

    MESSAGE_ID = 0x82ED
    MESSAGE_NAME = "Message 82ED"

OutdoorMessage82f6

Bases: FloatMessage

Parser for message 0x82F6 (Message 82F6).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1648
1649
1650
1651
1652
class OutdoorMessage82f6(FloatMessage):
    """Parser for message 0x82F6 (Message 82F6)."""

    MESSAGE_ID = 0x82F6
    MESSAGE_NAME = "Message 82F6"

OutdoorMessage8401

Bases: RawMessage

Parser for message 0x8401 (Message 8401).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1669
1670
1671
1672
1673
class OutdoorMessage8401(RawMessage):
    """Parser for message 0x8401 (Message 8401)."""

    MESSAGE_ID = 0x8401
    MESSAGE_NAME = "Message 8401"

OutdoorMessage8404

Bases: RawMessage

Parser for message 0x8404 (Message 8404).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1676
1677
1678
1679
1680
class OutdoorMessage8404(RawMessage):
    """Parser for message 0x8404 (Message 8404)."""

    MESSAGE_ID = 0x8404
    MESSAGE_NAME = "Message 8404"

OutdoorMessage8408

Bases: RawMessage

Parser for message 0x8408 (Message 8408).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1711
1712
1713
1714
1715
class OutdoorMessage8408(RawMessage):
    """Parser for message 0x8408 (Message 8408)."""

    MESSAGE_ID = 0x8408
    MESSAGE_NAME = "Message 8408"

OutdoorMessage8409

Bases: RawMessage

Parser for message 0x8409 (Message 8409).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1718
1719
1720
1721
1722
class OutdoorMessage8409(RawMessage):
    """Parser for message 0x8409 (Message 8409)."""

    MESSAGE_ID = 0x8409
    MESSAGE_NAME = "Message 8409"

OutdoorMessage8411

Bases: RawMessage

Parser for message 0x8411 (Message 8411).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1751
1752
1753
1754
1755
class OutdoorMessage8411(RawMessage):
    """Parser for message 0x8411 (Message 8411)."""

    MESSAGE_ID = 0x8411
    MESSAGE_NAME = "Message 8411"

OutdoorMessage8417

Bases: RawMessage

Parser for message 0x8417 (Message 8417).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1776
1777
1778
1779
1780
class OutdoorMessage8417(RawMessage):
    """Parser for message 0x8417 (Message 8417)."""

    MESSAGE_ID = 0x8417
    MESSAGE_NAME = "Message 8417"

OutdoorMessage841a

Bases: RawMessage

Parser for message 0x841A (Message 841A).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1783
1784
1785
1786
1787
class OutdoorMessage841a(RawMessage):
    """Parser for message 0x841A (Message 841A)."""

    MESSAGE_ID = 0x841A
    MESSAGE_NAME = "Message 841A"

OutdoorMessage841f

Bases: RawMessage

Parser for message 0x841F (Message 841F).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1790
1791
1792
1793
1794
class OutdoorMessage841f(RawMessage):
    """Parser for message 0x841F (Message 841F)."""

    MESSAGE_ID = 0x841F
    MESSAGE_NAME = "Message 841F"

OutdoorMessage8608

Bases: RawMessage

Parser for message 0x8608 (Message 8608).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1804
1805
1806
1807
1808
class OutdoorMessage8608(RawMessage):
    """Parser for message 0x8608 (Message 8608)."""

    MESSAGE_ID = 0x8608
    MESSAGE_NAME = "Message 8608"

OutdoorMessage860c

Bases: RawMessage

Parser for message 0x860C (Message 860C).

This is a binary structure message. The exact purpose is not yet documented. The structure format is: - Bytes 0-3: Header (reserved/metadata) - Bytes 4+: Variable-length configuration fields

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
class OutdoorMessage860c(RawMessage):
    """Parser for message 0x860C (Message 860C).

    This is a binary structure message. The exact purpose is not yet documented.
    The structure format is:
    - Bytes 0-3: Header (reserved/metadata)
    - Bytes 4+: Variable-length configuration fields
    """

    MESSAGE_ID = 0x860C
    MESSAGE_NAME = "Message 860C"

    @classmethod
    def parse_payload(cls, payload: bytes) -> "OutdoorMessage860c":
        """Parse the payload into a structured representation."""
        if not payload or len(payload) < 4:
            return cls(value=payload.hex() if payload else None)

        header_bytes = payload[0:4]
        header_int = int.from_bytes(header_bytes, byteorder="big")
        data_portion = payload[4:]

        result = {
            "header_hex": header_bytes.hex(),
            "header_value": header_int,
            "data_hex": data_portion.hex() if data_portion else "",
            "data_length": len(data_portion),
            "total_length": len(payload),
            "raw_hex": payload.hex(),
        }
        return cls(value=result, raw_payload=payload)

parse_payload(payload) classmethod

Parse the payload into a structured representation.

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
@classmethod
def parse_payload(cls, payload: bytes) -> "OutdoorMessage860c":
    """Parse the payload into a structured representation."""
    if not payload or len(payload) < 4:
        return cls(value=payload.hex() if payload else None)

    header_bytes = payload[0:4]
    header_int = int.from_bytes(header_bytes, byteorder="big")
    data_portion = payload[4:]

    result = {
        "header_hex": header_bytes.hex(),
        "header_value": header_int,
        "data_hex": data_portion.hex() if data_portion else "",
        "data_length": len(data_portion),
        "total_length": len(payload),
        "raw_hex": payload.hex(),
    }
    return cls(value=result, raw_payload=payload)

OutdoorMotorControlUnitBypassEevPosition

Bases: FloatMessage

Parser for message 0x82E8 (Motor Control Unit bypass EEV position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1620
1621
1622
1623
1624
class OutdoorMotorControlUnitBypassEevPosition(FloatMessage):
    """Parser for message 0x82E8 (Motor Control Unit bypass EEV position)."""

    MESSAGE_ID = 0x82E8
    MESSAGE_NAME = "Motor Control Unit bypass EEV position"

OutdoorNoOfFans

Bases: RawMessage

Parser for message 0x8099 (No. of fans).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
579
580
581
582
583
class OutdoorNoOfFans(RawMessage):
    """Parser for message 0x8099 (No. of fans)."""

    MESSAGE_ID = 0x8099
    MESSAGE_NAME = "No. of fans"

OutdoorNoOfOutdoorUnits

Bases: RawMessage

Parser for message 0x8092 (No. of Outdoor Units).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
572
573
574
575
576
class OutdoorNoOfOutdoorUnits(RawMessage):
    """Parser for message 0x8092 (No. of Outdoor Units)."""

    MESSAGE_ID = 0x8092
    MESSAGE_NAME = "No. of Outdoor Units"

OutdoorNoOutdoorCompressors

Bases: FloatMessage

Parser for message 0x8202 (No. outdoor compressors).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
755
756
757
758
759
class OutdoorNoOutdoorCompressors(FloatMessage):
    """Parser for message 0x8202 (No. outdoor compressors)."""

    MESSAGE_ID = 0x8202
    MESSAGE_NAME = "No. outdoor compressors"

OutdoorOct1

Bases: FloatMessage

Parser for message 0x8278 (OCT1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1310
1311
1312
1313
1314
class OutdoorOct1(FloatMessage):
    """Parser for message 0x8278 (OCT1)."""

    MESSAGE_ID = 0x8278
    MESSAGE_NAME = "OCT1"

OutdoorOilBypassValve1Status

Bases: RawMessage

Parser for message 0x80B8 (Oil bypass valve 1 status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
678
679
680
681
682
class OutdoorOilBypassValve1Status(RawMessage):
    """Parser for message 0x80B8 (Oil bypass valve 1 status)."""

    MESSAGE_ID = 0x80B8
    MESSAGE_NAME = "Oil bypass valve 1 status"

OutdoorOilBypassValve2Status

Bases: RawMessage

Parser for message 0x80B9 (Oil bypass valve 2 status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
685
686
687
688
689
class OutdoorOilBypassValve2Status(RawMessage):
    """Parser for message 0x80B9 (Oil bypass valve 2 status)."""

    MESSAGE_ID = 0x80B9
    MESSAGE_NAME = "Oil bypass valve 2 status"

OutdoorOilBypassValvePosition

Bases: FloatMessage

Parser for message 0x82CA (Oil bypass valve position).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1485
1486
1487
1488
1489
class OutdoorOilBypassValvePosition(FloatMessage):
    """Parser for message 0x82CA (Oil bypass valve position)."""

    MESSAGE_ID = 0x82CA
    MESSAGE_NAME = "Oil bypass valve position"

OutdoorOperationCapaSum

Bases: FloatMessage

Parser for message 0x8233 (Outdoor Operation Capacity Sum).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
933
934
935
936
937
938
939
class OutdoorOperationCapaSum(FloatMessage):
    """Parser for message 0x8233 (Outdoor Operation Capacity Sum)."""

    MESSAGE_ID = 0x8233
    MESSAGE_NAME = "Outdoor Operation Capacity Sum"
    SIGNED = False
    ARITHMETIC = 0.086  # might need to change this to 8.5

OutdoorOperationHeatCoolMessage

Bases: EnumMessage

Parser for message 0x8003 (Outdoor Operation Heat/Cool).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
61
62
63
64
65
66
class OutdoorOperationHeatCoolMessage(EnumMessage):
    """Parser for message 0x8003 (Outdoor Operation Heat/Cool)."""

    MESSAGE_ID = 0x8003
    MESSAGE_NAME = "Outdoor Operation Heat/Cool Mode"
    MESSAGE_ENUM = OutdoorOperationHeatCool

OutdoorOperationReferenceStep

Bases: RawMessage

Parser for message 0x808E (Operation reference step).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
565
566
567
568
569
class OutdoorOperationReferenceStep(RawMessage):
    """Parser for message 0x808E (Operation reference step)."""

    MESSAGE_ID = 0x808E
    MESSAGE_NAME = "Operation reference step"

OutdoorOperationServiceOpMessage

Bases: EnumMessage

Parser for message 0x8000 (Outdoor Operation Service Operation).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
45
46
47
48
49
50
class OutdoorOperationServiceOpMessage(EnumMessage):
    """Parser for message 0x8000 (Outdoor Operation Service Operation)."""

    MESSAGE_ID = 0x8000
    MESSAGE_NAME = "Outdoor Operation Service Operation"
    MESSAGE_ENUM = OutdoorOperationServiceOp

OutdoorOperationStatusMessage

Bases: EnumMessage

Parser for message 0x8001 (Outdoor Operation Status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
53
54
55
56
57
58
class OutdoorOperationStatusMessage(EnumMessage):
    """Parser for message 0x8001 (Outdoor Operation Status)."""

    MESSAGE_ID = 0x8001
    MESSAGE_NAME = "Outdoor Operation Status"
    MESSAGE_ENUM = OutdoorOperationStatus

OutdoorOutdoorUnitCheckInfo

Bases: RawMessage

Parser for message 0x8613 (Outdoor Unit check info).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1965
1966
1967
1968
1969
class OutdoorOutdoorUnitCheckInfo(RawMessage):
    """Parser for message 0x8613 (Outdoor Unit check info)."""

    MESSAGE_ID = 0x8613
    MESSAGE_NAME = "Outdoor Unit check info"

OutdoorOutdoorUnitOutletSubcool

Bases: FloatMessage

Parser for message 0x82CD (Outdoor Unit outlet subcool?).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1506
1507
1508
1509
1510
class OutdoorOutdoorUnitOutletSubcool(FloatMessage):
    """Parser for message 0x82CD (Outdoor Unit outlet subcool?)."""

    MESSAGE_ID = 0x82CD
    MESSAGE_NAME = "Outdoor Unit outlet subcool?"

OutdoorPhaseCurrent

Bases: FloatMessage

Parser for message 0x82DB (Outdoor Phase Current).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1576
1577
1578
1579
1580
1581
1582
class OutdoorPhaseCurrent(FloatMessage):
    """Parser for message 0x82DB (Outdoor Phase Current)."""

    MESSAGE_ID = 0x82DB
    MESSAGE_NAME = "Outdoor Phase Current"
    UNIT_OF_MEASUREMENT = "A"
    SIGNED = False

OutdoorPheHeater

Bases: RawMessage

Parser for message 0x80D7 (PHE Heater).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
734
735
736
737
738
class OutdoorPheHeater(RawMessage):
    """Parser for message 0x80D7 (PHE Heater)."""

    MESSAGE_ID = 0x80D7
    MESSAGE_NAME = "PHE Heater"

OutdoorPipe1InletTemp

Bases: FloatMessage

Parser for message 0x825F (Pipe1 inlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1149
1150
1151
1152
1153
class OutdoorPipe1InletTemp(FloatMessage):
    """Parser for message 0x825F (Pipe1 inlet temp)."""

    MESSAGE_ID = 0x825F
    MESSAGE_NAME = "Pipe1 inlet temp"

OutdoorPipe1OutletTemp

Bases: FloatMessage

Parser for message 0x8264 (Pipe1 outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1184
1185
1186
1187
1188
class OutdoorPipe1OutletTemp(FloatMessage):
    """Parser for message 0x8264 (Pipe1 outlet temp)."""

    MESSAGE_ID = 0x8264
    MESSAGE_NAME = "Pipe1 outlet temp"

OutdoorPipe2InletTemp

Bases: FloatMessage

Parser for message 0x8260 (Pipe2 inlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1156
1157
1158
1159
1160
class OutdoorPipe2InletTemp(FloatMessage):
    """Parser for message 0x8260 (Pipe2 inlet temp)."""

    MESSAGE_ID = 0x8260
    MESSAGE_NAME = "Pipe2 inlet temp"

OutdoorPipe2OutletTemp

Bases: FloatMessage

Parser for message 0x8265 (Pipe2 outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1191
1192
1193
1194
1195
class OutdoorPipe2OutletTemp(FloatMessage):
    """Parser for message 0x8265 (Pipe2 outlet temp)."""

    MESSAGE_ID = 0x8265
    MESSAGE_NAME = "Pipe2 outlet temp"

OutdoorPipe3InletTemp

Bases: FloatMessage

Parser for message 0x8261 (Pipe3 inlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1163
1164
1165
1166
1167
class OutdoorPipe3InletTemp(FloatMessage):
    """Parser for message 0x8261 (Pipe3 inlet temp)."""

    MESSAGE_ID = 0x8261
    MESSAGE_NAME = "Pipe3 inlet temp"

OutdoorPipe3OutletTemp

Bases: FloatMessage

Parser for message 0x8266 (Pipe3 outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1198
1199
1200
1201
1202
class OutdoorPipe3OutletTemp(FloatMessage):
    """Parser for message 0x8266 (Pipe3 outlet temp)."""

    MESSAGE_ID = 0x8266
    MESSAGE_NAME = "Pipe3 outlet temp"

OutdoorPipe4InletTemp

Bases: FloatMessage

Parser for message 0x8262 (Pipe4 inlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1170
1171
1172
1173
1174
class OutdoorPipe4InletTemp(FloatMessage):
    """Parser for message 0x8262 (Pipe4 inlet temp)."""

    MESSAGE_ID = 0x8262
    MESSAGE_NAME = "Pipe4 inlet temp"

OutdoorPipe4OutletTemp

Bases: FloatMessage

Parser for message 0x8267 (Pipe4 outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1205
1206
1207
1208
1209
class OutdoorPipe4OutletTemp(FloatMessage):
    """Parser for message 0x8267 (Pipe4 outlet temp)."""

    MESSAGE_ID = 0x8267
    MESSAGE_NAME = "Pipe4 outlet temp"

OutdoorPipe5InletTemp

Bases: FloatMessage

Parser for message 0x8263 (Pipe5 inlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1177
1178
1179
1180
1181
class OutdoorPipe5InletTemp(FloatMessage):
    """Parser for message 0x8263 (Pipe5 inlet temp)."""

    MESSAGE_ID = 0x8263
    MESSAGE_NAME = "Pipe5 inlet temp"

OutdoorPipe5OutletTemp

Bases: FloatMessage

Parser for message 0x8268 (Pipe5 outlet temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1212
1213
1214
1215
1216
class OutdoorPipe5OutletTemp(FloatMessage):
    """Parser for message 0x8268 (Pipe5 outlet temp)."""

    MESSAGE_ID = 0x8268
    MESSAGE_NAME = "Pipe5 outlet temp"

OutdoorPowerFactorCorrectionElementTemp

Bases: FloatMessage

Parser for message 0x82E9 (Power factor correction element temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1627
1628
1629
1630
1631
class OutdoorPowerFactorCorrectionElementTemp(FloatMessage):
    """Parser for message 0x82E9 (Power factor correction element temp)."""

    MESSAGE_ID = 0x82E9
    MESSAGE_NAME = "Power factor correction element temp"

OutdoorPowerFactorCorrectionOverloadDetection

Bases: FloatMessage

Parser for message 0x82F5 (Power factor correction overload detection).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1641
1642
1643
1644
1645
class OutdoorPowerFactorCorrectionOverloadDetection(FloatMessage):
    """Parser for message 0x82F5 (Power factor correction overload detection)."""

    MESSAGE_ID = 0x82F5
    MESSAGE_NAME = "Power factor correction overload detection"

OutdoorProductCapa

Bases: BasicPowerMessage

Parser for message 0x82e3 (Outdoor Product Capacity).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1606
1607
1608
1609
1610
class OutdoorProductCapa(BasicPowerMessage):
    """Parser for message 0x82e3 (Outdoor Product Capacity)."""

    MESSAGE_ID = 0x82E3
    MESSAGE_NAME = "Outdoor Product Capacity"

OutdoorProjectCode

Bases: RawMessage

Parser for message 0x82BC (Outdoor Project Code).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1443
1444
1445
1446
1447
class OutdoorProjectCode(RawMessage):
    """Parser for message 0x82BC (Outdoor Project Code)."""

    MESSAGE_ID = 0x82BC
    MESSAGE_NAME = "Outdoor Project Code"

OutdoorPumpOutValveStatus

Bases: EnumMessage

Parser for message 0x8027 (Pump out valve status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
211
212
213
214
215
216
class OutdoorPumpOutValveStatus(EnumMessage):
    """Parser for message 0x8027 (Pump out valve status)."""

    MESSAGE_ID = 0x8027
    MESSAGE_NAME = "Pump out valve status"
    MESSAGE_ENUM = OutdoorPumpOutLoad

OutdoorRefrigerantInventory

Bases: RawMessage

Parser for message 0x809C (Refrigerant inventory).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
586
587
588
589
590
class OutdoorRefrigerantInventory(RawMessage):
    """Parser for message 0x809C (Refrigerant inventory)."""

    MESSAGE_ID = 0x809C
    MESSAGE_NAME = "Refrigerant inventory"

OutdoorRefrigerantVolume

Bases: FloatMessage

Parser for message 0x8249 (Outdoor Refrigerant Volume).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1092
1093
1094
1095
1096
1097
class OutdoorRefrigerantVolume(FloatMessage):
    """Parser for message 0x8249 (Outdoor Refrigerant Volume)."""

    MESSAGE_ID = 0x824F
    MESSAGE_NAME = "Outdoor Refrigerant Volume"
    ARITHMETIC = 0.1

OutdoorSafetyStart

Bases: FloatMessage

Parser for message 0x8248 (Outdoor Safety Start).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1064
1065
1066
1067
1068
class OutdoorSafetyStart(FloatMessage):
    """Parser for message 0x8248 (Outdoor Safety Start)."""

    MESSAGE_ID = 0x8248
    MESSAGE_NAME = "Outdoor Safety Start"

OutdoorSaturatedTpd

Bases: FloatMessage

Parser for message 0x829F (Saturated T_Pd).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1373
1374
1375
1376
1377
class OutdoorSaturatedTpd(FloatMessage):
    """Parser for message 0x829F (Saturated T_Pd)."""

    MESSAGE_ID = 0x829F
    MESSAGE_NAME = "Saturated T_Pd"

OutdoorSensorLowPressTemp

Bases: BasicTemperatureMessage

Parser for message 0x82A0 (Outdoor Sensor Low Press Temp).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1380
1381
1382
1383
1384
class OutdoorSensorLowPressTemp(BasicTemperatureMessage):
    """Parser for message 0x82A0 (Outdoor Sensor Low Press Temp)."""

    MESSAGE_ID = 0x82A0
    MESSAGE_NAME = "Outdoor Sensor Low Press Temp"

OutdoorSubcoolerEevStep

Bases: FloatMessage

Parser for message 0x82D2 (Subcooler EEV step).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1541
1542
1543
1544
1545
class OutdoorSubcoolerEevStep(FloatMessage):
    """Parser for message 0x82D2 (Subcooler EEV step)."""

    MESSAGE_ID = 0x82D2
    MESSAGE_NAME = "Subcooler EEV step"

OutdoorSuctionSensorTemperature

Bases: BasicTemperatureMessage

Parser for message 0x821A (Outdoor Suction Sensor Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
820
821
822
823
824
class OutdoorSuctionSensorTemperature(BasicTemperatureMessage):
    """Parser for message 0x821A (Outdoor Suction Sensor Temperature)."""

    MESSAGE_ID = 0x821A
    MESSAGE_NAME = "Outdoor Suction Sensor Temperature"

OutdoorTargetDischargeTemperature

Bases: BasicTemperatureMessage

Parser for message 0x8223 (Outdoor Target Discharge Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
848
849
850
851
852
class OutdoorTargetDischargeTemperature(BasicTemperatureMessage):
    """Parser for message 0x8223 (Outdoor Target Discharge Temperature)."""

    MESSAGE_ID = 0x8223
    MESSAGE_NAME = "Outdoor Target Discharge Temperature"

OutdoorTopSensorTemp1

Bases: BasicTemperatureMessage

Parser for message 0x8280 (Outdoor Top Sensor Temp 1).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1324
1325
1326
1327
1328
class OutdoorTopSensorTemp1(BasicTemperatureMessage):
    """Parser for message 0x8280 (Outdoor Top Sensor Temp 1)."""

    MESSAGE_ID = 0x8280
    MESSAGE_NAME = "Outdoor Top Sensor Temp 1"

OutdoorTopSensorTemp2

Bases: BasicTemperatureMessage

Parser for message 0x8281 (Outdoor Top Sensor Temp 2).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1331
1332
1333
1334
1335
class OutdoorTopSensorTemp2(BasicTemperatureMessage):
    """Parser for message 0x8281 (Outdoor Top Sensor Temp 2)."""

    MESSAGE_ID = 0x8281
    MESSAGE_NAME = "Outdoor Top Sensor Temp 2"

OutdoorTw1Temperature

Bases: BasicTemperatureMessage

Parser for message 0x82df (Outdoor TW1 Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1592
1593
1594
1595
1596
class OutdoorTw1Temperature(BasicTemperatureMessage):
    """Parser for message 0x82df (Outdoor TW1 Temperature)."""

    MESSAGE_ID = 0x82DF
    MESSAGE_NAME = "Outdoor TW1 Temperature"

OutdoorTw2Temperature

Bases: BasicTemperatureMessage

Parser for message 0x82E0 (Outdoor TW2 Temperature).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1599
1600
1601
1602
1603
class OutdoorTw2Temperature(BasicTemperatureMessage):
    """Parser for message 0x82E0 (Outdoor TW2 Temperature)."""

    MESSAGE_ID = 0x82E0
    MESSAGE_NAME = "Outdoor TW2 Temperature"

OutdoorUnknownTemperatureSensorA

Bases: BasicTemperatureMessage

Parser for message 0x8225 (Unknown Temperature Sensor).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
862
863
864
865
866
class OutdoorUnknownTemperatureSensorA(BasicTemperatureMessage):
    """Parser for message 0x8225 (Unknown Temperature Sensor)."""

    MESSAGE_ID = 0x8225
    MESSAGE_NAME = "Unknown Temperature Sensor"

OutdoorVapourInjectionSolenoid1Status

Bases: EnumMessage

Parser for message 0x8022 (Vapour injection solenoid1 status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
179
180
181
182
183
184
class OutdoorVapourInjectionSolenoid1Status(EnumMessage):
    """Parser for message 0x8022 (Vapour injection solenoid1 status)."""

    MESSAGE_ID = 0x8022
    MESSAGE_NAME = "Vapour injection solenoid1 status"
    MESSAGE_ENUM = OutdoorEviSolenoid

OutdoorVapourInjectionSolenoid2Status

Bases: EnumMessage

Parser for message 0x8023 (Vapour injection solenoid2 status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
187
188
189
190
191
192
class OutdoorVapourInjectionSolenoid2Status(EnumMessage):
    """Parser for message 0x8023 (Vapour injection solenoid2 status)."""

    MESSAGE_ID = 0x8023
    MESSAGE_NAME = "Vapour injection solenoid2 status"
    MESSAGE_ENUM = OutdoorEviSolenoid

OutdoorWaterLoadValveStatus

Bases: EnumMessage

Parser for message 0x8026 (Water load valve status).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
203
204
205
206
207
208
class OutdoorWaterLoadValveStatus(EnumMessage):
    """Parser for message 0x8026 (Water load valve status)."""

    MESSAGE_ID = 0x8026
    MESSAGE_NAME = "Water load valve status"
    MESSAGE_ENUM = OutdoorWaterValveLoad

OutdoorWaterTempSensor

Bases: FloatMessage

Parser for message 0x825E (Water temp sensor).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
1142
1143
1144
1145
1146
class OutdoorWaterTempSensor(FloatMessage):
    """Parser for message 0x825E (Water temp sensor)."""

    MESSAGE_ID = 0x825E
    MESSAGE_NAME = "Water temp sensor"

OutdoorWateroutType

Bases: RawMessage

Parser for message 0x80D8 (Waterout Type).

Source code in pysamsungnasa/protocol/factory/messages/outdoor.py
741
742
743
744
745
class OutdoorWateroutType(RawMessage):
    """Parser for message 0x80D8 (Waterout Type)."""

    MESSAGE_ID = 0x80D8
    MESSAGE_NAME = "Waterout Type"

Network Messages

pysamsungnasa.protocol.factory.messages.network

Messages from the network layer.

NmAllLayerDeviceCountMessage

Bases: RawMessage

Parser for message 0x2400 (All Layer Device Count).

Source code in pysamsungnasa/protocol/factory/messages/network.py
80
81
82
83
84
class NmAllLayerDeviceCountMessage(RawMessage):
    """Parser for message 0x2400 (All Layer Device Count)."""

    MESSAGE_ID = 0x2400
    MESSAGE_NAME = "All Layer Device Count"

NmLayerVariableNm1Message

Bases: RawMessage

Parser for message 0x2401 (Layer Variable NM 1).

Source code in pysamsungnasa/protocol/factory/messages/network.py
87
88
89
90
91
class NmLayerVariableNm1Message(RawMessage):
    """Parser for message 0x2401 (Layer Variable NM 1)."""

    MESSAGE_ID = 0x2401
    MESSAGE_NAME = "Layer Variable NM 1"

NmLayerVariableNm2Message

Bases: RawMessage

Parser for message 0x24FB (Layer Variable NM 2).

Source code in pysamsungnasa/protocol/factory/messages/network.py
94
95
96
97
98
class NmLayerVariableNm2Message(RawMessage):
    """Parser for message 0x24FB (Layer Variable NM 2)."""

    MESSAGE_ID = 0x24FB
    MESSAGE_NAME = "Layer Variable NM 2"

NmNetworkPositionLayerMessage

Bases: EnumMessage

Parser for message 0x200F (Network Position Layer).

Source code in pysamsungnasa/protocol/factory/messages/network.py
 8
 9
10
11
12
13
class NmNetworkPositionLayerMessage(EnumMessage):
    """Parser for message 0x200F (Network Position Layer)."""

    MESSAGE_ID = 0x200F
    MESSAGE_NAME = "Network Position Layer"
    MESSAGE_ENUM = NmNetworkPositionLayer

NmNetworkTrackingStateMessage

Bases: EnumMessage

Parser for message 0x2010 (Network Tracking State).

Source code in pysamsungnasa/protocol/factory/messages/network.py
16
17
18
19
20
21
class NmNetworkTrackingStateMessage(EnumMessage):
    """Parser for message 0x2010 (Network Tracking State)."""

    MESSAGE_ID = 0x2010
    MESSAGE_NAME = "Network Tracking State"
    MESSAGE_ENUM = NmNetworkTrackingState

NmVariableNm1Message

Bases: RawMessage

Parser for message 0x22F7 (Variable NM 1).

Source code in pysamsungnasa/protocol/factory/messages/network.py
24
25
26
27
28
class NmVariableNm1Message(RawMessage):
    """Parser for message 0x22F7 (Variable NM 1)."""

    MESSAGE_ID = 0x22F7
    MESSAGE_NAME = "Variable NM 1"

NmVariableNm2Message

Bases: RawMessage

Parser for message 0x22F9 (Variable NM 2).

Source code in pysamsungnasa/protocol/factory/messages/network.py
31
32
33
34
35
class NmVariableNm2Message(RawMessage):
    """Parser for message 0x22F9 (Variable NM 2)."""

    MESSAGE_ID = 0x22F9
    MESSAGE_NAME = "Variable NM 2"

NmVariableNm3Message

Bases: RawMessage

Parser for message 0x22FA (Variable NM 3).

Source code in pysamsungnasa/protocol/factory/messages/network.py
38
39
40
41
42
class NmVariableNm3Message(RawMessage):
    """Parser for message 0x22FA (Variable NM 3)."""

    MESSAGE_ID = 0x22FA
    MESSAGE_NAME = "Variable NM 3"

NmVariableNm4Message

Bases: RawMessage

Parser for message 0x22FB (Variable NM 4).

Source code in pysamsungnasa/protocol/factory/messages/network.py
45
46
47
48
49
class NmVariableNm4Message(RawMessage):
    """Parser for message 0x22FB (Variable NM 4)."""

    MESSAGE_ID = 0x22FB
    MESSAGE_NAME = "Variable NM 4"

NmVariableNm5Message

Bases: RawMessage

Parser for message 0x22FC (Variable NM 5).

Source code in pysamsungnasa/protocol/factory/messages/network.py
52
53
54
55
56
class NmVariableNm5Message(RawMessage):
    """Parser for message 0x22FC (Variable NM 5)."""

    MESSAGE_ID = 0x22FC
    MESSAGE_NAME = "Variable NM 5"

NmVariableNm6Message

Bases: RawMessage

Parser for message 0x22FD (Variable NM 6).

Source code in pysamsungnasa/protocol/factory/messages/network.py
59
60
61
62
63
class NmVariableNm6Message(RawMessage):
    """Parser for message 0x22FD (Variable NM 6)."""

    MESSAGE_ID = 0x22FD
    MESSAGE_NAME = "Variable NM 6"

NmVariableNm7Message

Bases: RawMessage

Parser for message 0x22FE (Variable NM 7).

Source code in pysamsungnasa/protocol/factory/messages/network.py
66
67
68
69
70
class NmVariableNm7Message(RawMessage):
    """Parser for message 0x22FE (Variable NM 7)."""

    MESSAGE_ID = 0x22FE
    MESSAGE_NAME = "Variable NM 7"

NmVariableNm8Message

Bases: RawMessage

Parser for message 0x22FF (Variable NM 8).

Source code in pysamsungnasa/protocol/factory/messages/network.py
73
74
75
76
77
class NmVariableNm8Message(RawMessage):
    """Parser for message 0x22FF (Variable NM 8)."""

    MESSAGE_ID = 0x22FF
    MESSAGE_NAME = "Variable NM 8"