149 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
"""Support for Goal Zero Yeti Sensors."""
 | 
						|
 | 
						|
from __future__ import annotations
 | 
						|
 | 
						|
from typing import cast
 | 
						|
 | 
						|
from homeassistant.components.sensor import (
 | 
						|
    SensorDeviceClass,
 | 
						|
    SensorEntity,
 | 
						|
    SensorEntityDescription,
 | 
						|
    SensorStateClass,
 | 
						|
)
 | 
						|
from homeassistant.const import (
 | 
						|
    PERCENTAGE,
 | 
						|
    SIGNAL_STRENGTH_DECIBELS,
 | 
						|
    EntityCategory,
 | 
						|
    UnitOfElectricCurrent,
 | 
						|
    UnitOfElectricPotential,
 | 
						|
    UnitOfEnergy,
 | 
						|
    UnitOfPower,
 | 
						|
    UnitOfTemperature,
 | 
						|
    UnitOfTime,
 | 
						|
)
 | 
						|
from homeassistant.core import HomeAssistant
 | 
						|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
 | 
						|
from homeassistant.helpers.typing import StateType
 | 
						|
 | 
						|
from .coordinator import GoalZeroConfigEntry
 | 
						|
from .entity import GoalZeroEntity
 | 
						|
 | 
						|
SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="wattsIn",
 | 
						|
        translation_key="watts_in",
 | 
						|
        device_class=SensorDeviceClass.POWER,
 | 
						|
        native_unit_of_measurement=UnitOfPower.WATT,
 | 
						|
        state_class=SensorStateClass.MEASUREMENT,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="ampsIn",
 | 
						|
        translation_key="amps_in",
 | 
						|
        device_class=SensorDeviceClass.CURRENT,
 | 
						|
        native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
 | 
						|
        state_class=SensorStateClass.MEASUREMENT,
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="wattsOut",
 | 
						|
        translation_key="watts_out",
 | 
						|
        device_class=SensorDeviceClass.POWER,
 | 
						|
        native_unit_of_measurement=UnitOfPower.WATT,
 | 
						|
        state_class=SensorStateClass.MEASUREMENT,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="ampsOut",
 | 
						|
        translation_key="amps_out",
 | 
						|
        device_class=SensorDeviceClass.CURRENT,
 | 
						|
        native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
 | 
						|
        state_class=SensorStateClass.MEASUREMENT,
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="whOut",
 | 
						|
        translation_key="wh_out",
 | 
						|
        device_class=SensorDeviceClass.ENERGY,
 | 
						|
        native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
 | 
						|
        state_class=SensorStateClass.TOTAL_INCREASING,
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="whStored",
 | 
						|
        translation_key="wh_stored",
 | 
						|
        device_class=SensorDeviceClass.ENERGY,
 | 
						|
        native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
 | 
						|
        state_class=SensorStateClass.TOTAL,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="volts",
 | 
						|
        device_class=SensorDeviceClass.VOLTAGE,
 | 
						|
        native_unit_of_measurement=UnitOfElectricPotential.VOLT,
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="socPercent",
 | 
						|
        translation_key="soc_percent",
 | 
						|
        device_class=SensorDeviceClass.BATTERY,
 | 
						|
        native_unit_of_measurement=PERCENTAGE,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="timeToEmptyFull",
 | 
						|
        translation_key="time_to_empty_full",
 | 
						|
        device_class=SensorDeviceClass.DURATION,
 | 
						|
        native_unit_of_measurement=UnitOfTime.MINUTES,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="temperature",
 | 
						|
        device_class=SensorDeviceClass.TEMPERATURE,
 | 
						|
        native_unit_of_measurement=UnitOfTemperature.CELSIUS,
 | 
						|
        entity_category=EntityCategory.DIAGNOSTIC,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="wifiStrength",
 | 
						|
        translation_key="wifi_strength",
 | 
						|
        device_class=SensorDeviceClass.SIGNAL_STRENGTH,
 | 
						|
        native_unit_of_measurement=SIGNAL_STRENGTH_DECIBELS,
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
        entity_category=EntityCategory.DIAGNOSTIC,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="timestamp",
 | 
						|
        translation_key="timestamp",
 | 
						|
        native_unit_of_measurement=UnitOfTime.SECONDS,
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
        entity_category=EntityCategory.DIAGNOSTIC,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="ssid",
 | 
						|
        translation_key="ssid",
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
        entity_category=EntityCategory.DIAGNOSTIC,
 | 
						|
    ),
 | 
						|
    SensorEntityDescription(
 | 
						|
        key="ipAddr",
 | 
						|
        translation_key="ip_addr",
 | 
						|
        entity_registry_enabled_default=False,
 | 
						|
        entity_category=EntityCategory.DIAGNOSTIC,
 | 
						|
    ),
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
async def async_setup_entry(
 | 
						|
    hass: HomeAssistant,
 | 
						|
    entry: GoalZeroConfigEntry,
 | 
						|
    async_add_entities: AddConfigEntryEntitiesCallback,
 | 
						|
) -> None:
 | 
						|
    """Set up the Goal Zero Yeti sensor."""
 | 
						|
    async_add_entities(
 | 
						|
        GoalZeroSensor(entry.runtime_data, description) for description in SENSOR_TYPES
 | 
						|
    )
 | 
						|
 | 
						|
 | 
						|
class GoalZeroSensor(GoalZeroEntity, SensorEntity):
 | 
						|
    """Representation of a Goal Zero Yeti sensor."""
 | 
						|
 | 
						|
    @property
 | 
						|
    def native_value(self) -> StateType:
 | 
						|
        """Return the state."""
 | 
						|
        return cast(StateType, self._api.data[self.entity_description.key])
 |