Aller au contenu
sebcbien

Fixer La Valeur D'un Dimmer

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le partage  ;)

 

// je me suis permis de modifier le titre //

Partager ce message


Lien à poster
Partager sur d’autres sites

Quand tu enchaines les commandes fibaro:call(54, 'setValue', 60) et fibaro:call(54, 'turnOff') ça ne fait pas flasher la lumière ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Imperceptible, c'est de l’halogène (4 spots de 75W pour la table de la SAM... d'ou les 60% :rolleyes:), il y a une petite inertie quand même

Partager ce message


Lien à poster
Partager sur d’autres sites

OK merci, du coup c'est intéressant comme script. Merci :)

Partager ce message


Lien à poster
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 ;-)

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

J'essaye de faire un peu la même chose mais avec une HCL :

710981Image1.png

 

Mais je sais pas pourquoi ça ne marche pas....

Partager ce message


Lien à poster
Partager sur d’autres sites

convertis en lua "pour voir" ça devrait être plus clair

Partager ce message


Lien à poster
Partager sur d’autres sites

Il va avoir du mal avec une HCL

Partager ce message


Lien à poster
Partager sur d’autres sites

@ksar, as-tu coché scène active et lancer au démarrage du hc2?

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ksar,merci de ne pas citer le message précédent.

Envoyé de mon C6603 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à  tous, 

 

Merci pour la réponse, finalement c'était pas si bête que ca comme question ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faut passer par l'API HTTP pour modifier la valeur d'un paramètre de module.

 

Sauf que le paramètre 40 n'a pas l'air exposés sur mes dimmers, ça passe de 39 à  41 directement :

http://1.2.3.4/api/devices?id=34

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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 . Et il ne faut pas hésiter àme relancer si je zappe

Envoyé de mon smartphone

  • Upvote 1

Partager ce message


Lien à poster
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}]}}"
    }
  });

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faut se baser sur un export json du périphérique par exemple àl'aide du Toolkit ou directement dans ton navigateur.

Partager ce message


Lien à poster
Partager sur d’autres sites

×