powervaultpy 0.0.8__tar.gz → 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: powervaultpy
3
- Version: 0.0.8
3
+ Version: 1.0.0
4
4
  Summary: An integration to control the Powervault battery
5
5
  Author-email: Adam McDonagh <adam@elitemonkey.net>
6
6
  License: GPLv3
@@ -13,4 +13,13 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
13
13
  Classifier: Operating System :: POSIX
14
14
  Requires-Python: >=3.9
15
15
  Description-Content-Type: text/markdown
16
+ Requires-Dist: requests>=2.28
17
+ Requires-Dist: pytz
16
18
  Provides-Extra: dev
19
+ Requires-Dist: black>=23.1.0; extra == "dev"
20
+ Requires-Dist: isort; extra == "dev"
21
+ Requires-Dist: pytest; extra == "dev"
22
+ Requires-Dist: pytest-env; extra == "dev"
23
+ Requires-Dist: pytest-asyncio; extra == "dev"
24
+ Requires-Dist: bumpver; extra == "dev"
25
+ Requires-Dist: pre-commit; extra == "dev"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "powervaultpy"
7
- version = "0.0.8"
7
+ version = "1.0.0"
8
8
  authors = [
9
9
  { name="Adam McDonagh", email="adam@elitemonkey.net" },
10
10
  ]
@@ -43,7 +43,7 @@ dev = [
43
43
  profile = 'black'
44
44
 
45
45
  [tool.bumpver]
46
- current_version = "0.8.1"
46
+ current_version = "1.0.0"
47
47
  version_pattern = "MAJOR.MINOR.PATCH"
48
48
  commit_message = "bump version {old_version} -> {new_version}"
49
49
  commit = true
@@ -18,7 +18,7 @@ VALID_STATUSES = [
18
18
  ]
19
19
 
20
20
  _LOGGER = logging.getLogger(__name__)
21
- _LOGGER.setLevel(logging.DEBUG)
21
+ _LOGGER.setLevel(logging.INFO)
22
22
 
23
23
  class PowerVaultApiClientError(Exception):
24
24
  """Exception to indicate a general API error."""
@@ -113,14 +113,12 @@ class PowerVault:
113
113
  _LOGGER.error("Failed to retrieve account")
114
114
 
115
115
  def get_data(
116
- self, unit_id: str, from_: int = -1, to: int = -1, period: str = None
116
+ self, unit_id: str, period: str = None
117
117
  ) -> any:
118
118
  """Get the latest metrics from the unit."""
119
119
  url = f"{self._base_url}/unit/{unit_id}/data"
120
120
 
121
- if from_ > 0 and to > 0:
122
- url = f"{url}?from={from_}&to={to}"
123
- elif period is not None:
121
+ if period is not None:
124
122
  if period not in [
125
123
  "today",
126
124
  "yesterday",
@@ -134,6 +132,12 @@ class PowerVault:
134
132
  "last-month",
135
133
  ]:
136
134
  raise Exception(f"Invalid period: {period}")
135
+
136
+ if not period:
137
+ # If period is not set, set it to anything,
138
+ # because for some reason if you leave it blank you get nulls most of the time
139
+ period = "past_hour" # This is not a valid period, but it gets you the last live values regardless
140
+
137
141
  url = f"{url}?period={period}"
138
142
 
139
143
  data_response = self._read_response(self._session.get(url), url)
@@ -162,10 +166,11 @@ class PowerVault:
162
166
  for row in data:
163
167
  for attribute in attributes:
164
168
  if attribute in row:
165
- if attribute not in totals:
169
+ if attribute not in totals or not totals[attribute]:
166
170
  totals[attribute] = 0
167
- totals[attribute] += round(row[attribute] / 1000 * (5/60), 2)
168
-
171
+ value = row[attribute]
172
+ if value:
173
+ totals[attribute] += round(value / 1000 * (5/60), 2)
169
174
  return totals
170
175
 
171
176
  def set_battery_state(self, unit_id: str, battery_state) -> bool:
@@ -189,14 +194,14 @@ class PowerVault:
189
194
 
190
195
  state_override_response = self._read_response(
191
196
  self._session.post(url, json=payload), url)
192
-
197
+
193
198
  _LOGGER.debug("State Override: %s", state_override_response)
194
199
 
195
200
  if (state_override_response is not None) and ("stateOverrides" in state_override_response) and "message" in state_override_response and state_override_response["message"] == "success":
196
201
  return True
197
202
  else:
198
203
  return False
199
-
204
+
200
205
 
201
206
  def get_battery_state(self, unit_id: str) -> any:
202
207
  """Query the schedule and overrides to determine the current battery state."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: powervaultpy
3
- Version: 0.0.8
3
+ Version: 1.0.0
4
4
  Summary: An integration to control the Powervault battery
5
5
  Author-email: Adam McDonagh <adam@elitemonkey.net>
6
6
  License: GPLv3
@@ -13,4 +13,13 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
13
13
  Classifier: Operating System :: POSIX
14
14
  Requires-Python: >=3.9
15
15
  Description-Content-Type: text/markdown
16
+ Requires-Dist: requests>=2.28
17
+ Requires-Dist: pytz
16
18
  Provides-Extra: dev
19
+ Requires-Dist: black>=23.1.0; extra == "dev"
20
+ Requires-Dist: isort; extra == "dev"
21
+ Requires-Dist: pytest; extra == "dev"
22
+ Requires-Dist: pytest-env; extra == "dev"
23
+ Requires-Dist: pytest-asyncio; extra == "dev"
24
+ Requires-Dist: bumpver; extra == "dev"
25
+ Requires-Dist: pre-commit; extra == "dev"
File without changes