from solaxx3.rs485 import SolaxX3 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 + " " + str(s.read(stat)[0])) 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 ) else: print("Cannot connect to the Modbus Server/Slave") exit()