Giuseppe Parrello

 

Come gestire le lampadine Smart di Yeelight


In questa pagina fornisco i codici script allo scopo di gestire le lampadine Smart di Yeelight. Prima di usare i seguenti codici, tenete presente che all'interno della App di Yeelight (questo è il collegamento alla App Android), bisogna selezionare la lampadina smart da gestire, e dopo attivare la modalità "LAN Control", solo in questa maniera si può gestire la lampadina Smart tramite la Rete locale.


Linea di Comando

Per gestire le lampadine Smart di Yeelight tramite la linea di comando, si prega di prendere nota dei seguenti requisiti:

Per gestire la lampadina Smart di Yeelight, basta eseguire il comando "yeecli" seguito da alcuni parametri. Per avere un elenco dei parametri disponibili, eseguire il comando "yeecli" oppure "yeecli --help", il seguente output mostra i parametri usabili con il comando "yeecli":

Usage: yeecli [OPTIONS] COMMAND [ARGS]...

  yeecli is a command-line utility for controlling the YeeLight RGB LED
  lightbulb.

Options:
  --version                   Show the version and exit.
  --ip IP                     The bulb's IP address.
  --port PORT                 The bulb's port.
  -e, --effect EFFECT         The transition effect.
  -d, --duration DURATION_MS  The transition effect duration.
  -b, --bulb NAME             The name of the bulb in the config file.
  --auto-on / --no-auto-on    Whether to turn the bulb on automatically before
                              a command (on by default).
  -h, --help                  Show this message and exit.

Commands:
  brightness   Set the brightness of the bulb.
  hsv          Set the HSV value of the bulb.
  preset       Various presets.
  pulse        Pulse the bulb in a specific color.
  rgb          Set the RGB value of the bulb.
  save         Save the current settings as default.
  status       Show the bulb's status.
  temperature  Set the color temperature of the bulb.
  toggle       Toggle the bulb's state on or off.
  turn         Turn the bulb on or off.

Buona parte dei parametri richiede l'indirizzo IP della lampadina Smart, ad esempio se l'indirizzo IP della lampadina Smart è 192.168.1.20, per sapere lo stato attuale della lampadina basta eseguire il comando "yeecli --ip=192.168.1.20 status".
Per avere una lista dei vari preset utilizzabili, basta eseguire il comando "yeecli --ip=192.168.1.20 preset --help" - ciò che segue è il relativo output:

Usage: yeecli preset [OPTIONS] COMMAND [ARGS]...

  Various presets.

Options:
  -h, --help  Show this message and exit.

Commands:
  alarm         A red alarm.
  christmas     Christmas lights.
  disco         Party!
  lsd           Christmas lights.
  police        Police lights.
  police2       More police lights.
  random        Random colors.
  redgreenblue  Change from red to green to blue.
  slowdown      Cycle with increasing transition time.
  stop          Stop any currently playing presets and return to the prior...
  strobe        Epilepsy warning.
  temp          Slowly-changing color temperature.

 

Linguaggio PHP

Il seguente script accende la lampadina Smart, imposta il colore Rosso e luminosità al 50%, e dopo 5 secondi imposta il colore Verde e luminosità al 100%:

<?php
require "Yeelight.class.php";

$yee = new Yeelight("192.168.1.20", 55443);

$yee->set_power("on"); // power on
$yee->set_rgb(0xFF0000); // color to red
$yee->set_bright(50); // brightness to 50%

$yee->commit(); // changes are not sent to the bulb before commit() is called

sleep(5);
$yee->set_rgb(0x00FF00)->set_bright(100)->commit(); // calls return the object for fast chaining of commands

$status = $yee->get_prop("power")->commit(); // get current status
print_r($status);

$yee->disconnect();

Il seguente script accende la lampadina Smart, imposta un flusso di colori personalizzato per 10 secondi, dopo spegne il flusso di colori e torna al colore predefinito:

<?php
require "Yeelight.class.php";

$yee = new Yeelight("192.168.1.20", 55443);

$status = $yee->set_power(on)->commit();
$status = $yee->start_cf(0,1,"7000,1,10751,100,7000,1,65280,100,7000,1,255,100,7000,1,16776960,100")->commit();

sleep(10);

$status = $yee->stop_cf()->commit();
$yee->disconnect();

 

Linguaggio Python

Il seguente script mostra alcune informazioni sulla lampadina Smart, accende e spegne la lampadina, imposta il colore Rosso e luminosità al 50%, e dopo 5 secondi imposta il colore Verde e luminosità al 100%:

import time, logging
from yeelight import Bulb

#logging.basicConfig(level=logging.DEBUG)

def main():
    bulb = Bulb("192.168.1.20")
    # push method ensure_on to power on the bulb automatically before each operation
    bulb.auto_on = 1
    # Return the specifications (e.g. color temperature min/max) of the bulb.
    print (bulb.get_model_specs())
    print ()
    # Retrieve and return the properties of the bulb.
    print (bulb.get_properties())
    print ()
    # Turn the bulb off + 1 second delay.
    bulb.turn_off()
    time.sleep(1)
    # Turn the bulb on + 1 second delay.
    bulb.turn_on()
    time.sleep(1)
    # Turn the bulb off + 1 second delay.
    bulb.turn_off()
    time.sleep(1)
    # Turn the bulb on if it is off.
    bulb.ensure_on()
    # Set RGB color and brightness
    bulb.set_rgb(255,0,0)
    bulb.set_brightness(50)
    # 5 seconds delay.
    time.sleep(5)
    # Set RGB color and brightness
    bulb.set_rgb(0,255,0)
    bulb.set_brightness(100)
    # Display if Bulb is on or off.
    print ("Bulb is " + bulb.get_properties().get("power", "off"))
    
if __name__ == '__main__':
    main()

Il seguente script accende la lampadina Smart, imposta un flusso di colori personalizzato per 10 secondi, dopo spegne il flusso di colori e torna al colore predefinito:

import time, logging
from yeelight import Bulb, RGBTransition, Flow

logging.basicConfig(level=logging.DEBUG)

def int_color_to_rgb(color):
    """Convert a int color string to an RGB tuple."""
    try:
        Blue = color & 255
        Green = (color >> 8) & 255
        Red = (color >> 16) & 255
    except (TypeError, ValueError):
        print('Unrecognized color...', file=sys.stderr)
        red, green, blue = (0, 0, 0)
    return Red, Green, Blue

def main():
    bulb = Bulb("192.168.1.20")
    # Turn the bulb on
    bulb.turn_on()
    # Start a color flow.
    red1, green1, blue1 = int_color_to_rgb(10751)
    red2, green2, blue2 = int_color_to_rgb(65280)
    red3, green3, blue3 = int_color_to_rgb(255)
    red4, green4, blue4 = int_color_to_rgb(16776960)
    duration = 7000
    brightness = 100
    transitions = [
        RGBTransition(red1, green1, blue1, duration=duration, brightness=brightness),
        RGBTransition(red2, green2, blue2, duration=duration, brightness=brightness),
        RGBTransition(red3, green3, blue3, duration=duration, brightness=brightness),
        RGBTransition(red4, green4, blue4, duration=duration, brightness=brightness),
    ]
    # count=0 just means infinite loop
    flow = Flow(count=0, transitions=transitions)
    bulb.start_flow(flow)
    # 10 seconds delay
    time.sleep(10)
    # Stop color flow
    bulb.stop_flow(flow)
    
if __name__ == '__main__':
    main()