Skip to content

Commit

Permalink
Feature: smart meter (#168)
Browse files Browse the repository at this point in the history
* Smart Meter: General Integration

* feat: fold power consumption into generic sensor with some shims

* fix: accidental mutation of methods dict

* fix: regression in wind sensor

* fix: use old-style typing (for now)

---------

Co-authored-by: Mikolaj Pastucha <[email protected]>
  • Loading branch information
swistakm and Mikolaj Pastucha authored Apr 16, 2024
1 parent 83b9c1d commit 4fef17d
Show file tree
Hide file tree
Showing 2 changed files with 182 additions and 148 deletions.
60 changes: 46 additions & 14 deletions blebox_uniapi/box_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,9 +276,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand All @@ -297,9 +297,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand All @@ -318,9 +318,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand All @@ -341,9 +341,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand Down Expand Up @@ -376,9 +376,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand Down Expand Up @@ -408,9 +408,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand Down Expand Up @@ -440,9 +440,9 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
[
"switchBox.energy",
{
"energy": "powerMeasuring/powerConsumption/[0]/value",
"powerConsumption": lambda x: "powerMeasuring/powerConsumption/[0]/value",
"periodS": "powerMeasuring/powerConsumption/[0]/periodS",
"measurment_enabled": "powerMeasuring/enabled",
"measurement_enabled": "powerMeasuring/enabled",
},
]
],
Expand Down Expand Up @@ -671,5 +671,37 @@ def get_latest_api_level(product_type: str) -> Union[dict, int]:
]
],
},
20230606: {
"api_path": "/state",
"extended_state_path": "/state/extended",
"sensors": [
[
"multiSensor",
{
"frequency": lambda x: f"multiSensor/sensors/[id={x}]/value",
"current": lambda x: f"multiSensor/sensors/[id={x}]/value",
"voltage": lambda x: f"multiSensor/sensors/[id={x}]/value",
"apparentPower": lambda x: f"multiSensor/sensors/[id={x}]/value",
"activePower": lambda x: f"multiSensor/sensors/[id={x}]/value",
"reactivePower": lambda x: f"multiSensor/sensors/[id={x}]/value",
"reverseActiveEnergy": lambda x: f"multiSensor/sensors/[id={x}]/value",
"forwardActiveEnergy": lambda x: f"multiSensor/sensors/[id={x}]/value",
"illuminance": lambda x: f"multiSensor/sensors/[id={x}]/value",
"temperature": lambda x: f"multiSensor/sensors/[id={x}]/value",
"wind": lambda x: f"multiSensor/sensors/[id={x}]/value",
"humidity": lambda x: f"multiSensor/sensors/[id={x}]/value",
},
]
],
"binary_sensors": [
[
"multiSensor",
{
"rain": lambda x: f"multiSensor/sensors/[id={x}]/value",
"flood": lambda x: f"multiSensor/sensors/[id={x}]/value",
},
]
],
},
},
}
Loading

0 comments on commit 4fef17d

Please sign in to comment.