magic-home-csharp

Control de Luces Bluetooth con Magic Home en C#

La biblioteca Magic Home permite interactuar con dispositivos de iluminación compatibles con la plataforma Magic Home.

Magic Home es una popular aplicación utilizada para controlar luces LED inteligentes controlados por Bluetooth o WiFi, especialmente en modelos baratos como los que podemos encontrar por AliExpress.

La biblioteca Magic Home para C# proporciona una manera sencilla y eficiente de controlar luces inteligentes compatibles con la plataforma Magic Home. Podemos detectar dispositivos, encenderlos o apagaros, cambiar el color de las luces (si son RGB).

En general, tenemos todas las funcionalidades que podemos encontrar en la aplicación, pero llamadas desde nuestra propia app en C#.

magic-home-app

Instalación

Para agregar la biblioteca Magic Home a tu proyecto de .NET, usa el administrador de paquetes NuGet. Abrimos la terminal o la consola del administrador de paquetes de Visual Studio y ejecuta el siguiente comando:

Install-Package MagicHomeAPI

O mediante la interfaz de NuGet en Visual Studio, busca MagicHomeAPI e instálalo en tu proyecto.

Uso de MagicHomeAPI

Descubrir dispositivos

Lo primero que debemos hacer es descubrir los dispositivos de iluminación compatibles en nuestra red local. Esto se puede lograr utilizando el método DiscoverDevicesAsync.

using MagicHome;

public async Task DiscoverDevices()
{
    var devices = await DeviceLocator.DiscoverAsync();
    foreach (var device in devices)
    {
        Console.WriteLine($"Found device: {device.Hostname}");
    }
}

Conectar a un dispositivo

Después de descubrir los dispositivos, podemos conectarnos a uno específico utilizando su dirección IP.

using MagicHome;

public async Task ConnectToDevice(string ipAddress)
{
    var device = new Device(ipAddress);
    await device.ConnectAsync();
    Console.WriteLine("Connected to device.");
}

Encender y apagar luces

Una vez conectados al dispositivo, podemos encender y apagar las luces con los métodos TurnOnAsync y TurnOffAsync.

using MagicHome;

public async Task ToggleLight(string ipAddress, bool turnOn)
{
    var device = new Device(ipAddress);
    await device.ConnectAsync();

    if (turnOn)
    {
        await device.TurnOnAsync();
        Console.WriteLine("Light turned on.");
    }
    else
    {
        await device.TurnOffAsync();
        Console.WriteLine("Light turned off.");
    }
}

Cambiar colores y brillo

Podemos cambiar el color y el brillo de las luces utilizando el método SetColorAsync.

using MagicHome;

public async Task SetLightColor(string ipAddress, byte red, byte green, byte blue, byte brightness)
{
    var device = new Device(ipAddress);
    await device.ConnectAsync();
    await device.SetColorAsync(red, green, blue, brightness);
    Console.WriteLine($"Color set to R:{red} G:{green} B:{blue} with brightness {brightness}.");
}