Page 1 sur 2

Contrôle pourcentage volet pour arrêt de commande

Publié : 06 janv. 2020, 23:40
par greglamouche
Bonjour à toute la communauté,

jusque là je m'en sortais avec du Blocky mais j'ai finalement voulu m'intéresser aux script Lua. J'ai essayé de me documenter un maximum pour éviter les questions redondantes ou stupides mais d'avance soyez indulgent car je suis vraiment nul en programmation.
J'essaie de contrôler le pourcentage d'ouverture d'un volet après un certain temps en seconde. Si un certain pourcentage n'est pas atteint en x secondes, je souhaiterais arrêter le processus.
Ce besoin est lié à un volet en fin de vie qui bloque parfois à l'ouverture. Du coup la commande continue en forçant sur le moteur au risque de le cramer si je ne suis pas là pour l'arrêter manuellement.

J'ai compris le principe du "commandarray" et du "devidechanged".
Visiblement la commande "FOR" implique des minutes : commandArray['MyOtherDeviceName4']='On FOR 10'
Et la commande "AFTER" des secondes : commandArray['Group:MyGroup']='Off AFTER 30'
mais pour de la commande et pas pour un état de module, ç'est là que j'ai du mal à comprendre!

Du coup j'essaie une commande du genre :
commandArray = {}
if (devicechanged['volet'] == 'Set Level 50 AFTER 10' then -- ça n'a pas l'air de lui plaire ce genre de commande :/
commandArray['volet]='?' -- Quelle commande pour arrêter le processus?
print('volet bloque')
end

Je sais que ça va paraître super simple pour beaucoup mais j'ai du mal à comprendre la logique de tout ça alors merci à ceux qui pourront m'aider :)
A bientôt.
Greg

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 07 janv. 2020, 15:22
par greglamouche
Bonjour,

Personne pour me répondre, un petit indice ? :)
Peut-être que le sujet a été trop de fois abordé mais ce n est pas faute d avoir cherché et essayé...
Merci d avance aux motivé(e)s qui voudront bien m'aider :)
Bonne journée.
Greg

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 07 janv. 2020, 20:19
par aleph0
Non, en fait c'est l'inverse...: Pas trivial du tout. Il n'y a rien de tout fait dans domoticz pour assurer le contrôle de marche ou la bonne exécution d'une commande, et encore moins pour gérer les erreurs d'exécution. Il faut tout se faire a la main en script. :-(

Dans ton cas, as tu un moyen de lire la position du volet ?

En fait, dis nous en plus sur ton volet : Tu le contrôle comment au niveau du matériel ?

Envoyé de mon moto g(6) en utilisant Tapatalk

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 14:50
par greglamouche
aleph0 a écrit : 07 janv. 2020, 20:19 Non, en fait c'est l'inverse...: Pas trivial du tout. Il n'y a rien de tout fait dans domoticz pour assurer le contrôle de marche ou la bonne exécution d'une commande, et encore moins pour gérer les erreurs d'exécution. Il faut tout se faire a la main en script. :-(

Dans ton cas, as tu un moyen de lire la position du volet ?

En fait, dis nous en plus sur ton volet : Tu le contrôle comment au niveau du matériel ?

Envoyé de mon moto g(6) en utilisant Tapatalk
Bonjour et merci de ton retour!

ves volets sont contrôlés en Zwave donc avec un retour d'état et un json me permet de voir le niveau d'ouverture.
Ils sont paramétrés en "Blinds percentage" et le tout est sur un raspi.

Du Dzvents peut éventuellement permettre de répondre à ce besoin mais j'ai encore moins de visibilité sur ce langage à défaut d'avoir investiguer dessus ;)

Qu'entends tu par "Il faut tout se faire a la main en script". Du .lua n'est pas déjà en script, tu sous entends en Pyhon peut être?

En continuant à chercher en parallèle, mes volets s'ouvrent en fonction du lever du soleil, l'alternative pourrait-elle être celle-ci selon toi :
SI Heure = Lever du soleil + x secondes AND Etat volet = x %
ALORS processus = ON (en gros, il continue de s'ouvrir jusqu'au bout)
SINON processus = OFF (et pour cet état, ça ne serait pas "descendre le volet" mais interrompre le processus)

qu'en penses tu?
Merci
Greg

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 15:06
par aleph0
Ok, et quand tu dis "si ça coince, je dois tout arrêter manuellement", comment fait tu pour arrêter ?

Quand je dis "faire à la main par script", j'entends un script lua qui procéderai de la façon suivante pour bouger le store :
- lecture de la position actuelle du store
- lecture de la position voulue du store
- calcul du temps de mouvement nécessaire si tout va bien. Durée de contrôle = durée normale +20%
- Envoi de la commande au store pour aller à la position voulue
- au bout de la durée de contrôle, lecture de la position du store
- on est à la position voulue +/- 5% -> tout est OK
- sinon, arrêt du mouvement et envoi d'une notification "store bloqué"

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 15:18
par vil1driver
Salut,

