Code Monkey home page Code Monkey logo

python-yeelightbt's Introduction

Python library for Yeelight Bedside lamp

This library allows controlling Yeelight's bluetooth-enabled bedside lamp and Candela devices.

Note that this library is not actively maintained, however, patches are very welcome.

Candelas support only setting the light on and off, and adjusting the brightness.

Currently supported features:

  • State
  • Color mode (white, color, flow)
  • Temperature
  • Brightness
  • Sleep, wakeup & scheduling (partially)

Installation

pip install git+https://github.com/rytilahti/python-yeelightbt/

In case you are getting "No such file or directory" error for bluepy-helper, you have to go into bluepy's directory and run make there. It is also a good idea to let the helper to have capabilities for accessing the bluetooth devices without being root, e.g., by doing the following:

setcap cap_net_admin,cap_net_raw+eip bluepy-helper

And then simply try if the scanning works. You can use pass '-dd' as option to the command to see the debug messages from bluepy in case it is not working.

Usage

Try

$ yeelightbt --help

and

$ yeelightbt [command] --help

For debugging you can pass -d/--debug, adding it second time will also print out the debug from bluepy.

Finding supported devices

$ yeelightbt scan
Scanning for 5 seconds
Devices found:
  f8:24:41:xx:xx:xx (XMCTD_XXXX), rssi=-83

Reading status & states

To avoid passing --mac for every call, set the following environment variable:

export YEELIGHTBT_MAC=AA:BB:CC:11:22:33
$ yeelightbt

MAC: f8:24:41:xx:xx:xx
  Mode: LampMode.White
  Color: (0, 0, 0)
  Temperature: 5000
  Brightness: 50
$ yeelightbt temperature

Temperature: 5000
$ yeelightbt color 255 0 0
Setting color: 255 0 0

Home Assistant support

This repository also contains a basic Home Assistant custom component.

Yeelightbt installation on Home Assistant (for Raspberry Pi)

  1. SSH into the host through port 22222 to get all necessary privileges (follow setup there). /!\ Using the SSH add-on will not work, it gives access to port 22. Use Putty for instance:
ssh [email protected] -p 22222

You will be logged into the Home Assistant command line interface and type login to access the host system.

  1. Access the bash:
docker exec -it $(docker ps -f name=homeassistant -q) bash
  1. Yeelightbt requires bluepy and the installer may not find where it is located. Therefore, navigate to the package:
cd /usr/local/lib/python3.7/site-packages/bluepy
  1. Install as mentionned above:
pip install git+https://github.com/rytilahti/python-yeelightbt/
  1. Ensure the light is ON and the switch is on the bluetooth position (at least for the Candela). Detect the supported devices and check if the lamp can be turned on/off with the commands described above.

Custom Component Installation

Copy yeelight_bt directory located under custom_components over to ~/.homeassistant/custom_components/.

Configuration

light:
  - platform: yeelight_bt
    devices:
      Bedside:
        mac: 'f8:24:41:xx:xx:xx'

Limitation

With the current custom component version, Home Assistant may lose the connection with the devices after a few minutes or hours. Home Assistant has to be restarted to reestablish this connection

python-yeelightbt's People

Contributors

mat4444 avatar rytilahti avatar vladisnik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-yeelightbt's Issues

Workaround for Home Assistant

As the custom_component for Home Assistant seems not to be working, I came up with this workaround for using the Candelas.
It is slow and far from perfect, but it works.

1- Install python-yeelightbt using SSH in port 22222 (as described in the Installation section of the documentation) or using Portainer to access the shell.

2- Still in the SSH or Portainer shell, configure your lights:
2.1- make sure your Candela is turned ON (light up) and near
2.2- use yeelightbt scan to list your devices
2.3- try to connect to each Candela using this command yeelightbt --mac:the_mac_of_your_candela on
2.4- it will ask you to change the brightness. CHANGE THE BRIGHTNESS turning the light glass. If you don't, the link will work for a while and stop working later. If you don't see a "we are linked" message, it did not work. Try again.
2.5- repeat 2.3 and 2.4 for every Candela you have.

3- Create multiple command switches in your configuration to operate the Candelas:

switch:
  platform: command_line
  switches:
    candela_1:
      command_on: '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:ZZ on'
      command_off: '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:ZZ off'
      friendly_name: Candela Living Room
    candela_2:
      command_on: '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:KK on'
      command_off: '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:KK off'
      friendly_name: Candela Bedroom
    candela_3:
      command_on: '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:PP on'
      command_off: '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:PP off'
      friendly_name: Candela TV room

Use those switches to turn on/off your candelas.
You can also set brightness to turn it on at a specified brightness setting, so, if the Candela is turned off, running '/usr/local/bin/yeelightbt --mac=f8:24:41:XX:YY:ZZ brightness 100' will turn it on at 100%.

