Page 1 sur 34
aide pour réalisation script en lua
Publié : 10 mai 2020, 00:12
par vr6man
Je debute en lua et je voudrais écrire un script pour piloter mon store de terrasse
UV, Pluie, Vent sont des virtuel Device mis à jour part Darksky
Nuit: un virtuel device mis à jour en fonction de l'heure du coucher du soleil
Store terrasse un virtuel device qui pilote un module quinto pour la gestion du store
Voila le script mais cela ne marche pas
le script en device
Code : Tout sélectionner
commandArray={}
if otherdevices['Absence']=='Off' then
-- Ouverture Store Terrasse
if (otherdevices['UV']>='4' and otherdevices['Pluie']<='0,5' and otherdevices['Nuit']=='Off' and otherdevices['Vent']<='8.0') then
if otherdevices['Store Terrasse']=='Off' then
commandArray['Store Terrasse']='On'
print('Ouverture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Ouverture Store Terrasse'
end
end
elseif
-- Fermeture du Store Terrasse
otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then
commandArray['Store Terrasse']='Off'
print('Fermeture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Fermeture Store Terrasse'
end
return commandArray
Merci de votre aide
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 00:44
par thier
met des prints pour connaitre tes valeurs ça te permettra de comprendre ce qui coince.
print('otherdevices['UV'] '..otherdevices['UV'])
etc..
Ton store c'est On et Off ou Open et Closed?
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 08:27
par vr6man
Le store est on/off car piloté par un module relais simple qubino
En testant juste la ligne
Code : Tout sélectionner
otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then
cela ne fonctionne pas avec and si je met or ca marche 20 secondes et après ca plante Domoticz car le script tourne en boucle
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 09:40
par Keros
Plusieurs petites choses à essayer :
Ecrire les valeurs en nombre :
Ecrit la condition sur la même ligne que le Elseif :
Code : Tout sélectionner
elseif otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 09:44
par thier
ton script est du type device. Chaque fois que n'importe lequel de tes devices change (sonde de température par exemple), tous les scripts_device sont lancés.
il faut toujours utiliser la fonction devicechanged pour que le script ne soit exécuté que sur un changement d'état d'un device précis..
otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then serait plutôt if devicechanged['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then
Tu dis que tu utilises un qubino On/Off. Je ne sais pas si c'est adapté pour un store. Un store peut être considéré comme un volet. un simple On/Off ne sait pas quand ton store aura fini de s'ouvrir ou se fermer. Si tu fais un script pour gérer le fonctionnement - Si On, alors On pendant X secondes et si Off alors Off pendant X secondes, en fin de On, le module passe à Off donc le store se referme. Comment fait le qubino pour inverser les mouvement entrée/sortie?
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 11:36
par vr6man
mon store est ancien a radio n'arrivant pas a apprendre la fréquence avec Domoticz j'ai soudé des fils sur la télécommande et les 2 modules quinto simule un appui sur le bouton ouverture et sur le bouton fermeture en sautant comme le fait la télécommande
D'ailleurs cela fonctionne bien (ouverture/fermeture du store) en actionnant manuellement les qubino
Maintenant j'aimerais bien domotiser l'ouverture/fermeture en fonction de différents paramètres
Du coup cela donnerait cela car c'est plus le device nuit qui change en fonction du coucher du soleil
store terrasse est un device virtuel qui indique l'état du store
Pour uv, pluie, vent je laisse comme ca ?
Y a pas trop de IF ?
Code : Tout sélectionner
commandArray={}
if otherdevices['Absence']=='Off' then
-- Ouverture Store Terrasse
if (otherdevices['UV']>='4' and otherdevices['Pluie']<='0,5' and otherdevices['Nuit']=='Off' and otherdevices['Vent']<='8.0') then
if otherdevices['Store Terrasse']=='Off' then
commandArray['Store Terrasse']='On'
print('Ouverture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Ouverture Store Terrasse'
end
end
elseif
-- Fermeture du Store Terrasse
otherdevices['Store Terrasse']=='On' and devicechanged['Nuit']=='On' then
commandArray['Store Terrasse']='Off'
print('Fermeture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Fermeture Store Terrasse'
end
return commandArray
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 11:56
par Keros
Tu as testé ton script ? Il ne doit pas fonctionner :
Keros a écrit : 10 mai 2020, 09:40
Ecrit la condition sur la même ligne que le Elseif :
Code : Tout sélectionner
elseif otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then
et il y a la remarque de thier
thier a écrit : 10 mai 2020, 09:44
otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then serait plutôt if devicechanged['Store Terrasse']=='On' and otherdevices['Nuit']=='On' then
Modifie ton code et regarde les retours que tu as des les logs. Cela t’indiquera les lignes posant soucis.
Petit conseil : ne charge pas trop en conditions au départ. Mets-en qu'une et tu vérifies que ça fonctionne. Puis tu en rajoutes d'autres.
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 12:00
par thier
Ok pour le fonctionnement avec le hack de la télécommande. Ce n'est plus un simple On/Off
Si je comprends ton script, tu veux faire une ouverture et fermeture automatique sans action sur un bouton donc ce n'est plus un script_device mais un script_time qui sera lancer toutes les minutes. Donc ça donnerait ça:
Code : Tout sélectionner
commandArray={}
--pour connaitre les valeurs on met des print. Tu les commentes avec -- quand tu n'en as plus besoin.
print('otherdevices['UV'] '..otherdevices['UV'])
print('otherdevices['Pluie'] '..otherdevices['Pluie'])
print('otherdevices['Nuit'] '..otherdevices['Nuit'])
print('otherdevices['Vent'] '..otherdevices['Vent'])
-- Ouverture Store Terrasse
if (0therdevices['Absence']=='Off' and otherdevices['Store Terrasse']=='Off' and otherdevices['UV']>='4' and otherdevices['Pluie']<='0,5' and otherdevices['Nuit']=='Off' and otherdevices['Vent']<='8.0') then
commandArray['Store Terrasse']='On'
print('Ouverture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Ouverture Store Terrasse'
elseif
-- Fermeture du Store Terrasse
if(0therdevices['Absence']=='Off' and otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On') then
commandArray['Store Terrasse']='Off'
print('Fermeture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Fermeture Store Terrasse'
end
return commandArray
Essai d'abord d'avoir ce script qui fonctiionne. Ensuite je pense que ton script devra être modifié pour la partie fermeture. Tu protèges ton store à l'ouverture avec des conditions de vents et pluie que tu pourrais reprendre pour ajouter des nouvelles conditions fermant ton store automatiquement et pas seulement que s'il fait nuit.
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 12:04
par thier
Edit. j'ai écrits trop vite
Edit n°2
Code : Tout sélectionner
commandArray={}
--pour connaitre les valeurs on met des print. Tu les commentes avec -- quand tu n'en as plus besoin.
print('otherdevices['UV'] '..otherdevices['UV'])
print('otherdevices['Pluie'] '..otherdevices['Pluie'])
print('otherdevices['Nuit'] '..otherdevices['Nuit'])
print('otherdevices['Vent'] '..otherdevices['Vent'])
print('otherdevices['Absence'] '..otherdevices['Absence'])
print('otherdevices['Store Terrasse'] '..otherdevices['Store Terrasse'])
-- Ouverture Store Terrasse
if (otherdevices['Absence']=='Off' and otherdevices['Store Terrasse']=='Off' and otherdevices['UV']>='4' and otherdevices['Pluie']<='0,5' and otherdevices['Nuit']=='Off' and otherdevices['Vent']<='8.0') then
commandArray['Store Terrasse']='On'
print('Ouverture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Ouverture Store Terrasse'
elseif
-- Fermeture du Store Terrasse
if(otherdevices['Absence']=='Off' and otherdevices['Store Terrasse']=='On' and otherdevices['Nuit']=='On') then
commandArray['Store Terrasse']='Off'
print('Fermeture Store Terrasse')
commandArray['SendNotification']='Store Terrasse#Fermeture Store Terrasse'
end
return commandArray
Re: aide pour réalisation script en lua
Publié : 10 mai 2020, 12:30
par fredclo
bonjour
je suis assez nul en LUA, mais j'avais cru comprendre qu'on avait le droit qu'à un seul commandarray dans un script LUA.
Et qu'il est conseillé dans ce cas, de toujours utiliser
commandArray[#commandArray+1]=
(ca évite de les numéroter 1 2 3 4...).
Ce truc m'a souvent sauvé.
fredclo