YeelightAPI 1.1.0

Xiaomi yeelight smart-devices manager

There is a newer version of this package available.
See the version list below for details.
Install-Package YeelightAPI -Version 1.1.0
dotnet add package YeelightAPI --version 1.1.0
<PackageReference Include="YeelightAPI" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add YeelightAPI --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

YeelightAPI

C# API (.Net) to control Xiaomi Yeelight Color Bulbs

Prerequisites

The console project uses C# 7.1 "Async Main Method" Feature, make sure your visual studio version is up to date !

Installation

To install the latest release from NuGet package manager:

Install-Package YeelightAPI

Contribution

If you find this package useful, please make a gift on Paypal : https://www.paypal.me/roddone

Usage

Single Device

The YeelightAPI.Device allows you to create a device. Just instanciate a new Device with an ip adress or a hostname: Device device = new Device(&quot;hos.tna.meo.rIP&quot;); and initiate connection : device.Connect();.
Then you can use the device object to control the device :

  • Power on / off : device.SetPower(true);
  • Toggle State : device.Toggle();
  • Change brightness level : device.SetBrightness(100);
  • Change color : device.SetRGBColor(80, 244, 255);

Some methods use an optional parameter named "smooth", it refers to the duration in milliseconds of the effect you want to apply. For a progressive brightness change, use device.SetBrightness(100, 3000);.

If you need a method that is not implemented, you can use the folowing methods :

  • ExecuteCommandWithResponse(METHODS method, int id = 0, List&lt;object&gt; parameters = null) (with response)
  • ExecuteCommand(METHODS method, int id = 0, List&lt;object&gt; parameters = null) (without response).

These methods are generic and use the METHODS enumeration and a list of parameters, which allows you to call any known method with any parameter.
All the parameters are defined in the doc ["Yeelight WiFi Light Inter-Operation Specification"](http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf "Link to Yeelight WiFi Light Inter-Operation Specification"), section 4.1 : COMMAND Message.

Multiple-devices

If you need to control multiple devices at a time, you can use the YeelightAPI.DeviceGroup class.
This class simply ihnerits from native .net List&lt;Device&gt; and implements the IDeviceController interface, allowing you to control multiple devices the exact same way you control a single device.

	DeviceGroup group = new DeviceGroup();
	group.Add(device1);
	group.Add(device2);

	group.Connect();
	group.Toggle();
	...

Find devices

If you want to find what devices are connected, you can use YeelightAPI.DeviceLocator to find them :

	List<Device> devices = await DeviceLocator.Discover();

Event

When you call a method that changes the state of the device, it sends a notification to inform that its state really change. You can receive these notification using the "NotificationReceived"
Example :

   device.NotificationReceived += (object sender, NotificationReceivedEventArgs arg) =>
   {
       Console.WriteLine("Notification received !! value : " + JsonConvert.SerializeObject(arg.Result));
   };

VNext

  • ~~turn into a nuget package~~
  • ~~handle dns host name for bulb discovery~~
  • ~~add device discovery method in the DeviceManager~~
  • add more native methods in the DeviceManager
  • full use of async / await
  • ~~allow to group devices to control multiple devices~~
  • correct bugs if needed

Help

If there is a functionality that you need which is not implemented, or even worse if there is a bug, you can create a pull request or contacts me at "romain.oddone.github@outlook.com"

Licence

Apache Licence

Source

This code is an implementation of the ["Yeelight WiFi Light Inter-Operation Specification"](http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf "Link to Yeelight WiFi Light Inter-Operation Specification") as defined on January 1st, 2018

YeelightAPI

C# API (.Net) to control Xiaomi Yeelight Color Bulbs

Prerequisites

The console project uses C# 7.1 "Async Main Method" Feature, make sure your visual studio version is up to date !

Installation

To install the latest release from NuGet package manager:

Install-Package YeelightAPI

Contribution

If you find this package useful, please make a gift on Paypal : https://www.paypal.me/roddone

Usage

Single Device

The YeelightAPI.Device allows you to create a device. Just instanciate a new Device with an ip adress or a hostname: Device device = new Device(&quot;hos.tna.meo.rIP&quot;); and initiate connection : device.Connect();.
Then you can use the device object to control the device :

  • Power on / off : device.SetPower(true);
  • Toggle State : device.Toggle();
  • Change brightness level : device.SetBrightness(100);
  • Change color : device.SetRGBColor(80, 244, 255);

Some methods use an optional parameter named "smooth", it refers to the duration in milliseconds of the effect you want to apply. For a progressive brightness change, use device.SetBrightness(100, 3000);.

If you need a method that is not implemented, you can use the folowing methods :

  • ExecuteCommandWithResponse(METHODS method, int id = 0, List&lt;object&gt; parameters = null) (with response)
  • ExecuteCommand(METHODS method, int id = 0, List&lt;object&gt; parameters = null) (without response).

These methods are generic and use the METHODS enumeration and a list of parameters, which allows you to call any known method with any parameter.
All the parameters are defined in the doc ["Yeelight WiFi Light Inter-Operation Specification"](http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf "Link to Yeelight WiFi Light Inter-Operation Specification"), section 4.1 : COMMAND Message.

Multiple-devices

If you need to control multiple devices at a time, you can use the YeelightAPI.DeviceGroup class.
This class simply ihnerits from native .net List&lt;Device&gt; and implements the IDeviceController interface, allowing you to control multiple devices the exact same way you control a single device.

	DeviceGroup group = new DeviceGroup();
	group.Add(device1);
	group.Add(device2);

	group.Connect();
	group.Toggle();
	...

Find devices

If you want to find what devices are connected, you can use YeelightAPI.DeviceLocator to find them :

	List<Device> devices = await DeviceLocator.Discover();

Event

When you call a method that changes the state of the device, it sends a notification to inform that its state really change. You can receive these notification using the "NotificationReceived"
Example :

   device.NotificationReceived += (object sender, NotificationReceivedEventArgs arg) =>
   {
       Console.WriteLine("Notification received !! value : " + JsonConvert.SerializeObject(arg.Result));
   };

VNext

  • ~~turn into a nuget package~~
  • ~~handle dns host name for bulb discovery~~
  • ~~add device discovery method in the DeviceManager~~
  • add more native methods in the DeviceManager
  • full use of async / await
  • ~~allow to group devices to control multiple devices~~
  • correct bugs if needed

Help

If there is a functionality that you need which is not implemented, or even worse if there is a bug, you can create a pull request or contacts me at "romain.oddone.github@outlook.com"

Licence

Apache Licence

Source

This code is an implementation of the ["Yeelight WiFi Light Inter-Operation Specification"](http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf "Link to Yeelight WiFi Light Inter-Operation Specification") as defined on January 1st, 2018

Release Notes

Complete refactoring : introducing DeviceLocator to find devices through network, introducing DeviceGroup to control multiple devices, add async/await support

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.7.0 154 12/15/2019
1.6.0 55 12/7/2019
1.5.2 139 10/14/2019
1.5.1 72 10/10/2019
1.5.0 1,848 8/25/2018
1.4.1 241 8/7/2018
1.4.0 382 7/13/2018
1.3.3 344 4/29/2018
1.3.2 254 4/3/2018
1.3.1 293 3/22/2018
1.3.0 286 3/5/2018
1.2.3 294 2/25/2018
1.2.2 332 2/22/2018
1.2.1 387 2/15/2018
1.2.0 319 2/15/2018
1.1.5 330 2/9/2018
1.1.4 291 2/7/2018
1.1.3 291 2/4/2018
1.1.2 259 1/28/2018
1.1.1 249 1/28/2018
1.1.0 287 1/27/2018
1.0.6 347 1/7/2018
1.0.5 360 1/7/2018
1.0.4 389 1/6/2018
1.0.2 362 1/3/2018
1.0.1 306 1/3/2018
1.0.0 339 1/3/2018
Show less