Zwave ne remonte (ne connaît pas) le pourcentage d'ouverture réel mais fait une estimation selon le temps écoulé.
Donc en principe même si ton volet bloque avant la position souhaitée, la commande devrait d'elle même s'arrêter.
De plus il y a sûrement un paramètre type timeout dans la configuration du module..

Mon avis, une motorisation défectueuse se remplace ou du moins ne s'automatise pas.

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 17:40
par greglamouche
aleph0 a écrit : 08 janv. 2020, 15:06 Ok, et quand tu dis "si ça coince, je dois tout arrêter manuellement", comment fait tu pour arrêter ?

Quand je dis "faire à la main par script", j'entends un script lua qui procéderai de la façon suivante pour bouger le store :
- lecture de la position actuelle du store
- lecture de la position voulue du store
- calcul du temps de mouvement nécessaire si tout va bien. Durée de contrôle = durée normale +20%
- Envoi de la commande au store pour aller à la position voulue
- au bout de la durée de contrôle, lecture de la position du store
- on est à la position voulue +/- 5% -> tout est OK
- sinon, arrêt du mouvement et envoi d'une notification "store bloqué"
Dans ce cas, je l'arrête manuellement par le bouton mécanique mais je dois forcément être présent pour l'actionner. J'ai voulu conserver les interrupteurs au cas ou j'ai une panne d'internet par exemple.

Et d'accord, c’est plus clair, je devrais décomposer chaque action. Je vais regarder ça de plus prêt dans ce cas.
En lignes de code, quelque chose comme cela te paraît-il correct ? :

commandArray = {}

-----Paramètres -----
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()

----- variables ------
datetime = os.date("*t") --infos sur la date
time_inseconde = 3600 * datetime.hour
min_time_ouverture = math.max(timeofday['SunriseInSecondes'] + 30) -- fermeture des volets au coucher du soleil + 30 secondes
etat_volet = /json.htm?type=command&param=saveuservariable&vname=Level&vtype=uservariabletype&vvalue=votrevaleurdevariablele

local config=assert(io.popen('/usr/bin/curl http://IP_Domoticz/json.htm?type=devices&rid=9'))

local blocjson = config:read('*all')
config:close()
print (blocjson)
local jsonValeur = json:decode(blocjson)
nom = jsonValeur.result[1].Volet
data = jsonValeur.result[1].Level


-- lecture de la position voulue du store
if (uservariables['Data'] == '10'
and
-- calcul du temps de mouvement nécessaire si tout va bien. Durée de contrôle = durée normale +20%
uservariables['time_inseconde'] =='min_time_ouverture'
then
commandArray ['script_ouverture_volet'] == '0'


return commandArray

qu'en pensez vous?
Merci

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 17:43
par greglamouche
vil1driver a écrit : 08 janv. 2020, 15:18 Salut,

Zwave ne remonte (ne connaît pas) le pourcentage d'ouverture réel mais fait une estimation selon le temps écoulé.
Donc en principe même si ton volet bloque avant la position souhaitée, la commande devrait d'elle même s'arrêter.
De plus il y a sûrement un paramètre type timeout dans la configuration du module..

Mon avis, une motorisation défectueuse se remplace ou du moins ne s'automatise pas.
Bonjour et merci de ton retour,

je ne savais pas cela, c est clair, merci.
Pour le changement du mécanisme, ç'est la prochaine étape mais je me suis intéressé au Lua alors c est aussi une excuse pour apprendre et avoir une raison ;)
Et pourtant, je t'assure que la commande continue sans s'arrêter en forçant le mécanisme comme si le module cherchait à atteindre la valeur cible.
Je vais regarder pour le "timeout", merci du conseil.
Greg

Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 17:44
par aleph0
Avant toute chose, vérifie ce que dit vil1driver a propos du retour de position du store. Car si c'est vrai qu'il ne retourne qu'une estimation et non la position réelle, on ne pourra rien faire de sûr dans domoticz

Envoyé de mon moto g(6) en utilisant Tapatalk


Re: Contrôle pourcentage volet pour arrêt de commande

Publié : 08 janv. 2020, 20:46
par greglamouche
aleph0 a écrit : 08 janv. 2020, 17:44 Avant toute chose, vérifie ce que dit vil1driver a propos du retour de position du store. Car si c'est vrai qu'il ne retourne qu'une estimation et non la position réelle, on ne pourra rien faire de sûr dans domoticz

Envoyé de mon moto g(6) en utilisant Tapatalk
Bonsoir,
Je viens de vérifier avec un volet, effectivement le pourcentage affiché n est pas le bon par rapport a la distance parcourue mais le résultat est toujours le même en fonction du pourcentage indiqué, à l'ouverture comme à la fermeture. C est un bon début je pense.