File: getting_started.rst

package info (click to toggle)
pysma 1.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,064 kB
  • sloc: python: 8,325; makefile: 15
file content (72 lines) | stat: -rw-r--r-- 2,389 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Getting Started
===============


Install
*******
PySMA is available on `pypi`_ and can be installed using pip.

.. code-block:: console
   
   pip install pysma

.. _pypi: https://pypi.org/project/pysma/


Create SMA instance
*******************

The :class:`~pysma.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.

.. code-block:: python3

    session = aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False))
    url = "https://device-hostname"
    password = "MyPassword!"
    
    sma = pysma.SMA(session, url, password)

.. _ClientSession: https://docs.aiohttp.org/en/stable/client_reference.html

Create Sensors
**************

To retrieve values from the device you need a :class:`~pysma.sensor.Sensors` object. The easiest way is to generate one using the :meth:`~pysma.SMA.get_sensors` method. This will query the device to figure out the device class and returns a :class:`~pysma.sensor.Sensors` object containing specific :class:`~pysma.sensor.Sensor` objects for your device.


.. code-block:: python3

    sma_sensors = sma.get_sensors()

Alternatively this can be manually created by initializing an empty :class:`~pysma.sensor.Sensors` object and adding new :class:`~pysma.sensor.Sensor` objects to it using the :meth:`~pysma.sensor.Sensors.add` method.
Predefined sensors can be found in :mod:`pysma.definitions`. See also `definitions.py at Github`_.

.. code-block:: python3

    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)

.. _definitions.py at Github: https://github.com/kellerza/pysma/blob/master/pysma/definitions.py

Read Sensor values
******************

Now you have a :class:`~pysma.sensor.Sensors` object, you can pass this to :meth:`~pysma.SMA.read` to read the values from the device. The retrieved values are stored in the respective :class:`~pysma.sensor.Sensor`.

.. code-block:: python3

    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`_

.. _Github repository: https://github.com/kellerza/pysma/blob/master/example.py