2020-01-19 20:10:07 +01:00
|
|
|
|
# SEM6000 Python Library
|
|
|
|
|
|
|
|
|
|
SEM6000 is a energy meter and power switch with Bluetooth 4.0.
|
|
|
|
|
|
|
|
|
|
This library provides a Python module for these devices
|
|
|
|
|
|
|
|
|
|
## Run the example code
|
|
|
|
|
|
2018-08-11 00:39:26 +02:00
|
|
|
|
```
|
|
|
|
|
$ git clone … sem6000
|
|
|
|
|
$ cd sem6000
|
|
|
|
|
$ virtualenv -p python3 python3_venv
|
|
|
|
|
$ . ./python3_venv/bin/activate
|
|
|
|
|
$ pip3 install -r requirements.txt
|
|
|
|
|
$ python3 example.py
|
2020-01-19 20:10:07 +01:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Collectd Plugin
|
|
|
|
|
|
|
|
|
|
You can find a Plugin for [collectd](https://collectd.org) in the `collectd`
|
|
|
|
|
subdirectory.
|
|
|
|
|
|
|
|
|
|
Installation procedure (the target directory may be changed of course):
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
# mkdir -p /usr/local/lib/collectd/python
|
|
|
|
|
# cp collectd/collectd_sem6000.py /usr/local/lib/collectd/python
|
|
|
|
|
# cp sem6000.py /usr/local/lib/collectd/python
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add or adjust the configuration for your collectd’s Python plugin as follows:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<Plugin python>
|
|
|
|
|
ModulePath "/usr/local/share/collectd/python"
|
|
|
|
|
LogTraces true
|
|
|
|
|
Interactive false
|
|
|
|
|
Import "collectd_sem6000"
|
|
|
|
|
|
|
|
|
|
<Module collectd_sem6000>
|
|
|
|
|
Address "12:34:56:78:90:ab"
|
|
|
|
|
SocketName "FirstSocket"
|
2020-01-20 12:08:44 +01:00
|
|
|
|
ReadTimeout 30
|
|
|
|
|
SuspendTime 300
|
2020-01-19 20:10:07 +01:00
|
|
|
|
</Module>
|
|
|
|
|
<Module collectd_sem6000>
|
|
|
|
|
Address "ab:cd:ef:13:37:42"
|
|
|
|
|
SocketName "ASecondSocket"
|
|
|
|
|
</Module>
|
|
|
|
|
# ...
|
|
|
|
|
</Plugin>
|
|
|
|
|
```
|
|
|
|
|
|
2020-01-20 12:08:44 +01:00
|
|
|
|
`ReadTimeout` and `SuspendTime` control what’s happening when a device is
|
|
|
|
|
unavailable. If no value could be retrieved for `ReadTimeout` seconds, the
|
|
|
|
|
plugin does not retry for `SuspendTime` seconds. After that, normal operation
|
|
|
|
|
is resumed. This procedure ensures that an unreachable device does not block
|
|
|
|
|
other devices (too often) in the current single-threaded architecture.
|
|
|
|
|
|
|
|
|
|
If not specified, `ReadTimeout` is 30 seconds and `SuspendTime` is 5 minutes.
|
|
|
|
|
|
2020-01-19 20:10:07 +01:00
|
|
|
|
Make sure that everything listed in `requirements.txt` is available to the user
|
|
|
|
|
running collectd.
|
|
|
|
|
|