Tibber, use nameclass (#53242)

This commit is contained in:
Daniel Hjelseth Høyer 2021-07-21 08:56:29 +02:00 committed by GitHub
parent 5e059c7f55
commit 9b2d98f027
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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