Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
fr:liste_script [2015/09/11 11:35]
eric64
fr:liste_script [2016/07/28 14:14]
mifrey Script 6 + coloration syntaxique
Line 1: Line 1:
 ====== 3- Liste des scripts LUA ====== ====== 3- Liste des scripts LUA ======
-1- Modifier la couleur d’une lumière Led en fonction de la température de la pièce. 
  
- +\\ === 1- Modifier la couleur d’une lumière Led en fonction de la température de la pièce ===
- +
- +
- +
- +
-=== 1- Modifier la couleur d’une lumière Led en fonction de la température de la pièce ===+
 //By captainigloo// //By captainigloo//
  
 **But :** Script permettant de modifier la couleur d’une led RGB en fonction de la température de la pièce **But :** Script permettant de modifier la couleur d’une led RGB en fonction de la température de la pièce
  
-<code>+<code lua>
 -- Title: Set RGB light output depending on Temperature -- Title: Set RGB light output depending on Temperature
 --  -- 
Line 59: Line 53:
  
  
-=== 2- Envoyer un SMS via Free suivant un évènement donné ===+\\ === 2- Envoyer un SMS via Free suivant un évènement donné ===
 //By captainigloo// //By captainigloo//
  
Line 66: Line 60:
  
  
-<code>+<code lua>
 function urlencode(str) function urlencode(str)
    if (str) then    if (str) then