homeassistant Unable to load plug-in

I have installed the latest ha plugin to the specified directory, BlueZ has been fully installed, prompted to start as follows, how can I let it run up, thanks

#######################################################################
INFO:homeassistant.loader:Loaded light.yeelight_bt from custom_components.light.yeelight_bt
INFO:homeassistant.bootstrap:Setting up light
INFO:homeassistant.components.light:Setting up light.yeelight_bt
ERROR:homeassistant.components.light:Error while setting up platform yeelight_bt
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/homeassistant/helpers/entity_component.py", line 151, in _async_setup_platform
entity_platform.add_entities, discovery_info
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/asyncio/futures.py", line 358, in iter
yield self # This tells Task to wait for completion.
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/asyncio/tasks.py", line 290, in _wakeup
future.result()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/asyncio/futures.py", line 274, in result
raise self._exception
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/concurrent/futures/thread.py", line 54, in run
result = self.fn(*self.args, **self.kwargs)
File "/Users/guoer/.homeassistant/custom_components/light/yeelight_bt.py", line 60, in setup_platform
add_devices_callback(lights, True) # request an update before adding
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/homeassistant/helpers/entity_component.py", line 300, in add_entities
entity.update()
File "/Users/guoer/.homeassistant/custom_components/light/yeelight_bt.py", line 163, in update
with self._dev:
File "/Users/guoer/.homeassistant/custom_components/light/yeelight_bt.py", line 131, in _dev
from yeelightbt import Lamp
ImportError: No module named 'yeelightbt'

yeelightbt scan

Hi,

i have install this and get this error:

pi@raspberrypi:~/python-yeelightbt $ sudo yeelightbt scan
Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 9, in
load_entry_point('python-yeelightbt==0.0.2', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 356, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2476, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
['name'])
File "build/bdist.linux-armv7l/egg/yeelightbt/init.py", line 2, in
File "build/bdist.linux-armv7l/egg/yeelightbt/lamp.py", line 5, in
File "build/bdist.linux-armv7l/egg/yeelightbt/structures.py", line 3, in
ImportError: No module named construct

from Construct developer, a note

I am the developer of Construct (a parsing library) since I took over the project 2 years ago. Please refer any other projects that also use this library to this post, or copy it over to them.

Construct is undergoing heavy changes at the moment, similar to those between 2.5->2.8, including addition of compiler feature (to make it much faster than Kaitai), but also several classes are going to be removed (for a good reason), and also few were added. API will be unstable for about a month.

What you can do:

  • All scheduled work is posted as tickets, in Issues and also on Kanban page. If you subscribe (watch repository) then you will have advance notice of any incoming changes. Unfortunately those tickets also include minor work items, so you would get some clutter notifications too. I appologise for that.
  • I encourage everyone to browse those tickets, vote for feature requests, but also post objections for planned removal of features, or changes in semantics. Subscribing therefore is recommended.
  • You can find what was already changed (at any moment) on Transition page, which is like a growing changelog. It gets updated whenever something gets added or removed, but since the order is not chronological, new items do not end up on top or bottom of the list.
  • You can find currently available classes and semantics on revamped Core API pages. Those pages are very extensive and always uptodate with the implementation.
  • Feel free, at any point in time, to open a new Issue and ask questions or make complaints about breakage. At minimum, I can offer advice and possible alternatives. People very often use the classes in ways that were not designed for, like use String classes to process Bytes.
  • Feel free, at any point in time, to open a new Issue and request changes. If you need a new class, and make a good clear case, I would be more than willing to add it to core library to support your project.
  • API should be stable within a month, so either do version pinning and deal with it then, or keep fixing your code at every release (which is ~3 day cycle at the moment).

Close this topic at your discretion.

Multiple lamps

Hi,

First of thanks for the effort, it was rather huge surprise to see this rather exotic product get implemented to home automation.

But I have rather strange issue. I have two bedside lamps and it seem the yeelight_bt server can connect only to one of them in rather random order. I've been able to reproduce same issue in cli as well.
Please find attached logs:

Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 225, in async_update_ha_state
None, self.update)
File "/usr/lib/python3.5/asyncio/futures.py", line 361, in iter
yield self # This tells Task to wait for completion.
File "/usr/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup
future.result()
File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/homeassistant/.homeassistant/custom_components/light/yeelight_bt.py", line 164, in update
self._dev.state()
File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/lamp.py", line 41, in _wrap
self.connect()
File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/lamp.py", line 88, in connect
self._conn.connect()
File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/connection.py", line 58, in connect
self._conn.connect(self._mac)
File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 408, in connect
self._connect(addr, addrType, iface)
File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 402, in _connect
"Failed to connect to peripheral %s, addr type: %s" % (addr, addrType))
bluepy.btle.BTLEException: Failed to connect to peripheral f8:24:41:e3:XX:XX, addr type: public

