| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 9b7bf36 commit 0963d6f
7 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -85,7 +85,7 @@ | |||
| 85 | 85 | rssi | |
| 86 | 86 | on_since | |
| 87 | 87 | reboot | |
| 88 | - current_consumption | ||
| 88 | + power | ||
| 89 | 89 | consumption_today | |
| 90 | 90 | consumption_this_month | |
| 91 | 91 | consumption_total | |
@@ -604,7 +604,7 @@ def _get_deprecated_callable_attribute(self, name: str) -> Any | None: | |||
| 604 | 604 | "emeter_realtime": (Module.Energy, ["status"]), | |
| 605 | 605 | "emeter_today": (Module.Energy, ["consumption_today"]), | |
| 606 | 606 | "emeter_this_month": (Module.Energy, ["consumption_this_month"]), | |
| 607 | - "current_consumption": (Module.Energy, ["current_consumption"]), | ||
| 607 | + "current_consumption": (Module.Energy, ["power"]), | ||
| 608 | 608 | "get_emeter_daily": (Module.Energy, ["get_daily_stats"]), | |
| 609 | 609 | "get_emeter_monthly": (Module.Energy, ["get_monthly_stats"]), | |
| 610 | 610 | # Other attributes | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -38,11 +38,11 @@ def _initialize_features(self) -> None: | |||
| 38 | 38 | self._add_feature( | |
| 39 | 39 | Feature( | |
| 40 | 40 | device, | |
| 41 | - name="Current consumption", | ||
| 42 | - attribute_getter="current_consumption", | ||
| 41 | + name="Power", | ||
| 42 | + attribute_getter="power", | ||
| 43 | 43 | container=self, | |
| 44 | 44 | unit_getter=lambda: "W", | |
| 45 | - id="current_consumption", | ||
| 45 | + id="power", | ||
| 46 | 46 | precision_hint=1, | |
| 47 | 47 | category=Feature.Category.Primary, | |
| 48 | 48 | type=Feature.Type.Sensor, | |
@@ -64,11 +64,11 @@ def _initialize_features(self) -> None: | |||
| 64 | 64 | self._add_feature( | |
| 65 | 65 | Feature( | |
| 66 | 66 | device, | |
| 67 | - id="consumption_this_month", | ||
| 68 | 67 | name="This month's consumption", | |
| 69 | 68 | attribute_getter="consumption_this_month", | |
| 70 | 69 | container=self, | |
| 71 | 70 | unit_getter=lambda: "kWh", | |
| 71 | + id="consumption_this_month", | ||
| 72 | 72 | precision_hint=3, | |
| 73 | 73 | category=Feature.Category.Info, | |
| 74 | 74 | type=Feature.Type.Sensor, | |
@@ -123,8 +123,8 @@ def status(self) -> EmeterStatus: | |||
| 123 | 123 | ||
| 124 | 124 | @property | |
| 125 | 125 | @abstractmethod | |
| 126 | - def current_consumption(self) -> float | None: | ||
| 127 | - """Get the current power consumption in Watt.""" | ||
| 126 | + def power(self) -> float | None: | ||
| 127 | + """Get the current power draw in Watts.""" | ||
| 128 | 128 | ||
| 129 | 129 | @property | |
| 130 | 130 | @abstractmethod | |
@@ -182,6 +182,7 @@ async def get_monthly_stats( | |||
| 182 | 182 | "erase_emeter_stats": "erase_stats", | |
| 183 | 183 | "get_daystat": "get_daily_stats", | |
| 184 | 184 | "get_monthstat": "get_monthly_stats", | |
| 185 | + "current_consumption": "power", | ||
| 185 | 186 | } | |
| 186 | 187 | ||
| 187 | 188 | if not TYPE_CHECKING: | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -201,10 +201,10 @@ def query(self) -> dict: | |||
| 201 | 201 | return {} | |
| 202 | 202 | ||
| 203 | 203 | @property | |
| 204 | - def current_consumption(self) -> float | None: | ||
| 204 | + def power(self) -> float | None: | ||
| 205 | 205 | """Get the current power consumption in watts.""" | |
| 206 | 206 | return sum( | |
| 207 | - v if (v := plug.modules[Module.Energy].current_consumption) else 0.0 | ||
| 207 | + v if (v := plug.modules[Module.Energy].power) else 0.0 | ||
| 208 | 208 | for plug in self._device.children | |
| 209 | 209 | ) | |
| 210 | 210 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -51,8 +51,8 @@ def consumption_this_month(self) -> float | None: | |||
| 51 | 51 | return data.get(current_month, 0.0) | |
| 52 | 52 | ||
| 53 | 53 | @property | |
| 54 | - def current_consumption(self) -> float | None: | ||
| 55 | - """Get the current power consumption in Watt.""" | ||
| 54 | + def power(self) -> float | None: | ||
| 55 | + """Get the current power draw in Watts.""" | ||
| 56 | 56 | return self.status.power | |
| 57 | 57 | ||
| 58 | 58 | @property | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -67,9 +67,20 @@ def optional_response_keys(self) -> list[str]: | |||
| 67 | 67 | return [] | |
| 68 | 68 | ||
| 69 | 69 | @property | |
| 70 | - def current_consumption(self) -> float | None: | ||
| 71 | - """Current power in watts.""" | ||
| 72 | - return self._current_consumption | ||
| 70 | + @raise_if_update_error | ||
| 71 | + def power(self) -> float | None: | ||
| 72 | + """Current power draw in Watts.""" | ||
| 73 | + if (power := self.energy.get("current_power")) is not None or ( | ||
| 74 | + power := self.data.get("get_emeter_data", {}).get("power_mw") | ||
| 75 | + ) is not None: | ||
| 76 | + return power / 1_000 | ||
| 77 | + # Fallback if get_energy_usage does not provide current_power, | ||
| 78 | + # which can happen on some newer devices (e.g. P304M). | ||
| 79 | + elif ( | ||
| 80 | + power := self.data.get("get_current_power", {}).get("current_power") | ||
| 81 | + ) is not None: | ||
| 82 | + return power | ||
| 83 | + return None | ||
| 73 | 84 | ||
| 74 | 85 | @property | |
| 75 | 86 | def energy(self) -> dict: | |
@@ -127,14 +138,14 @@ def consumption_total(self) -> float | None: | |||
| 127 | 138 | def current(self) -> float | None: | |
| 128 | 139 | """Return the current in A.""" | |
| 129 | 140 | ma = self.data.get("get_emeter_data", {}).get("current_ma") | |
| 130 | - return ma / 1000 if ma else None | ||
| 141 | + return ma / 1000 if ma is not None else None | ||
| 131 | 142 | ||
| 132 | 143 | @property | |
| 133 | 144 | @raise_if_update_error | |
| 134 | 145 | def voltage(self) -> float | None: | |
| 135 | 146 | """Get the current voltage in V.""" | |
| 136 | 147 | mv = self.data.get("get_emeter_data", {}).get("voltage_mv") | |
| 137 | - return mv / 1000 if mv else None | ||
| 148 | + return mv / 1000 if mv is not None else None | ||
| 138 | 149 | ||
| 139 | 150 | async def _deprecated_get_realtime(self) -> EmeterStatus: | |
| 140 | 151 | """Retrieve current energy readings.""" | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -133,9 +133,9 @@ async def test_erase_emeter_stats(dev): | |||
| 133 | 133 | ||
| 134 | 134 | ||
| 135 | 135 | @has_emeter_iot | |
| 136 | - async def test_current_consumption(dev): | ||
| 136 | + async def test_power(dev): | ||
| 137 | 137 | emeter = dev.modules[Module.Energy] | |
| 138 | - x = emeter.current_consumption | ||
| 138 | + x = emeter.power | ||
| 139 | 139 | assert isinstance(x, float) | |
| 140 | 140 | assert x >= 0.0 | |
| 141 | 141 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -159,4 +159,4 @@ async def test_children_energy(dev: Device): | |||
| 159 | 159 | energy = plug.modules[Module.Energy] | |
| 160 | 160 | assert "voltage" in energy._module_features | |
| 161 | 161 | assert "current" in energy._module_features | |
| 162 | - assert "current_consumption" in energy._module_features | ||
| 162 | + assert "power" in energy._module_features | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments