dzVents - decteur présence + prise connectée

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 <\>.
Répondre
Kenneth
Messages : 6
Inscription : 09 oct. 2024, 14:51

dzVents - decteur présence + prise connectée

Message par Kenneth »

Bonjour,

Je débute sur l'utilisation du scripting dans Domoticz, un coup de main serait le bienvenue !

J'ai une simple configuration avec, dans une pièce
- un capteur de présence (sonoff)
- une prise électrique en ZigBee (dont je n'ai pas la marque sous la main)
Sur la prise est branchée une petite lumière, l'idée est bien évidemment d'allumer la prise (et donc la lumière dessus) si qqn entre dans la pièce

J'avais tenté dans le passé un simple scénario dans Domoticz qui fonctionnait bien, en revanche je n'ai pas trouvé de possibilité de gérer "mon" planning - à savoir, que cette action ne fonctionne que de telle heure à telle heure

Les evenements peuvent répondre à mon besoin, en revanche je bloque !

De ce que j'ai lu dans le wiki, il faut d'abord récupérer l'état de la prise afin de gérer "tous les cas de figure"

L'idx 48 est mon détecteur de mouvements
L'idx 46 est ma prise électrique ZigBee

Code : Tout sélectionner

return {
	on = { 
	    devices = {48}, 
	    timer = {'at 22:30-08:00'},
        execute = function(domoticz, switch)
        if domoticz.devices(46).active then     
            domoticz.devices(46).switchOff().afterMin(5)
            domoticz.log ('light is on - stay on for 5mn')
        else
            domoticz.devices(46).switchOn().forMin(5)
            domoticz.log ('light is off - turn it on for 5mn')
		end
    end
    }  
}
Le code me parait pourtant simple et logique...
La seule ligne de code dans mon log me confirme bien que mon capteur de présence est passé sur "on"
Je n'ai pas le log "light is on/light is off"

Code : Tout sélectionner

2024-10-09 02:37:33.764  ZiGate: UpdateDevice - (MotionSensor_Toilettes) 1:On
Toute suggestion est la bienvenue !

Merci !
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: dzVents - decteur présence + prise connectée

Message par Flying Domotic »

Essayer :

Code : Tout sélectionner

return {
    on = { 
        devices = {48}, 
        execute = function(domoticz, switch)
        -- Si on est entre 22h30 et 08:00
        if Time().matchesRule('at 22:30-08:00') then
            -- Index (ou nom) de la lampe
            light = 46
            -- Si le détecteur détecte quelque chose
            if switch.active then
                -- On vide les commandes temporisées
                domoticz.devices(light).cancelQueuedCommands()
                -- On allume la lampe pour 5 mn
                domoticz.devices(light).switchOn().forMin(5)
            end
        end
    end
    }  
}

Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: dzVents - decteur présence + prise connectée

Message par Keros »

Bonjour Kenneth et bienvenu sur le forum ;)

Je te propose de regarder le wiki de DomoticZ sur le DzVents. J'en parle aussi dans les petits guides que j'ai rédigé dans ma présentation (lien dans ma signature).

Tu peux régler ton trigger pour se déclencher toutes les minutes sur une plage horraire, ce qui évite d'avoir à vérifier entre Time().matchesRule('at 22:30-08:00').

En DzVents, je te conseil de remplacer swiich par item dans execute = function(domoticz, switch). La deuxième variable de la fonction correspond au trigger (déclencheur) du script. Ce trigger peut être un objet ou bien baser sur du temps. En utilisant item, tu peux utiliser un nom générique quelque soit le type de déclencheur. De plus, dans tous tes scripts, le item correspondra toujours au trigger.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: dzVents - decteur présence + prise connectée

Message par Flying Domotic »

Keros a écrit : 10 oct. 2024, 12:32 Tu peux régler ton trigger pour se déclencher toutes les minutes sur une plage horraire, ce qui évite d'avoir à vérifier entre Time().matchesRule('at 22:30-08:00').
Comment écrirais-tu le code pour que la lampe s'allume dès le passage devant le détecteur, et pas une trentaine de seconde après, statistiquement ?
Kenneth
Messages : 6
Inscription : 09 oct. 2024, 14:51

