j'utilise un programme python pour l'acquisition de données de mon compteur linky, mais il tourne en boucle et il bug de temps en temps.
Je souhaiterai le faire fonctionner comme un script python c'est a dire contrôlé par domoticz de façon régulière genre toutes les minutes comme un script lua.
est ce le cas aussi pour les scripts pythons script_device_monscript.py ou script_time_mon script.py. j'avoue que je ne comprend pas très bien les explications qui sont données dans "évènements".
est ce que quelqu'un peut me donner un exemple d'un script python qui tourne dans domoticz?"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
TODO: wiki page
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 domoticz
import random
print ("This will only show up in the shell where you start domoticz");
domoticz.log("Hi Domoticz!")
domoticz.log("The device that got changed is: ", changed_device_name)
# changed_device.name is the same string
for name, device in domoticz.devices.items():
domoticz.log("device", name, "is", "on" if device.is_on() else "off")
if device.is_off():
domoticz.log("could turn it on in 3 seconds")
#device.on(after=3)
for name, value in user_variables.items():
domoticz.log("var", name, "has value", value)