No module named 'yeelightbt'

Hi,

I'm running hassio and i'm unable to make it work. After placing the Yeelight_BT.py file inside the custom_components and set the details into the configuration.yaml i get an error:

ERROR (SyncWorker_14) [custom_components.yeelight_bt.light] Got exception: No module named 'yeelightbt'

I can't use pip install as i'm running hassio so i'm out of ideas of how to make it work

Anybody know how to solve it?

Thanks in advance

Error message

hey,
everything seems fine when install, but can't succeed to make it works...
thanks

pi@raspberrypi:~ $ yeelightbt Traceback (most recent call last): File "/usr/local/bin/yeelightbt", line 11, in <module> load_entry_point('python-yeelightbt==0.0.3.1', 'console_scripts', 'yeelightbt')() File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 476, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2700, in load_entry_point return ep.load() File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2318, in load return self.resolve() File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2324, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/home/pi/.local/lib/python3.5/site-packages/yeelightbt/__init__.py", line 2, in <module> from .lamp import Lamp File "/home/pi/.local/lib/python3.5/site-packages/yeelightbt/lamp.py", line 7, in <module> from .structures import Request, Response, StateResult File "/home/pi/.local/lib/python3.5/site-packages/yeelightbt/structures.py", line 4, in <module> from construct import (Struct, Int8ub, Int16ub, Const, Padded, Byte, Enum, Bytes, If, FlagsEnum, ImportError: cannot import name 'SymmetricMapping'

Hass io installation

Could a hass io repository be added for simple (no root access required) installation?

Without this I don't think it is easy to install this component. (Hass io only grants access to a virtual environment with home assistant preinstalled)

object has no attribute 'update_ha_state'

I have a problem with my installation. When i run yeelight from console, all is ok, i got responses and i can toggle lamp on and off.
/home/pi/.local/bin/yeelightbt --mac f8:24:******** on INFO:yeelightbt.connection:Requesting characteristics for uuid 8f65073d-9f57-4aaa-afea-397d19d5bbeb INFO:yeelightbt.connection:Requesting characteristics for uuid aa7d3f34-2d4f-41e0-807f-52fbf8cf7443 Container: type = PairingResult (total 13) pairing_status = PairSuccess (total 11) We are paired. Container: type = StateResult (total 11) state = False mode = LampMode.Color red = 2 green = 7 blue = 8 white = 0 brightness = 0 temperature = 0 temp_fraction = 0 Container: type = StateResult (total 11) state = True mode = LampMode.Color red = 2 green = 7 blue = 8 white = 0 brightness = 0 temperature = 0 temp_fraction = 0
But when I,m trying to start a hass plugin, i got an error.
2019-02-25 23:44:47 ERROR (Thread-14) [custom_components.yeelight_bt.light] Initializing f8:24:41:c0:e7:9a 2019-02-25 23:44:47 ERROR (MainThread) [homeassistant.components.device_tracker] Error setting up platform bluetooth_le_tracker 2019-02-25 23:44:49 ERROR (Thread-14) [yeelightbt.lamp] got exception on {'type': 'GetState'}, tries left 3: 'YeelightBT' object has no attribute 'update_ha_state' 2019-02-25 23:44:51 ERROR (Thread-14) [yeelightbt.lamp] got exception on {'type': 'GetState'}, tries left 2: 'YeelightBT' object has no attribute 'update_ha_state' 2019-02-25 23:44:53 ERROR (Thread-14) [yeelightbt.lamp] got exception on {'type': 'GetState'}, tries left 1: 'YeelightBT' object has no attribute 'update_ha_state' 2019-02-25 23:44:55 ERROR (MainThread) [homeassistant.components.light] yeelight_bt: Error on device update! Traceback (most recent call last): File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity_platform.py", line 248, in _async_add_entity await entity.async_device_update(warning=False) File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 349, in async_device_update await self.hass.async_add_executor_job(self.update) File "/usr/lib/python3.5/asyncio/futures.py", line 380, in __iter__ yield self # This tells Task to wait for completion. File "/usr/lib/python3.5/asyncio/tasks.py", line 304, in _wakeup future.result() File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result raise self._exception File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run result = self.fn(*self.args, **self.kwargs) File "/home/homeassistant/.homeassistant/custom_components/yeelight_bt/light.py", line 163, in update self._dev.state() File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/lamp.py", line 45, in _wrap raise _ex File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/lamp.py", line 35, in _wrap self._conn.wait(wait) File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/connection.py", line 74, in wait self._conn.waitForNotifications(timeout=0.1) File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 560, in waitForNotifications resp = self._getResp(['ntfy','ind'], timeout) File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 416, in _getResp self.delegate.handleNotification(hnd, data) File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/connection.py", line 89, in handleNotification self._callbacks[handle](data) File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/lamp.py", line 243, in handle_notification self._status_cb(self) File "/home/homeassistant/.homeassistant/custom_components/yeelight_bt/light.py", line 157, in _status_cb self.update_ha_state() AttributeError: 'YeelightBT' object has no attribute 'update_ha_state'