Line 85: Line 79:
 return true return true
 </code> </code>
 +
 +
 +
 +
 +\\ === 3- Gestion d'un chauffage===
 +//By Raoulh//
 +
 +**But :** Script permettant de gérer le chauffage en fonction de la température des panneaux solaires du ballon EC et du plancher.
 +
 +<code lua>
 +print("script chauffage start")
 + local temp_panneaux = calaos:getInputValue("input_temp_3")
 + local temp_ballonh = calaos:getInputValue("input_temp_0")
 + local temp_plancher = calaos:getInputValue("input_temp_2")
 + local consigne = calaos:getInputValue("intern_10")
 + local consigne_ballon = calaos:getInputValue("intern_1")
 + local consigne_plancher = calaos:getInputValue("intern_0")
 +
 + if temp_panneaux >= (temp_ballonh + consigne) then
 +     -- active pompe solaire si < max
 +     if temp_ballonh < 70 then
 +         calaos:setOutputValue("output_chauff_2", true)
 +     else
 +         calaos:setOutputValue("output_chauff_2", false)
 +     end
 +
 +     -- force stop elect resistance
 +     calaos:setOutputValue("output_chauff_1", false)
 +
 +     active_elec = false
 + end
 +
 + -- Arret de la pompe solaire si temperature panneau insuffisante
 + if temp_panneaux <= temp_ballonh then
 +     -- stop pompe solaire
 +     calaos:setOutputValue("output_chauff_2", false)
 +
 +     active_elec = true
 + end
 +
 + -- start/stop elec si consigne et active elec
 + if active_elec then
 +     if temp_ballonh <= consigne_ballon then
 +         calaos:setOutputValue("output_chauff_1", true)
 +     end
 +     if temp_ballonh > (consigne_ballon + 1) then
 +         calaos:setOutputValue("output_chauff_1", false)
 +     end
 + end
 +
 + -- start/stop plancher pompe si consigne
 + if temp_plancher <= consigne_plancher then
 +     calaos:setOutputValue("output_chauff_0", true)
 + end
 + if temp_plancher > (consigne_plancher + 1) then
 +     calaos:setOutputValue("output_chauff_0", false)
 + end
 +
 + -- pas besoin d'action, toujours retourner false
 + return false
 +</code>
 +
 +
 +
 +\\ === 4- Gestion de l'alimentation d'un transfo de rubans leds ===
 +//By Raoulh & Eric64//
 +
 +**But :** Script permettant de gérer la mise en route d'un transformateur 220v/24v pour l'allumage de led.
 +
 +**Précisions :** plusieurs cordons leds sont allimentés par le même transfo. Nous souhaitons que le transfo soit éteint lorsqu'aucune led n'est allumée et pouvoir allumer ou éteindre le transfo lorsque le système détecte un changement d'état d'une led.
 +
 +**A noter :** Calaos V2 ne gère pas les rubans led RGBW. Il faut donc créer 2 lumières DMX, une pour le RGB l'autre pour le W.
 +
 +
 +__A créer dans CALAOS INSTALLER :__
 +<code>
 +- IO inter_booleen. "active_bloc" : Elle va nous permettre de signaler un changement d'état des leds
 +- lumière : cette lumière est "fictive". Elle sert 
 +</code>
 +
 +__Règles à créer pour chaque lumière :__
 +<code>
 +SI RGBplafond == changed
 + ALORS active_bloc = toggle
 +</code>
 +
 +__Règle pour gérer le transfo :__
 +<code>
 +SI active_bloc = changed
 + ALORS exécution du script
 +</code>
 +
 +__Script :__
 +<code lua>
 + local RGBplafond = calaos:getOutputValue("output_55" -- lumière RGB du plafond
 + local Wplafond = calaos:getOutputValue("output_72" -- lumière W du plafond
 + local RGBmeuble = calaos:getOutputValue("output_73" -- lumière RGB des meubles
 + local Wmeuble = calaos:getOutputValue("output_74" -- lumière W des meubles
 + local RGBplinthes = calaos:getOutputValue("output_75" -- lumière RGB des plinthes
 + local Wplinthes = calaos:getOutputValue("output_76" -- lumière W des plinthes
 +
 +-- SI une lumière est différente de 0 (donc n'est pas éteinte)
 + if RGBplafond ~= "0" or Wplafond ~= "0" or RGBmeuble ~= "0" or Wmeuble ~= "0" or RGBplinthes ~= "0" or Wplinthes ~= "0"
 + then
 +    -- ALORS allume le bloc
 +    calaos:setOutputValue("output_81", true)  -- output_81 correspond à la lumière "Fictive" et donc au relais du transfo
 + else
 +    -- SINON coupe le bloc
 +    calaos:setOutputValue("output_81", false)
 + end
 + return true
 +</code>
 +
 +
 +
 +\\ === 5- Conserver la valeur d'un appui sur un BP dans une variable  ===
 +//By eric64//
 +
 +**But :** Script permettant de donner une valeur True ou False à une variable lors de l'appui sur un BP pour allumer/éteindre des lumières. Certaines lumières de mon entrée sont pilotées par un BP (pour éclairer le temps voulu) et un détecteur de mouvement (pour éclairer juste le temps du passage). Je veux que les actions du détecteur de mouvement soient bloquées lorsque j'allume les lumières depuis le BP. Lorsque j'allume par le BP la variable passe à True. J'ai donc ajouté la condition variable == false sur les actions du détecteur de mouvement.
 +
 +<code lua>
 +local Variable_Activation_Inter = calaos:getInputValue("intern_7" -- je déclare ma variable
 +
 +if Variable_Activation_Inter == false then            -- si ma variable est fausse (je n'ai donc pas allumé les lumières par BP)
 +  calaos:setOutputValue("output_78", set 0xFFFF00)    -- alors j'allume ma lumière RGB en orange
 +  calaos:setOutputValue("output_54", true)            -- + 2 spots au sol 
 +  calaos:setOutputValue("output_14", true)            -- + 1 spot plafond
 +  calaos:setOutputValue("intern_7", true)             -- et je modifie l'état de ma variable pour la mettre à vrai
 +  
 +elseif Variable_Activation_Inter == true then         -- sinon si ma variable est vrai (j'avais déjà donc allumé mes lumières par BP)
 +  calaos:setOutputValue("output_78", false)           -- alors j'éteins toutes mes lumières
 +  calaos:setOutputValue("output_54", false)
 +  calaos:setOutputValue("output_14", false)
 +  calaos:setOutputValue("intern_7", false)            -- et je remets ma variable à faux
 +end
 +return true
 +</code>
 +
 +\\ === 6- Détection d'une situation "panique"  ===
 +//By mifrey//
 +
 +**But :** Script permettant de détecter une situation "panique" dans laquelle un poussoir est actionné plusieurs fois pendant un certain temps.  
 +
 +
 +**Précisions :** Le script doit être mis dans les conditions d'une règle et être déclenché par tous les poussoirs voulus (je les ai mis tous chez moi).  Il retourne true en cas de situation panique. Dans l'exemple, il retourne true si les poussoirs sont pressés 6 fois (12 changements d'etat) dans les 2 secondes (à définir dans le timer). Les actions sont à dénifir dans la règle, par exemple allumer toute les lumières, envoyer un mail ou déclencher l'alarme, etc.
 +
 +
 +__A créer dans CALAOS INSTALLER :__
 +<code>
 +- Un timer (type InputTimer) : Pour mesurer le temps depuis la première pression sur le poussoir. Le timer est à régler sur quelques secondes.
 +- Un compteur (type InternalInt) : Pour compter le nombre de fois qu'un poussoir est actionné.
 +</code>
 +
 +__Script :__
 +<code lua>
 +-- Detect a panic situation in which switches are pressed several times within a short time.
 +-- The script assumes to be called each time the state of a switch changes.
 +
 +--if true then return false end -- Uncomment to disable the script
 +
 +-- Script start
 +local script_name = "SCRIPT_CONDITIONS_PANIC"
 +print(script_name .. ": start")
 +
 +-- IO id
 +local timer_id = "input_58" -- InputTimer type
 +local counter_id = "intern_0" -- InternalInt type
 +
 +-- Other variables to define
 +local panic_count = 12 -- Number of times the state of a switch must change within a specific time (typically 2 seconds) to trigger a panic situation
 +
 +-- Print timer and counter value at script start
 +print(script_name .. ": timer = " .. tostring(calaos:getInputValue(timer_id)))
 +print(script_name .. ": counter = " .. tostring(calaos:getInputValue(counter_id)))
 +
 +-- Get timer status: Timer is false when timer starts or stops, true when timer is done.
 +local timer = calaos:getInputValue(timer_id) -- ATTENTION: getInputValue(InputTimer type) returns a string type
 +
 +-- Timer is done, reset timer and counter.
 +if timer == "true" then
 +    print(script_name .. ": Timer is done, reset timer and counter.")
 +    calaos:setOutputValue(timer_id, "start")
 +    calaos:setOutputValue(counter_id, 1)
 +    print(script_name .. ": timer = " .. tostring(calaos:getInputValue(timer_id)))
 +    print(script_name .. ": counter = " .. tostring(calaos:getInputValue(counter_id)))
 +    print(script_name .. ": end")
 +    return false
 +end
 +
 +-- Increment the counter
 +local counter = calaos:getInputValue(counter_id) + 1
 +calaos:setOutputValue(counter_id, counter)
 +
 +-- Timer is not done and counts not reached, continues to count.
 +if counter < panic_count then
 +    print(script_name .. ": Timer is not done and counts not reached, continue.")
 +    print(script_name .. ": timer = " .. tostring(calaos:getInputValue(timer_id)))
 +    print(script_name .. ": counter = " .. tostring(calaos:getInputValue(counter_id)))
 +    print(script_name .. ": end")
 +    return false
 +-- Timer is not done and counts reached, panic mode.    
 +else
 +    print(script_name .. ": Timer is not done and counts reached, panic mode.")
 +    print(script_name .. ": timer = " .. tostring(calaos:getInputValue(timer_id)))
 +    print(script_name .. ": counter = " .. tostring(calaos:getInputValue(counter_id)))
 +    calaos:setOutputValue(timer_id, "stop")
 +    calaos:setOutputValue(counter_id, 0)
 +    print(script_name .. ": end")
 +    return true
 +end
 +
 +print(script_name .. ": Oups, should never be there...")
 +return false
 +</code>
 +
 +
 +