Aller au contenu

Recommended Posts

Ce code a été écrit par robmac avec l'aide de jompa68 , A.Socha.
J'ai également fais une traduction du poste original ici. Je ne vais pas tout expliquez mais juste faire comprendre le fonctionnement de base.
 
 
Ce script a été écrit pour pouvoir gérer tout les heures de lancement d'une action depuis une seule scène.
Personnellement ce script fonctionne beaucoup que le code standard lua. Les commandes sunset or sunrise fonctionne très bien.
 
ATTENTION CE CODE NE FONCTIONNE PAS CHAQUE MINUTES DONC N'UTILISE PAS DE RESSOURCES SYSTEME. ILS DÉMARRENT SEULEMENT LORSQU'UNE TACHE EST PLANIFIÉE.
 
Personnellement, depuis que j'utilise ce code ma HC2 ne fonctionne que mieux, dans chaque scène vous n'avez juste qu'à  y mettre vos conditions et actions.
 
Je ne posterais pas le code car il fait plus de 1000 lignes.
 
Ce script ajoute également une fonctionne qui manque cruellement à  la HC2, des alarmes. Par défaut il n'en possède que deux. Pour mon usage j'en ai programmé deux, une pour la semaine et l'autre pour le week-end.

 

Installation du script:

Créer une scène en Lua et collez le code du fichier Scene-1 - ID 1 Scheduler.txt, importez le fichier Alarm_Clock.vfib 4 fois (editez le numéro de chaqu'un dans le code) et 1 fois le Scheduler Control.

Il vous faudra ensuite créer des globals variables avec comme nom:

- scheduleGroup

- scheduleActive

- alarmTime1

- alarmTime2

- alarmTime3

- alarmTime4

Après pour redémarrez le scheduler il faut créer une scène avec:

--[[
%% properties

%% globals
--]]

local scheduleScene = 1

while (fibaro:countScenes(scheduleScene) > 0) do
 
    fibaro:killScenes(scheduleScene);

    fibaro:debug("Kill")
 
end;

active =  active or { Active = 1,
                      Disabled = 2 }

activeIndex =  activeIndex or  { [1] = "Active",
                      [2] = "Disabled"}

local scheduleActive = fibaro:getGlobalValue("scheduleActive") or activeIndex[1]

if scheduleActive == activeIndex[1] then
     -- restart a new instance if active
      fibaro:startScene(scheduleScene)
end

Maintenant pour paramétrez tout sa c'est très simple.

Dans le scheduler il faut éditez les lignes:

- 96: Id scène pour redémarrer

- 97: Id virtual device pour controler le scheduler

- 98, 103, 108 et 113: les id des virtuals devices pour les alarmes.

 

Ensuite dans la scène pour redémarrer le scheduler éditez la ligne suivante avec l'id de la scène du scheduler:

local scheduleScene = 1

Normallement c'est tout pour la configuration.

 

MISE EN PLACE DU SCENARIO:
 
Vous devez insérez vos lignes en-dessous la section <ADD YOUR LINES HERE>
 
luaDaySchedule:add(<time>,<id>, <parameter> , <action>, <days> ,<catchup>,<p1>,<p2>,<p3>)
 
Heure de lancement du scénario:
 
<time> : Remplacez cette balise par une heure dans un format de 24h exemple: "23:21" ou "07:00".
 
PS: Vous ne pouvez changer une variable globale pour changez l'heure de la scène sans relancez la scène.
 
SUNRISE - SUNSET avec + ou - x minutes:
 
<time>: Remplacez cette balise par "Sunrise" ou Sunset"
<p1> Remplacez cette balise par 27 pour ajoutez 27 minutes ou - 11 pour lancez 11 minutes plus tôt.
 
ID DU MODULE OU DE LA SCENE:
 
<id> Remplacez cette balise par l'id de votre module ou scène.
 
ACTION POSSIBLE (liste non entière et consulter le poste originale pour voir les commandes):
 
Allumez ou éteindre un module
régler une valeur pour un dimer
envoyer un mail
envoyer une notification push à  un ou tous les périphériques
envoyer un mail à  un ou tous les utilisateurs
appuyer sur un modules virtuels
régler un slider pour un modules virtuels
régler un variable global
armer ou désarmer un module
régler toute chacune des couleurs d'un module RGB
démarrer un programme RGB
démarrer une autre scène
 
 
CHOIX DES JOURS DE LANCEMENT DES SCENARIOS:
 
<days> Remplacer cette balise par jour de la semaine
 
Il est également possible de mettre plusieurs jours de la semaine avec {"Sunday','Monday"}.
Il y a 3 commandes spécial:

{"All"] = Tous les jours de la semaines
{"Weekend"} = Samedi et Dimanche
{"Weekday"} = Lundi au Vendredi
Ils peuvent également être fusionner avec les jours de la semaine
{"Weekend","Monday"} = Samedie, Dimanche et Lundi
 
LES ALARMES:
 
Pour configurer les alarmes, un fichier vfib est disponible dans le zip joint.
A la ligne 92 du scheduler vous devez paramétrer les id de vos modules virtuels ainsi que l'id de la scene du redémarrage du scheduler (également fournie dans le zip).
 
Dans chaque bouton du module virtuel vous devez également reconfigurer l'id de ce module virtuel.
Et pour finir vous devez créer des variables globales pour alarmDays1 - alarmDays2 - alarmTime1- alarmTime2.
 
Voici les lignes que vous devez ajoutez à  votre scheduler:


--Réveil 1
luaDaySchedule:add(getAlarm("alarmTime1"),{"4"}, "" , "startScene", {"All"}  ,false)
--Réveil 2
luaDaySchedule:add(getAlarm("alarmTime2"),{"5"}, "" , "startScene", {"All"}  ,false)

Voici quelques une de mes lignes:


luaDaySchedule:add("07:00","30", "" , "startScene", {"Weekday"}, false);

luaDaySchedule:add("07:30","30", "" , "startScene", {"Saturday"}, false);
luaDaySchedule:add("Sunset","Nightime", "1" , "setGlobal", {"All"}, false , 0);

Comme écrit plus haut je n'ai pas tout expliquer car trop long. Il s'agit juste d'un résumé Des exemples sont fournis dans le scheduler + d'autre explication sur le poste originale du forum officiel.

scheduler-1-3-0.zip

Scheduler1-3-1.zip

  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Je me suis intéressé au module virtuel livré dans le packaging, et qui a été créé par @Ucciogenerale + @robmac + @jompa6

J'utilise moi même un module plus rustique :lol: (http://www.domotique-fibaro.fr/index.php/topic/128-module-radiateur-avec-fil-pilote-thermostat-de-zone/?p=620)

Je vais donc vraisemblablement adopter celui-ci

 

Le fichier compressé mis en téléchargement par @Shad comprend 4 fichiers.

Deux concernent le module virtuel :

- Alarm_Clock.vfib (le module virtuel lui-même, à  intégrer à  la box par la fonction import))

