import json import asyncio import aiohttp import logging import math from typing import List from dataclasses import dataclass from dataclasses import field _LOGGER = logging.getLogger(__name__) @dataclass class PowerUGData: P_L1:float = 0 P_L2:float = 0 P_L3:float = 0 error:int = 0 ret = PowerUGData() async def gatherData() -> PowerUGData: #print("get charger status..."); timeout = aiohttp.ClientTimeout(total=3) try: async with aiohttp.ClientSession() as session: async with session.get('http://192.168.179.161/rpc/EM.GetStatus?id=0',timeout=timeout) as response: #?filter=psm,fup,amp,frc,nrg,lmo,car if response.status == 200: html = await response.text() #logging.warning(html) state = json.loads(html) ret.error = 0 ret.P_L1 = state["a_act_power"] ret.P_L2 = state["b_act_power"] ret.P_L3 = state["c_act_power"] except: if(ret.error > 5): ret.P_L1 = 0 ret.P_L2 = 0 ret.P_L3 = 0 _LOGGER.warning("Power UG could not be fetched") else: ret.error += 1 return ret