mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
Tibber, use nameclass (#53242)
This commit is contained in:
parent
5e059c7f55
commit
9b2d98f027
@ -2,11 +2,11 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from dataclasses import dataclass
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
import logging
|
import logging
|
||||||
from random import randrange
|
from random import randrange
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
|
||||||
@ -58,8 +58,7 @@ class ResetType(Enum):
|
|||||||
NEVER = "never"
|
NEVER = "never"
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
class TibberSensorMetadata(NamedTuple):
|
||||||
class TibberSensorMetadata:
|
|
||||||
"""Metadata for an individual Tibber sensor."""
|
"""Metadata for an individual Tibber sensor."""
|
||||||
|
|
||||||
name: str
|
name: str
|
||||||
@ -71,119 +70,129 @@ class TibberSensorMetadata:
|
|||||||
|
|
||||||
RT_SENSOR_MAP: dict[str, TibberSensorMetadata] = {
|
RT_SENSOR_MAP: dict[str, TibberSensorMetadata] = {
|
||||||
"averagePower": TibberSensorMetadata(
|
"averagePower": TibberSensorMetadata(
|
||||||
"average power", DEVICE_CLASS_POWER, POWER_WATT
|
"average power",
|
||||||
|
device_class=DEVICE_CLASS_POWER,
|
||||||
|
unit=POWER_WATT,
|
||||||
),
|
),
|
||||||
"power": TibberSensorMetadata(
|
"power": TibberSensorMetadata(
|
||||||
"power",
|
"power",
|
||||||
DEVICE_CLASS_POWER,
|
device_class=DEVICE_CLASS_POWER,
|
||||||
POWER_WATT,
|
unit=POWER_WATT,
|
||||||
),
|
),
|
||||||
"powerProduction": TibberSensorMetadata(
|
"powerProduction": TibberSensorMetadata(
|
||||||
"power production", DEVICE_CLASS_POWER, POWER_WATT
|
"power production",
|
||||||
|
device_class=DEVICE_CLASS_POWER,
|
||||||
|
unit=POWER_WATT,
|
||||||
|
),
|
||||||
|
"minPower": TibberSensorMetadata(
|
||||||
|
"min power",
|
||||||
|
device_class=DEVICE_CLASS_POWER,
|
||||||
|
unit=POWER_WATT,
|
||||||
|
),
|
||||||
|
"maxPower": TibberSensorMetadata(
|
||||||
|
"max power",
|
||||||
|
device_class=DEVICE_CLASS_POWER,
|
||||||
|
unit=POWER_WATT,
|
||||||
),
|
),
|
||||||
"minPower": TibberSensorMetadata("min power", DEVICE_CLASS_POWER, POWER_WATT),
|
|
||||||
"maxPower": TibberSensorMetadata("max power", DEVICE_CLASS_POWER, POWER_WATT),
|
|
||||||
"accumulatedConsumption": TibberSensorMetadata(
|
"accumulatedConsumption": TibberSensorMetadata(
|
||||||
"accumulated consumption",
|
"accumulated consumption",
|
||||||
DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
unit=ENERGY_KILO_WATT_HOUR,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
ResetType.DAILY,
|
reset_type=ResetType.DAILY,
|
||||||
),
|
),
|
||||||
"accumulatedConsumptionLastHour": TibberSensorMetadata(
|
"accumulatedConsumptionLastHour": TibberSensorMetadata(
|
||||||
"accumulated consumption current hour",
|
"accumulated consumption current hour",
|
||||||
DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
unit=ENERGY_KILO_WATT_HOUR,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
ResetType.HOURLY,
|
reset_type=ResetType.HOURLY,
|
||||||
),
|
),
|
||||||
"accumulatedProduction": TibberSensorMetadata(
|
"accumulatedProduction": TibberSensorMetadata(
|
||||||
"accumulated production",
|
"accumulated production",
|
||||||
DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
unit=ENERGY_KILO_WATT_HOUR,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
ResetType.DAILY,
|
reset_type=ResetType.DAILY,
|
||||||
),
|
),
|
||||||
"accumulatedProductionLastHour": TibberSensorMetadata(
|
"accumulatedProductionLastHour": TibberSensorMetadata(
|
||||||
"accumulated production current hour",
|
"accumulated production current hour",
|
||||||
DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
unit=ENERGY_KILO_WATT_HOUR,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
ResetType.HOURLY,
|
reset_type=ResetType.HOURLY,
|
||||||
),
|
),
|
||||||
"lastMeterConsumption": TibberSensorMetadata(
|
"lastMeterConsumption": TibberSensorMetadata(
|
||||||
"last meter consumption",
|
"last meter consumption",
|
||||||
DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
unit=ENERGY_KILO_WATT_HOUR,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"lastMeterProduction": TibberSensorMetadata(
|
"lastMeterProduction": TibberSensorMetadata(
|
||||||
"last meter production",
|
"last meter production",
|
||||||
DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
unit=ENERGY_KILO_WATT_HOUR,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"voltagePhase1": TibberSensorMetadata(
|
"voltagePhase1": TibberSensorMetadata(
|
||||||
"voltage phase1",
|
"voltage phase1",
|
||||||
DEVICE_CLASS_VOLTAGE,
|
device_class=DEVICE_CLASS_VOLTAGE,
|
||||||
ELECTRIC_POTENTIAL_VOLT,
|
unit=ELECTRIC_POTENTIAL_VOLT,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"voltagePhase2": TibberSensorMetadata(
|
"voltagePhase2": TibberSensorMetadata(
|
||||||
"voltage phase2",
|
"voltage phase2",
|
||||||
DEVICE_CLASS_VOLTAGE,
|
device_class=DEVICE_CLASS_VOLTAGE,
|
||||||
ELECTRIC_POTENTIAL_VOLT,
|
unit=ELECTRIC_POTENTIAL_VOLT,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"voltagePhase3": TibberSensorMetadata(
|
"voltagePhase3": TibberSensorMetadata(
|
||||||
"voltage phase3",
|
"voltage phase3",
|
||||||
DEVICE_CLASS_VOLTAGE,
|
device_class=DEVICE_CLASS_VOLTAGE,
|
||||||
ELECTRIC_POTENTIAL_VOLT,
|
unit=ELECTRIC_POTENTIAL_VOLT,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"currentL1": TibberSensorMetadata(
|
"currentL1": TibberSensorMetadata(
|
||||||
"current L1",
|
"current L1",
|
||||||
DEVICE_CLASS_CURRENT,
|
device_class=DEVICE_CLASS_CURRENT,
|
||||||
ELECTRIC_CURRENT_AMPERE,
|
unit=ELECTRIC_CURRENT_AMPERE,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"currentL2": TibberSensorMetadata(
|
"currentL2": TibberSensorMetadata(
|
||||||
"current L2",
|
"current L2",
|
||||||
DEVICE_CLASS_CURRENT,
|
device_class=DEVICE_CLASS_CURRENT,
|
||||||
ELECTRIC_CURRENT_AMPERE,
|
unit=ELECTRIC_CURRENT_AMPERE,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"currentL3": TibberSensorMetadata(
|
"currentL3": TibberSensorMetadata(
|
||||||
"current L3",
|
"current L3",
|
||||||
DEVICE_CLASS_CURRENT,
|
device_class=DEVICE_CLASS_CURRENT,
|
||||||
ELECTRIC_CURRENT_AMPERE,
|
unit=ELECTRIC_CURRENT_AMPERE,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"signalStrength": TibberSensorMetadata(
|
"signalStrength": TibberSensorMetadata(
|
||||||
"signal strength",
|
"signal strength",
|
||||||
DEVICE_CLASS_SIGNAL_STRENGTH,
|
device_class=DEVICE_CLASS_SIGNAL_STRENGTH,
|
||||||
SIGNAL_STRENGTH_DECIBELS,
|
unit=SIGNAL_STRENGTH_DECIBELS,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
"accumulatedReward": TibberSensorMetadata(
|
"accumulatedReward": TibberSensorMetadata(
|
||||||
"accumulated reward",
|
"accumulated reward",
|
||||||
DEVICE_CLASS_MONETARY,
|
device_class=DEVICE_CLASS_MONETARY,
|
||||||
None,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
STATE_CLASS_MEASUREMENT,
|
reset_type=ResetType.DAILY,
|
||||||
ResetType.DAILY,
|
|
||||||
),
|
),
|
||||||
"accumulatedCost": TibberSensorMetadata(
|
"accumulatedCost": TibberSensorMetadata(
|
||||||
"accumulated cost",
|
"accumulated cost",
|
||||||
DEVICE_CLASS_MONETARY,
|
device_class=DEVICE_CLASS_MONETARY,
|
||||||
None,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
STATE_CLASS_MEASUREMENT,
|
reset_type=ResetType.DAILY,
|
||||||
ResetType.DAILY,
|
|
||||||
),
|
),
|
||||||
"powerFactor": TibberSensorMetadata(
|
"powerFactor": TibberSensorMetadata(
|
||||||
"power factor",
|
"power factor",
|
||||||
DEVICE_CLASS_POWER_FACTOR,
|
device_class=DEVICE_CLASS_POWER_FACTOR,
|
||||||
PERCENTAGE,
|
unit=PERCENTAGE,
|
||||||
STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,7 +371,7 @@ class TibberSensorRT(TibberSensor):
|
|||||||
self._attr_state = initial_state
|
self._attr_state = initial_state
|
||||||
self._attr_unique_id = f"{self._tibber_home.home_id}_rt_{metadata.name}"
|
self._attr_unique_id = f"{self._tibber_home.home_id}_rt_{metadata.name}"
|
||||||
|
|
||||||
if metadata.name in ["accumulated cost", "accumulated reward"]:
|
if metadata.name in ("accumulated cost", "accumulated reward"):
|
||||||
self._attr_unit_of_measurement = tibber_home.currency
|
self._attr_unit_of_measurement = tibber_home.currency
|
||||||
else:
|
else:
|
||||||
self._attr_unit_of_measurement = metadata.unit
|
self._attr_unit_of_measurement = metadata.unit
|
||||||
|
Loading…
x
Reference in New Issue
Block a user