aide pour réalisation script en lua

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
Répondre
vr6man
Messages : 411
Enregistré le : 18 juil. 2017, 12:15

aide pour réalisation script en lua

Message 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

thier
Messages : 773
Enregistré le : 26 sept. 2015, 10:32
Localisation : charente

Re: aide pour réalisation script en lua

Message 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?
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.

vr6man
Messages : 411
Enregistré le : 18 juil. 2017, 12:15

Re: aide pour réalisation script en lua

Message 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

Keros
Messages : 406
Enregistré le : 23 juil. 2019, 20:57

Re: aide pour réalisation script en lua

Message par Keros »

Plusieurs petites choses à essayer :

Ecrire les valeurs en nombre :

Code : Tout sélectionner

otherdevices['UV']>='4'
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 

thier
Messages : 773
Enregistré le : 26 sept. 2015, 10:32
Localisation : charente

Re: aide pour réalisation script en lua

Message 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?
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.

vr6man
Messages : 411
Enregistré le : 18 juil. 2017, 12:15

Re: aide pour réalisation script en lua

Message 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

Keros
Messages : 406
Enregistré le : 23 juil. 2019, 20:57

Re: aide pour réalisation script en lua

Message 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.

thier
Messages : 773
Enregistré le : 26 sept. 2015, 10:32
Localisation : charente

Re: aide pour réalisation script en lua

Message 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.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.

thier
Messages : 773
Enregistré le : 26 sept. 2015, 10:32
Localisation : charente

Re: aide pour réalisation script en lua

Message 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
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.

fredclo
Messages : 90
Enregistré le : 28 févr. 2015, 16:57

Re: aide pour réalisation script en lua

Message 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
RPi sur powerbank, bouton off/reset, domoticz (début avec Fhem sur dockstar), 4 sondes 1wire via rj45, ctrl des volets, tv/fbx, lumière, détecteurs d'ouverture, karotz, multiroom via pifm, ecodevice, ATI RF, et prg du mode arrêt des radiateurs via FP

Répondre