Skip to main content

Samil Power inverter tool

Project description

Samil Power inverter tool


Get model and status data from Samil Power inverters over the network.

If you just need uploading, you can also try the old version.

Supported inverter series

  • SolarRiver TL
  • SolarRiver TL-D
  • SolarLake TL

If you have a SolarLake TL-PM series inverter, check out this fork! -> semonet/solar


  • View inverter data
  • Upload to
  • Publish to MQTT broker

The following features are not implemented but can be easily implemented upon request:

  • Filter inverter based on IP or serial number
  • Support for multiple systems


  • Python 3
  • Inverter needs to be in the same network


Ubuntu/Debian/Raspberry Pi
$ sudo apt install python3-pip
$ pip3 install --user samil

After installing, invoke samil --help for usage info. If the samil command can't be found, first try to relogin. If that doesn't help you need to change the PATH variable with the following command and relogin to apply the change.

$ echo 'PATH="$HOME/.local/bin:$PATH"' >> ~/.profile
$ pip install samil



The command samil monitor will search for an inverter in the network and print model and status info. It will connect to the first inverter it finds and print status data every 5 seconds. See samil monitor --help for additional options.


The command samil mqtt connects to one or more inverters and sends status messages to an MQTT broker continuously. These messages include inverter data like input power, output power, energy and temperature.

Example: samil mqtt -h -p 1883 --username user --password pw --inverters 2 --interval 10. This command connects to the MQTT broker at address, and authenticates with the given username user and password pw. It will connect to 2 inverters in the network and send an MQTT message continuously every 10 seconds.

For full usage info, run samil mqtt --help.

To run this command at startup, see below. uploading

See samil pvoutput --help for usage info.

Fetch historical data


Run command at boot

Follow the instructions here to run the MQTT or PVOutput command automatically at startup.

The instructions are based on this post and tested on Raspberry Pi OS Lite version May 2020.

Create a new service:

$ sudo systemctl edit --force --full samil.service

In the empty file that opened, insert the following statements, adjust as necessary, save and close.


# Adjust the command to your needs! Keep the path as is unless you installed to somewhere else.
ExecStart=/home/pi/.local/bin/samil mqtt --host

# Adjust if you have a different user account

# Automatically restart on crashes after 30 seconds

Environment="PYTHONUNBUFFERED=1"  # Leave as is


Enable and start the service:

$ sudo systemctl enable --now samil.service

Check if the service has successfully started:

$ sudo systemctl status samil.service


If you want to stop the script, run:

$ sudo systemctl stop samil.service

If you want to disable the script from starting on boot:

$ sudo systemctl disable samil.service

Background info

The protocol used by these inverters is described here.

The following units are used for the status values:

  • Voltage in volts
  • Current in amperes
  • Energy in kilowatt hours
  • Power in watts
  • Temperature in degrees Celcius
  • Operating time in hours

This project was originally a fork of zombiekipling/solriv but is now completely rewritten to implement new requirements.

As a library

You can use this project as a library. For documentation you will need to read through the source code. To get started I recommend to read the monitor function in samil.cli.

Development info

Development installation (usually in a virtual environment):

pip install -e .
pip install -r dev-requirements.txt

Lint code: flake8

Run testcases: python -m unittest



Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

samil-2.1.0.tar.gz (17.4 kB view hashes)

Uploaded source

Built Distribution

samil-2.1.0-py3-none-any.whl (17.4 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page