/Perl-Belkin-WeMo-API

Perl-Belkin-WeMo-API

Primary LanguagePerlOtherNOASSERTION

# Author: Eric Blue
# 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 = $wemoDiscover->search();

# Save device info to make API calls faster - eliminates search on startup
$wemoDiscover->save("/etc/belkin.db");

# Load from storage
my $discovered = $wemoDiscover->load("/etc/belkin.db");

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


2) 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->isSwitchOn() . "\n"; 

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

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