1 """Asuswrt status sensors."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
10 SensorEntityDescription,
25 DataUpdateCoordinator,
29 from .
import AsusWrtConfigEntry
34 SENSORS_CONNECTED_DEVICE,
42 from .router
import AsusWrtRouter
45 @dataclass(frozen=True)
47 """A class that describes AsusWrt sensor entities."""
49 factor: int |
None =
None
52 UNIT_DEVICES =
"Devices"
54 CPU_CORE_SENSORS: tuple[AsusWrtSensorEntityDescription, ...] =
tuple(
57 translation_key=
"cpu_core_usage",
58 translation_placeholders={
"core_id":
str(core_id)},
59 state_class=SensorStateClass.MEASUREMENT,
60 native_unit_of_measurement=PERCENTAGE,
61 entity_category=EntityCategory.DIAGNOSTIC,
62 entity_registry_enabled_default=
False,
63 suggested_display_precision=1,
65 for core_id, sens_key
in enumerate(SENSORS_CPU[1:], start=1)
67 CONNECTION_SENSORS: tuple[AsusWrtSensorEntityDescription, ...] = (
69 key=SENSORS_CONNECTED_DEVICE[0],
70 translation_key=
"devices_connected",
71 state_class=SensorStateClass.MEASUREMENT,
72 native_unit_of_measurement=UNIT_DEVICES,
76 translation_key=
"download_speed",
77 device_class=SensorDeviceClass.DATA_RATE,
78 state_class=SensorStateClass.MEASUREMENT,
79 native_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND,
80 entity_registry_enabled_default=
False,
81 suggested_display_precision=2,
86 translation_key=
"upload_speed",
87 device_class=SensorDeviceClass.DATA_RATE,
88 state_class=SensorStateClass.MEASUREMENT,
89 native_unit_of_measurement=UnitOfDataRate.MEGABITS_PER_SECOND,
90 entity_registry_enabled_default=
False,
91 suggested_display_precision=2,
96 translation_key=
"download",
97 state_class=SensorStateClass.TOTAL_INCREASING,
98 native_unit_of_measurement=UnitOfInformation.GIGABYTES,
99 device_class=SensorDeviceClass.DATA_SIZE,
100 entity_registry_enabled_default=
False,
101 suggested_display_precision=2,
105 key=SENSORS_BYTES[1],
106 translation_key=
"upload",
107 state_class=SensorStateClass.TOTAL_INCREASING,
108 native_unit_of_measurement=UnitOfInformation.GIGABYTES,
109 device_class=SensorDeviceClass.DATA_SIZE,
110 entity_registry_enabled_default=
False,
111 suggested_display_precision=2,
115 key=SENSORS_LOAD_AVG[0],
116 translation_key=
"load_avg_1m",
117 state_class=SensorStateClass.MEASUREMENT,
118 entity_category=EntityCategory.DIAGNOSTIC,
119 entity_registry_enabled_default=
False,
120 suggested_display_precision=1,
123 key=SENSORS_LOAD_AVG[1],
124 translation_key=
"load_avg_5m",
125 state_class=SensorStateClass.MEASUREMENT,
126 entity_category=EntityCategory.DIAGNOSTIC,
127 entity_registry_enabled_default=
False,
128 suggested_display_precision=1,
131 key=SENSORS_LOAD_AVG[2],
132 translation_key=
"load_avg_15m",
133 state_class=SensorStateClass.MEASUREMENT,
134 entity_category=EntityCategory.DIAGNOSTIC,
135 entity_registry_enabled_default=
False,
136 suggested_display_precision=1,
139 key=SENSORS_TEMPERATURES[0],
140 translation_key=
"24ghz_temperature",
141 state_class=SensorStateClass.MEASUREMENT,
142 device_class=SensorDeviceClass.TEMPERATURE,
143 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
144 entity_category=EntityCategory.DIAGNOSTIC,
145 entity_registry_enabled_default=
False,
146 suggested_display_precision=1,
149 key=SENSORS_TEMPERATURES[1],
150 translation_key=
"5ghz_temperature",
151 state_class=SensorStateClass.MEASUREMENT,
152 device_class=SensorDeviceClass.TEMPERATURE,
153 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
154 entity_category=EntityCategory.DIAGNOSTIC,
155 entity_registry_enabled_default=
False,
156 suggested_display_precision=1,
159 key=SENSORS_TEMPERATURES[2],
160 translation_key=
"cpu_temperature",
161 state_class=SensorStateClass.MEASUREMENT,
162 device_class=SensorDeviceClass.TEMPERATURE,
163 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
164 entity_category=EntityCategory.DIAGNOSTIC,
165 entity_registry_enabled_default=
False,
166 suggested_display_precision=1,
169 key=SENSORS_TEMPERATURES[3],
170 translation_key=
"5ghz_2_temperature",
171 state_class=SensorStateClass.MEASUREMENT,
172 device_class=SensorDeviceClass.TEMPERATURE,
173 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
174 entity_category=EntityCategory.DIAGNOSTIC,
175 entity_registry_enabled_default=
False,
176 suggested_display_precision=1,
179 key=SENSORS_TEMPERATURES[4],
180 translation_key=
"6ghz_temperature",
181 state_class=SensorStateClass.MEASUREMENT,
182 device_class=SensorDeviceClass.TEMPERATURE,
183 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
184 entity_category=EntityCategory.DIAGNOSTIC,
185 entity_registry_enabled_default=
False,
186 suggested_display_precision=1,
189 key=SENSORS_MEMORY[0],
190 translation_key=
"memory_usage",
191 state_class=SensorStateClass.MEASUREMENT,
192 native_unit_of_measurement=PERCENTAGE,
193 entity_category=EntityCategory.DIAGNOSTIC,
194 entity_registry_enabled_default=
False,
195 suggested_display_precision=1,
198 key=SENSORS_MEMORY[1],
199 translation_key=
"memory_free",
200 state_class=SensorStateClass.MEASUREMENT,
201 device_class=SensorDeviceClass.DATA_SIZE,
202 native_unit_of_measurement=UnitOfInformation.MEGABYTES,
203 entity_category=EntityCategory.DIAGNOSTIC,
204 entity_registry_enabled_default=
False,
205 suggested_display_precision=2,
209 key=SENSORS_MEMORY[2],
210 translation_key=
"memory_used",
211 state_class=SensorStateClass.MEASUREMENT,
212 device_class=SensorDeviceClass.DATA_SIZE,
213 native_unit_of_measurement=UnitOfInformation.MEGABYTES,
214 entity_category=EntityCategory.DIAGNOSTIC,
215 entity_registry_enabled_default=
False,
216 suggested_display_precision=2,
220 key=SENSORS_UPTIME[0],
221 translation_key=
"last_boot",
222 device_class=SensorDeviceClass.TIMESTAMP,
225 key=SENSORS_UPTIME[1],
226 translation_key=
"uptime",
227 state_class=SensorStateClass.TOTAL,
228 device_class=SensorDeviceClass.DURATION,
229 native_unit_of_measurement=UnitOfTime.SECONDS,
230 entity_category=EntityCategory.DIAGNOSTIC,
231 entity_registry_enabled_default=
False,
235 translation_key=
"cpu_usage",
236 state_class=SensorStateClass.MEASUREMENT,
237 native_unit_of_measurement=PERCENTAGE,
238 entity_category=EntityCategory.DIAGNOSTIC,
239 entity_registry_enabled_default=
False,
240 suggested_display_precision=1,
248 entry: AsusWrtConfigEntry,
249 async_add_entities: AddEntitiesCallback,
251 """Set up the sensors."""
252 router = entry.runtime_data
255 for sensor_data
in router.sensors_coordinator.values():
256 coordinator = sensor_data[KEY_COORDINATOR]
257 sensors = sensor_data[KEY_SENSORS]
261 for sensor_descr
in CONNECTION_SENSORS
262 if sensor_descr.key
in sensors
270 """Representation of a AsusWrt sensor."""
272 entity_description: AsusWrtSensorEntityDescription
273 _attr_has_entity_name =
True
277 coordinator: DataUpdateCoordinator,
278 router: AsusWrtRouter,
279 description: AsusWrtSensorEntityDescription,
281 """Initialize a AsusWrt sensor."""
291 """Return current state."""
293 state: float | int | str |
None = self.coordinator.data.get(descr.key)
294 if state
is not None and descr.factor
and isinstance(state, (float, int)):
295 return state / descr.factor
_attr_extra_state_attributes
float|int|str|None native_value(self)
None __init__(self, DataUpdateCoordinator coordinator, AsusWrtRouter router, AsusWrtSensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, AsusWrtConfigEntry entry, AddEntitiesCallback async_add_entities)