Skip to main content

Control Linak powered desks using USB2LIN06 cable.

Project description

https://badge.fury.io/py/linak-ctrl.svg

Simple python script to control Linak powered desks and USB2LIN06 cable.

Requirements

  • Linak desk ;)

  • USB2LIN06 device

  • Python

  • pyusb

Installation

There are couple of different ways for installing linak-ctrl. One of the preferred ways is to use virtualenv and pip:

$ git clone https://github.com/gryf/linak-ctrl
$ cd linak-ctrl
linak-ctrl $ python -m venv linak
(linak) linak-ctrl $ pip install .
(linak) linak-ctrl $ linak-ctrl status
Position: 767, height: 78.80cm, moving: False

Or, you can install it system-wide:

$ sudo pip install linak-ctrl

And finally, you could also install dependences from your system repositories, and use script directly, by placing it somewhere in your $PATH.

Usage

Currently, script have two available commands: status and move.

Invoking status will give information about desk height - both in absolute number, and in centimeters, and information if desk is moving.

$ linak_ctrl.py status
Position: 767, height: 78.80cm, moving: False

Note, that height was measured manually and may differ depending if desk have casters or regular foots.

Command status accept optional parameter --loop for fetching information from USB2LIN06 device every 0.2 seconds:

$ linak_ctrl.py status -l
Position: 2161, height: 100.25cm, moving: True
Position: 2109, height: 99.45cm, moving: True
Position: 2026, height: 98.17cm, moving: True
Position: 1960, height: 97.15cm, moving: True
Position: 1872, height: 95.80cm, moving: True
Position: 1797, height: 94.65cm, moving: True
Position: 1728, height: 93.58cm, moving: True
Position: 1675, height: 92.77cm, moving: True
Position: 1652, height: 92.42cm, moving: True
Position: 1651, height: 92.40cm, moving: False

Command move is used for adjusting desk height. It needs parameter position, which is absolute number, and its range is between 0 and 6480 (in my case). For example:

$ linak_ctrl.py move 1000

For displaying debug information verbosity can be increased using --verbose parameter:

$ linak_ctrl.py -v move 1000
Current position: 771
Current position: 792
Current position: 825
Current position: 873
Current position: 939
Current position: 988
Current position: 1000

Adding more -v will increase amount of information:

$ linak_ctrl.py -vv move 1000
array('B', [4, 56, 17, 8, 3, 3, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 771
array('B', [4, 56, 17, 0, 21, 3, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 789
array('B', [4, 56, 17, 0, 55, 3, 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 823
array('B', [4, 56, 17, 0, 101, 3, 16, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 869
array('B', [4, 56, 17, 0, 162, 3, 16, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 930
array('B', [4, 56, 17, 0, 217, 3, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 985
array('B', [4, 56, 17, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0])
Current position: 1000

Alternatives

There are two projects, which more or less are doing the same. Fist one can be treated as a reference project - lots of information in the source code, second one is a python project, which uses libusb1 wrapper library instead of pyusb:

License

This software is licensed under 3-clause BSD license. See LICENSE file for details.

Project details


Download files

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

Source Distribution

linak-ctrl-1.0.4.tar.gz (6.9 kB view hashes)

Uploaded Source

Built Distribution

linak_ctrl-1.0.4-py2.py3-none-any.whl (7.2 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page