- mzlkuexotyh128x128_75_476.png (l'icône)

 

ET j'ai appris deux choses que certains connaissent peut-être ...

 

Mon module virtuel ,parmi tous les autres modules, ressemble à  ceci  :

 

gallery_12_6_4103.png

 

Celui du Scheduler à  çà   !!!

 

gallery_12_6_1967.png

 Au début, je n'avais pas l'affichage de l'heure à  droite, mais un grand vide (n'ayant pas initialisé une heure)... j'ai cru à  un bug d'affichage !

 

Quelle option permet d'obtenir cela ?

gallery_12_6_47721.png

Ce sont les deux options "main" choisies (boutons bleus)

 

Deuxième information pour moi : remarquez la ligne suivante dans l'image :

local newora = fibaro:get(alarmClockDevice,"ui.lblTime.value")

Jusqu'à  présent je n'utilisais que la fonction "call" pour renseigner un label

Dans ce bouton virtuel, cette fonction permet de vérifier son contenu et s'il est vide, la procédure initialise à  00:00 

Ceci m'ouvre des perspectives pour gérer la phase de redémarrage de la box qui, dans certains cas, remet la zone label à  blanc

 

NB : pour le module virtuel en français ... j'ai fait rapide et j'espère qu'il n'y aura pas de problème

Je le télécharge au format zip (le format natif vfib est interdit au téléchargement sur le forum)

Réveil.zip

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Mise àjour version de téléchargement sur 1er post - Nouvelle version du scheduler = 1.3.1

Partager ce message


Lien à poster
Partager sur d’autres sites

Petit up pour que tout le trouve ce post.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Shad

juste une question, comme je disais sur l'autre post, si je me sers du scheduler je rajoute les lignes àl'endroit add your line a chaque fois

je ne crée pas de nouvelles scènes?

Partager ce message


Lien à poster
Partager sur d’autres sites

Tout dépend ce que tu veux faire.

Si tu veux juste changer l'état d'un module ou groupe de module par rapport au temps, l'heure. Non pas besoin.

Partager ce message


Lien à poster
Partager sur d’autres sites

et c'est pas gênant d'avoir un scene énorme par rapport àplusieurs petites en lua?

ca ne ralenti pas l'interface?

Partager ce message


Lien à poster
Partager sur d’autres sites

Non en aucun cas, car en fait le scheduler n'est pas en fonctionnement en permanence, il regarde àquel heure il doit lancer la prochaine action et ne se réveillera qu'àce moment là.

