interactua-con-el-api-de-ewelink-desde-net-con-ewelinknet

Interactua con el API de eWelink desde .NET con eWelinkNET

eWelinkNET es un API escrito en .NET Standard que nos permite interactuar directamente con al API de eWelink usando las credenciales de usuario usadas por la aplicación oficial.

Con eWelinkNET es compatible con Windows, Linux y MAC, Android e iOS, y permite realizar acciones en los dispositivos o obtener mediciones (temperatura, humedad, consumo eléctrico… ) de aquellos dispositivos que dispongan de tal funcionalidad.

Algunas de las características claves de ewelinkNET son:

  • Encender y apagar dispositivos

  • Leer medidas (humedad, temperatura…)

  • Escuchar los eventos del dispositivo a través de Websocket

  • Trabajar en modo online y offline (también conocido como LAN mode o Zeroconf)

  • Multiplataforma

Para dispositivos controlados por SmartLife visita la librería SmartLifeNET

Basic usage

Aquí tenemos un ejemplo básico de cómo emplear ewelinkNET.

var ewelink = new Ewelink(Email, Password, Region);
await ewelink.GetCredentials();
await ewelink.GetDevices();

var device = ewelink.Devices.First(x=> x.deviceid == deviceId) as SwitchDevice;
device.TurnOn();

Obtener credenciales

Podemos obtener las credenciales necesarias para realizar las acciones necesarias mediante nuestro Email, Password y Region.

var ewelink = new Ewelink(Email, Password, Region);
var credentials = await ewelink.GetCredentials();

alternativamente, puedes guardar las credenciales obtenidas para evitar tener que hacer login posteriormente.

ewelink.StoreCredenditalsFromFile();

Posteriormente, podemos recuperar las credenciales haciendo.

ewelink.RestoreCredenditalsFromFile();

Get Devices

Podemos obtener los dispositivos registrados en tu cuenta eWelink.

var ewelink = new Ewelink(Email, Password, Region);
await ewelink.GetCredentials();
await ewelink.GetDevices();

Los dispositivos se convierten en las siguientes clases.

  • SwitchDevice
  • MultiSwitchDevice
  • ThermostatDevice
  • RFBridgeDevice
  • CurtainDevice

Todos ellas derivan de la clase base ‘Device’.

Interactuar con los dispositivos

Cada clase dispone de sus propios métodos para realizar las acciones permitidas por el tipo de dispositivo. Each class provides there own methods to perform actions or retrieve measurement.

Así, por ejemplo, ‘ThermostatDevice’ proporciona,

  • TurnOn()
  • TurnOff()
  • Toggle()
  • GetTemperature()
  • GetHumidity()

Mientras que ‘MultiSwitchDevice’ proporciona,

  • TurnOn()
  • TurnOn(int channel)
  • TurnOff()
  • TurnOff(int channel)

Escuchar a cambios en el dispositivo

Los cambios en el estado del dispositivo se obtienen a través de una conexión Websocket. El dispositivo lanza los eventos oportunos ante un cambio de estado.

ewelink.websocket.OnMessage += (s, e) => Console.WriteLine(e.AsJson());
ewelink.OpenWebsocket();

Además de lanzar los eventos necesarios, los dispositivos se actualizan internamente acorde al nuevo estado.

Zeroconf (LAN mode)

Es posible interactuar con los dispositivos eWelink a través del modo LAN (también llamado Zeroconf), sin necesidad de conexión a internet o acceso a la nube de eWelink.

  • TurnOnLAN()
  • TurnOffLAN()

Para que el modo LAN funcione, hay que proporcionar una tabla ARP (una relación de MAC-IP) para poder encontrar la IP del dispositivo. For LAN mode to work, a ArpTable (and list or the Mac - Ip relationship) has to be provided, to allow find the device Ip.

ewelink.RestoreArpTableFromFile();

Descarga el código

eWelink es un desarrollo OpenSource. El código de esta entrada está disponible para su descarga en GitHub. github-full