Skip to main content

python-magichue

demo

Magichue(as known as Magichome, FluxLED, etc.) is a cheap smart led bulb that you can controll hue/saturation/brightnes and power over WiFi. They are available at Amazon or other online web shop.

I tested this library with RGBWWCW(v7), RGB(v8), RGBWW(v8) bulbs.

Now it is possible to use Remote API !

Example

Rainbow cross-fade.

import time
import magichue

user = 'username@example.com'
password = 'password'
api = magichue.RemoteAPI.login_user_password(user=user, password=password)
light = api.get_online_bulbs()[0]

# local_device_ips = magcihue.discover_bulbs()
# light = magichue.LocalLight(local_device_ips[0])


if not light.on:
    light.on = True

if light.is_white:
  light.is_white = False

light.rgb = (0, 0, 0)
light.brightness = 255
light.saturation = 1

for hue in range(1000):
    light.hue = hue / 1000
    time.sleep(0.05)

Installation

$ pip install python-magichue

Usage

Remote API

Now it's available to use MagicHome HTTP API.

You have to login and register your bulb with MagicHome account in advance.

Login with Username/Password

api = magichue.RemoteAPI.login_with_user_password(user='xxx', password='xxx')
print(api.token)  # you can show TOKEN and save it.

Login with Token

It is recommended to use token string.

TOKEN = 'xxx'
api = magichue.RemoteAPI.login_with_token(TOKEN)

Make bulb instance

TOKEN = 'xxx'
api = magichue.RemoteAPI.login_with_token(TOKEN)
light = RemoteLight(api=api, macaddr='xxx')

Discover bulbs

Local bulbs

from magichue import discover_bulbs, LocalLight
addrs = discover_bulbs()  # returns list of bulb address
light = magichue.LocalLight(addrs[0])

Remote bulbs

from magichue import RemoteAPI

TOKEN = 'xxx'
api = magichue.RemoteAPI.login_with_token(TOKEN)
online_bulbs = api.get_online_bulbs()
light = online_bulbs[0]

# Getting online device information.
online_devices = api.get_online_devices()
# It is also possible to retrieve all device info binded with your account.
all_devices = api.get_all_devices()

Power State

Getting power status.

print(light.on)  # => True if light is on else False

Setting light on/off.

light.on = True
light.on = False
# or
light.turn_on()
light.turn_off()

Getting color

This shows a tuple of current RGB.

print(light.rgb)

or access individually.

print(light.r)
print(light.g)
print(light.b)

White LEDs

If your bulbs support white leds, you can change brightness(0-255) of white leds.

To use white led,

light.is_white = True
# light.is_white = False  # This disables white led.

If white led is enabled, you can't change color of bulb! So, you need to execute light.is_white = False before changing color.

Warm White(ww)

light.cw = 0
light.w = 255

Cold White (cw)

light.w = 0
light.cw = 255

Setting color

By rgb

light.rgb = (128, 0, 32)

or

light.r = 200
light.g = 0
light.b = 32

By hsb

light.hue = 0.3
light.saturation = 0.6
light.brightness = 255

hue, saturation are float value from 0 to 1. brightness is a integer value from 0 to 255. These variables are also readable.

Note about stripe bulb

Stripe bulb doesn't seem to allow jump to another color when you change color. To disable fading effect,

light.rgb = (128, 0, 20)  # It fades
light.allow_fading = False  # True by default
light.rgb = (20, 0, 128)  # Jumps

Bulb clock

print(light.get_current_time())

Changing mode

Magichue blub has a built-in flash patterns.

To check current mode, just

print(light.mode.name)  # string name of mode
print(light.mode.value)  # integer value

and changing modes,

light.mode = magichue.RAINBOW_CROSSFADE

These are built-in modes.

RAINBOW_CROSSFADE
RED_GRADUALLY
GREEN_GRADUALLY
BLUE_GRADUALLY
YELLOW_GRADUALLY
BLUE_GREEN_GRADUALLY
PURPLE_GRADUALLY
WHITE_GRADUALLY
RED_GREEN_CROSSFADE
RED_BLUE_CROSSFADE
GREEN_BLUE_CROSSFADE
RAINBOW_STROBE
GREEN_STROBE
BLUE_STROBE
YELLOW_STROBE
BLUE_GREEN_STROBE
PURPLE_STROBE
WHITE_STROBE
RAINBOW_FLASH
NORMAL

Changing the speed of mode

speed is a float value from 0 to 1.

print(light.speed)

light.speed = 0.5  # set speed to 50%

Custom Modes

You can create custom light flash patterns.

mode

  • MODE_JUMP
  • MODE_GRADUALLY
  • MODE_STROBE

speed A float value 0 to 1

colors A list of rgb(tuple or list) which has less than 17 length.

from magichue import (
    CustomMode,
    MODE_JUMP,
)


# Creating Mode
mypattern1 = CustomMode(
    mode=MODE_JUMP,
    speed=0.5,
    colors=[
        (128, 0, 32),
        (100, 20, 0),
        (30, 30, 100),
        (0, 0, 50)
    ]
)

# Apply Mode
light.mode = mypattern1

Other features are in development.

Debugging

Putting this snippet to begging of your code, this library outputs debug log.

import loggging
logging.basicConfig(level=logging.DEBUG)

Download files

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

Source Distribution

python-magichue-0.3.2.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

python_magichue-0.3.2-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file python-magichue-0.3.2.tar.gz.

File metadata

  • Download URL: python-magichue-0.3.2.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.0

File hashes

Hashes for python-magichue-0.3.2.tar.gz
Algorithm Hash digest
SHA256 939f00d1d8f1c87ff9e7cd09f5759d98ca8f109ac8bcfe98e50be5e06fff5570
MD5 a5a83c2867211af4ecea3ca957430877
BLAKE2b-256 c455ce0a2f643e9ab4b9f47c72ff86a441c4fecaa3fc74acef05c17589c6b983

See more details on using hashes here.

File details

Details for the file python_magichue-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for python_magichue-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 929377fbe7662334367c9bc00e090f76b9971f4abd01658a6a1435a80ccf574b
MD5 103568d857cbdd93500eba9abb435541
BLAKE2b-256 ef07aa8b539132182525d28bac8f58088ace7666210f833bc5713423e225a075

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 files

0.3.1

2 files

0.3

2 files

0.2.9.3

2 files

0.2.9.2

2 files

0.2.9.1

1 file

0.2.8

1 file

0.2.7

2 files

0.2.6

1 file

0.2.5

2 files

0.2.4

1 file

0.2.1

1 file

0.1.2

1 file

0.1

1 file

Supported by

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