Welcome to solmate-sdk’s documentation!

Examples

For all examples please install solmate_sdk pypi package with:

pip install solmate_sdk

Sol2Log

Log SolMate live values every 10 seconds on your terminal:

from time import sleep
import solmate_sdk

client = solmate_sdk.SolMateAPIClient("test1")
client.quickstart()
while True:
   print(f"Solmate {client.serialnum}: {client.get_live_values()}")
   sleep(10)

Sol2Csv

Log SolMate live values every 10 seconds in CSV format on your terminal:

from time import sleep
import solmate_sdk

SEPERATOR=';'

client = solmate_sdk.SolMateAPIClient("test1")
client.quickstart()

vals = client.get_live_values()
keys = vals.keys()
print("serial_number", end=SEPERATOR)
for k in vals.keys():
   print(k, end=SEPERATOR)
print()
while True:
   vals = client.get_live_values()
   print(client.serialnum, end=SEPERATOR)
   for k in keys:
      if k in vals:
            print(vals[k], end=SEPERATOR)
      else:
            print(" ", end=SEPERATOR)
   print()
   sleep(10)

Sol2CsvFile

Write SolMate live values every 10 seconds in CSV format into a CSV file:

from time import sleep
import solmate_sdk
import csv

client = solmate_sdk.SolMateAPIClient("test1")
client.quickstart()
vals = client.get_live_values()
keys = vals.keys()
with open(f'{client.serialnum}.csv', 'w') as csvfile:
   writer = csv.DictWriter(csvfile, fieldnames = keys)
   writer.writeheader()
   writer.writerow(vals)
while True:
   with open(f'{client.serialnum}.csv', 'a') as csvfile:
      writer = csv.DictWriter(csvfile, fieldnames = keys)
      writer.writerow(client.get_live_values())
   sleep(10)

Sol2MQTT

Please install solmate_sdk and paho-mqtt pypi packages with:

pip install solmate_sdk paho-mqtt

Publish SolMate PV Power every 10 seconds on the mqtt broker mqtt.eclipseprojects.io:1883 on the topic eet/solmate/test1/pv_power

import solmate_sdk
import paho.mqtt.client as mqtt
from time import sleep
import json

client = solmate_sdk.SolMateAPIClient("test1")
client.quickstart()

mqttClient = mqtt.Client()
mqttClient.connect("mqtt.eclipseprojects.io", 1883, 60)
while True:
   print(".", end="", flush=True)
   try:
      live_values = client.get_live_values()
      online = client.check_online()
      for property_name in live_values.keys():
            if property_name == 'pv_power':
               mqttClient.publish(f"eet/solmate/{client.serialnum}/{property_name}", live_values[property_name], 1)
   except Exception as exc:
      print(exc)
   sleep(10)

Indices and tables