{"id":24400,"library":"pysolarmanv5","title":"PySolarmanV5","description":"A Python library for interacting with Solarman (IGEN-Tech) v5 based Solar Data Loggers. Version 3.0.6, requires Python >=3.8. Active development with breaking changes in v2-to-v3 transition.","status":"active","version":"3.0.6","language":"python","source_language":"en","source_url":"https://github.com/jmccrohan/pysolarmanv5","tags":["solar","inverter","modbus","solarman","data-logger"],"install":[{"cmd":"pip install pysolarmanv5","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Modbus communication","package":"umodbus","optional":false},{"reason":"MQTT support (optional)","package":"paho-mqtt","optional":true}],"imports":[{"wrong":"from pysolarmanv5 import SolarmanV5","symbol":"PySolarmanV5","correct":"from pysolarmanv5 import PySolarmanV5"},{"symbol":"PySolarmanV5Async","correct":"from pysolarmanv5 import PySolarmanV5Async"},{"symbol":"NoSocketAvailableError","correct":"from pysolarmanv5 import NoSocketAvailableError"}],"quickstart":{"code":"from pysolarmanv5 import SolarmanV5\nimport os\n\ninverter = SolarmanV5(\n    host=os.environ.get('INVERTER_HOST', '192.168.1.100'),\n    serial=int(os.environ.get('INVERTER_SERIAL', '123456789')),\n    port=8899,\n    mb_slave_id=1,\n    verbose=False\n)\nprint(inverter.get_sensors())\ndata = inverter.read_holding_registers(register_addr=0, quantity=10)\nprint(data)\ninverter.disconnect()","lang":"python","description":"Connect to a Solarman v5 logger, read sensors and registers."},"warnings":[{"fix":"Replace inverter_address with host, inverter_port with port.","message":"v2 to v3: The constructor no longer accepts 'inverter_address' or 'inverter_port' parameters; use 'host' and 'port'.","severity":"breaking","affected_versions":"<3.0.0"},{"fix":"Adapt code to iterate over dict keys instead of object attributes.","message":"v2 to v3: 'get_sensors()' returns list of dicts, not list of InverterData objects.","severity":"breaking","affected_versions":"<3.0.0"},{"fix":"Cast to int: serial=int(os.environ.get('SERIAL'))","message":"Inverter serial number must be passed as int, not str. Passing a string leads to TypeError.","severity":"gotcha","affected_versions":"all"},{"fix":"Explicitly set port=4196 if connection fails.","message":"Default port is 8899 for TCP, but some loggers use 4196. Check your logger's manual.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'3.0.6':18 '3.8':21 'activ':22 'base':13 'break':25 'chang':26 'data':15,38 'data-logg':37 'develop':23 'igen':10 'igen-tech':9 'interact':6 'invert':34 'librari':4 'logger':16,39 'modbus':35 'pysolarmanv5':1 'python':3,20 'requir':19 'solar':14,33 'solarman':8,36 'tech':11 'transit':32 'v2':29 'v2-to-v3':28 'v3':31 'v5':12 'version':17","created_at":"2026-05-01T08:12:53.296834+00:00","updated_at":"2026-05-01T08:12:53.296834+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"3.0.6","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/jmccrohan/pysolarmanv5","docs":"https://pysolarmanv5.readthedocs.io/","changelog":"https://pysolarmanv5.readthedocs.io/en/latest/changelog.html","pypi":"https://pypi.org/project/pysolarmanv5/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["communication","data","http-networking","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-08-02","install_tag":null}}