Skip to main content

Interface to Lufft OPUS20 devices

Project description

This is a opus20, a Python software to query the temperature / humidity / air pressure logging device OPUS20 produced by Lufft.

The source code is managed on Github: pklaus/opus20. The Python package is also registered on PyPI for easy installation.

Requirements and Installation

The only strict requirement for the bare opus20 package is Python version 3.3+. Then, the package can be installed via pip directly from PyPI:

pip install --upgrade opus20

The package comes with an (optional) plot web server, too. It depends on some more Python packages. To install those requirements as well, run this command:

pip install --upgrade opus20[webserver]

This will install further packages like jinja2, bottle, matplotlib, pandas, and numpy. (Installing matplotlib may also require you to install the python development package for Python 3.)

Usage

The Python package installs a command line tool to query the device for current values. It’s called opus20_cli.

Here is how to get a list of all available channels from the device:

philipp@lion:~> opus20_cli 192.168.1.55 list
Channel   100 (0x0064): CUR temperature         unit: °C    offset: ±10.0  logging: no
Channel   120 (0x0078): MIN temperature         unit: °C    offset: ±10.0  logging: no
Channel   140 (0x008C): MAX temperature         unit: °C    offset: ±10.0  logging: no
Channel   160 (0x00A0): AVG temperature         unit: °C    offset: ±10.0  logging: yes
Channel   105 (0x0069): CUR temperature         unit: °F    offset: 0.0    logging: no
Channel   125 (0x007D): MIN temperature         unit: °F    offset: 0.0    logging: no
Channel   145 (0x0091): MAX temperature         unit: °F    offset: 0.0    logging: no
Channel   165 (0x00A5): AVG temperature         unit: °F    offset: 0.0    logging: no
Channel   200 (0x00C8): CUR relative humidity   unit: %     offset: ±30.0  logging: no
Channel   220 (0x00DC): MIN relative humidity   unit: %     offset: ±30.0  logging: no
Channel   240 (0x00F0): MAX relative humidity   unit: %     offset: ±30.0  logging: no
Channel   260 (0x0104): AVG relative humidity   unit: %     offset: ±30.0  logging: yes
Channel   205 (0x00CD): CUR absolute humidity   unit: g/m³  offset: 0.0    logging: no
Channel   225 (0x00E1): MIN absolute humidity   unit: g/m³  offset: 0.0    logging: no
Channel   245 (0x00F5): MAX absolute humidity   unit: g/m³  offset: 0.0    logging: no
Channel   265 (0x0109): AVG absolute humidity   unit: g/m³  offset: 0.0    logging: yes
Channel   110 (0x006E): CUR dewpoint            unit: °C    offset: 0.0    logging: no
Channel   130 (0x0082): MIN dewpoint            unit: °C    offset: 0.0    logging: no
Channel   150 (0x0096): MAX dewpoint            unit: °C    offset: 0.0    logging: no
Channel   170 (0x00AA): AVG dewpoint            unit: °C    offset: 0.0    logging: yes
Channel   115 (0x0073): CUR dewpoint            unit: °F    offset: 0.0    logging: no
Channel   135 (0x0087): MIN dewpoint            unit: °F    offset: 0.0    logging: no
Channel   155 (0x009B): MAX dewpoint            unit: °F    offset: 0.0    logging: no
Channel   175 (0x00AF): AVG dewpoint            unit: °F    offset: 0.0    logging: no
Channel 10020 (0x2724): CUR battery voltage     unit: V     offset: 0.0    logging: no
Channel 10040 (0x2738): MIN battery voltage     unit: V     offset: 0.0    logging: no
Channel 10060 (0x274C): MAX battery voltage     unit: V     offset: 0.0    logging: no
Channel 10080 (0x2760): AVG battery voltage     unit: V     offset: 0.0    logging: yes

Asking for the value of a channel works like this:

philipp@lion:~> opus20_cli 192.168.1.55 get 0x0064
24.712

You can also download the values stored on the device and store them in a file:

philipp@lion:~> opus20_cli --loglevel INFO 192.168.1.55 download log_data.pickle
INFO:opus20.opus20:Connected to device with ID: EC9C0A06B183
INFO:opus_cli:script running time (net): 1.208517 seconds.
philipp@lion:~>

Here is an overview of all the possible CLI commands:

# List all possible channels:
opus20_cli 192.168.1.55 list

# Get the values for the specified channels (CUR, MIN, MAX temperature in °C):
opus20_cli 192.168.1.55 get 0x0064 0x0078 0x008C

# Download the latest log data and merge it into a persistant data file:
opus20_cli 192.168.1.55 download opus20.PickleStore.p

# Check if logging in general is enabled on the device:
opus20_cli 192.168.1.55 logging status
opus20_cli 192.168.1.55 logging start
opus20_cli 192.168.1.55 logging stop
# Or clear the log:
opus20_cli 192.168.1.55 logging clear

# Enable or disable logging for individual channels:
opus20_cli 192.168.1.55 enable  0x0064 0x0078 0x008C
opus20_cli 192.168.1.55 disable 0x00CD 0x00E1 0x00F5

Author

License

GPLv3

Project details


Release history Release notifications

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
opus20-1.0.1.tar.gz (21.0 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page