Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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())
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
 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())
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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()