[LUA] Script de fermeture et d"ouverture volets roulants

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

[LUA] Script de fermeture et d"ouverture volets roulants

Message par schwinny »

Edit du 22/04/2017: le script fonctionne, voir le code dans ce message

Bonjour à tous.

Débutant dans la domotique, j'ai honteusement pompé le code de ce super site :) (tout en laissant les commentaires dans le code non mais...)

Le but est d'ouvrir les volets et de les fermer suivant l'heure et la luminosité mais aussi suivant certaines conditions: Invité present, jour férié (non implementé encore), samedi dimanche, ....

le soucis est que cela ne fonctionne pas pour l'ouverture :(
et pour la fermeture, je pourrais vous dire ce soir.

Le but étant de me former au script LUA, je ne desire pas reprendre un script deja fait.

Pouvez vous me mettre sur la voie et m'indiquer ce qui pourrait bloquer sans me donner forcement la réponse (il faut que je progresse... :D ) ?

Je n'ai pas accès au log de ce matin car la fenêtre de log ne remonte pas assez loin.
Savez vous ou accéder simplement en mode fichier au log ?
De plus, peux t'on afficher plus de log dans la fenêtre log de domoticz ?


De plus, d'apres ce que je comprend, le script se lance a chaque changement de charge CPU... cela n'est il pas trop gourmand ?
Ou regarder la charge du serveur Domoticz ?

Merci a vous.

SCRIPT QUI FONCTIONNE - V2 du 22/04/2017

Code : Tout sélectionner


-- Gestion des volets roulants en fonction
-- de la luminosite et d l'heure
-- le capteur utilisé est celui du salon nommé 'Luminosite Oeil Salon',
-- le groupe Volets est basculé si on est inf a 150 Lux et
-- qu'il est plus de 19h00
--
-- source de base (et modifié par schwinny) https://easydomoticz.com/mon-premier-script-lua-dans-domoticz-la-mise-en-oeuvre/
-- V2: 22/04/2017: correction de detection baie vitre ouverte
--------------------
-- les variables de seuil.
Seuil_Heure_Soir="20:00:00"
Seuil_Lux=100
Seuil_Heure_Matin="07:00:00"
-------------------

--------------------
-- les variables Locales
--- Récuperation du jour de la semaine: 1:Dimanche 2:Lundi .... 7:Samedi                        
local JourSemaine=os.date("*t").wday
--------------------
commandArray = {}
time = os.date("*t")

if ((time.min % 60)==0)  then
         Heure_Actuelle=os.date("%X")
         print('Script de fermeture des volets lancé')
         print(Heure_Actuelle)
                --Heure de Fermeture
                if Heure_Actuelle >=  Seuil_Heure_Soir then
                        print ("Heure de Fermeture Volet Atteinte")
                        valeur_lux = otherdevices_svalues['Luminosite oeil salon']
                        valeur_lux=tonumber(valeur_lux)
                        print("luminosite actuelle = "..valeur_lux)
                        if (valeur_lux < Seuil_Lux) then
                                if (otherdevices['Capteur ouverture salon']=="Off") then
                                        print("Fermeture des volets")
                                        commandArray['Scene:Fermeture Volets']='On'
                                else
                                        print("Baie Vitrée Ouverte, Mise en sécurité")
                                end
                        else
                                print("Il fait encore Jour, nous ne faisons rien")
                        end

                else
                        if Heure_Actuelle ==  Seuil_Heure_Matin then
                        print(JourSemaine)
                                  if ((JourSemaine==7)or(JourSemaine==0)) then
                                        print("Heure d'ouverture atteinte mais Jour non travaillé")
                                  else
                                        if (otherdevices['Invite Present'] == 'On') then
                                                print("Heure d'ouverture atteinte, Invité Present")
                                        else
                                                print("Heure d'ouverture atteinte")
                                                print("Ouverture des volets")
                                                commandArray['Scene:Ouverture Volets']='On'
                                        end
                                  end

                        end
                end
end
return commandArray

ATTTENTION CE SCRiPT NE FONCTIONNE PAS

Code : Tout sélectionner

