Luup Variables

From MiOS
(Difference between revisions)
Jump to: navigation, search
(On/Off Switch: Table-ize the variable listings so it's easier to see.)
(Dimmable Light: Table-ize the display of variables)
Line 33: Line 33:
 
==Dimmable Light==
 
==Dimmable Light==
  
Device category: 2, UPnP device id: urn:schemas-upnp-org:device:DimmableLight:1
+
===Device category===
 +
Device category 2,  
 +
UPnP device id: ''urn:schemas-upnp-org:device:DimmableLight:1''
  
Variables:
+
===Variables===
 +
Dimmable lights contain the same variable of an On/Off Switch to indicate the current on/off value, and, if it's on, ''LoadLevelStatus'' indicates the dim level.
  
Dimmable lights contain the same variable of an On/Off Switch to indicate the current on/off value, and, if it's on, LoadLevelStatus indicates the dim level.
+
{|  width="85%" cellpadding="10%" cellspacing="0" border="1"
 
+
|+
Service: ''urn:upnp-org:serviceId:Dimming1'' Variable name: ''LoadLevelStatus''
+
! align="left"|Service!! align="left"|Variable!! align="left"|Description
 
+
|-
If the device is off (see On/Off switch) this value indicates the last known dim level, if it's on, this value is the actual dim level.  The value is a number from 0-100 indicating a percentage of brightness.
+
|''urn:upnp-org:serviceId:Dimming1''||''LoadLevelStatus''||If the device is off (see On/Off switch) this value indicates the last known dim level, if it's on, this value is the actual dim level.  The value is a number from ''0-100'' indicating a percentage of brightness.
 +
|}
  
 
===Examples===
 
===Examples===

Revision as of 05:12, 11 February 2012

The "Variables" for a device tell you it's current state, such as if it's on or off, what temperature it has, and so on. Variables are given a name and a service ID, which is defined by the UPnP forum. You can use this service ID/variable name pair to get the state of a device in the Luup engine by using the function luup.variable_get, as documented in Luup_Lua_extensions. You can also see the current value of a device's variables by going into Vera's setup page, click 'Devices', click + next to the device, then click 'Advanced'. The name of every variable for the device is shown along with the current value, and if you move your mouse over the variable name, you will the corresponding service ID in a popup window.

Contents

On/Off Switch

Device category

Device Category 3, UPnP device id: urn:schemas-upnp-org:device:BinaryLight:1

Variables

Service Variable Description
urn:upnp-org:serviceId:SwitchPower1 Status If the device is on, the value is 1, otherwise it's 0.

Examples

  • Getting whether the Switch/Light is on or off
    local switchOnOff = luup.variable_get("urn:upnp-org:serviceId:SwitchPower1", "Status", 37)
    if (switchOnOff == "1") then
      -- Switch is on
      ...
    end if
  • Request that the Switch be turned on. This will, eventually, set the variable after the device has responded to the request
    luup.call_action("urn:upnp-org:serviceId:SwitchPower1", "SetTarget", {newTargetValue = "1"}, 37)

Dimmable Light

Device category

Device category 2, UPnP device id: urn:schemas-upnp-org:device:DimmableLight:1

Variables

Dimmable lights contain the same variable of an On/Off Switch to indicate the current on/off value, and, if it's on, LoadLevelStatus indicates the dim level.

Service Variable Description
urn:upnp-org:serviceId:Dimming1 LoadLevelStatus If the device is off (see On/Off switch) this value indicates the last known dim level, if it's on, this value is the actual dim level. The value is a number from 0-100 indicating a percentage of brightness.

Examples

  • Getting the current light/load level
    local lightLevel = luup.variable_get("urn:upnp-org:serviceId:Dimming1", "LoadLevelStatus", 37)
  • Request that the Dimmer be set to 50% light/load level. This will, eventually, set the variable after the device has responded to the request
    luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget", {newLoadlevelTarget = "50"}, 19)

Thermostat

Device category

Device category 5, UPnP device id: urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1

Variables

Service Variable Description
urn:upnp-org:serviceId:HVAC_UserOperatingMode1 ModeStatus This indicates the current operating mode and will be one of the following basic values:
  • Off
  • HeatOn
  • CoolOn
  • AutoChangeOver

In addition to the basic modes, some thermostats may also support the following modes:

  • InDeadBand
  • AuxHeatOn
  • EconomyHeatOn
  • EmergencyHeatOn
  • AuxCoolOn
  • EconomyCoolOn
  • BuildingProtection
  • EnergySavingsHeating
  • EnergySavingsCooling
urn:upnp-org:serviceId:TemperatureSetpoint1_Heat CurrentSetpoint This indicates the current heat set point.
urn:upnp-org:serviceId:TemperatureSetpoint1_Cool CurrentSetpoint This indicatea the current cool set point.
urn:upnp-org:serviceId:TemperatureSensor1 CurrentTemperature This indicates the current ambient temperature.

Examples

  • Getting the current temperature
    local outsideTemp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 5)

Other Devices or Services

You can find other variables by looking at code. For example, looking at the code for the LUUP Weather plugin, we can see where the "serviceID" for Current Conditions is urn:micasaverde-com:serviceId:Weather1 (taken from the XML file):

  -- Store the current Condition (eg. "Sunny")
  luup.variable_set("urn:upnp-micasaverde-com:serviceId:Weather1", "Condition",
                    condition, PARENT_DEVICE)

From this we can get the Current Weather Condition using
Service: urn:upnp-micasaverde-com:serviceId:Weather1 Variable name: Condition

All we have to add is the device ID that Vera creates. In my case #37

Weather Plugin

For my testing, I wanted to create a Luup scene that will turn on a light when the Condition is Showers. So I create a new Scene and add the following to the Luup Scene:
  local lul_tmp = luup.variable_get("urn:upnp-micasaverde-com:serviceId:Weather1", "Condition", 37)
  if (lul_tmp == "Showers") then
    luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget", {newLoadlevelTarget = "50"}, 19)
  else
    luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget", {newLoadlevelTarget = "0"}, 19)
  end

To break this down, line 1 gets the variable Condition from the serviceID urn:upnp-micasaverde-com:serviceId:Weather1 on Device #37 Line 2 compares the returned variable to Showers If the condition is true then it calls line 3 which turns on the lamp (Device #19 at 50% level) Otherwise, it turns the lamp Off

What good is this? Nothing past testing but it would be a good method to close the garage door if it is raining.

  • Be sure to set a timer to poll this scene every xx minutes or hours. Please edit if you know of a way to have it automatically poll.
Personal tools