Subversion Repositories rld.domoticz

Rev

Rev 1 | Blame | Compare with Previous | Last modification | View Log | Download

"""
Domoticz passes information to python scripts through global variables and the
domoticz python module

The global variables in the script are:
 * changed_device: the current device that changed (object of Device)
 * changed_device_name: name of current device (same as changed_device.name)
 * is_daytime: boolean, true when it is is daytime
 * is_nighttime: same for the night
 * sunrise_in_minutes: integer
 * sunset_in_minutes: integer
 * user_variables: dictionary from string to value

A Device has a number of attributes and methods
The attributes are:
 * id
 * name
 * type
 * sub_type
 * switch_type
 * n_value
 * n_value_string
 * s_value
 * last_update_string
 * last_update: datetime object

The methods are:
 * def last_update_was_ago(self, **kwargs):
    Arguments can be: days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]
 * def is_on(self):
    returns True when device is on
 * def is_off(self):
    returns True when device is off

 * def on(self, after=None, reflect=False):
    turns device on, after is optional and are the number of seconds after which
    to turn the device on.
    If reflect is True, a next call to is_on will return True, while normally
    domoticz will first have to go through possible script before turning it on
  def off(self, after=None, reflect=False):
    simular to on()

uservariables and uservariables_lastupdate are arrays for all user variables:
 uservariables['yourvariablename'] = 'Test Value'
 uservariables_lastupdate['yourvariablename'] = '2015-12-27 11:19:22'

other useful details are contained in the following global variables:
 * is_daytime
 * is_nighttime
 * sunrise_in_minutes
 * sunset_in_minutes
 * (TODO) security

Compare to Lua, instead of filling a commandArray, you change the status of a
device by calling device.on() or device.off()

TODO: setting variables

Calling Python's print function will not print to the domoticz console, see below
"""
import DomoticzEvents as DE

DE.Log("Python: Changed: " + DE.changed_device.Describe())

if DE.changed_device_name == "Test":
    if DE.Devices["Test_Target"].n_value_string == "On":
        DE.Command("Test_Target", "Off")

    if DE.Devices["Test_Target"].n_value_string == "Off":
        DE.Command("Test_Target", "On")

DE.Log("Python: Number of user_variables: " + str(len(DE.user_variables)))

# All user_variables are treated as strings, convert as necessary
for key, value in DE.user_variables.items():
    DE.Log("Python: User-variable '{0}' has value: {1}".format(key, value))