Aller au contenu

Fixer La Valeur D'un Dimmer


sebcbien

Recommended Posts

Bonjour,

Je partage un petit script qui permet de fixer la valeur d'un dimmer à  60%, toutes les 4 heures, sauf si en utilisation.

Le script fonctionne très bien depuis des mois.

Je suis loin d'être un développeur, donc s'il y a des suggestions d'amélioration, n'hésitez pas

 

Créer une scène et y mettre ce code:

--[[
%% autostart
%% properties
%% globals
--]]

-- si lampe SAM eteinte, set dimmer a 60% toutes les 4 heures entre 0h01 et 23h59

local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "00", "01")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "23", "59"))) and (math.floor(os.time()/60)-math.floor(1391295660/60))%240 == 0 )
and
 ( tonumber(fibaro:getValue(54, "value")) == 0 )
)
then
    fibaro:call(54, 'setValue', 60);
    fibaro:call(54, 'turnOff'); 
end

fibaro:sleep(60*1000);
end
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "00", "01")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "23", "59"))) )
and
 ( tonumber(fibaro:getValue(54, "value")) == 0 )
or
startSource["type"] == "other"
)
then
    fibaro:call(54, 'setValue', 60);
    fibaro:call(54, 'turnOff'); 
end

end

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à  tous,

 

Suis un newbie dans la domotique, alors peut-etre que la question va être un peu idiote, veuillez m'excuser par avance alors ;-)

 

Quel est l'interet/objectif de mettre les dimmer à  60 % quand c'est éteint ? Je ne percois pas la subtilité ??

 

Merci beaucoup..Bon au cas où, je prends de l'avance je sors ;-)

Lien vers le commentaire
Partager sur d’autres sites

Afin qu'au prochain allumage via l'interrupteur ça se mette automatiquement à60%, surtout utile avec des spots puissants.

Et quand tu as besoin d'un max de lumière, par exemple pour travailler, faire le ménage,etc, alors tu choisis manuellement 100% en double clic sur l'interrupteur.

Lien vers le commentaire
Partager sur d’autres sites

Ouais mais ça ne se lance pas a priori, mais bon je suis pas encore un pro de la box, je vais fouiller un peu pour voir ce qu'il se passe.

Lien vers le commentaire
Partager sur d’autres sites

  • 7 months later...

Salut a tous,

je suis aussi entrain d'essayer de faire que la lumière soit tamisée la nuit si on l'allume...

malheureusement la technique d'allumer à  20% puis d'éteindre ne fonctionne pas pour moi car toute les lumières clignotent....

 

en revanche, j'ai vu sur le forum http://forum.micasaverde.com/index.php?topic=22733.0 que le paramètre 40 permet de définir la luminosité au prochain allumage...

 

la question est comment est ce que en LUA je peux modifier la valeur d'un paramètre???

j'ai essayé:

fibaro:call(14, 'setParameter', 40,20);
fibaro:call(14, 'setProperty', 40, 20)

et d'autre combinaison... mais sans aucun succès... est ce que qqun a une idée comment modifier un paramètre depuis LUA???

 

merci pour votre aide a tous et bon week-end

 

Steven

Lien vers le commentaire
Partager sur d’autres sites

Je ne sais pas trop, je n'ai jamais modifié de paramètres via l'API.

Si Krikroff passe par ici, il t'en dira plus.

 

J'ai ce genre de script en stock pour modifier des paramètres via l'API, ça ne ressemble pas du tout à  ce que tu proposes (mais pas testé) :

local json = '{"id":'..deviceID..',"properties":{"parameters":[{"id": 0,"size": 1,"value": 0}]}}'; -- valeurs à  changer dans parametres
local HC2 = Net.FHttp("127.0.0.1", 11111)
local response, status, errorCode = HC2:PUT("/api/devices?id="..deviceID, json)
if tonumber(status) == 200 then
	fibaro:debug("Security locked")
else
	fibaro:debug("err ID: "..deviceID.. " status: "..status)
end

Lien vers le commentaire
Partager sur d’autres sites

merci beaucoup pour ton coup de main.

 

malheureusement Net.FHttp ne fonctionne que dans les module virtuel  et pas dans les scènes.... (de ce que j;ai compris...)

 

si @Krikroff a du temps, son aide serait la super bien venu.

 

merci encore pour ton aide Lazer

Lien vers le commentaire
Partager sur d’autres sites

Oui dans une scène il faut utiliser net.HTTPClient, je te propose un script dans la journée, sur mon portable c'est difficile d'écrire du code proprement [emoji4]. Et il ne faut pas hésiter àme relancer si je zappe [emoji16]

Envoyé de mon smartphone

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Chose promise ...

 

C'est un bout de code extrait d'une scène "FGMS Fix" :lol:

 

Voici donc un exemple d'utilisation de net.HTTPClient dans une scène pour modifier les paramètres d'un module depuis l' API.

local httpClient = net.HTTPClient();
httpClient:request('http://127.0.0.1:11111/api/devices/849', {
    success = function(response)
      if tonumber(response.status) == 200 then
        print("Updated at " .. os.date());
      else
        print("Error " .. response.status)
      end
    end,
    error = function(err)
      print('error = ' .. err)
    end,
    options = {
      method = 'PUT',
      headers = {
        ["content-type"] = 'application/x-www-form-urlencoded;'
      },
      data = "{\"id\":849,\"properties\":{\"associationSet\":[{\"devices\":[48],\"groupID\":1}, {\"devices\":[1],\"groupID\":2}, {\"devices\":[1],\"groupID\":3}]}}"
    }
  });
Lien vers le commentaire
Partager sur d’autres sites

Salut Krikroff,

 

merci pour le code que tu as envoyé. j'essaie de comprendre la syntaxe...

 

on met "propreties" puis le nom/numéro de la propriété puis ensuite la valeur souhaitée?

 

merci et bonne soirée

 

Steven

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...