Variables
The variable class represents an Indigo variable.
Class Properties
Property | Type | Description |
id | integer | the unique id of the variable, assigned on creation by IndigoServer |
folderId | integer | the unique id of the folder this variable is in (0 if it's not in a folder) - use moveToFolder() method to change |
name | string | the name of the variable - no two variable can have the same name |
readOnly | string | is the variable read only - currently only the isDaylight variable is read only |
remoteDisplay | boolean | should this variable be displayed in remote clients (IWS, Indigo Touch, etc) |
value | string | the value of the variable |
Class Method
The Variable class has a special method, getValue(TYPE, default=VALUE)
, that you can call which will retrieve the variable value as the specified Python class. There are a couple of advantages to using this method: first, it won't throw an exception but will always return a value; second, the Indigo server will do the conversion in the exact same way that it does type conversions when using variables in triggers and conditions. You can also optionally specify a default value if the value can't be successfully converted into the specified type. Here's a list of the valid types you can specify and what the default is if not specified:
Type Literal | Type Returned | Default |
bool | Boolean | True will be returned if the value is one of these: “true”, “on”, “yes”, and “1”. False will be returned if the value is one of these: “false”, “off”, “no”, and “0”. If no default value is specified and the value can't be successfully converted, the method will return False. |
int | Integer | An integer object will be returned if the value is an integer number or a float/decimal. In the latter case, the number will be rounded to the nearest integer. If no default value is specified and the value can't be converted, the method will return 0 |
float | Float | A float object will be returned if the value is a float/decimal or an integer. If no default value is specified and the value can't be converted, the method will return 0.0 |
Remember that accessing the value
property of a variable object (var.value
) will return a string object so you don't need a conversion for that.
Class Method Examples
# Get a variable
var = indigo.variables[123456]
# Getting the boolean value
intValue = var.getValue(bool) # False if it can't be converted
intValue = var.getValue(int, default=True) # True if it can't be converted
# Getting the integer value
intValue = var.getValue(int) # 0 if it can't be converted
intValue = var.getValue(int, default=10) # 10 if it can't be converted
# Getting the float value
intValue = var.getValue(float) # 0 if it can't be converted
intValue = var.getValue(float, default=98.6) # 98.6 if it can't be converted
Commands (indigo.variable.*)
Create
Create a variable. This method returns a copy of the newly created variable.
Command Syntax Examples |
indigo.variable.create("VariableName", value="Var Value", folder=843920)
|
Parameters |
Parameter | Required | Type | Description |
folder | No | integer | id or instance of the folder in which to put the newly created device - defaults to 0 (no folder) |
name | Yes | string | the name of the variable |
value | No | string | the value of the variable |
Delete
Delete the specified folder.
Command Syntax Examples |
indigo.variable.delete(123)
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the variable to delete |
Duplicate
Duplicate the specified variable. This method returns a copy of the new variable.
Command Syntax Examples |
indigo.variable.duplicate(123, duplicateName="NewName")
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the variable to duplicate |
duplicateName | No | string | name for the newly duplicated variable |
Move To Folder
Use this command to move the variable to a different folder.
Command Syntax Examples |
indigo.variable.moveToFolder(123, value=987)
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the variable |
value | Yes | integer | id or instance of the folder to move the variable to |
Set Remote Display
Use this command to set the remote display flag for the folder.
Command Syntax Examples |
indigo.variable.displayInRemoteUI(123, value=True)
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the variable |
value | Yes | boolean | True to display the variable on remote user interfaces or False to hide it |
Update Value
Use this command to set the value of a variable without having to get a local copy first.
Command Syntax Examples |
indigo.variable.updateValue(123, value="New Value")
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the variable |
value | Yes | string | the new value for the variable |
Examples
Python | AppleScript |
# Create a new variable
newVar = indigo.variable.create("fooName", "fooMonster")
# Updating value via command space function:
indigo.variable.updateValue(newVar, "asleep789")
newVar.refreshFromServer() # refresh needed to update local's .value
# changing name property
newVar.name = "goodName"
newVar.replaceOnServer()
newVar.name = "bad name" # should throw because of space character
# changing name and values properties:
newVar.name = "goodName2"
newVar.value = "searchingForWaldo"
newVar.replaceOnServer()
indigo.variable.delete(newVar)
# Getting a variable using it's ID
someVar = indigo.variables[123]
# Getting a variable using it's name
someVar = indigo.variables["MyVarName"]
| -- Create a new variable
set newVar to make new variable with properties {name:"fooName", value:"fooMonster"}
-- Update value
set value of newVar to "asleep789"
-- Changing name property
set name of newVar to "goodName"
set newVar to variable "goodName" -- when the name changes, you have to get a fresh reference
set name of newVar to "bad name" -- should error because of space character
-- Changing name and values properties
set name of newVar to "goodName2"
set newVar to variable "goodName2" -- when the name changes, you have to get a fresh reference
set value of newVar to "searchingForWaldo"
delete variable "goodName2"
# You can't get a variable using it's ID in AppleScript
# Getting a variable using it's name
set someVar to variable named "MyVarName"
|