File: energy_production.py

package info (click to toggle)
zwave-js-server-python 0.67.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,820 kB
  • sloc: python: 15,886; sh: 21; javascript: 16; makefile: 2
file content (56 lines) | stat: -rw-r--r-- 1,501 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""Constants for the Energy Production CC."""

from __future__ import annotations

from enum import IntEnum


class EnergyProductionParameter(IntEnum):
    """Energy Production CC parameter."""

    # https://github.com/zwave-js/node-zwave-js/blob/master/packages/cc/src/lib/_Types.ts#L508
    POWER = 0
    TOTAL_PRODUCTION = 1
    TODAYS_PRODUCTION = 2
    TOTAL_TIME = 3


CC_SPECIFIC_PARAMETER = "parameter"
CC_SPECIFIC_SCALE = "scale"


# https://github.com/zwave-js/node-zwave-js/blob/master/packages/cc/src/lib/_Types.ts#L520
class EnergyProductionScaleType(IntEnum):
    """Common base class for Energy Production scale enums."""


class PowerScale(EnergyProductionScaleType):
    """Enum with all known Energy Production power scale values."""

    WATTS = 0


class TotalProductionScale(EnergyProductionScaleType):
    """Enum with all known Energy Production total production scale values."""

    WATT_HOURS = 0


TodaysProductionScale = TotalProductionScale


class TotalTimeScale(EnergyProductionScaleType):
    """Enum with all known Energy Production total time scale values."""

    SECONDS = 0
    HOURS = 1


ENERGY_PRODUCTION_PARAMETER_TO_SCALE_ENUM_MAP: dict[
    EnergyProductionParameter, type[EnergyProductionScaleType]
] = {
    EnergyProductionParameter.POWER: PowerScale,
    EnergyProductionParameter.TOTAL_PRODUCTION: TotalProductionScale,
    EnergyProductionParameter.TODAYS_PRODUCTION: TodaysProductionScale,
    EnergyProductionParameter.TOTAL_TIME: TotalTimeScale,
}