# Belkin Wemo Binding

This binding integrates the Belkin WeMo Family (opens new window). The integration happens either through the WeMo-Link bridge, which acts as an IP gateway to the Zigbee devices or through WiFi connection to standalone devices.

# Supported Things

The WeMo Binding supports the Socket, Outdoor Plug, Insight, Lightswitch, Motion, Dimmer, Coffemaker and Maker devices, as well as the WeMo-Link bridge with WeMo LED bulbs. The Binding also supports the Crock-Pot Smart Slow Cooker, Mr. Coffee Smart Coffemaker as well as the Holmes Smart Air Purifier, Holmes Smart Humidifier and Holmes Smart Heater.

# Discovery

The WeMo devices are discovered through UPnP discovery service in the network. Devices will show up in the inbox and can be easily added as Things.

# Binding Configuration

The binding does not need any configuration.

# Thing Configuration

For manual Thing configuration, one needs to know the UDN of a certain WeMo device. It can most easily be obtained by performing an auto-discovery before configuring the thing manually.

Most devices share the udn configuration parameter:

Configuration Parameter Description
udn The UDN identifies the WeMo device

# WeMo LED Light

For LED Lights paired to a WeMo Link bridge, please use the following configuration parameter:

Configuration Parameter Description
deviceID The device ID identifies one certain WeMo light

# WeMo Insight Switch

The WeMo Insight Switch has some additional parameters for controlling the behavior for channel currentPower. This channel reports the current power consumption in Watt. The internal theoretical accuracy is 5 mW, i.e. three decimals. These raw values are reported with high frequency, often multiple updates can occur within a single second. For example, the sequence of 40.440 W, 40.500 W and 40.485 W would result in the channel being updated with values rounded to nearest integer, respectively 40 W, 41 W and 40 W.

When persisting items linked to this channel, this can result in a significant amount of data being stored. To mitigate this issue, a sliding window with a moving average calculation has been introduced. This window is defined with a one minute default period. This is combined with a delta trigger value, which is defaulted to 1 W. This means that the channel is only updated when one of the following conditions are met:

  1. The rounded value received is equal to the rounded average for the past minute, i.e. this value has stabilized. This introduces a delay for very small changes in consumption, but on the other hand it prevents excessive logging and persistence caused by temporary small changes and rounding.
  2. The rounded value received is more than 1 W from the previous value. So when changes are happening fast, the channel will also be updated fast.
Configuration Parameter Description
udn The UDN identifies the WeMo Insight Switch
currentPowerSlidingSeconds Sliding window in seconds for which moving average power is calculated (0 = disabled)
currentPowerDeltaTrigger Delta triggering immediate channel update (in Watt)

The moving average calculation can be disabled by setting either currentPowerSlidingSeconds or currentPowerDeltaTrigger to 0. This will cause the channel to be updated the same way as in openHAB versions prior to 3.3.

# Channels

Devices support some of the following channels:

