Skip to content

Commit b0cfc68

Browse files
Merge pull request #177 from vincentwolsink/relay_data
Add relay frequency, show only line voltage of connected lines
2 parents 0df8855 + 9ed4ae7 commit b0cfc68

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

custom_components/enphase_envoy/const.py

+8
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,14 @@ def get_model_name(model, hardware_id):
435435
device_class=SensorDeviceClass.VOLTAGE,
436436
suggested_display_precision=3,
437437
),
438+
SensorEntityDescription(
439+
key="relay_data_frequency",
440+
name="Frequency",
441+
native_unit_of_measurement=UnitOfFrequency.HERTZ,
442+
state_class=SensorStateClass.MEASUREMENT,
443+
device_class=SensorDeviceClass.FREQUENCY,
444+
suggested_display_precision=3,
445+
),
438446
SensorEntityDescription(
439447
key="relay_data_last_reading",
440448
name="Last Reading",

custom_components/enphase_envoy/envoy_reader.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,10 @@ def parse_devicedata(data):
107107
"sn": value["sn"],
108108
"active": value["active"],
109109
"temperature": last_reading["temperature"],
110-
"voltage_l1": last_reading["VrmsL1N"] / 1000,
111-
"voltage_l2": last_reading["VrmsL2N"] / 1000,
112-
"voltage_l3": last_reading["VrmsL3N"] / 1000,
110+
"voltage_l1": int(last_reading["VrmsL1N"]) / 1000,
111+
"voltage_l2": int(last_reading["VrmsL2N"]) / 1000,
112+
"voltage_l3": int(last_reading["VrmsL3N"]) / 1000,
113+
"frequency": int(last_reading["freqInmHz"]) / 1000,
113114
"state_change_count": last_reading["stateChngCnt"],
114115
"gone": value["modGone"],
115116
"last_reading": last_reading["endDate"],

custom_components/enphase_envoy/sensor.py

+11
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,17 @@ async def async_setup_entry(
129129
_LOGGER.debug(f"Relay Data Sensor DATA {relay}")
130130
device_name = f"Relay {relay}"
131131
serial_number = relay
132+
133+
if sensor_description.key.endswith(("l1", "l2", "l3")):
134+
line = sensor_description.key[-2:].replace("l", "line")
135+
line_connected = (
136+
coordinator.data.get("relay_info", {})
137+
.get(relay, {})
138+
.get(f"{line}-connected")
139+
)
140+
if line_connected is False:
141+
continue
142+
132143
entities.append(
133144
EnvoyRelayEntity(
134145
description=sensor_description,

0 commit comments

Comments
 (0)