Réveil avancé paramétrable Version Scène : 3.6 - Version VD : 2.1 Réveil douceur en lumière et musique, en fonction du lever du soleil. Compatibilité éclairages : Dimmers, Modules RGBW, Volets Roulants, VDs (Philips Hue, Ikea TRÅDFRI...) etc. Compatibilité enceintes : Tous les VDs de système d'enceinte sont compatibles! Sonos, Yamaha Multicast, Bose...     Préambule Cette semaine, j'ai pris le temps d'adapter un kit Scène+VD (qui marche bien chez moi depuis un petit moment) pour qu'il puisse être utile à d'autres. Il s'agit d'un réveil "douceur" où une ou plusieurs lampes seront progressivement allumées durant un temps défini et le programme de votre choix sera ensuite lu en fondu sur votre système d'enceintes. Ce kit Scène+VD peut être utilisé pour chaque chambre, c'est pourquoi il y a la variable ROOM à modifier à plusieurs reprises dans le VD et dans la scène.   Bienfaits d'un Réveil "douceur" Source : https://www.simulateuraube.info   Installation et Configuration du VD -- Manageable Alarm Clock Scene Id local SceneID = 193; -- Which room will this VD Manage ? Must be the same than the Scene local ROOM = "CHAMBRE"; -- Days Off local DaysOff = {"Samedi","Dimanche"}; -- By defaut, this scene will be launched to have full light at the time set up in the VD : Actual Hour - Dawn Time -- Change this var to anything else if you want to trigg the scene at the hour H. local StartScene = "DEFAULT"; -- Icon's ids local icon_ok = 1156 local icon_wait = 1158 local icon_off = 1160 Créer la variable globale REVEIL_CHAMBRE (ou autre nom type REVEIL_*** tant que la variable ROOM est bien modifiée partout) et importer le VD. SceneID : ID de la scène affectée à ce VD ROOM : Il faut modifier la valeur de cette variable dans les 3 derniers boutons (Une fois, Lun-Ven et Réveil OFF) et la boucle principale du VD pour qu'ils correspondant à la variable globale créée ci-dessus. DaysOff : Listez ici vos jours de repos hebdomadaires, entre guillemets et séparés par une virgule. Veillez à bien mettre la majuscule à chaque jour de la semaine. StartScene : Par défaut, le VD va démarrer la scène X minutes (le temps du fade lumière paramétré) avant l'heure de réveil programmé. Ceci pour que la lumière soit à son maximum et que la musique démarre à l'heure du réveil. Si vous souhaitez que la scène débute seulement à l'heure du réveil, remplacez la valeur de cette variable par n'importe quoi d'autre. icon_ok : Icone qui s'affichera lorsque la scène sera active icon_wait : Icone qui s'affichera lorsque le VD est en attente de l'heure du réveil icon_off : Icone qui s'affichera lorsqu'aucun réveil sera programmé (ou que le réveil "Une fois" sera déclenché) Suivre les indications de ce lien si vous ne savez pas comment connaître les IDs des icones   Utilisation du VD Un appui sur : affichera 12:00 par défaut. Cela peut être modifié en changeant la valeur de la variable ClickHour dans le bouton correspondant. Le volume du son est en pourcentage (Agit directement sur les sliders) Le temps de fade son est en secondes La puissance des différents devices est en pourcentage* La durée de l'aube simulée est en minutes Le bouton Une fois programme le réveil pour le prochain horaire disponible et ce, quelque soit le jour. Après déclenchement, le réveil se désactivera automatiquement. Le bouton Semaine programme le réveil chaque jour, sauf ceux renseignés dans la variable DaysOff. La scène sera lancée automatiquement à heure fixe tant que le VD est activé. Le bouton Rappel rappellera les derniers paramètres en cours avant la désactivation du VD Le bouton Off sauvegardera les derniers paramètres enregistrés et désactivera le VD * Les volets roulants s'ouvriront au même rythme que les autres devices, mais à 100% dans tous les cas, quelque soit la valeur saisie dans le VD. J'ai trouvé plus judicieux de pouvoir jouer sur la puissance des différents devices, sans que le volet roulant se retrouve à moitié ouvert.   Où modifier la valeur de la variable PIECE ? 1- Au début de la scène ci-dessous 2 - Dans le bouton "Une fois" du VD 3 - Dans le bouton "Semaine" du VD 4 - Dans le bouton "Réveil OFF" du VD 5 - Dans la Boucle Principale du VD   Bien entendu, je rappelle que la valeur de cette variable doit correspondre à la Variable Globale que vous créerez. La variable globale est donc "REVEIL_CHAMBRE" par défaut. La base REVEIL_ est fixe. En cas d'incohérences entre ces valeurs, le réveil ne fonctionnera pas, soyez vigilents!   Icones du VD Scène lancée et active - Réveil en attente - Réveil OFF   Réglages de la scène -- Scene Settings local ROOM = "ROOM"; -- Room code corresponding to the Global Var created local StartVolume = 1; -- Which Speakers volume value the fadein will start at (percentage) local CurveLight = "linear"; -- Which function will be used to fadein light keys local CurveAudio = "linear"; -- Which function will be used to fadein speakers keys -- Curves list by family - Please see the graphic of each function to have a better understanding -- If a curve is not set, a random curve will be used to fade the parameters! -- Quad : inQuad / outQuad / inOutQuad / outInQuad -- Cubic : inCubic / outCubic / inOutCubic / outInCubic -- Quart : inQuart / outQuart / inOutQuart / outInQuart -- Quint : inQuint / outQuint / inOutQuint / outInQuint -- Sine : inSine / outSine / inOutSine / outInSine -- Expo : inExpo / outExpo / inOutExpo / outInExpo -- Circ : inCirc / outCirc / inOutCirc / outInCirc -- Bounce : inBounce / outBounce / inOutBounce / outInBounce -- Debug Vars local debug = 1; -- 1 Enable / 0 Disable local lang = "en"; -- Debug lang local DisplayNamesorID = "ID"; -- Display DeviceName + RoomName (Names) or Type + ID (ID) on each Debug line local DisplayNamesAtStartup = 1; -- Display Rooms & Names at scene startup (1) or not (0) local DisplayRGBWValues = 1; -- Display RGBW Values increasement when fading in (1) instead of only multiplier (0) local DayLightDelay = 60; -- After sunrise/sunset, it's still daylight for .. mn local VolDiffMin = 5; -- Minimum difference between Start Volume and Volume set in VD (in case of Start Volume > Volume set) local LimitDebugLines = 1; -- Limit number of Debug Lines to 4 max per device and to 20 max per roller shutter -- Changing next var values may seriously impact the scene local CheckAlarmMode = 1; -- Check if the alarm is set and not just memorized before starting sthis scene local DisplayScenesNames = 0; -- Display Scenes Names in debug (1) or not (0)! Active this function may delay the script local tempo = 1; -- Pause between two actions in LightsAction and SpeakersAction functions (s) - It' not recommended to change this value -- List of the light/shutter devices which will be dimmed/opened/launched -- Typ = Shutter / Dimmer / VD / RGBW / Program / Switch / Scene -- Mode="day" Device will be taken into accoung only if it's day -- Mode="night" Device will be taken into accoung only if it's night -- Modes are not mandatory to use this scene (no mode = mode="both") -- Add a Roller Shutter (FGR) -- Parameter "steps" is needed to set how many steps this roller shutter will do to open (to protect motors of 100 steps) --table.insert(LightsList, {typ="Shutter", id=279, steps=6}); -- Add a Dimmer (FGD) --table.insert(LightsList, {typ="Dimmer", id=10}); -- Add a RGBW device (FG-RGB) : To fade a choosen color with RGBW parameters (Set this color at full range, scene will fade this value from 0 to the value set in VD) --table.insert(LightsList, {typ="RGBW", id=20, r=150, g=100, b=0, w=255}); -- Add a RGBW Program : To set a RGBW program, just use "program" parameter -- Add "start" parameter to manage when this program will be started during the light fadein (in percentage) -- If no "start" parameter is set, program will be started at the beginning of the scene --table.insert(LightsList, {typ="Program", id=20, program=3, start=50}); -- Add a switch (FGS) -- Add "start" parameter to manage when this turnon action will be done during the light fadein (in percentage) -- If no "start" parameter is set, action will be done at the beginning of the scene --table.insert(LightsList, {typ="Switch", id=49, start=100}); -- To add a VD -- If it's a light VD : Parameter "slider" needed to manage brightness --table.insert(LightsList, {typ="VD", id=298, slider=10}); -- "btn" paramater can be added to set a color preset before the fadein (Be sure that the VD brightness for this button is set et 1%) --table.insert(LightsList, {typ="VD", id=298, slider=10, btn=6}); -- If it's not a light VD (with brightness slider) : Just indicate "btn" parameter --table.insert(LightsList, {typ="VD", id=298, btn=6}); -- Add "start" parameter if you want to manage when this button will be pressed during the dawn fade in (in percentage) --table.insert(LightsList, {typ="VD", id=298, btn=6, start=50}); -- Scene : To start a scene -- Add "start" parameter to manage when the action will be done during the light fadein (in percentage) -- If no "start" parameter is set, action will be done at the beginning of the scene --table.insert(LightsList, {typ="Scene", id=254, start=50}); -- List of the Audio System VDs which will be used to wake you up -- One line = One action : One parameter per line = slider OR btn, not both -- Exemple for an action on the slider 15 of the VD 245 --table.insert(SpeakerAction, {id=245, slider=15}); -- Exemple for an action on the button 6 of the VD 245 --table.insert(SpeakerAction, {id=245, btn=6}); Réglage basiques du fonctionnement de la scène ROOM Cette variable doit avoir la même valeur que celles du VD et le nom de la Variable Globale créée (REVEIL_***) StartVolume vous servira si vous ne souhaitez pas que le fondu audio commence à partir de la valeur 1. CurveLight et CurveAudio Courbes utilisées pour effectuer le Fade IN des devices. Si vous êtes joueurs, commentez ces lignes et la scène en sélectionnera au hasard à chaque lancement!   Réglages du DEBUG debug 1 Activé / 0 Désactivé lang Langue du DEBUG ("fr" ou "en") DisplayNamesorID Affichage des Pièces + Noms des Devices ("Names) ou Type + ID lors du traitement de l'entrée (ID) DisplayNamesAtStartup Affichage (1) ou non (0) de la liste des entrées qui seront traitées au démarrage du script DisplayRGBWValues Affichage (1) ou non (0) des valeurs détaillées R,G,B,W utilisées pour varier le device RGBW DaylighDelay Durée après laquelle la scène considèrera qu'il fait jour après lever/coucher du soleil VolDiffMin Différence minimale de volume entre la valeur StartVolume et celui paramétré depuis le VD LimitDebugLines Limiter le nombre de lignes à 4 maxi par device et 20 maxi par volet roulant (1) ou Activer les 100 lignes de traitement pour chaque (0) CheckAlarmMode Vérifier si une alarme est programmée avant le démarrage du script DisplaySceneNames Afficher les nom et pièce des scènes utilisées. Activer cette option augmente le temps d'exécution du script CheckAlarmMode Vérifier si un réveil est programmé pour autoriser le déclenchement manuel de cette scène. Si cette option est à 0, la scène pourra être lancée et utilisera les derniers paramètres utilisés pour traiter les périphériques. DisplayScenesNames Afficher ou non les noms de scènes + les pièces où elles sont affectées dans le DEBUG. Cette option est susceptible de considérablement augmenter le temps de traitement du script (api.get pour chaque récupération de nom) tempo Temps entre deux actions sur un bouton   Courbes (Robert Penner's Easing Equations)   Ajout de périphériques LightsList typ = Shutter id ID du Module pas Nombre de pas pour ouvrir ce volet (pour préserver le moteur). 20 Pas maxi typ = Device id ID du Module typ = VD id ID du VD slider Numéro du slider de luminosité dans le VD btn Numéro du bouton à appuyer start* correspond à quel pourcentage du fondu lumineux sera appuyé le bouton en question typ = RGBW Note : Basez-vous sur une couleur à 100%, la scène fera les calculs pour graduer ces 4 valeurs simultanément à la valeur paramétrée depuis le VD id ID du Module r  Valeur du Rouge (0-255) qui constitue la couleur que vous souhaitez au réveil g Valeur du Vert (0-255) qui constitue la couleur que vous souhaitez au réveil b  Valeur du Bleu (0-255) qui constitue la couleur que vous souhaitez au réveil w  Valeur du Blanc (0-255) qui constitue la couleur que vous souhaitez au réveil typ = Switch id ID du Module start* correspond à quel pourcentage du fondu lumineux sera envoyée la commande turnOn en question typ = Scene id ID de la scène start* correspond à quel pourcentage du fondu lumineux sera démarrée la scène en question typ = Program id ID du Module program ID du programme à démarrer start* correspond à quel pourcentage du fondu lumineux sera démarré le programme en question * Ces paramètres ne sont pas obligatoires. Si start n'est pas renseigné, les paramètres seront exploités au début du script. SpeakerAction id ID du VD de l'enceinte 2ème argument = Type du Bouton à préciser (l'un des deux seulement) avec l'id de ce bouton. slider Numéro du slider de puissance dans le VD btn Numéro du bouton à appuyer (exemple : allumage d'un ampli, choix d'une source...)   Modes La scène est autonome sur la notion de jour et nuit. Ainsi, il est possible de préciser un mode pour chacune des entrées de la table LightsList. Ce mode n'est pas indispensable, mais il permet, pour chacune des entrées de préciser dans quelle(s) situation(s) on souhaite voir telle entrée de la table s'actionner : Seulement s'il fait jour : mode="jour" Seulement s'il fait nuit : mode="nuit" Dans tous les cas : mode="both" ou rien du tout   Quelques exemples de configuration Lights et Speakers   - Ajouter un dimmer (type FGD211) : table.insert(LightsList, {typ="Dimmer", id=79}); - Ajouter un module RGBW. Modifier les valeurs de r (rouge), g (vert), b (bleu) et w (blanc) par celles qui vous permettront d'avoir la couleur de votre choix. Attention : Basez-vous sur une puissance à 100% pour les valeurs de couleur. (0 à 255) C'est la scène qui ajustera la puissance de ces réglages en fonction de la puissance paramétrée dans le VD et la puissance nécessaire à l'instant t pour l'allumage progressif du module. L'exemple suivant donnera donc un blanc plutôt chaud qui s'allumera progressivement. table.insert(LightsList, {typ="RGBW", id=449, r=180, g=100, b=0, w=255}); - Ajouter une lampe type Hue (via VD), en utilisant la dernière couleur de celle-ci : table.insert(LightsList, {typ="VD", id=89, slider=10}); - Ajouter une lampe type Hue (via VD), en rechargeant un nouveau preset de couleur ou de balance des blancs. Attention, je conseille que la luminosité de ce bouton soit la plus basse possible. Sinon, vous aurez un flash à 100% lors de l'appui sur le bouton, avant d'avoir un allumage progressif vers la valeur programmée dans le VD. table.insert(LightsList, {typ="VD", id=89, slider=10, btn=6}); - Ajouter un volet roulant qui s'ouvrira en 6 étapes. table.insert(LightsList, {typ="Shutter", id=279, steps=6}); - On mélange et on complexifie : Je veux que le volet 45 s'ouvre progressivement en 20 étapes, seulement si le soleil est levé, que le device 67 s'allume seulement si le soleil n'est pas levé et que le VD 89 s'allume dans tous les cas : table.insert(LightsList, {typ="Shutter", mode="jour", id=45, pas=20}); table.insert(LightsList, {typ="Dimmer", mode="nuit", id=67}); table.insert(LightsList, {typ="VD", mode="both", id=89, slider=10, btn=6}); Pour les enceintes, c'est toujours de la même forme {id=ID du VD, TypedeBouton=NumBouton}. Mettre les actions dans l'ordre où vous voulez les voir se réaliser. TypedeBouton = btn ou slider - Ajouter une enceinte type Sonos : table.insert(SpeakerAction, {id=242, slider=15}); -- VD 242 / Action sur le slider 15 table.insert(SpeakerAction, {id=242, btn=18}); -- VD 242 / Appui sur le bouton 18 - Ajouter deux enceintes type Sonos. Regrouper les actions similaires. Dans l'exemple suivant, les deux enceintes se verront mettre leur slider à zéro avant que le moindre programme soit démarré (par l'appui sur le bouton 18). table.insert(SpeakerAction, {id=242, slider=15}); -- VD 242 / Action sur le slider 15 table.insert(SpeakerAction, {id=252, slider=15}); -- VD 252 / Action sur le slider 15 table.insert(SpeakerAction, {id=242, btn=18}); -- VD 242 / Appui sur le bouton 18 table.insert(SpeakerAction, {id=252, btn=18}); -- VD 252 / Appui sur le bouton 18 - Ajouter une enceinte type Yamaha Multicast table.insert(SpeakerAction, {id=242, btn=3}); -- VD 242 / Appui sur le bouton 3 pour l'allumage table.insert(SpeakerAction, {id=242, slider=24}); -- VD 242 / Action sur le slider 24 table.insert(SpeakerAction, {id=242, btn=10}); -- VD 242 / Appui sur le bouton 10 (Source) - Ajouter deux enceintes type Yamaha Multicast - Même chose en double : table.insert(SpeakerAction, {id=242, btn=3}); -- VD 242 / Appui sur le bouton 3 pour l'allumage table.insert(SpeakerAction, {id=245, btn=3}); -- VD 245 / Appui sur le bouton 3 pour l'allumage table.insert(SpeakerAction, {id=242, slider=24}); -- VD 242 / Action sur le slider 24 table.insert(SpeakerAction, {id=245, slider=24}); -- VD 245 / Action sur le slider 24 table.insert(SpeakerAction, {id=242, btn=10}); -- VD 242 / Appui sur le bouton 10 (Source) table.insert(SpeakerAction, {id=245, btn=10}); -- VD 245 / Appui sur le bouton 10 (Source) - On peut très bien avoir une enceinte type Sonos et une enceinte type Yamaha Multicast. Et bien, il suffit de mixer les deux méthodes : table.insert(SpeakerAction, {id=245, btn=3}); -- VD 245 / Appui sur le bouton 3 pour l'allumage (Yamaha Multicast) table.insert(SpeakerAction, {id=242, slider=15}); -- VD 242 / Action sur le slider 15 (Sonos) table.insert(SpeakerAction, {id=245, slider=24}); -- VD 245 / Action sur le slider 24 (Yamaha Multicast) table.insert(SpeakerAction, {id=242, btn=18}); -- VD 242 / Appui sur le bouton 18 (Sonos) table.insert(SpeakerAction, {id=245, btn=10}); -- VD 245 / Appui sur le bouton 10 (Yamaha Multicast)   Icône de la scène   Exemple de DEBUG Téléchargements [REVEIL]_CHAMBRE v2.1.vfib Advanced Alarm Clock 3.6.lua English Version : Advanced Alarm Clock on the offical forum Scène 2.7 (Le support n'est plus fourni pour cette version : Manageable Alarm Clock 2.7.lua