Page 1 sur 1
Démarrage plugin avec un switch on/off
Publié : 20 janv. 2020, 12:08
par jfs
Bonjour,
Je voudrais pouvoir démarrer (et arrêter) un plugin python par une action sur un device switch ou autre.
Le but est d'activer ce plugin (très bavard dans le log ...) uniquement lorsqu'il est utilisé. il s'agit du suivi de mon robot tondeuse dans le jardin. Est-ce possible ?
Merci d'avance.
jfs
Re: Démarrage plugin avec un switch on/off
Publié : 20 janv. 2020, 13:15
par higgins91
je pense que c'est faisable, tu crées un inter virtuel et dans ton script, première ligne, tu place une condition:
si inter = ON alors je fais le script, si = OFF alors je quitte de suite.
Re: Démarrage plugin avec un switch on/off
Publié : 20 janv. 2020, 18:38
par jfs
Oui, bien sur, c'est l'idée.
Mais comment activer un plugin à partir d'un script, car normalement le plugin est automatiquement géré par Domoticz selon qu'il est activé ou on (réglages, matériel, option activé), Je voudrais simplifier cette procédure par un bouton pour les utilisateurs qui n'accédent pas aux réglages.
Si qqu'un sait ...
Re: Démarrage plugin avec un switch on/off
Publié : 20 janv. 2020, 20:00
par boum
Re: Démarrage plugin avec un switch on/off
Publié : 23 janv. 2020, 20:01
par jfs
hum! Je n'ai pas réussi à l'utiliser car il faut connaitre tous les paramètres du hardware à activer/désactiver pour les passer en json.htm. et ça fout le bordel dans les hardwares (heureusement qu'il est indiqué de le faire sur un système de test !!!)
La solution pourrait être de récupérer par un script tous les paramètres du hardware et de créer une commande json.htm à rallonge avec tous paramètres et modifier "enabled".
Bien compliqué pour seulement passer le paramètre "enabled" de true à false. !!!
y-a-t-il plus simple que json.htm pour effectuer cette opération ?
Re: Démarrage plugin avec un switch on/off
Publié : 23 janv. 2020, 22:04
par boum
Il faut juste connaitre le nom, le type et l'index. Ça ne change jamais et peut-être renseigné dans le script.
Sinon, oui, on peut récupérer par une autre requête JSON, à condition de fournir le nom ou l'index.
À partir du nom, ça donnerait qq chose comme ça en dzVents :
Code : Tout sélectionner
local httpTriggerOn = 'HardwareSwitchON'
local httpTriggerOff = 'HardwareSwitchOFF'
return {
on = {
devices = {
'TestVirtual'
},
httpResponses = {
httpTriggerOn,
httpTriggerOff,
}
},
execute = function(domoticz, item)
local name = 'TestDummy'
if item.isDevice then
local trigger = item.active and httpTriggerOn or httpTriggerOff
local getHardwareURL = domoticz.settings['Domoticz url'] .. '/json.htm?type=hardware'
domoticz.openURL(
{
url = getHardwareURL,
method = "GET",
callback = trigger,
})
elseif item.isHTTPResponse then
if item.ok and item.isJSON then
local hardware
for _,hw in ipairs(item.json.result) do
if hw.Name == name then
hardware = hw
break
end
end
if not hardware then
domoticz.log('Harware ' .. name .. ' not found', domoticz.LOG_ERROR)
return
end
local enabled = (item.callback == httpTriggerOn) and 'true' or 'false'
if enabled == hardware.enabled then
-- le hardware est déjà dans l'état voulu
return
end
local htype = tostring(hardware.Type)
local idx = hardware.idx
local toggleURL = string.format('%s/json.htm?type=command¶m=updatehardware&htype=%s&name=%s&idx=%s&enabled=%s',
domoticz.settings['Domoticz url'],
htype,
name,
idx,
enabled)
domoticz.log(toggleURL, domoticz.LOG_DEBUG)
domoticz.openURL(toggleURL)
else
domoticz.log('There was a problem handling the request', domoticz.LOG_ERROR)
domoticz.log(item, domoticz.LOG_ERROR)
end
end
end
}
Tout pareil, à tester dans un environnement de test au préalable

Et non, je ne pense pas qu'il y a un autre moyen de désactiver un plugin/hardware.