Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions custom_components/pentair_cloud/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,10 @@ class PentairBinarySensorEntityDescription(BinarySensorEntityDescription):
key="alarm",
name="Alarm",
device_class=BinarySensorDeviceClass.PROBLEM,
# The device-level "alarm" flag is what Pentair reports; the numeric
# fault bits are exposed separately as the "Alarm code" sensor.
# s20 (alarm_code) is the authoritative fault bitfield: 0 = no fault.
# The numeric code is also exposed separately as the "Alarm code" sensor.
value_fn=lambda device: (
bool(device.alarm) or bool(device.alarm_code)
if device.alarm is not None or device.alarm_code is not None
else None
device.alarm_code != 0 if device.alarm_code is not None else None
),
),
PentairBinarySensorEntityDescription(
Expand Down
6 changes: 1 addition & 5 deletions custom_components/pentair_cloud/pentaircloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ def __init__(self, LOGGER: Logger, pentair_device_id: str, nickname: str) -> Non
self.motor_speed_pct = None # s19 - Current Motor Speed (%)
self.flow_gpm = None # s26 - Current Estimated Flow (gallons per minute)
self.pressure_psi = None # s17 - Current Pressure (psi)
self.alarm = None # device-level alarm flag (Pentair reported)
self.alarm_code = None # s20 - Alarm Condition bitfield (0 = no fault)
self.online = None # device connectivity flag
# Optimistic program selection: when the user starts/stops a program we
Expand Down Expand Up @@ -99,7 +98,6 @@ def get_value(key):
self.pressure_psi = float(pressure) / 100 if pressure is not None else None
self.alarm_code = int(alarm_code) if alarm_code is not None else None
# Device-level flags live at the top of the response, not in "fields".
self.alarm = device_response.get("alarm")
self.online = device_response.get("online")
if DEBUG_INFO:
self.LOGGER.info(
Expand All @@ -113,9 +111,7 @@ def get_value(key):
+ str(self.flow_gpm)
+ "GPM pressure="
+ str(self.pressure_psi)
+ "psi alarm="
+ str(self.alarm)
+ " code="
+ "psi alarm_code="
+ str(self.alarm_code)
)

Expand Down