-- Gestion des volets roulants en fonction
-- de la luminosite et d l'heure
-- le capteur utilisé est celui du salon nommé 'Luminosite Oeil Salon',
-- le groupe Volets est basculé si on est inf a 150 Lux et
-- qu'il est plus de 19h00
--
-- https://easydomoticz.com/mon-premier-script-lua-dans-domoticz-la-mise-en-oeuvre/

--------------------
-- les variables de seuil.
Seuil_Heure_Soir="19:00:00"
Seuil_Lux=150
Seuil_Heure_Matin="07:00:00"
-------------------

--------------------
-- les variables Locales
--- Récuperation du jour de la semaine: 0:Dimanche 1:Lundi ....                         
local JourSemaine=os.date("*t").wday
--------------------


commandArray = {}
if (devicechanged['CPU_Usage'])then
        Heure_Actuelle=os.date("%X")
        print (Heure_Actuelle)
                --Heure de Fermeture 
                if Heure_Actuelle > Seuil_Heure_Soir then
                        print ("Heure de Fermeture Volet Atteinte")
                        valeur_lux = (otherdevices_svalues['Luminosite Oeil Salon'])
                        valeur_lux=tonumber(valeur_lux)
                        print("lum = "..valeur_lux)
                        if ((valeur_lux < Seuil_Lux) and (otherdevices_svalues['Capteur Ouverture Salon']=='On')) then
                                print("Heure de Fermeture atteinte")
                                commandArray['Scene:Fermeture Volets']='On'
                        else
                                print("Heure de Fermeture atteinte mais Baie Vitrée Ouverte")
                        end
                else
                        if Heure_Actuelle > Seuil_Heure_Matin then
                                if ((JourSemaine==0)or(JourSemaine==6)) then
                                        print("Heure d'ouverture atteinte mais Jour non travaillé")
                                else
                                        if (otherdevices['Invite Present'] == 'On') then
                                                                                   print("Heure d'ouverture atteinte, Invité Present")
                                        else
                                                print("Heure d'ouverture atteinte")
                                                commandArray['Scene:Ouverture Volets']='On'
                                        end
                                end
                        else
                                print("Heure de Fermeture Volet NON Atteinte")
                        end
                end
end
return commandArray
                                                                    
Dernière modification par schwinny le 22 avr. 2017, 12:25, modifié 4 fois.
lestatcrog
Messages : 38
Inscription : 19 janv. 2016, 20:47
Localisation : Niort

Re: PB Script Fermeture Ouverture volets roulants

Message par lestatcrog »

Salut,

Si tu es sur un PI tu devrais avoir un fichier domoticz.log sous /var/log/

Je ne vois pas trop l'objectif de lancer à chaque changement du dispositif CPU_Usage. Tu en as un déjà avec ce nom ?
Je pense que c'est pour le test uniquement pour le lancer plusieurs fois régulièrement pour les tests. Ton objectifs est de suivre la Luminosite Oeil Salon il me semble (élément déclencheur) et non pas la charge de ton CPU ;)

Pour la charge CPU, tu peux ajouter le materiel "Motherboard sensors" pour avoir les indicateurs du PI (cpu, mémoire)

Lestatcrog
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

Re: PB Script Fermeture Ouverture volets roulants

Message par schwinny »

En fait, j'ai repris un script sur le forum qui expliquait comment débuter.

Le but est de lancer ce script une fois par heure.

N'ayant pas d'élément charge_CPU, je présume que l'erreur provient de la ? :p
lestatcrog
Messages : 38
Inscription : 19 janv. 2016, 20:47
Localisation : Niort

Re: PB Script Fermeture Ouverture volets roulants

Message par lestatcrog »

il y a de grande chance que ce soit ça. il y a plusieurs types de script :

Les scripts device basés sur le changement d’état du matériel : Le nom de ces script est script_device_xxxxxxxxx.lua
Les scripts basés sur le temps , il s’exécutent toutes les minutes. Ces script DOIVENT se nommer script_time_xxxxxxxx.lua
Les scripts basés sur le changement de valeur d’une variable Domoticz: Ces script DOIVENT se nommer script_variable_xxxxxx.lua
Les script bases sur le panel de sécurité : script_security_xxxxxx.lua qui réagit au security panel de Domoticz

Source : https://easydomoticz.com/point-scripts-lua/ pour plus d'info

