Welcome to PySMA’s documentation!
Getting Started
Install
PySMA is available on pypi and can be installed using pip.
pip install pysma
Create SMA instance
The SMA
class requires a ClientSession object, an URL and a password.
The default user group is “user”, but can be changed by passing it as the fourth group
parameter.
session = aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False))
url = "https://device-hostname"
password = "MyPassword!"
sma = pysma.SMA(session, url, password)
Create Sensors
To retrieve values from the device you need a Sensors
object. The easiest way is to generate one using the get_sensors()
method. This will query the device to figure out the device class and returns a Sensors
object containing specific Sensor
objects for your device.
sma_sensors = sma.get_sensors()
Alternatively this can be manually created by initializing an empty Sensors
object and adding new Sensor
objects to it using the add()
method.
Predefined sensors can be found in pysma.definitions
. See also definitions.py at Github.
sma_sensors = Sensors()
my_sensor = Sensor("6300_12345678_0", "dummy_sensor") # This key won't work!
sma_sensors.add(my_sensor)
sma_sensors.add(pysma.definitions.pv_power_a)
Read Sensor values
Now you have a Sensors
object, you can pass this to read()
to read the values from the device. The retrieved values are stored in the respective Sensor
.
sma.read(sma_sensors)
for sma_sensor in sma_sensors:
print(f"{sma_sensor.name}: {sma_sensor.value}")
Complete Example
A full example can be found in the Github repository
PySMA Main Class
SMA WebConnect library for Python.
See: http://www.sma.de/en/products/monitoring-control/webconnect.html
Source: http://www.github.com/kellerza/pysma
- class pysma.SMA(session: aiohttp.client.ClientSession, url: str, password: Optional[str] = None, group: str = 'user', uid: Optional[str] = None)
Bases:
object
Class to connect to the SMA webconnect module and read parameters.
Init SMA connection.
- Parameters
session (ClientSession) – aiohttp client session
url (str) – Url or IP address of device
password (str, optional) – Password to use during login. Defaults to None.
group (str, optional) – Username to use during login. Defaults to “user”.
uid (str, optional) – uid used for data extraction. Defaults to None.
- Raises
KeyError – User was not in USERS
- async close_session() None
Close the session login.
- async device_info() dict
Read device info and return the results.
- Returns
dict containing serial, name, type, manufacturer and sw_version
- Return type
dict
- async get_devclass(result_body: Optional[dict] = None) Optional[str]
Get the device class.
- Parameters
result_body (dict, optional) – result body to extract device class from. Defaults to None.
- Raises
KeyError – More than 1 device class key is not supported
- Returns
The device class identifier, or None if no identifier was found
- Return type
str
- async get_sensors() pysma.sensor.Sensors
Get the sensors based on the device class.
- Returns
Sensors object containing Sensor objects
- Return type
- async new_session() bool
Establish a new session.
- Raises
SmaAuthenticationException – Authentication failed
- Returns
authentication successful
- Return type
bool
- async read(sensors: pysma.sensor.Sensors) bool
Read a set of keys.
- Parameters
sensors (Sensors) – Sensors object containing Sensor objects to read
- Returns
reading was successful
- Return type
bool
- async read_dash_logger() dict
Read the dash loggers.
- Returns
Dictionary containing loggers returned by device.
- Return type
dict
- async read_logger(log_id: int, start: int, end: int) list
Read a logging key and return the results.
- Parameters
log_id (int) – The ID of the log to read. totWhOut5min: 28672 totWhOutDaily: 28704 GridMsTotWhOutDaily: 28752 GridMsTotWhInDaily: 28768 ObjLogBatCha: 28816 totWhIn5min: 28736 totWhInDaily: 28768 ObjLogBatChrg: 29344 ObjLogBatDsch: 29360
start (int) – Start timestamp in seconds.
end (int) – End timestamp in seconds.
- Returns
The log entries returned by the device
- Return type
list
Submodules
pysma.const module
Constants for SMA WebConnect library for Python.
pysma.definitions module
Sensor definitions for SMA WebConnect library for Python.
- pysma.definitions.battery_capacity_a = Sensor(key='6100_00499100', name='battery_capacity_a', unit='%', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Capacity battery A
- pysma.definitions.battery_capacity_b = Sensor(key='6100_00499100', name='battery_capacity_b', unit='%', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Capacity battery B
- pysma.definitions.battery_capacity_c = Sensor(key='6100_00499100', name='battery_capacity_c', unit='%', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Capacity battery C
- pysma.definitions.battery_capacity_total = Sensor(key='6100_00696E00', name='battery_capacity_total', unit='%', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Total battery capacity
- pysma.definitions.battery_charge_a = Sensor(key='6400_00499500', name='battery_charge_a', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Charge battery A
- pysma.definitions.battery_charge_b = Sensor(key='6400_00499500', name='battery_charge_b', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Charge battery B
- pysma.definitions.battery_charge_c = Sensor(key='6400_00499500', name='battery_charge_c', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Charge battery C
- pysma.definitions.battery_charge_total = Sensor(key='6400_00496700', name='battery_charge_total', unit='kWh', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total charge
- pysma.definitions.battery_charging_voltage_a = Sensor(key='6102_00493500', name='battery_charging_voltage_a', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Charging voltage battery A
- pysma.definitions.battery_charging_voltage_b = Sensor(key='6102_00493500', name='battery_charging_voltage_b', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Charging voltage battery B
- pysma.definitions.battery_charging_voltage_c = Sensor(key='6102_00493500', name='battery_charging_voltage_c', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Charging voltage battery C
- pysma.definitions.battery_current_a = Sensor(key='6100_40495D00', name='battery_current_a', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current battery A
- pysma.definitions.battery_current_b = Sensor(key='6100_40495D00', name='battery_current_b', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current battery B
- pysma.definitions.battery_current_c = Sensor(key='6100_40495D00', name='battery_current_c', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current battery C
- pysma.definitions.battery_discharge_a = Sensor(key='6400_00499600', name='battery_discharge_a', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Discharge battery A
- pysma.definitions.battery_discharge_b = Sensor(key='6400_00499600', name='battery_discharge_b', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Discharge battery B
- pysma.definitions.battery_discharge_c = Sensor(key='6400_00499600', name='battery_discharge_c', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Discharge battery C
- pysma.definitions.battery_discharge_total = Sensor(key='6400_00496800', name='battery_discharge_total', unit='kWh', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total discharge
- pysma.definitions.battery_power_charge_a = Sensor(key='6100_00499300', name='battery_power_charge_a', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Charging power battery A
- pysma.definitions.battery_power_charge_b = Sensor(key='6100_00499300', name='battery_power_charge_b', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Charging power battery B
- pysma.definitions.battery_power_charge_c = Sensor(key='6100_00499300', name='battery_power_charge_c', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Charging power battery C
- pysma.definitions.battery_power_charge_total = Sensor(key='6100_00496900', name='battery_power_charge_total', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Total charging power
- pysma.definitions.battery_power_discharge_a = Sensor(key='6100_00499400', name='battery_power_discharge_a', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Disharging power battery A
- pysma.definitions.battery_power_discharge_b = Sensor(key='6100_00499400', name='battery_power_discharge_b', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Disharging power battery B
- pysma.definitions.battery_power_discharge_c = Sensor(key='6100_00499400', name='battery_power_discharge_c', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Disharging power battery C
- pysma.definitions.battery_power_discharge_total = Sensor(key='6100_00496A00', name='battery_power_discharge_total', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Total discharging power
- pysma.definitions.battery_soc_a = Sensor(key='6100_00498F00', name='battery_soc_a', unit='%', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
State of charge battery A
- pysma.definitions.battery_soc_b = Sensor(key='6100_00498F00', name='battery_soc_b', unit='%', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
State of charge battery B
- pysma.definitions.battery_soc_c = Sensor(key='6100_00498F00', name='battery_soc_c', unit='%', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
State of charge battery C
- pysma.definitions.battery_soc_total = Sensor(key='6100_00295A00', name='battery_soc_total', unit='%', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Total battery state of charge
- pysma.definitions.battery_status_operating_mode = Sensor(key='6180_08495E00', name='battery_status_operating_mode', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=True, l10n_translate=True, value=None)
Battery status operating mode
- pysma.definitions.battery_temp_a = Sensor(key='6100_40495B00', name='battery_temp_a', unit='°C', factor=10, path=None, enabled=True, l10n_translate=False, value=None)
Temperature battery A
- pysma.definitions.battery_temp_b = Sensor(key='6100_40495B00', name='battery_temp_b', unit='°C', factor=10, path=None, enabled=True, l10n_translate=False, value=None)
Temperature battery B
- pysma.definitions.battery_temp_c = Sensor(key='6100_40495B00', name='battery_temp_c', unit='°C', factor=10, path=None, enabled=True, l10n_translate=False, value=None)
Temperature battery C
- pysma.definitions.battery_voltage_a = Sensor(key='6100_00495C00', name='battery_voltage_a', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage battery A
- pysma.definitions.battery_voltage_b = Sensor(key='6100_00495C00', name='battery_voltage_b', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage battery B
- pysma.definitions.battery_voltage_c = Sensor(key='6100_00495C00', name='battery_voltage_c', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage battery C
- pysma.definitions.current_l1 = Sensor(key='6100_40465300', name='current_l1', unit='A', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Current for phase 1
- pysma.definitions.current_l2 = Sensor(key='6100_40465400', name='current_l2', unit='A', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Current for phase 2
- pysma.definitions.current_l3 = Sensor(key='6100_40465500', name='current_l3', unit='A', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Current for phase 3
- pysma.definitions.current_total = Sensor(key='6100_00664F00', name='current_total', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total Current
- pysma.definitions.daily_yield = Sensor(key='6400_00262200', name='daily_yield', unit='Wh', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
The solar plant’s yield for today
- pysma.definitions.device_manufacturer = Sensor(key='6800_08822B00', name='device_manufacturer', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=True, l10n_translate=True, value=None)
Device manufactorer
- pysma.definitions.device_name = Sensor(key='6800_10821E00', name='device_name', unit='', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Device name
- pysma.definitions.device_sw_version = Sensor(key='6800_00823400', name='device_sw_version', unit='', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Device software version
- pysma.definitions.device_type = Sensor(key='6800_08822000', name='device_type', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=True, l10n_translate=True, value=None)
Device type
- pysma.definitions.energy_meter = Sensor(key='6800_008AA300', name='energy_meter', unit='', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Serial number of energy meter
- pysma.definitions.frequency = Sensor(key='6100_00465700', name='frequency', unit='Hz', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Grid frequency
- pysma.definitions.grid_apparent_power = Sensor(key='6100_40666700', name='grid_apparent_power', unit='VA', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Total Apparent Power
- pysma.definitions.grid_apparent_power_l1 = Sensor(key='6100_40666800', name='grid_apparent_power_l1', unit='VA', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Apparent Power for phase 1
- pysma.definitions.grid_apparent_power_l2 = Sensor(key='6100_40666900', name='grid_apparent_power_l2', unit='VA', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Apparent Power for phase 2
- pysma.definitions.grid_apparent_power_l3 = Sensor(key='6100_40666A00', name='grid_apparent_power_l3', unit='VA', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Apparent Power for phase 3
- pysma.definitions.grid_connection_status = Sensor(key='6180_0846A700', name='grid_connection_status', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=False, l10n_translate=True, value=None)
Grid connection status
- pysma.definitions.grid_power = Sensor(key='6100_40263F00', name='grid_power', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Power supplied to the grid. grid_power = power_l1 + power_l2 + power_l3
- pysma.definitions.grid_power_factor = Sensor(key='6100_00665900', name='grid_power_factor', unit='', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Grid Power factor
- pysma.definitions.grid_power_factor_excitation = Sensor(key='6180_08465A00', name='grid_power_factor_excitation', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=False, l10n_translate=True, value=None)
Grid Power factor excitation
- pysma.definitions.grid_reactive_power = Sensor(key='6100_40265F00', name='grid_reactive_power', unit='var', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Total Reactive Power
- pysma.definitions.grid_reactive_power_l1 = Sensor(key='6100_40666000', name='grid_reactive_power_l1', unit='var', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Reactive Power for phase 1
- pysma.definitions.grid_reactive_power_l2 = Sensor(key='6100_40666100', name='grid_reactive_power_l2', unit='var', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Reactive Power for phase 2
- pysma.definitions.grid_reactive_power_l3 = Sensor(key='6100_40666200', name='grid_reactive_power_l3', unit='var', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Reactive Power for phase 3
- pysma.definitions.grid_relay_status = Sensor(key='6180_08416400', name='grid_relay_status', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=False, l10n_translate=True, value=None)
Grid relay status
- pysma.definitions.insulation_residual_current = Sensor(key='6102_40254E00', name='insulation_residual_current', unit='mA', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Insulation residual current
- pysma.definitions.inverter_condition = Sensor(key='6180_08414C00', name='inverter_condition', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=False, l10n_translate=True, value=None)
General operating status
- pysma.definitions.inverter_power_limit = Sensor(key='6800_00832A00', name='inverter_power_limit', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Power limit of the Inverter
- pysma.definitions.inverter_system_init = Sensor(key='6800_08811F00', name='inverter_system_init', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=False, l10n_translate=True, value=None)
Inverter Condition
- pysma.definitions.metering_active_power_draw_l1 = Sensor(key='6100_0046EB00', name='metering_active_power_draw_l1', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Active Power drawn for phase 1 measured by energy meter
- pysma.definitions.metering_active_power_draw_l2 = Sensor(key='6100_0046EC00', name='metering_active_power_draw_l2', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Active Power drawn for phase 2 measured by energy meter
- pysma.definitions.metering_active_power_draw_l3 = Sensor(key='6100_0046ED00', name='metering_active_power_draw_l3', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Active Power drawn for phase 3 measured by energy meter
- pysma.definitions.metering_active_power_feed_l1 = Sensor(key='6100_0046E800', name='metering_active_power_feed_l1', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Active Power feed-in for phase 1 measured by energy meter
- pysma.definitions.metering_active_power_feed_l2 = Sensor(key='6100_0046E900', name='metering_active_power_feed_l2', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Active Power feed-in for phase 2 measured by energy meter
- pysma.definitions.metering_active_power_feed_l3 = Sensor(key='6100_0046EA00', name='metering_active_power_feed_l3', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Active Power feed-in for phase 3 measured by energy meter
- pysma.definitions.metering_current_consumption = Sensor(key='6100_00543100', name='metering_current_consumption', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Current power consumption measured by energy meter
- pysma.definitions.metering_current_l1 = Sensor(key='6100_40466500', name='metering_current_l1', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current for phase 1 measured by energy meter
- pysma.definitions.metering_current_l2 = Sensor(key='6100_40466600', name='metering_current_l2', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current for phase 2 measured by energy meter
- pysma.definitions.metering_current_l3 = Sensor(key='6100_40466B00', name='metering_current_l3', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current for phase 3 measured by energy meter
- pysma.definitions.metering_frequency = Sensor(key='6100_00468100', name='metering_frequency', unit='Hz', factor=100, path=None, enabled=True, l10n_translate=False, value=None)
Grid frequency measured by energy meter
- pysma.definitions.metering_power_absorbed = Sensor(key='6100_40463700', name='metering_power_absorbed', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Power absorbed fromgrid measured by energy meter
- pysma.definitions.metering_power_supplied = Sensor(key='6100_40463600', name='metering_power_supplied', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Power supplied to grid measured by energy meter
- pysma.definitions.metering_total_absorbed = Sensor(key='6400_00462500', name='metering_total_absorbed', unit='kWh', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total power from the grid measured by energy meter
- pysma.definitions.metering_total_consumption = Sensor(key='6400_00543A00', name='metering_total_consumption', unit='kWh', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Total power consumption measured by energy meter
- pysma.definitions.metering_total_yield = Sensor(key='6400_00462400', name='metering_total_yield', unit='kWh', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total power supplied to the grid measured by energy meter
- pysma.definitions.metering_voltage_l1 = Sensor(key='6100_0046E500', name='metering_voltage_l1', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage for phase 1 measured by energy meter
- pysma.definitions.metering_voltage_l2 = Sensor(key='6100_0046E600', name='metering_voltage_l2', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage for phase 2 measured by energy meter
- pysma.definitions.metering_voltage_l3 = Sensor(key='6100_0046E700', name='metering_voltage_l3', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage for phase 3 measured by energy meter
- pysma.definitions.operating_status_general = Sensor(key='6180_08412800', name='operating_status_general', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=False, l10n_translate=True, value=None)
General operating status
- pysma.definitions.optimizer_current = Sensor(key='6100_40652900', name='optimizer_current', unit='A', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Current supplied by optimizer
- pysma.definitions.optimizer_power = Sensor(key='6100_40652A00', name='optimizer_power', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Power supplied by optimizer
- pysma.definitions.optimizer_serial = Sensor(key='6800_10852600', name='optimizer_serial', unit='', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Serial number of optimizer
- pysma.definitions.optimizer_temp = Sensor(key='6100_40652B00', name='optimizer_temp', unit='°C', factor=10, path=None, enabled=False, l10n_translate=False, value=None)
Temperature of optimizer
- pysma.definitions.optimizer_voltage = Sensor(key='6100_40652800', name='optimizer_voltage', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage supplied by optimizer
- pysma.definitions.power_l1 = Sensor(key='6100_40464000', name='power_l1', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Power for phase 1
- pysma.definitions.power_l2 = Sensor(key='6100_40464100', name='power_l2', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Power for phase 2
- pysma.definitions.power_l3 = Sensor(key='6100_40464200', name='power_l3', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Power for phase 3
- pysma.definitions.pv_current_a = Sensor(key='6380_40452100', name='pv_current_a', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current amperage generated by the solar panels (A side)
- pysma.definitions.pv_current_b = Sensor(key='6380_40452100', name='pv_current_b', unit='A', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Current amperage generated by the solar panels (B side)
- pysma.definitions.pv_current_c = Sensor(key='6380_40452100', name='pv_current_c', unit='A', factor=1000, path=None, enabled=False, l10n_translate=False, value=None)
Current amperage generated by the solar panels (C side)
- pysma.definitions.pv_gen_meter = Sensor(key='6400_0046C300', name='pv_gen_meter', unit='kWh', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total kWh generated to date
- pysma.definitions.pv_power_a = Sensor(key='6380_40251E00', name='pv_power_a', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Current power generated by the solar panels (A side)
- pysma.definitions.pv_power_b = Sensor(key='6380_40251E00', name='pv_power_b', unit='W', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Current power generated by the solar panels (B side)
- pysma.definitions.pv_power_c = Sensor(key='6380_40251E00', name='pv_power_c', unit='W', factor=None, path=None, enabled=False, l10n_translate=False, value=None)
Current power generated by the solar panels (C side)
- pysma.definitions.pv_voltage_a = Sensor(key='6380_40451F00', name='pv_voltage_a', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Current voltage generated by the solar panels (A side)
- pysma.definitions.pv_voltage_b = Sensor(key='6380_40451F00', name='pv_voltage_b', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Current voltage generated by the solar panels (B side)
- pysma.definitions.pv_voltage_c = Sensor(key='6380_40451F00', name='pv_voltage_c', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Current voltage generated by the solar panels (C side)
- pysma.definitions.serial_number = Sensor(key='6800_00A21E00', name='serial_number', unit='', factor=None, path=None, enabled=True, l10n_translate=False, value=None)
Device serial number
- pysma.definitions.status = Sensor(key='6180_08214800', name='status', unit='', factor=None, path=('"{}"[{}].val[0].tag', 'val[0].tag'), enabled=True, l10n_translate=True, value=None)
Status of the device
- pysma.definitions.total_yield = Sensor(key='6400_00260100', name='total_yield', unit='kWh', factor=1000, path=None, enabled=True, l10n_translate=False, value=None)
Total power yield from a solar installation
- pysma.definitions.voltage_l1 = Sensor(key='6100_00464800', name='voltage_l1', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage for phase 1
- pysma.definitions.voltage_l2 = Sensor(key='6100_00464900', name='voltage_l2', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage for phase 2
- pysma.definitions.voltage_l3 = Sensor(key='6100_00464A00', name='voltage_l3', unit='V', factor=100, path=None, enabled=False, l10n_translate=False, value=None)
Voltage for phase 3
pysma.exceptions module
Exceptions for the pysma library.
- exception pysma.exceptions.SmaAuthenticationException
Bases:
pysma.exceptions.SmaException
An attempt to authenticate failed.
- exception pysma.exceptions.SmaConnectionException
Bases:
pysma.exceptions.SmaException
An error occurred in the connection with the device.
- exception pysma.exceptions.SmaException
Bases:
Exception
Base exception of the pysma library.
- exception pysma.exceptions.SmaReadException
Bases:
pysma.exceptions.SmaException
Reading the data did not return an expected result.
pysma.helpers module
Helper functions for the pysma library.
- pysma.helpers.version_int_to_string(version_integer: int) str
Convert a version integer to a readable string.
- Parameters
version_integer (int) – The version integer, as retrieved from the device.
- Returns
The version translated to a readable string.
- Return type
str
pysma.sensor module
Sensor classes for SMA WebConnect library for Python.
- class pysma.sensor.Sensor(key: str, name: str, unit: str = '', factor: Optional[int] = None, path: Optional[Union[list, tuple]] = None, enabled: bool = True, l10n_translate: bool = False)
Bases:
object
pysma sensor.
Method generated by attrs for class Sensor.
- enabled
- extract_value(result_body: dict, l10n: Optional[dict] = None, devclass: str = '1') bool
Extract value from json body.
- Parameters
result_body (dict) – json body retrieved from device
l10n (dict, optional) – Dictionary to translate tags to strings. Defaults to None.
devclass (str, optional) – The device class of the device used to extract the value. Defaults to “1”.
- Returns
Extracting value successful
- Return type
bool
- factor
- key
- key_idx
- l10n_translate
- name
- path
- unit
- value
- class pysma.sensor.Sensors(sensors: Optional[Union[pysma.sensor.Sensor, List[pysma.sensor.Sensor]]] = None)
Bases:
object
SMA Sensors.
Init Sensors.
- Parameters
sensors (Union[Sensor, List[Sensor], None], optional) – One or a list of sensors to add on init. Defaults to None.
- add(sensor: Union[pysma.sensor.Sensor, List[pysma.sensor.Sensor]]) None
Add a sensor, logs warning if it exists.
A copy of sensor, or the sensors in the list, will be added. If the sensor name already exists it will be overwritten. If the sensor key already exists it will not be added.