Démarrage plugin avec un switch on/off

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
jfs
Messages : 4
Inscription : 28 sept. 2018, 12:16

Démarrage plugin avec un switch on/off

Message 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
higgins91
Messages : 669
Inscription : 17 nov. 2016, 11:06

Re: Démarrage plugin avec un switch on/off

Message 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.
Dz version : 2024.7
Rpi 4 avec dongle téléinfo, GPIO pour le moment !
jfs
Messages : 4
Inscription : 28 sept. 2018, 12:16

Re: Démarrage plugin avec un switch on/off

Message 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 ...
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Démarrage plugin avec un switch on/off

Message par boum »

Dans Action On/Off, en utilisant l'API json

Cf. https://www.domoticz.com/wiki/Domoticz_ ... e_hardware
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
jfs
Messages : 4
Inscription : 28 sept. 2018, 12:16

Re: Démarrage plugin avec un switch on/off

Message 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 ?
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Démarrage plugin avec un switch on/off

Message 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&param=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.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Répondre