Unable to connect to device

I've struggling for several days. I can successfully scan for the lamp, but when I try to connect I get

` DEBUG:connection:Trying to connect to f8:24:41:e2:18:a9
Running /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
Sent: conn f8:24:41:e2:18:a9 public hci0

Got: '# bluepy-helper.c version 1.3.0 built at 21:27:19 on Dec 15 2019\n'
Got: "rsp=$stat\x1estate=$tryconn\x1edst='f8:24:41:e2:18:a9\x1emtu=h0\x1esec='low\n"
Got: "rsp=$stat\x1estate=$disc\x1emtu=h0\x1esec='low\n"
Stopping /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
WARNING:connection:Unable to connect to the device f8:24:41:e2:18:a9, retrying: Failed to connect to peripheral f8:24:41:e2:18:a9, addr type: public
Running /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
Sent: conn f8:24:41:e2:18:a9 public

Got: '# bluepy-helper.c version 1.3.0 built at 21:27:19 on Dec 15 2019\n'
Got: "rsp=$stat\x1estate=$tryconn\x1edst='f8:24:41:e2:18:a9\x1emtu=h0\x1esec='low\n"
Got: "rsp=$stat\x1estate=$disc\x1emtu=h0\x1esec='low\n"
Stopping /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
ERROR:connection:Second connection try to f8:24:41:e2:18:a9 failed: Failed to connect to peripheral f8:24:41:e2:18:a9, addr type: public`

Any suggestions what can be wrong? Please, I really need this

Issues (different) on both PY2.7 and PY3.5

