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 HeaterData: t_buffT:float = 0 t_buffM:float = 0 t_buffB:float = 0 t_heatVL:float = 0 t_heatRL:float = 0 t_gasVLu:float = 0 t_gasVLo:float = 0 t_gasRL:float = 0 t_fbVL:float = 0 t_fbRL:float = 0 t_triac:float = 0 p_heat:float = 0 error:int = 0 mode:str = "" ret = HeaterData() async def gatherData() -> HeaterData: #print("get charger status..."); timeout = aiohttp.ClientTimeout(total=3) try: async with aiohttp.ClientSession() as session: async with session.get('http://192.168.179.169/data',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.t_buffT = state["PufferO"] ret.t_buffM = state["PufferM"] ret.t_buffB = state["PufferU"] ret.t_heatVL = state["HeaterVL"] ret.t_heatRL = state["HeaterRL"] ret.t_gasVLu = state["ThermeVLu"] ret.t_gasVLo = state["ThermeVLo"] ret.t_gasRL = state["ThermeRL"] ret.t_triac = state["Triac"] ret.t_fbVL = state["fbVL"] ret.t_fbRL = state["fbRL"] ret.p_heat = state["heatPower"] ret.mode = state["mode"] except: if(ret.error > 5): ret.p_heat = 0 _LOGGER.warning("heater data could not be fetched") else: ret.error += 1 return ret #async def main(): # await gatherNeededStatus() #loop = asyncio.get_event_loop() #loop.run_until_complete(main()) """ { "inverters":[ { "serial":"116491626890", "name":"Terrassendach", "order":0, "data_age":1, "poll_enabled":true, "reachable":true, "producing":true, "limit_relative":100, "limit_absolute":1600, "AC":{ "0":{ "Power":{ "v":74.09999847, "u":"W", "d":1 }, "Voltage":{ "v":235.3000031, "u":"V", "d":1 }, "Current":{ "v":0.310000002, "u":"A", "d":2 }, "Power DC":{ "v":77.80000305, "u":"W", "d":1 }, "YieldDay":{ "v":179, "u":"Wh", "d":0 }, "YieldTotal":{ "v":8.732000351, "u":"kWh", "d":3 }, "Frequency":{ "v":50.00999832, "u":"Hz", "d":2 }, "PowerFactor":{ "v":1, "u":"", "d":3 }, "ReactivePower":{ "v":0, "u":"var", "d":1 }, "Efficiency":{ "v":95.24420929, "u":"%", "d":3 } } }, "DC":{ "0":{ "name":{ "u":"" }, "Power":{ "v":12.80000019, "u":"W", "d":1 }, "Voltage":{ "v":21.20000076, "u":"V", "d":1 }, "Current":{ "v":0.610000014, "u":"A", "d":2 }, "YieldDay":{ "v":31, "u":"Wh", "d":0 }, "YieldTotal":{ "v":1.710000038, "u":"kWh", "d":3 } }, "1":{ "name":{ "u":"" }, "Power":{ "v":26.60000038, "u":"W", "d":1 }, "Voltage":{ "v":43.20000076, "u":"V", "d":1 }, "Current":{ "v":0.610000014, "u":"A", "d":2 }, "YieldDay":{ "v":62, "u":"Wh", "d":0 }, "YieldTotal":{ "v":2.496000051, "u":"kWh", "d":3 } }, "2":{ "name":{ "u":"" }, "Power":{ "v":12.5, "u":"W", "d":1 }, "Voltage":{ "v":21.20000076, "u":"V", "d":1 }, "Current":{ "v":0.589999974, "u":"A", "d":2 }, "YieldDay":{ "v":26, "u":"Wh", "d":0 }, "YieldTotal":{ "v":1.179999948, "u":"kWh", "d":3 } }, "3":{ "name":{ "u":"" }, "Power":{ "v":25.89999962, "u":"W", "d":1 }, "Voltage":{ "v":43, "u":"V", "d":1 }, "Current":{ "v":0.600000024, "u":"A", "d":2 }, "YieldDay":{ "v":60, "u":"Wh", "d":0 }, "YieldTotal":{ "v":3.345999956, "u":"kWh", "d":3 } } }, "INV":{ "0":{ "Temperature":{ "v":12.5, "u":"°C", "d":1 } } }, "events":1 } ], "total":{ "Power":{ "v":74.09999847, "u":"W", "d":1 }, "YieldDay":{ "v":179, "u":"Wh", "d":0 }, "YieldTotal":{ "v":8.732000351, "u":"kWh", "d":3 } }, "hints":{ "time_sync":false, "radio_problem":false, "default_password":true } }"""