Skip to content

Commit

Permalink
Add helpers to load in fake bhyve data
Browse files Browse the repository at this point in the history
  • Loading branch information
sebr committed Nov 9, 2021
1 parent 87bb3b6 commit 35fc6cf
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 7 deletions.
81 changes: 74 additions & 7 deletions custom_components/bhyve/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from .const import (
CONF_ATTRIBUTION,
CONF_CONF_DIR,
CONF_FAKE_MODE,
CONF_PACKET_DUMP,
DATA_BHYVE,
DOMAIN,
Expand All @@ -43,6 +44,7 @@
DATA_CONFIG = "config"

DEFAULT_PACKET_DUMP = False
DEFAULT_FAKE_MODE = False
DEFAULT_CONF_DIR = ""

CONFIG_SCHEMA = vol.Schema(
Expand All @@ -53,18 +55,59 @@
vol.Required(CONF_PASSWORD): cv.string,
vol.Optional(CONF_PACKET_DUMP, default=DEFAULT_PACKET_DUMP): cv.boolean,
vol.Optional(CONF_CONF_DIR, default=DEFAULT_CONF_DIR): cv.string,
# vol.Optional(CONF_FAKE_MODE, default=DEFAULT_FAKE_MODE): cv.boolean,
}
)
},
extra=vol.ALLOW_EXTRA,
)


class MockClient(Client):
def __init__(
self,
username: str,
password: str,
mock_devices,
mock_programs,
loop,
session,
async_callback,
) -> None:
super().__init__(
username,
password,
loop=loop,
session=session,
async_callback=async_callback,
)

self._devices = mock_devices
self._timer_programs = mock_programs

async def _refresh_devices(self, force_update=False):
pass

async def _refresh_timer_programs(self, force_update=False):
pass

@property
async def devices(self):
"""Get all devices."""
return self._devices

@property
async def timer_programs(self):
"""Get timer programs."""
return self._timer_programs


async def async_setup(hass, config):
"""Set up the BHyve component."""

conf = config[DOMAIN]
packet_dump = conf.get(CONF_PACKET_DUMP)
fake_mode = conf.get(CONF_FAKE_MODE)
conf_dir = conf.get(CONF_CONF_DIR)

if conf_dir == "":
Expand Down Expand Up @@ -106,15 +149,39 @@ async def async_update_callback(data):
session = aiohttp_client.async_get_clientsession(hass)

try:
bhyve = Client(
conf[CONF_USERNAME],
conf[CONF_PASSWORD],
loop=hass.loop,
session=session,
async_callback=async_update_callback,
)
if fake_mode:
fake_devices_file = conf_dir + "/" + "devices.json"
fake_programs_file = conf_dir + "/" + "programs.json"

_LOGGER.info("Loading devices {}".format(fake_devices_file))

with open(fake_devices_file) as fake_devices:
mock_devices = json.load(fake_devices)

_LOGGER.info("Loading programs {}".format(fake_programs_file))
with open(fake_programs_file) as fake_programs:
mock_programs = json.load(fake_programs)

bhyve = MockClient(
conf[CONF_USERNAME],
conf[CONF_PASSWORD],
mock_devices,
mock_programs,
loop=hass.loop,
session=session,
async_callback=async_update_callback,
)
else:
bhyve = Client(
conf[CONF_USERNAME],
conf[CONF_PASSWORD],
loop=hass.loop,
session=session,
async_callback=async_update_callback,
)

await bhyve.login()

devices = [anonymize(device) for device in await bhyve.devices]
programs = await bhyve.timer_programs

Expand Down
1 change: 1 addition & 0 deletions custom_components/bhyve/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

CONF_ATTRIBUTION = "Data provided by api.orbitbhyve.com"
CONF_CONF_DIR = "conf_dir"
CONF_FAKE_MODE = "fake_mode"
CONF_PACKET_DUMP = "packet_dump"

DEVICE_SPRINKLER = "sprinkler_timer"
Expand Down

0 comments on commit 35fc6cf

Please sign in to comment.