from solaxx3.rs485 import SolaxX3 from influxdb_client import InfluxDBClient, Point, WritePrecision from influxdb_client.client.write_api import SYNCHRONOUS token = "Wt0uDqp1gLr7Qe6qoUAohD8ciBva0kCRajHEFtRGDhSY5-TI2ASPJmqlQTUrcK-61rUAVedwiiLu5Iy-G41ByQ==" org = "openhab" bucket = "openhab" client = InfluxDBClient(url="http://172.21.0.10:8086", token=token) from openhab import openHAB base_url = 'http://192.168.178.51:8080/rest' openhab = openHAB(base_url) items = openhab.fetch_all_items() solax_items=[ "power_dc1", "power_dc2", "battery_capacity", "radiator_temperature", "grid_power", "grid_voltage", "grid_current", "pv_voltage_1", "pv_voltage_2", "pv_current_1", "pv_current_2", "consumption_energy_today", "feed_in_power", "energy_to_grid_total", "feed_in_energy_today", "consumption_energy_today", "solar_energy_today", "battery_power_charge1", "temperature_battery", "output_energy_charge_today", "grid_current_r", "grid_current_s", "grid_current_t", "grid_power_r", "grid_power_s", "grid_power_t", "grid_voltage_r", "grid_voltage_s", "grid_voltage_t" ] openhab_items=[ "Solax_PowerDC1", "Solax_PowerDC2", "Solax_BatterySOC", "Solax_TempRadiator", "Solax_ACPower", "Solax_NetworkVoltage", "Solax_OutputCurrent", "Solax_PV1Voltage", "Solax_PV2Voltage", "Solax_PV1Current", "Solax_PV2Current", "Solax_ConsumeFromGridToday", "Solax_FeedInPower", "Solax_FeedInTotal", "Solax_FeedinEnergyToday", "Solax_HouseConsumption", "Solax_DailyYield", "Solax_BatteryPowerCharge", "Solax_BatteryTemp", "Solax_BatteryOutputEnergyToday", "Solax_GridCurrent_1", "Solax_GridCurrent_2", "Solax_GridCurrent_3", "Solax_GridPower_1", "Solax_GridPower_2", "Solax_GridPower_3", "Solax_GridVoltage_1", "Solax_GridVoltage_2", "Solax_GridVoltage_3" ] # adjust the serial port and baud rate as necessary s = SolaxX3(port="/dev/ttySOLAX", baudrate=19200) data =[] if s.connect(): s.read_all_registers() available_stats = s.list_register_names() # for stat in available_stats: # print(stat) battery_capacity = s.read("battery_capacity")[0] feed_in_today = s.read("feed_in_energy_today")[0] consumtion_today = s.read("consumption_energy_today")[0] battery_charging = s.read("battery_power_charge1")[0] grid_voltage_r = s.read("grid_voltage_r")[0] grid_voltage_s = s.read("grid_voltage_s")[0] grid_voltage_t = s.read("grid_voltage_t")[0] run_mode = s.read("run_mode")[0] time_count_down = s.read("time_count_down")[0] inverter_ac_power = s.read("grid_power")[0] etoday_togrid = s.read("energy_to_grid_today")[0] solar_energy_today = s.read("solar_energy_today")[0] echarge_today = s.read("echarge_today")[0] energy_from_grid = s.read("energy_from_grid_meter")[0] energy_to_grid = s.read("energy_to_grid_meter")[0] power_to_ev = s.read("power_to_ev")[0] feed_in_power = s.read("feed_in_power")[0] output_energy_charge = s.read("output_energy_charge")[0] output_energy_today = s.read("output_energy_charge_today")[0] input_energy_today = s.read("input_energy_charge_today")[0] power_dc1 = s.read("power_dc1")[0] power_dc2 = s.read("power_dc2")[0] total_power = power_dc1 + power_dc2 #battery_temperature = s.read("temperature_battery") #print(f"\n\nBattery temperature: {s.read('temperature_battery')}") # for i, item in enumerate(solax_items): # print (item + " " + str(s.read(item)[0]) + str(s.read(item)[1])+ " " + openhab_items[i]) for i, item in enumerate(solax_items): try: act_item=items.get(openhab_items[i]) act_item.state=float(s.read(item)[0]) data += [openhab_items[i]+" value="+str(s.read(item)[0])] except: print("error in" + openhab_items[i] + " " + item ) act_item=items.get("Solax_eToGridToday") act_item.state=float(energy_to_grid) act_item=items.get("Solax_feed_in_today") act_item.state=float(feed_in_today) data += ["Solax_SUM_DC"+" value="+str(total_power)] data += ["Solax_eToGridToday"+" value="+str(etoday_togrid)] data += ["Solax_feed_in_today"+" value="+str(feed_in_today)] data += ["Solax_runMode"+" value="+str(run_mode)] data += ["Solax_time_count_down"+" value="+str(time_count_down)] write_api = client.write_api(write_options=SYNCHRONOUS) write_api.write(bucket, org, data) else: print("Cannot connect to the Modbus Server/Slave") exit()