Dans ton cas si tu veux un déclenchement récurrent dans le temps c'est plutôt un script time qu'il te faut avec un test dedans pour exécuter tes commandes toutes les heures uniquement.

exemple pour un lancement toutes les 5 minutes

Code : Tout sélectionner

    
    commandArray = {}
 
    time = os.date("*t")
    if  ((time.min % 5)==0)  then
    ... 
    end
    return commandArray
 
je te laisse chercher pour toutes les heures :D
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

Re: PB Script Fermeture Ouverture volets roulants

Message par schwinny »

Merci, j'ai renommé le script et modifié l'événement ;)
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

Re: PB Script Fermeture Ouverture volets roulants

Message par schwinny »

mon script fonctionne, ci joint le script qui fonctionne...

Code : Tout sélectionner

-- Gestion des volets roulants en fonction
-- de la luminosite et d l'heure
-- le capteur utilisé est celui du salon nommé 'Luminosite Oeil Salon',
-- le groupe Volets est basculé si on est inf a 150 Lux et
-- qu'il est plus de 19h00
--
-- https://easydomoticz.com/mon-premier-script-lua-dans-domoticz-la-mise-en-oeuvre/

--------------------
-- les variables de seuil.
Seuil_Heure_Soir="20:00:00"
Seuil_Lux=100
Seuil_Heure_Matin="07:00:00"
-------------------

--------------------
-- les variables Locales
--- Récuperation du jour de la semaine: 0:Dimanche 1:Lundi ....                         
local JourSemaine=os.date("*t").wday
--------------------
commandArray = {}
time = os.date("*t")

if  ((time.min % 60)==0)  then

        Heure_Actuelle=os.date("%X")
         print (Heure_Actuelle)
                --Heure de Fermeture 
                if Heure_Actuelle ==  Seuil_Heure_Soir then
                        print ("Heure de Fermeture Volet Atteinte")
                        valeur_lux = otherdevices_svalues['Luminosite Oeil Salon']
                        valeur_lux=tonumber(valeur_lux)
                        print("lum = "..valeur_lux)
                        if (valeur_lux < Seuil_Lux) then
                                if (otherdevices_svalues['Capteur Ouverture Salon']=="Off") then
                                        print("Fermeture des volets")
                                        commandArray['Scene:Fermeture Volets']='On'
                                else
                                        print("Baie Vitrée Ouverte, Mise en sécurité")
                                end
                        else
                                print("Il fait encore Jour")
                        end

                else
                        if Heure_Actuelle ==  Seuil_Heure_Matin then
                        print(JourSemaine)
                                if ((JourSemaine==7)or(JourSemaine==0)) then
                                        print("Heure d'ouverture atteinte mais Jour non travaillé")
                                else
                                        if (otherdevices['Invite Present'] == 'On') then
                                                print("Heure d'ouverture atteinte, Invité Present")
                                        else
                                                print("Heure d'ouverture atteinte")
                                                print("Ouverture des volets")
                                                commandArray['Scene:Ouverture Volets']='On'
                                        end
                                end

                        end
                end
end
return commandArray
lestatcrog
Messages : 38
Inscription : 19 janv. 2016, 20:47
Localisation : Niort

Re: PB Script Fermeture Ouverture volets roulants

Message par lestatcrog »

:mrgreen:
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

Re: PB Script Fermeture Ouverture volets roulants

Message par schwinny »

tu'fout mon gueule ? :lol: :lol: :lol:


bon me reste plus qu'a trouver un script pour ajouter les feriés :)
lestatcrog
Messages : 38
Inscription : 19 janv. 2016, 20:47
Localisation : Niort

Re: PB Script Fermeture Ouverture volets roulants

Message par lestatcrog »

Non au contraire je suis content si j'ai pu t'aider :oops:

Pour dire si le jour est férié ou non celui ci fonctionne très bien

https://easydomoticz.com/forum/viewtopi ... ries#p9686
schwinny
Messages : 123
Inscription : 23 mars 2017, 21:41

Re: PB Script Fermeture Ouverture volets roulants

Message par schwinny »

lestatcrog a écrit :Non au contraire je suis content si j'ai pu t'aider :oops:


Je rigole :lol: :lol:

c'est le cas et je t'en remercie ;)


merci pour le lien, vais l'intégrer a mon script
Répondre