Author: Eric Blue

December 31, 2013 · View on GitHub

url = http://eric-blue.com/belkin-wemo-api/

email = ericblue76 (at) gmail (dot) com

Project: Belkin WeMo API - Uses UPNP to control Belkin Wemo Switches

[Overview]

The Belkin WeMo Switch (http://www.belkin.com/us/wemo-switch) lets you turn electronic devices on or off from anywhere inside or outside your home. The WeMo Switch uses your existing home Wi-Fi network to provide wireless control of TVs, lamps, stereos, and more. This library allows basic control of the switches (turning on/off and getting device info) through UPNP

[Modules]

  1. WebService::Belkin::WeMo::Discover

Used for searching for Belkin devices on the network using UPNP. Search results can be stored and loaded to speed up operations.

Methods:

* search - Performs UPNP search
* save - Saves searched devices to disk
* load - Loads searched devices from disk

Sample Usage:

my $wemoDiscover = WebService::Belkin::WeMo::Discover->new();

Perform UPNP Search for all Belkin WeMo switches

my discovered=discovered = wemoDiscover->search();

Save device info to make API calls faster - eliminates search on startup

$wemoDiscover->save("/etc/belkin.db");

Load from storage

my discovered=discovered = wemoDiscover->load("/etc/belkin.db");

foreach my ip(keysip (keys %{discovered}) { print "IP = ip\n";print"FriendlyName=ip\n"; print "Friendly Name = discovered->{$ip}->{'name'}\n" }

  1. WebService::Belkin::WeMo::Device

The core module for controlling WeMo devices.

Methods:

* getFriendlyName - Get the name of the switch
* isSwitchOn - Returns true (1) or false (0)
* on - Turn switch on
* off - Turn switch off
* toggle - Toggle switch on/off

Sample Usage:

Note: excluding 'db' will force a search each time - expect a 1-3 second delay for UPNP discover

This dependency on the search will be fixed in a future release

my $wemo = WebService::Belkin::WeMo::Device->new(ip => '192.168.2.126', db => '/etc/belkin.db');

OR

my $wemo = WebService::Belkin::WeMo::Device->new(name => 'Livingroom Light', db => '/etc/belkin.db');

print "Name = " . wemo>getFriendlyName()."\n";print"On/Off=".wemo->getFriendlyName() . "\n"; print "On/Off = " . wemo->isSwitchOn() . "\n";

print "Turning off...\n"; $wemo->off();

print "Turning on...\n"; $wemo->on();