Skip to main content

Asynchronous Python API client for interacting with myStrom devices

Project description

Asynchronous Python API client for interacting with myStrom devices.

This module is not official, developed, supported or endorsed by myStrom AG. For questions and other inquiries, use the issue tracker in this repo please.

Without the support of myStrom AG it would have taken much longer to create this module which is the base for the integration into Home Assistant. myStrom AG has provided hardware. Their continuous support make further development of this module possible.

Requirements

You need to have Python installed.

  • myStrom device (bulb, plug or button)

  • The python-mystrom requirements

  • Network connection

  • Devices connected to your network

Installation

The package is available in the Python Package Index .

$ pip3 install python-mystrom

On a Fedora-based system or on a CentOS/RHEL machine which has EPEL enabled.

$ sudo dnf -y install python3-mystrom

For Nix or NixOS users is a package available. Keep in mind that the lastest releases might only be present in the unstable channel.

$ nix-env -iA nixos.python3Packages.python-mystrom

Plug/switch

At the moment the following endpoints are covered according https://api.mystrom.ch:

  • /report: for getting the current state and the power consumption

  • /relay: for setting the relay state

You will still be able to use your device with the smartphone application, curl or other tools. The samples below shows how to use the switch with httpie and curl along with python-mystrom.

$ http http://IP_ADDRESS_PLUG/report
HTTP/1.1 200 OK
Content-Length: 39
Content-Type: application/json
Date: Mon, 15 Feb 2016 17:52:21 GMT

{
    "power": 51.630947,
    "relay": true
}
$ curl -X GET http://IP_ADDRESS_PLUG/relay?state=1

Bulb

If the bulb is on then you should be able to retrieve the current state of the bulb.

Browse to http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB or use a command-line tool.

$ curl -d "color=0;0;100" -d "action=on" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
{
    "5DFF7FAHZ987":         {
            "on": true,
            "color": "0;0;100",
            "mode": "hsv",
            "ramp": 100,
            "notifyurl": ""
        }
}

The bulbs are not able to handle payload formatted as JSON. It’s required to use application/x-www-form-urlencoded. Keep that in mind if something is not working, especially around setting the color with HSV.

If you are planning to use your bulbs with Home Assistant set the bulb to a state from Colors with the app or use the command below.

$ curl -d "color=0;0;100" IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

Set State

You can set the state with a POST request and a payload.

  • on: curl -d "action=on" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

  • off: curl -d "action=off" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

  • toggle: $ curl -d "action=toggle" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

Set Color RGB

One of the supported modes for setting the color is RBG.

  • white: $ curl -d "color=FF000000" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

  • red: $ curl -d "color=00FF0000" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

  • green: $ curl -d "color=0000FF00" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

  • blue: $ curl -d "color=000000FF" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

Set Color HSV (Hue, Saturation, Value)

It’s also possible to use HSV.

$ curl -d "color=0;0;100" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

While “color=” is composed with hue, saturation, and value.

Set Mono (white)

If you only want to set the “white” color of the bulb, use mono.

$ curl -d "color=10;100" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

“color=” contains the value for the color temperature (from 1 to 18) and the brightness (from 0 to 100).

Dimming (ramp)

Add ramp and an interval to set up the transition time while changing colors.

$ curl -d "action=on&ramp=1000&color=00FF0000" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

The unit of measurement for ramp is milliseconds (ms).

Button

The buttons can be set with the myStrom app or directly via HTTP requests.

To set the configuration the payload must contains the relevant details for the actions:

$ curl -v -d "single=<url>&double=<url>&long=<url>&touch=<url>" http://IP_ADDRESS_BUTTON/api/v1/device/MAC_ADDRESS_BUTTON

Available actions:

  • single: Short push (approx. 1/2 seconds)

  • double: 2x sequential short pushes (within 2 seconds)

  • long: Long push (approx. 2 seconds)

  • touch: Touch of the button’s surface (only affective for the WiFi Button +)

The button is set up to extend the life span of the battery as much as possible. This means that only within the first 3 minutes or when connected to an USB port/USB charger and the battery is not full, the button is able to receive configuration information or publish its details.

mystrom helper tool

The command-line tool mystrom can help to set up the buttons and get the details from bulbs and plugs.

$ mystrom
Usage: mystrom [OPTIONS] COMMAND [ARGS]...

  Simple command-line tool to get and set the values of a myStrom devices.

  This tool can set the targets of a myStrom button for the different
  available actions single, double, long and touch.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  bulb    Get and set details of a myStrom bulb.
  button  Get and set details of a myStrom button.
  config  Get and set the configuration of a myStrom...

The examples shows how to get the details of a given bulb.

$ mystrom config read
IP address of the myStrom device: IP_ADDRESS_BULB
MAC address of the device: MAC_ADDRESS_BULB
Read configuration from IP_ADDRESS_BULB
{
   'MAC_ADDRESS_BULB':{
      'type':'rgblamp',
      'battery':False,
      'reachable':True,
      'meshroot':False,
      'on':True,
      'color':'191;90;14',
      'mode':'hsv',
      'ramp':100,
      'power':0.953,
      'fw_version':'2.25'
   }
}

Example usage of the module

Examples for the bulb can be found in the directory examples.

License

python-mystrom is licensed under MIT, for more details check LICENSE.

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

python_mystrom-2.6.0.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_mystrom-2.6.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file python_mystrom-2.6.0.tar.gz.

File metadata

  • Download URL: python_mystrom-2.6.0.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.9

File hashes

Hashes for python_mystrom-2.6.0.tar.gz
Algorithm Hash digest
SHA256 256c4e3238fc8699961fca885374115bd9ca99fe5127f6d252254462e7d5826b
MD5 60ae0363a6d94b55a5bfad587e5fc53d
BLAKE2b-256 c3a50e361ef0cdcb429a70d3fcad9a6e06f8076e1eef62a48762de9a42bcd3f9

See more details on using hashes here.

File details

Details for the file python_mystrom-2.6.0-py3-none-any.whl.

File metadata

  • Download URL: python_mystrom-2.6.0-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.9

File hashes

Hashes for python_mystrom-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64485b3de6221767d1e7a1cc3a47eabe1c83fcccf3564ec6d894baf756306e52
MD5 375def390b8c23a54ba838654cc0af07
BLAKE2b-256 6c88211185eb0e0e5103a4d31c2883bb0b9f5e5ac524b09eefa13efa94826bed

See more details on using hashes here.

Supported by

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