Install seems successful but error as follows installed on Python2.7.9:
@raspberrypi:~ export YEELIGHTBT_MAC=F8:24:41:C0:36:AF
@raspberrypi:~ yeelightbt

Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 11, in
load_entry_point('python-yeelightbt==0.0.3.1', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 561, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2631, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2291, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2297, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/init.py", line 2, in
from .lamp import Lamp
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/lamp.py", line 192
def set_temperature(self, kelvin: int, brightness: int):
^
SyntaxError: invalid syntax (caret is under the : after Kelvin)

And on PY3.5:
@raspberrypi:~ export YEELIGHTBT_MAC=F8:24:41:C0:36:AF
@raspberrypi:~ yeelightbt --help
Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 11, in
load_entry_point('python-yeelightbt==0.0.3.1', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 561, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 2631, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 2291, in load
return self.resolve()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 2297, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/local/lib/python3.5/dist-packages/yeelightbt/init.py", line 2, in
from .lamp import Lamp
File "/usr/local/lib/python3.5/dist-packages/yeelightbt/lamp.py", line 7, in
from .structures import Request, Response, StateResult
File "/usr/local/lib/python3.5/dist-packages/yeelightbt/structures.py", line 4, in
from construct import (Struct, Int8ub, Int16ub, Const, Padded, Byte, Enum, Bytes, If, FlagsEnum,
ImportError: cannot import name 'SymmetricMapping'

Thank you!!

Scan is made but no connect

Hello @rytilahti
I managed to run this code on Debian 11, Phyton 3.9 and I even can do scan and find my lamp, however when I try to connect and ON / OFF it I get errors:

freya@Dalek:~$ yeelightbt --mac f8:24:41:c3:d9:79 on
WARNING:yeelightbt.connection:Unable to connect to the device f8:24:41:c3:d9:79, retrying: Failed to connect to peripheral f8:24:41:c3:d9:79, addr type: public
ERROR:yeelightbt.connection:Second connection try to f8:24:41:c3:d9:79 failed: Failed to connect to peripheral f8:24:41:c3:d9:79, addr type: public
Traceback (most recent call last):
File "/home/freya/.local/lib/python3.9/site-packages/yeelightbt/connection.py", line 55, in connect
self._conn.connect(self._mac)
File "/home/freya/.local/lib/python3.9/site-packages/bluepy/btle.py", line 445, in connect
self._connect(addr, addrType, iface)
File "/home/freya/.local/lib/python3.9/site-packages/bluepy/btle.py", line 439, in _connect
raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s" % (addr, addrType), rsp)
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral f8:24:41:c3:d9:79, addr type: public

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 33, in
sys.exit(load_entry_point('python-yeelightbt==0.0.4', 'console_scripts', 'yeelightbt')())
File "/home/freya/.local/lib/python3.9/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/home/freya/.local/lib/python3.9/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/home/freya/.local/lib/python3.9/site-packages/click/core.py", line 1654, in invoke
super().invoke(ctx)
File "/home/freya/.local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/freya/.local/lib/python3.9/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/home/freya/.local/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/freya/.local/lib/python3.9/site-packages/yeelightbt/cli.py", line 60, in cli
lamp.connect()
File "/home/freya/.local/lib/python3.9/site-packages/yeelightbt/lamp.py", line 89, in connect
self._conn.connect()
File "/home/freya/.local/lib/python3.9/site-packages/yeelightbt/connection.py", line 59, in connect
self._conn.connect(self._mac)
File "/home/freya/.local/lib/python3.9/site-packages/bluepy/btle.py", line 445, in connect
self._connect(addr, addrType, iface)
File "/home/freya/.local/lib/python3.9/site-packages/bluepy/btle.py", line 439, in _connect
raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s" % (addr, addrType), rsp)
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral f8:24:41:c3:d9:79, addr type: public
freya@Dalek:~$

Any advice how to fix this?

Error while running

pi@raspberrypi:~/.local/bin $ python yeelightbt
Traceback (most recent call last):
File "yeelightbt", line 11, in
load_entry_point('python-yeelightbt==0.0.2', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 561, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2631, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2291, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2297, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/home/pi/.local/lib/python2.7/site-packages/yeelightbt/init.py", line 2, in
from .lamp import Lamp
File "/home/pi/.local/lib/python2.7/site-packages/yeelightbt/lamp.py", line 5, in
from .structures import Request, Response
File "/home/pi/.local/lib/python2.7/site-packages/yeelightbt/structures.py", line 70, in
"unknown" / Const(Byte, 0x00)
File "/home/pi/.local/lib/python2.7/site-packages/construct/core.py", line 2440, in init
super(Const, self).init(subcon)
File "/home/pi/.local/lib/python2.7/site-packages/construct/core.py", line 549, in init
raise TypeError("subcon should be a Construct field")
TypeError: subcon should be a Construct field

trace

Hello,

Just try your lib and follow your readme, before adding to home assistant, want to try alone.

Just build your lib with

[code] python3 setup.py install [code/]

and try :
[code]yeelightbt --help[code/]

and get this error

[code]Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 9, in
load_entry_point('python-yeelightbt==0.0.1', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 356, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2476, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2190, in load
['name'])
ImportError: No module named 'main'
[code/]

can you help please ?

yeelightbt not working on rpi

I installed your library as suggested :
pip3 install git+https://github.com/rytilahti/python-yeelightbt/

Sadly when trying anything I get this error : (python 3.7) Any idea where I should look ?

  File "/usr/local/bin/yeelightbt", line 6, in <module>
    from yeelightbt.cli import cli
  File "/usr/local/lib/python3.7/dist-packages/yeelightbt/__init__.py", line 2, in <module>
    from .lamp import Lamp
  File "/usr/local/lib/python3.7/dist-packages/yeelightbt/lamp.py", line 7, in <module>
    from .structures import Request, Response, StateResult
  File "/usr/local/lib/python3.7/dist-packages/yeelightbt/structures.py", line 4, in <module>
    from construct import (
ImportError: cannot import name 'Embedded' from 'construct' (/usr/local/lib/python3.7/dist-packages/construct/__init__.py)

thanks !

Scan without --mac

Hi!
I sucsessfully installed yeelightbt.
But I don't know my lamp mac.
And scan command requires --mac option.
How can I get my lamp mac?

Traceback (most recent call last) on scan

Hello
I'm getting strange similar errors on scan

Scanning for 5 seconds
Traceback (most recent call last):
  File "/usr/local/bin/yeelightbt", line 9, in <module>
    load_entry_point('python-yeelightbt==0.0.2', 'console_scripts', 'yeelightbt')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/yeelightbt/cli.py", line 58, in scan
    devs = scan.scan(sec)
  File "/usr/local/lib/python2.7/dist-packages/bluepy-1.0.5-py2.7.egg/bluepy/btle.py", line 631, in scan
    self.start()
  File "/usr/local/lib/python2.7/dist-packages/bluepy-1.0.5-py2.7.egg/bluepy/btle.py", line 568, in start
    self._startHelper(iface=self.iface)
  File "/usr/local/lib/python2.7/dist-packages/bluepy-1.0.5-py2.7.egg/bluepy/btle.py", line 210, in _startHelper
    universal_newlines=True)
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Everything works from HA for a while... then connection drops

Hi!
This is the issue regarding Candela from HA: after restarting HA (docker container) everything works perfectly for a while. Then it seems that bluetooth connection drops and works again just restarting HA (I guess because of initialization).

This is the error:
Updating yeelight_bt light took longer than the scheduled update interval 0:00:30
5:22 PM helpers/entity_platform.py (WARNING) - message first occured at 5:04 PM and shows up 35 times

System: home assistant from a docker container (hassio) on a raspberry pi model 3+
Issue with Candela

I've seen that in the custom component keep_connection is correctly set to True.

Could you help me?
Thanks,
Federico

ImportError: No module named main

Hi

I'm trying to run this lib on Raspberry Pi 3, but getting an error message:

Traceback (most recent call last): File "/usr/local/bin/yeelightbt", line 9, in <module> load_entry_point('python-yeelightbt==0.0.1', 'console_scripts', 'yeelightbt')() File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 356, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2476, in load_entry_point return ep.load() File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load ['__name__']) ImportError: No module named main

What am I doing wrong?

Ha plugin installation consulting

Again, I've got the MAC address from other sources, is it still possible to complete the previous steps to make the HA plug-in work, or just fill in the correct yaml can be completed. I had a question about the OSX installation plugin before

The Candela pairs every time

Hey,

Nice work!
I have a little question. I want to use your code to integrate some Candelas with the Domoticz Home Automation System.
But from the moment I send the command it takes around 7 seconds for the Candela to receive it.
This is probably because the Candela doesn't stay connected all the time but it pairs every time I send a command.

Is there any way to make it faster? If I use this in a home automation system it's kinda strange to touch a switch and eat some popcorn while the light will turn on at some moment.

The code is very nice!

yeelightbt got error, is it due to phyton version2?

I am lake of using phyton, please kindly advise

[14:46:21] openhabian@OpenhabianPi:/usr/local/bin$ yeelightbt
Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 9, in
load_entry_point('python-yeelightbt==0.0.3.1', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 356, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2476, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
['name'])
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/init.py", line 2, in
from .lamp import Lamp
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/lamp.py", line 192
def set_temperature(self, kelvin: int, brightness: int):
^
SyntaxError: invalid syntax

Question about light temperature

Hi,

I have Xiaomi Bedside lamp and your library after set colour is always returning "temperature 0".
If I set temp by app it returns proper light temp, at least looks like K.
Is it some different unit or why is it 0?

state-request works but control doesn't work

I followed exactly the steps to set up. The state request returns correct information, but the control doesn't work.

Each time I set the color, I could see that the lamp sets the color to my requested one, however it reverts it back to the original color right away. The same happened to setting temperature and setting brightness. It made the change and immediately reverted back.

I also tried turning on and off, but neither worked. Nothing happens with turning on/off.

The following is the debug output.

$ yeelightbt -d color 0 0 255
DEBUG:yeelightbt.connection:Trying to connect to F8:24:41:E3:32:E6
DEBUG:yeelightbt.connection:Connected to F8:24:41:E3:32:E6
DEBUG:yeelightbt.connection:Writing b'0100' to 22 with with_response=False
DEBUG:yeelightbt.lamp:>> {'type': 'Pair'} (wait: 0.5)
DEBUG:yeelightbt.connection:Writing b'436702000000000000000000000000000000' to 18 with with_response=False
DEBUG:yeelightbt.connection:Got notification from 21: b'436301000000000000000000000000000000'
DEBUG:yeelightbt.lamp:<< b'436301000000000000000000000000000000'
DEBUG:yeelightbt.lamp:pairing res: Container:
type = PairingResult (total 13)
response = None
payload = Container:
pairing_status = NotPaired (total 9)
DEBUG:yeelightbt.lamp:>> {'type': 'GetState'} (wait: 0.5)
DEBUG:yeelightbt.connection:Writing b'434400000000000000000000000000000000' to 18 with with_response=False
DEBUG:yeelightbt.connection:Got notification from 21: b'43450101f200ff000100001a000000000000'
DEBUG:yeelightbt.lamp:<< b'43450101f200ff000100001a000000000000'
Setting color: 0 0 255
DEBUG:yeelightbt.lamp:>> {'green': 0, 'red': 0, 'blue': 255, 'type': 'SetColor'} (wait: 0.5)
DEBUG:yeelightbt.connection:Writing b'43410000ff00000000000000000000000000' to 18 with with_response=False

$ yeelightbt -d off
DEBUG:yeelightbt.connection:Trying to connect to F8:24:41:E3:32:E6
DEBUG:yeelightbt.connection:Connected to F8:24:41:E3:32:E6
DEBUG:yeelightbt.connection:Writing b'0100' to 22 with with_response=False
DEBUG:yeelightbt.lamp:>> {'type': 'Pair'} (wait: 0.5)
DEBUG:yeelightbt.connection:Writing b'436702000000000000000000000000000000' to 18 with with_response=False
DEBUG:yeelightbt.connection:Got notification from 21: b'436301000000000000000000000000000000'
DEBUG:yeelightbt.lamp:<< b'436301000000000000000000000000000000'
DEBUG:yeelightbt.lamp:pairing res: Container:
type = PairingResult (total 13)
response = None
payload = Container:
pairing_status = NotPaired (total 9)
DEBUG:yeelightbt.lamp:>> {'type': 'GetState'} (wait: 0.5)
DEBUG:yeelightbt.connection:Writing b'434400000000000000000000000000000000' to 18 with with_response=False
DEBUG:yeelightbt.connection:Got notification from 21: b'43450101f200ff0001000019000000000000'
DEBUG:yeelightbt.lamp:<< b'43450101f200ff0001000019000000000000'
DEBUG:yeelightbt.lamp:>> {'type': 'SetOnOff', 'state': False} (wait: 0.5)
DEBUG:yeelightbt.connection:Writing b'434002000000000000000000000000000000' to 18 with with_response=False

yeelightbt with Candela on rasp 4 homeassistant dont work

/config/configuration.yaml

light:

  • platform: yeelight_bt
    devices:
    Bedside:
    mac: F8:24:41:C0:AC:6V

/config/custom_components/yeelight_bt/

Logger: homeassistant.components.light
Source: custom_components/yeelight_bt/light.py:131
Integration: Licht (documentation, issues)
First occurred: 16:41:44 (1 occurrences)
Last logged: 16:41:44

yeelight_bt: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 312, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 476, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/yeelight_bt/light.py", line 163, in update
with self._dev:
File "/config/custom_components/yeelight_bt/light.py", line 131, in _dev
from yeelightbt import Lamp
ModuleNotFoundError: No module named 'yeelightbt'

Candela not work in HomeAssistent

Protokolldetails ( ERROR )
Logger: homeassistant.components.websocket_api.http.connection.2951776048
Source: custom_components/yeelight_bt/light.py:190
Integration: websocket_api (documentation, issues)
First occurred: 8:14:54 (1 occurrences)
Last logged: 8:14:54

Helper not started (did you call connect()?)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 134, in handle_call_service
connection.context(msg),
File "/usr/src/homeassistant/homeassistant/core.py", line 1234, in async_call
await asyncio.shield(self._execute_service(handler, service_call))
File "/usr/src/homeassistant/homeassistant/core.py", line 1257, in _execute_service
await handler.func(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 198, in handle_service
self._platforms.values(), func, call, required_features
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 402, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 599, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 433, in _handle_entity_call
await result
File "/usr/src/homeassistant/homeassistant/components/light/init.py", line 243, in async_handle_light_on_service
await light.async_turn_on(**params)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 624, in async_turn_on
await self.hass.async_add_job(ft.partial(self.turn_on, **kwargs))
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/yeelight_bt/light.py", line 190, in turn_on
self._dev.turn_on()
File "/usr/local/lib/python3.7/site-packages/yeelightbt/lamp.py", line 35, in _wrap
withResponse=True)
File "/usr/local/lib/python3.7/site-packages/bluepy/btle.py", line 200, in write
return self.peripheral.writeCharacteristic(self.valHandle, val, withResponse)
File "/usr/local/lib/python3.7/site-packages/bluepy/btle.py", line 542, in writeCharacteristic
self._writeCmd("%s %X %s\n" % (cmd, handle, binascii.b2a_hex(val).decode('utf-8')))
File "/usr/local/lib/python3.7/site-packages/bluepy/btle.py", line 302, in _writeCmd
raise BTLEInternalError("Helper not started (did you call connect()?)")
bluepy.btle.BTLEInternalError: Helper not started (did you call connect()?)

How does this script work?

I successfully find the lamps through scanning. But still could not connect to them. Always timeout error. Lamps reset before connecting

Can't install in homeassistant

17-01-28 18:49:05 ERROR (MainThread) [homeassistant.components.light] Error while setting up platform yeelight_bt
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/helpers/entity_component.py", line 151, in _async_setup_platform
entity_platform.add_entities, discovery_info
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 361, in iter
yield self # This tells Task to wait for completion.
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup
future.result()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/concurrent/futures/thread.py", line 55, in run
result = self.fn(*self.args, **self.kwargs)
File "/Users/guoer/.homeassistant/custom_components/light/yeelight_bt.py", line 60, in setup_platform
add_devices_callback(lights, True) # request an update before adding
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/helpers/entity_component.py", line 300, in add_entities
entity.update()
File "/Users/guoer/.homeassistant/custom_components/light/yeelight_bt.py", line 163, in update
with self._dev:
File "/Users/guoer/.homeassistant/custom_components/light/yeelight_bt.py", line 131, in _dev
from yeelightbt import Lamp
ImportError: No module named 'yeelightbt'

New BLE Mesh devices support

On CES 2019, Xiaomi announced a new line of Yeelight devices, the Yeelight Mesh. Theese lamps works with BLE, and currently there is no API for control the Mesh devices.
The Yeelight Mesh devices are:
YLDP10YL
YLDP09YL
YLSD01YL
YLSD04YL

Installation Problem

Hi;

Thanks for your work; but for me doesn't work and i've got any problems

Simple command doesn't work !

pi@raspberry:~ $ yeelightbt scan
Traceback (most recent call last):
File "/usr/local/bin/yeelightbt", line 11, in
load_entry_point('python-yeelightbt==0.0.2', 'console_scripts', 'yeelightbt')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 561, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2631, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2291, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/init.py", line 2297, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/init.py", line 2, in
from .lamp import Lamp
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/lamp.py", line 5, in
from .structures import Request, Response
File "/usr/local/lib/python2.7/dist-packages/yeelightbt/structures.py", line 70, in
"unknown" / Const(Byte, 0x00)
File "/usr/local/lib/python2.7/dist-packages/construct/core.py", line 1277, in init
super(Const, self).init(subcon)
File "/usr/local/lib/python2.7/dist-packages/construct/core.py", line 287, in init
raise TypeError("subcon should be a Construct field")
TypeError: subcon should be a Construct field

Have you got solutions for ????

Error Messages

pi@hassbian:/srv/homeassistant/bin $ ./yeelightbt
INFO:yeelightbt.connection:Requesting characteristics for uuid 8f65073d-9f57-4aaa-afea-397d19d5bbeb
INFO:yeelightbt.connection:Requesting characteristics for uuid aa7d3f34-2d4f-41e0-807f-52fbf8cf7443
Got notif: <Lamp f8:24:41:ea:70:f0 is_on(False) mode(White) rgb((0, 0, 0, 0)) brightness(71) colortemp(3700)>
ERROR:yeelightbt.lamp:got exception on {'type': 'GetState', 'payload': {}}, tries left 3: Device disconnected
Traceback (most recent call last):
File "./yeelightbt", line 11, in
load_entry_point('python-yeelightbt==0.0.4', 'console_scripts', 'yeelightbt')()
File "/srv/homeassistant/lib/python3.5/site-packages/click/core.py", line 764, in call
return self.main(*args, **kwargs)
File "/srv/homeassistant/lib/python3.5/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/srv/homeassistant/lib/python3.5/site-packages/click/core.py", line 1114, in invoke
return Command.invoke(self, ctx)
File "/srv/homeassistant/lib/python3.5/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/srv/homeassistant/lib/python3.5/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/srv/homeassistant/lib/python3.5/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/cli.py", line 61, in cli
lamp.state()
File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/lamp.py", line 36, in _wrap
self._conn.wait(wait)
File "/srv/homeassistant/lib/python3.5/site-packages/yeelightbt/connection.py", line 74, in wait
self._conn.waitForNotifications(timeout=0.1)
File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 560, in waitForNotifications
resp = self._getResp(['ntfy','ind'], timeout)
File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 407, in _getResp
resp = self._waitResp(wantType + ['ntfy', 'ind'], timeout)
File "/srv/homeassistant/lib/python3.5/site-packages/bluepy/btle.py", line 362, in _waitResp
raise BTLEDisconnectError("Device disconnected", resp)
bluepy.btle.BTLEDisconnectError: Device disconnected

and

on HA , when I Turn on light switch

there is messages "Failed to call service light/turn_on. Helper not started (did you call connect()"

Would you tell me some solutions?

yeelighbt scan working well

Ha plugin installation error

Hi again,

I try to install the custom component in HA, but this is the error, can't you give me some light ?

17-02-05 19:14:38 ERROR (MainThread) [homeassistant.loader] Unable to find component light.yeelight_bt
17-02-05 19:14:38 ERROR (MainThread) [homeassistant.bootstrap] Unable to find platform light.yeelight_bt

Cannot import name 'SymmetricMapping'

2018-03-09 14:57:14 ERROR (Thread-19) [custom_components.light.yeelight_bt] Got exception: cannot import name 'SymmetricMapping'
2018-03-09 14:57:14 INFO (MainThread) [homeassistant.core] Bus:Handling <Event system_log_event[L]: source=custom_components/light/yeelight_bt.py, exception=, level=ERROR, timestamp=1520607434.851715, message=Got exception: cannot import name 'SymmetricMapping'>

I can‘t find the SymmetricMapping by anyway,I'm crazy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.