77 lines
2.5 KiB
Plaintext
77 lines
2.5 KiB
Plaintext
"""
|
|
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 ooff
|
|
|
|
* 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))
|