Re: dzVents - decteur présence + prise connectée

Message par Kenneth »

Merci pour vos retours :)

C'est bien ce que j'avais lu dans le wiki, a savoir gérer tous les états de la prise
Histoire que si je bouge apres 30s et que le capteur me détecte, qu'il n'enregistre pas que l'état actuel est sur "On" donc qu'il faut remettre la prise sur "On" une fois le timer de X minutes écoulées

@Flying domotic, dans ton code, c'est ce qui est géré par le bloc suivant ?

Code : Tout sélectionner

domoticz.devices(light).cancelQueuedCommands()
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: dzVents - decteur présence + prise connectée

Message par Keros »

@Flying domotic, j'ai lu trop vite. Je croyais que ta fonction recréait un trigger time, mais non :oops:

Personnellement, je créé un widget virtuel dans lequel je mets mon planning et je vérifie que les deux dispositifs sont à On pour lancer mon action.

@Kenneth .cancelQueuedCommands() permet de faire un reset sur toutes les commandes pendant X temps ou dans X temps.
Si tu fais un domoticz.devices(light).switchOn().forMin(5) puis un autre 2 minutes après, le deuxième ne va pas annuler le premier : ta lampe s'éteindra au bout de 5 minutes et non 7. Mais en réinitialisant la valeur à chaque fois avant, tu t'assures qu'il y en est qu'une seule qui soit active.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: dzVents - decteur présence + prise connectée

Message par Flying Domotic »

Keros a écrit : 10 oct. 2024, 20:56 Personnellement, je créé un widget virtuel dans lequel je mets mon planning et je vérifie que les deux dispositifs sont à On pour lancer mon action.
J'ai eu parfois des soucis avec les plannings, qui ne changent d'état que si Domoticz est actif au moment du changement. J'ai trouvé un plugin censé remettre tout d'équerre, mais qui ne gère pas tous les types de plannings.
Du coup, je ne les utilise que pour les thermostats, et je corrige à la main si Domoticz plante au mauvais moment (mais ça fait un gros moment que ça n'est pas arrivé ;-)
Kenneth
Messages : 6
Inscription : 09 oct. 2024, 14:51

Re: dzVents - decteur présence + prise connectée

Message par Kenneth »

Hello,
Flying Domotic a écrit : 10 oct. 2024, 01:24 Essayer :

Code : Tout sélectionner

return {
    on = { 
        devices = {48}, 
        execute = function(domoticz, switch)
        -- Si on est entre 22h30 et 08:00
        if Time().matchesRule('at 22:30-08:00') then
            -- Index (ou nom) de la lampe
            light = 46
            -- Si le détecteur détecte quelque chose
            if switch.active then
                -- On vide les commandes temporisées
                domoticz.devices(light).cancelQueuedCommands()
                -- On allume la lampe pour 5 mn
                domoticz.devices(light).switchOn().forMin(5)
            end
        end
    end
    }  
}

Aucune différence, la prise ne s'allume toujours pas (et la lampe non plus, et madame se plaint :))
Dans le doute, j'ai re-crée mon ancien scénario via le menu de Sénarios, et ô miracle, la prise s'allume correctement (histoire d'éliminer ce facteur)
En revanche, pas de planning "horaires de nuit" possible :(
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: dzVents - decteur présence + prise connectée

Message par Flying Domotic »

On est bien sûr que le détecteur est l'idx 48, et la lampe 46 ? Si c'est l'inverse, ça va moins bien marcher :lol:
Je suis un peu trop loin de mon Domoticz pour tester en vrai, mais le script semble bon ...
Sinon, on peut aussi donner le nom du détecteur et celui de la lampe au lieu des idx, ce qui aide a la compréhension.
Ajouter un

Code : Tout sélectionner

print("Activé par le détecteur")
avant juste après la ligne

Code : Tout sélectionner

execute =
histoire de voir si le script s'exécute bien.
Dernière modification par Keros le 13 oct. 2024, 23:25, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: dzVents - decteur présence + prise connectée

Message par Neutrino »

Pour éviter le problème de mauvais IDX, pourquoi ne pas utiliser le nom des dispositifs ?
DzVents est très bon pour ça.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre