Page 4 sur 5
Re: Boucle for qui ne fonctionne pas
Publié : 05 sept. 2022, 19:56
par boum
Dans ton test if, domoticz.devices() ne renverra jamais une chaine de caractères. Il manque le .state
Re: Boucle for qui ne fonctionne pas
Publié : 05 sept. 2022, 22:09
par david86
Ouaip, c'était sur que si ça ne marchait pas c'est qu'il y avait quelque chose de pas bon
C'est repris, bon j'ai avancé, j'ai réussi le fonctionnement du timer selon des critères inventés qui s'exécute donc toutes les minutes.
Affaire à suivre pour récupérer la valeur lastupdate, la comparer à des critères et actionner quelque chose (j'y suis arrivé, ça fonctionne aussi)
Maintenant à dire si inter=='on' et lastupdateminutes==30 alors envoi notification avec telle et telle valeur. Ca me semble ultra simple contrairement en lua où nous n'en voyons pas la fin... Selon mes connaissance ne lua en tout cas.
Est-ce que dans cette même condition je pourrai mettre :
si inter=='on' et lastupdateminute==30 ou lastupdateminute==120 ou lastupdateminute==600
alors envoi notification
Ca marcherait ? SI inter activé et à 30 minutes à 2H et 10H de fonctionnement je recevrai la notification ?
Et ça ne risque pas d'être trop lourd dans les log si toutes les minutes il exécute le script (action ou pas d'action à réaliser) le script de base s'exécutera toutes les minutes... non ?
Re: Boucle for qui ne fonctionne pas
Publié : 05 sept. 2022, 22:27
par Keros
Oui, tu peux très bien rajouter des conditions avec Ou.
Le script va se lancer toutes les minutes, ce n'est pas grave. Tu as une fonction pour rendre les logs moins parlants. Regarde les exemples sur le forum.
Re: Boucle for qui ne fonctionne pas
Publié : 05 sept. 2022, 22:52
par david86
Allez je croise les doigts, demain j’espère que ça sera opérationnel

merci
Pour les logs moins parlant, un mot clé pour la recherche ?

Re: Boucle for qui ne fonctionne pas
Publié : 05 sept. 2022, 23:00
par Keros
Tu peux aller dans la section Tuto et regarder les sujets tagger [DzVents]

Re: Boucle for qui ne fonctionne pas
Publié : 06 sept. 2022, 08:04
par david86
C'est parfait, le script avec envoi selon minutesAgo fonctionne à merveille, je vais le tester sur de grandes amplitudes sur toute la journée et ce soir je serai donc fixé si c'est vraiment au petits oignons, mais ça semble bien parti. Encore merci.
Juste pour info voici mon code :
Code : Tout sélectionner
return {
on =
{
timer = {'every 1 minutes'}
},
execute = function(domoticz, item)
local state = domoticz.devices('Pompe-piscine').state
local p = domoticz.devices('Pression-pompe').sValue
local cbe = domoticz.devices('Acidité').sValue
local rx = domoticz.devices('Redox 650-750mV').sValue
local update = domoticz.devices('Pompe-piscine').lastUpdate.minutesAgo
)
if (state =='On' and update == 30 or update == 120 or update == 480) then
domoticz.notify('Piscine', 'La pression est de '..p..' bars, Le pH est de : '..cbe..' Le Redox est de : '..rx..'mV Piscine update '..update..'', domoticz.PRIORITY_NORMAL,domoticz.SOUND_DEFAULT, "" , domoticz.NSS_PUSHOVER)
end
end
}
==> Maintenant, je vais chercher pour alléger les logs dorénavant. Étape suivante.
Re: Boucle for qui ne fonctionne pas
Publié : 06 sept. 2022, 12:00
par david86
Hum, peut-être trouvé quelque chose sur le forum...
Un certain Keros qui cherchait à faire de même

Dans paramètres/autres sélectionner "Errors + minimal execution info" et j'ai comme toi, toujours les logs Start internal script et finished DzVents, alors qu'un certain hestia ne les avait pas.
J'ai modifié mes paramètres sur Erreur + minimal execution only + rajouté cela ainsi
Code : Tout sélectionner
on =
{
--level = domoticz.LOG_ERROR,
timer = {
'every 1 minutes'
}
},
logging = { --rajouter ce paramètres logging permet de ne pas faire afficher les 'start script' et 'finish script' dans les log
level = domoticz.LOG_ERROR
},
Et par contre pour faire afficher les valeurs que l'on souhaite pour faire un genre de "print" pour débugger son programme :
domoticz.log('Valeur redox FORCE : '..rx, domoticz.LOG_FORCE)
Qu'elle va être ma prochaine question maintenant... Des idées pour continuer de t'embêter

merci encore.
Re: Boucle for qui ne fonctionne pas
Publié : 06 sept. 2022, 12:52
par Keros
Tant mieux que t'y sois arrivé
La plus grande limite en domotique après la budget, c'est l’imagination : les possibilités sont quasiment infinies.
Tu peux trouver de l'inspiration dans les Tutos et dans les présentations des membres
Bonne continuation.
Re: Boucle for qui ne fonctionne pas
Publié : 07 sept. 2022, 11:22
par david86
Bonjour Keros,
Et bien me revoilà, malheureusement, déjà...
Toute la journée le script a fonctionné correctement, se déclenchant au xx minutes comme demandé/programmé, mais dans la nuit j'ai reçu des notifications , par exemple à 22h alors que ma pompe est éteinte et ne correspond à aucune demande selon le critère lastupdate.minutesAgo, idem à 4h ce matin...
Une idée du phénomène qui a pu se produire ?
J'ai une idée par rapport au lastupdateminutesAgo et le critère du "on". Car finalement ma pompe s’éteint automatiquement à 20h, j'ai programmé une alerte 2h après une mise à jour du statut mais logiquement quand celui-ci est à ON
local state = domoticz.devices('Pompe-piscine').state
local update = domoticz.devices('Pompe-piscine').lastUpdate.minutesAgo
if (state =='On' and update == 30 or update == 120 or update == 480) then
Proposition 1 :
Finalement ne faudrait-il pas que j'écrive ainsi pour être sur de n'avoir les 2 conditions remplies à chaque fois :
if (state =='On' and update == 30 or state =='On' and update == 120 or state =='On' and update == 480) then
Proposition 2 :
De manière plus propre, il n'y aurait pas moyen d'écrire :
si pompe = on
et si update == 30 ou 120 ou 480
alors envoi notification ?
Merci,
Re: Boucle for qui ne fonctionne pas
Publié : 07 sept. 2022, 12:43
par Keros
Je pense que le souci vient des et et des ou qu'il faut grouper sinon il les prends dans l'ordre.
Essaye avec :
Code : Tout sélectionner
if (state =='On' and (update == 30 or update == 120 or update == 480)) then