def setUp(self): # Create an arbitrary subclass of TCP Server as the server to be # started # Here, it is an Simple HTTP file serving server handler = FroniusRequestHandler max_retries = 10 r = 0 while not self.server: try: # Connect to any open port self.server = FroniusServer( (ADDRESS, 0), handler, self.api_version.value ) except OSError: if r < max_retries: r += 1 else: raise time.sleep(1) self.server_control = Server(self.server) self.port = self.server_control.get_port() self.url = "http://{}:{}".format(ADDRESS, self.port) # Start test server before running any tests self.server_control.start_server() # set up a fronius client and aiohttp session self.session = aiohttp.ClientSession() self.fronius = pyfronius.Fronius(self.session, self.url, self.api_version)
def test_wrong_server(self): # This request handler ignores queries and should return the error page handler = SimpleHTTPRequestHandler max_retries = 10 r = 0 while not self.server: try: # Connect to any open port self.server = FroniusServer((ADDRESS, 0), handler, self.api_version.value) except OSError: if r < max_retries: r += 1 else: raise time.sleep(1) self.server_control = Server(self.server) self.port = self.server_control.get_port() self.url = "http://{}:{}".format(ADDRESS, self.port) # Start test server before running any tests self.server_control.start_server() # set up a fronius client and aiohttp session self.session = aiohttp.ClientSession() self.fronius = pyfronius.Fronius(self.session, self.url, self.api_version) try: asyncio.get_event_loop().run_until_complete( self.fronius.current_system_inverter_data()) self.fail("No Exception for wrong reply by host") except ValueError: asyncio.get_event_loop().run_until_complete(self.session.close())
def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up of Fronius platform.""" _LOGGER.debug("Running setup") _LOGGER.debug(config) import pyfronius session = async_get_clientsession(hass) fronius = pyfronius.Fronius(session, config[CONF_HOST]) name = "fronius_{}_{}".format(config[CONF_TYPE], config[CONF_HOST]) if CONF_DEVICE in config.keys(): device = config[CONF_DEVICE] name = name + "_{}".format(device) else: device = DEFAULT_DEVICE sensor = FroniusSensor(fronius, name, config[CONF_TYPE], config[CONF_SCOPE], device) async_add_devices([sensor]) @asyncio.coroutine def async_fronius(event): """Update all the fronius sensors.""" try: yield from sensor.async_update() except: _LOGGER.error("yield failed") interval = config.get(CONF_SCAN_INTERVAL) or timedelta(seconds=10) async_track_time_interval(hass, async_fronius, interval)
async def main(loop, host): timeout = aiohttp.ClientTimeout(total=10) async with aiohttp.ClientSession(loop=loop, timeout=timeout) as session: fronius = pyfronius.Fronius(session, host) res = await fronius.fetch(loop=loop) for r in res: print(r)
def test_no_server(self): # set up a fronius client and aiohttp session self.session = aiohttp.ClientSession() self.fronius = pyfronius.Fronius(self.session, self.url) try: asyncio.get_event_loop().run_until_complete( self.fronius.current_system_meter_data()) self.fail("No Exception for failed connection to fronius") except ConnectionError: asyncio.get_event_loop().run_until_complete(self.session.close())
async def main(loop, host): async with aiohttp.ClientSession(loop=loop) as session: fronius = pyfronius.Fronius(session, host) res = await fronius.current_power_flow() print(res) res = await fronius.current_system_meter_data() print(res) res = await fronius.current_meter_data() print(res) res = await fronius.current_storage_data() print(res) res = await fronius.current_inverter_data() print(res) res = await fronius.current_system_inverter_data() print(res)
def main(loop, host): session = aiohttp.ClientSession(loop=loop) fronius = pyfronius.Fronius(session, host) while loop.jk_run: res = yield from fronius.current_power_flow() _LOGGER.debug(res) res = yield from fronius.current_system_meter_data() _LOGGER.debug(res) res = yield from fronius.current_meter_data() _LOGGER.debug(res) res = yield from fronius.current_storage_data() _LOGGER.debug(res) res = yield from fronius.current_inverter_data() _LOGGER.debug(res) res = yield from fronius.current_system_inverter_data() _LOGGER.debug(res) yield from asyncio.sleep(5) yield from session.close()