Donc je te dirais au contraire, au lieu d'avoir plein de petite scène qui attend le moment de ce lancer, làtu en as qu'une ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon j'ai essayé de me mettre à  ce scheduler.....ouahou je patauge à  mort :( . Bon en premier je pense avoir compris l'intérêt (c'est déjà  pas mal!)

En second j'ai une première question: il est indiqué

"Dans le scheduler il faut éditez les lignes:

- 96: Id scène pour redémarrer

- 97: Id virtual device pour controler le scheduler

- 98, 103, 108 et 113: les id des virtuals devices pour les alarmes."

 

Je ne comprends pas au niveau de la ligne 97. Lorsque je regarde le programme, on passe directement de l'Id de la scène aux Id des alarmes (ci-joint ce que j'ai)

 

Sinon j'ai une autre question concernant les variables, il est dit qu'il faut créer des "globals variables", dans le panneau des variables on a le choix entre 2 types de variables: les "variables" et les "varaibles prédéfinies". Quelles sont celles à  créer et quelles sont leurs valeurs?

 

Désolé si les réponses à  ces questions vous paraissent évidentes  ;) 

Merci

post-274-0-90820900-1396538760_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Sa on s'en fou ^^ faut pas touché Xd.

Récupère la dernière version sur le forum officiel qui est la 1.3.1 je crois.

 

La partie à  modifier est tout en bas du code + des variables à  créer.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Shad: j'installe enfin le scheduler, j'ai suivit ton tuto, donc renseigné les ID des vd, j'ai pas encore programmé quoi que ce soit mais cela a l'air de fonctionner.

               il n'y avait pas besoin de renseigner les ID des VD?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je comprend pas trop ce que tu me dis là  :D

 

donc renseigné les ID des Virtual Device

 

et après

 

pas besoin de renseigner les ID des Virtual Device

 

mdr

Partager ce message


Lien à poster
Partager sur d’autres sites

Encore du grand Fredo  :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Sa on s'en fou ^^ faut pas touché Xd.

Récupère la dernière version sur le forum officiel qui est la 1.3.1 je crois.

La partie àmodifier est tout en bas du code + des variables àcréer.

Je sais que Phil n'aime pas mais je suis obligé de te citer.

Dans ton tuto, tu dis qu'il faut renseigner les ID, et là, tu dis on s'en fout. Alors je posais la question pour éventuellement renseigner d'autres personnes dans le futur et comprendre pourquoi en haut oui et en bas non

Partager ce message


Lien à poster
Partager sur d’autres sites

Je sais plus dans quel contexte j'ai dis sa.

Les trucs à  modifier dans les scènes sont restartScene/controlDevide et tout les devices ID des alarmClocks

 

Et par exemple pour changer une variable au lever du soleil:

luaDaySchedule:add("Sunrise","Nightime", "Off" , "setGlobal", {"All"}, false , 0);

Et au coucher

luaDaySchedule:add("Sunset","Nightime", "On" , "setGlobal", {"All"}, false , 0);

Partager ce message


Lien à poster
Partager sur d’autres sites

Je crois que dans un premier temps je vais me limiter aux blocs car je ne comprends rien au scheduler, on verra plus tard si je me démerde mieux :(

Partager ce message


Lien à poster
Partager sur d’autres sites

@Shad, j'ai quelques doute, peut tu me confirmer si c'est bon mes lignes?

je veux que la scène 52 soit active 30 minute avant le couché du soleil et s’arrête 30 minute après le couché du soleil:

luaDaySchedule:add("Sunset","52", "On" , "", {"All"}, false , -30);
luaDaySchedule:add("Sunrise","52", "Off" , "", {"All"}, false , 30);

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaye ce code:

luaDaySchedule:add("Sunset", "52", "true", "setSceneEnabled", {"All"}, true , -30);
luaDaySchedule:add("Sunrise", "52", "", "killScenes", {"All"}, false , 30);

Partager ce message


Lien à poster
Partager sur d’autres sites

je ne sais pas si cela fonctionne, je verrai demain.

par contre j'ai un débug dans le scheduler:

[DEBUG] 22:50:21: Closing down scheduler because the scheduler is Disabled
[DEBUG] 22:50:21: Closing down coplete
[DEBUG] 22:54:24: Scheduler is intitialising. Loading with profile group WinterHoliday.

[DEBUG] 22:55:24: Initialise Alarm alarmTime1 in room Scheduler.
[DEBUG] 22:55:24: Initialise Alarm alarmTime4 in room Scheduler.
[DEBUG] 22:55:24: Initialise Alarm alarmTime2 in room Scheduler.
[DEBUG] 22:55:24: Initialise Alarm alarmTime3 in room Scheduler.
[DEBUG] 22:55:24: Catching up actions.
[DEBUG] 22:55:24: Pause for ZWave to initialise.
 

c'est normal?

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est bien activé dans ton virtual device.

Partager ce message


Lien à poster
Partager sur d’autres sites

je capte rien dans les groupe / set state / winterholiday ....

Partager ce message


Lien à poster
Partager sur d’autres sites

×