Channel Type Item Type Description Available on Thing
motionDetection Switch On if motion is detected, off otherwise. (Motion Sensor only) Motion
lastMotionDetected DateTime Date and Time when the last motion was detected. (Motion Sensor only) Motion
state Switch This channel controls the actual binary State of a Device or represents Motion Detection. All but Dimmer, Crockpot, Airpurifier and Humidifier
lastChangedAt DateTime Date and Time the device was last turned on or of. Insight
lastOnFor Number Time in seconds an Insight device was last turned on for. Insight
onToday Number Time in seconds an Insight device has been switched on today. Insight
onTotal Number Time in seconds an Insight device has been switched on totally. Insight
timespan Number Time in seconds over which onTotal applies. Typically 2 weeks except first used. Insight
averagePower Number:Power Average power consumption in Watts. Insight
currentPower Number:Power Current power consumption of an Insight device. 0 if switched off. Insight
currentPowerRaw Number:Power Current power consumption of an Insight device with full precision (5 mW accuracy, three decimals). 0 if switched off. Insight
energyToday Number:Energy Energy in Wh used today. Insight
energyTotal Number:Energy Energy in Wh used in total. Insight
standbyLimit Number:Power Minimum energy draw in W to register device as switched on (default 8W, configurable via WeMo App). Insight
onStandBy Switch Read-only indication of whether or not the device plugged in to the insight switch is drawing more than the standby limit. Insight
relay Switch Switches the integrated relay contact close/open Maker
sensor Switch Shows the state of the integrated sensor Maker
coffeeMode String Operation mode of a WeMo Coffee Maker CoffeeMaker
modeTime Number Current amount of time, in minutes, that the Coffee Maker has been in the current mode CoffeeMaker
timeRemaining Number Remaining brewing time of a WeMo Coffee Maker CoffeeMaker
waterLevelReached Switch Indicates if the WeMo Coffee Maker needs to be refilled CoffeeMaker
cleanAdvise Switch Indicates if a WeMo Coffee Maker needs to be cleaned CoffeeMaker
filterAdvise Switch Indicates if a WeMo Coffee Maker needs to have the filter changed CoffeeMaker
brewed DateTime Date/time the coffee maker last completed brewing coffee CoffeeMaker
lastCleaned DateTime Date/time the coffee maker last completed cleaning CoffeeMaker
brightness Number Brightness of a WeMo LED od Dimmwer. LED, DimmerSwitch
faderCountDownTime Number Dimmer fading duration time in minutes DimmerSwitch
faderEnabled Switch Switch the fader ON/OFF DimmerSwitch
timerStart Switch Switch the fading timer ON/OFF DimmerSwitch
nightMode Switch Switch the nightMode ON/OFF DimmerSwitch
startTime DateTime Time when the nightMode starts DimmerSwitch
endTime DateTime Time when the nightMode ends DimmerSwitch
nightModeBrightness Number Brightness used in nightMode DimmerSwitch
cookMode String Shows the operation mode of a WeMo Crockpot (OFF, WARM, LOW, HIGH Crockpot
warmCookTime Number Shows the timer settings for warm cooking mode Crockpot
lowCookTime Number Shows the timer settings for low cooking mode Crockpot
highCookTime Number Shows the timer settings for high cooking mode Crockpot
cookedTime Number Shows the elapsed cooking time Crockpot
purifierMode String Runmode of Air Purifier (OFF, LOW, MED, HIGH, AUTO) Air Purifier
airQuality String Air quality (POOR, MODERATE, GOOD) Air Purifier
ionizer Switch Indicates whether the ionizer is switched ON or OFF Air Purifier
filterLife Number Indicates the remaining filter lifetime in Percent Air Purifier, Humidifier
expiredFilterTime Number Indicates whether the filter lifetime has expired or not Air Purifier, Humidifier
filterPresent Switch Indicates the presence of an air filter Air Purifier
humidifierMode String Runmode of Humidifier (OFF, MIN, LOW, MED, HIGH, MAX) Humidifier
desiredHumidity Number Shows desired humidity in Percent Humidifier
currentHumidity Number Shows current humidity in Percent Humidifier
heaterMode String Runmode of Heater (OFF, FROSTPROTECT, HIGH, LOW, ECO) Heater
currentTemp Number Shows current temperature Heater
targetTemp Number Shows target temperature Heater
autoOffTime DateTime Time when the heater switches off Heater
heatingRemaining Number Shows the remaining heating time Heater

# Full Example

demo.things:

wemo:socket:Switch1     "DemoSwitch"   @ "Office"   [udn="Socket-1_0-221242K11xxxxx"]
wemo:motion:Sensor1     "MotionSensor" @ "Entrance" [udn="Sensor-1_0-221337L11xxxxx"]
wemo:insight:Insight1   "Insight"      @ "Attic"    [udn="Insight-1_0-xxxxxxxxxxxxxx", currentPowerSlidingSeconds=120, currentPowerDeltaTrigger=2]

Bridge wemo:bridge:Bridge-1_0-231445B010xxxx [udn="Bridge-1_0-231445B010xxxx"] {
MZ100 94103EA2B278xxxx  "DemoLight1"   @ "Living"   [ deviceID="94103EA2B278xxxx" ]
MZ100 94103EA2B278xxxx  "DemoLoght2"   @ "Living"   [ deviceID="94103EA2B278xxxx" ]
}

demo.items:

// Switch
Switch DemoSwitch            { channel="wemo:socket:Switch1:state" }

// Lightswitch
Switch LightSwitch           { channel="wemo:lightswitch:Lightswitch1:state" }

// Motion
Switch MotionSensor          { channel="wemo:Motion:Sensor1:motionDetection" }
DateTime MotionDetected      { channel="wemo:Motion:Sensor1:lastMotionDetected" }

// Insight
Switch InsightSwitch         { channel="wemo:insight:Insight-1_0-xxxxxxxxxxxxxx:state" }
Number:Power InsightPower    { channel="wemo:insight:Insight-1_0-xxxxxxxxxxxxxx:currentPower" }
Number InsightLastOn         { channel="wemo:insight:Insight-1_0-xxxxxxxxxxxxxx:lastOnFor" }
Number InsightToday          { channel="wemo:insight:Insight-1_0-xxxxxxxxxxxxxx:onToday" }
Number InsightTotal          { channel="wemo:insight:Insight-1_0-xxxxxxxxxxxxxx:onTotal" }

// LED Bulbs
Switch LED1                  { channel="wemo:MZ100:Bridge-1_0-231445B010xxxx:94103EA2B278xxxx:brightness" }
Dimmer dLED1                 { channel="wemo:MZ100:Bridge-1_0-231445B010xxxx:94103EA2B278xxxx:brightness" }
Switch LED2                  { channel="wemo:MZ100:Bridge-1_0-231445B010xxxx:94103EA2B278xxxx:brightness" }
Dimmer dLED2                 { channel="wemo:MZ100:Bridge-1_0-231445B010xxxx:94103EA2B278xxxx:brightness" }

// DimmerSwitch
Switch DimmerSwitch          { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:brightness" }
Dimmer dDimmerSwitch         { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:brightness" }
Number DimmerSwitchFaderTime { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:faderCountDownTime" }
Switch DimmerSwitchFaderOn   { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:faderEnabled" }
Switch DimmerSwitchTimer     { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:timerStart" }
Switch DimmerNightMode       { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:nightMode" }
Dimmer NightModeBrightness   { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:nightModeBrightness" }
DateTime NightModeStart      { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:startTime" }
DateTime NightModeEnd        { channel="wemo:dimmer:Dimmer-1_0-231445B010xxxx:endTime" }

// CoffeMaker
Switch CoffeSwitch          { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:state" }
String CoffeMode            { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:coffeeMode" }
Number CoffeModeTime        { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:modeTime" }
Number CoffeModeRemaining   { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:timeRemaining" }
Switch CoffeWater           { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:waterLevelReached" }
Switch CoffeCleanAdvicse    { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:cleanAdvise" }
Switch CoffeFilterAdvicse   { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:filterAdvise" }
DateTime CoffeLastCleaned   { channel="wemo:coffee:Coffee-1_0-231445B010xxxx:lastCleaned" }

// Crockpot
String crockpotMode         { channel="wemo:crockpot:Crockpot-1_0-231445B010xxxx:cookMode" }
Number warmCookTime         { channel="wemo:crockpot:Crockpot-1_0-231445B010xxxx:warmCookTime" }
Number lowCookTime          { channel="wemo:crockpot:Crockpot-1_0-231445B010xxxx:lowCookTime" }
Number highCookTime         { channel="wemo:crockpot:Crockpot-1_0-231445B010xxxx:highCookTime" }
Number cookedTime           { channel="wemo:crockpot:Crockpot-1_0-231445B010xxxx:cookedTime" }

// Air Purifier
String airMode              { channel="wemo:purifier:AirPurifier-1_0-231445B010xxxx:airMode" }
String airQuality           { channel="wemo:purifier:AirPurifier-1_0-231445B010xxxx:airQuality" }
Switch ionizer              { channel="wemo:purifier:AirPurifier-1_0-231445B010xxxx:ionizer" }
Number filterLife           { channel="wemo:purifier:AirPurifier-1_0-231445B010xxxx:filterLife" }
Switch filterExpired        { channel="wemo:purifier:AirPurifier-1_0-231445B010xxxx:filterExpired" }
Switch filterPresent        { channel="wemo:purifier:AirPurifier-1_0-231445B010xxxx:filterPresent" }

// Humidifier
String humidifierMode       { channel="wemo:humidifier:Humidifier-1_0-231445B010xxxx:humidifierMode" }
Number desiredHumidity      { channel="wemo:humidifier:Humidifier-1_0-231445B010xxxx:desiredHumidity" }
Number currentHumidity      { channel="wemo:humidifier:Humidifier-1_0-231445B010xxxx:currentHumidity" }
Number filterLife           { channel="wemo:humidifier:Humidifier-1_0-231445B010xxxx:filterLife" }
Switch filterExpired        { channel="wemo:humidifier:Humidifier-1_0-231445B010xxxx:filterExpired" }
String waterLevel           { channel="wemo:humidifier:Humidifier-1_0-231445B010xxxx:waterLevel" }

// Heater
String heaterMode           { channel="wemo:heater:HeaterB-1_0-231445B010xxxx:heaterMode" }
Number currentTemp          { channel="wemo:heater:HeaterB-1_0-231445B010xxxx:currentTemp" }
Number targetTemp           { channel="wemo:heater:HeaterB-1_0-231445B010xxxx:targetTemp" }
DateTime autoOffTime        { channel="wemo:heater:HeaterB-1_0-231445B010xxxx:autoOffTime" }
String heaterRemaining      { channel="wemo:heater:HeaterB-1_0-231445B010xxxx:heaterRemaining" }

demo.sitemap:

sitemap demo label="Main Menu"
{
    Frame {
       // Switch
       Switch item=DemoSwitch

       // LightSwitch
       Switch item=LightSwitch

       // Motion
       Switch item=MotionSensor
       Text item=MotionSensorLastChanged icon="clock"

       // Insight
       Switch item=InsightSwitch
       Number item=InsightPower
       Number item=InsightLastOn
       Number item=InsightToday
       Number item=InsightTotal

       // LED Bulb
       Switch item=LED1
       Slider item=dLED1
       Switch item=LED2
       Slider item=dLED2

       //DimmerSwitch
       Switch item=DimmerSwitch
       Slider item=dDimmerSwitch
       Number item=DimmerSwitchFaderTime
       Switch item=DimmerSwitchFaderOn
       Switch item=DimmerSwitchTimer
       Switch item=DimmerNightMode
       Slider item=NightModeBrightness
       Text item=NightModeStart
       Text item=NightModeEnd

       // CoffeMaker
       Switch item=CoffeSwitch
       Text item=CoffeMode
       Number item=CoffeModeTime
       Number item=CoffeModeRemaining
       Switch item=CoffeWater
       Switch item=CoffeCleanAdvicse
       Switch item=CoffeFilterAdvicse
       DateTime item=CoffeLastCleaned

       // CrockPot
       Switch item=crockpotMode label="Cooking Mode" mappings=[OFF="OFF", WARM="Warm", LOW="Low", HIGH="High"]
       Number item=warmCookTime
       Number item=lowCookTime
       Number item=highCookTime
       Number item=cookedTime

       // Air Purifier
       Switch item=airMode label="Cooking Mode" mappings=[OFF="OFF", LOW="Low", MED="Med", HIGH="High", AUTO="Auto"]
       Text item=airQuality
       Switch item=ionizer
       Number item=filterLive
       Switch item=filterExpired
       Switch item=filterPresent

       // Humidifier
       Switch item=humidifierMode label="Humidity Mode" mappings=[OFF="OFF", MIN="Min", LOW="Low", MED="Med", HIGH="High", MAX="Max"]
       Number item=desiredHumidity
       Number item=currentHumidity
       Number item=filterLive
       Switch item=filterExpired

       // Heater
       Switch item=heaterMode label="Heater Mode" mappings=[OFF="OFF", FROSTPROTECT="FrostProtect", HIGH="High", LOW="Low", ECO="Eco"]
       Number item=currentTemp
       Setpoint item=targetTemp
       Text item=autoOffTime
       Number item=heaterRemaining
    }
}