Skip to content

Commit 12736dd

Browse files
authored
Merge pull request webdjoe#131 from webdjoe/outlet-7a-power
7A Outlet voltage & power response change
2 parents 38bc617 + aa23ac5 commit 12736dd

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ htmlcov/
1313
cov_html/*
1414
cov_html/
1515
test/*
16+
test/
1617
/venv/
1718
.idea/
1819
src/tests/test1.py

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
setup(
1212
name='pyvesync',
13-
version='2.0.1',
13+
version='2.0.2',
1414
description='pyvesync is a library to manage Etekcity\
1515
Devices and Levoit Air Purifier',
1616
long_description=long_description,

src/pyvesync/vesyncoutlet.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -188,15 +188,26 @@ def get_details(self) -> None:
188188
self.device_status = r.get('deviceStatus', self.device_status)
189189
self.details['active_time'] = r.get('activeTime', 0)
190190
self.details['energy'] = r.get('energy', 0)
191-
power = r.get('power', '0:0')
192-
power = round(float(Helpers.calculate_hex(power)), 2)
193-
self.details['power'] = power
194-
voltage = r.get('voltage', '0:0')
195-
voltage = round(float(Helpers.calculate_hex(voltage)), 2)
196-
self.details['voltage'] = voltage
191+
power = r.get('power', '0')
192+
self.details['power'] = self.parse_energy_detail(power)
193+
voltage = r.get('voltage', 0)
194+
self.details['voltage'] = self.parse_energy_detail(voltage)
197195
else:
198196
logger.debug('Unable to get %s details', self.device_name)
199197

198+
@staticmethod
199+
def parse_energy_detail(energy):
200+
"""Parse energy details to be compatible with new and old firmware."""
201+
try:
202+
if isinstance(energy, str) and ':' in energy:
203+
power = round(float(Helpers.calculate_hex(energy)), 2)
204+
else:
205+
power = float(energy)
206+
except ValueError:
207+
logger.debug('Error parsing power response - %s', energy)
208+
power = 0
209+
return power
210+
200211
def get_weekly_energy(self) -> None:
201212
"""Get 7A outlet weekly energy info and buld weekly energy dict."""
202213
r, _ = Helpers.call_api(

0 commit comments

Comments
 (0)