La bonne température a la bonne heure
La bonne température a la bonne heure
Salut a tous, cela faisait longtemps que je n’étais pas venu vous solliciter, et c'est bien dommage c'est vrai.
Une installation qui fonctionne c'est bien, allumer éteindre les choses en fonctions des heures et des présences c'est cool, le Control vocal c'est hyper cool, Xiaomi Yeelight c'est supracool.
Mais de mon coté il est temps d'ajouter un peu d'intelligence.
J'ai des pièces équipées de matériel Yeelight qui permet de jouer sur la température du blanc : Blanc Chaud presque orange a un blanc froid type néon.
L'une de ces pièces est presque aveugle, j'ai bien une fenêtre mais elle donne sur un escalier, sous une terrasse, donc même de jour il faut allumer la lumiére.
C'est sur cette pièce que je souhaite faire ceci partant du principe que :
- Le soleil au zénith peu ce traduire par une température de blanc froid de type néon : 6000k
- Que de nuit il nous faut une lumière plus chaude tirant sur le jaune orange : 3500k
- Que dans Domoticz nous avons les infos de levé et de couché du soleil
Je souhaiterait avoir une variation automatique de la température du blanc en fonction de la position du soleil, ceci toutes les 5 minutes, afin que ce soit le plus progressif possible et presque invisible / perturbant.
Exemple :
lever de soleil a 7h : Lumière a 3500k qui grimpe a 6000k a 13h puis retourne a 3500k a 19h pour le couché du soleil et la nuit.
Nous avons donc 19h00-7h : 12h00 de jour : 720 minutes soit 144 tranches de 5 minutes au total :
- 72 de 7h a 13h
- 72 de 13h a 19h
Soit des variations de : (6000-3500)/144 : 17.361111k j'arrondi a 17k
En attendant que les dev de Domoticz intègre la gestion des températures de blancs, il faut passer par l'api Yeelight, ce n'est pas le plus difficile.
Pour faciliter la gestion des variations je pensais garder la température a "afficher sur l'ampoule" dans une variable utilisateur.
Si les heures de lever et de coucher était aussi carré que l'exemple ce serait "facile" mais vous le savez ce sont des variables qui ne sont pas forcement multiple de 5, oui on peut tricher pour faire commencer et finir les variations au multiple de 5 prés.
J'ai bien des connaissances en LUA Domoticz mais elles sont "basiques" ici il faut faire des maths que je ne sais pas forcement traduire.
Si vous avez des exemples ou idée je suis preneur.
Merci
Une installation qui fonctionne c'est bien, allumer éteindre les choses en fonctions des heures et des présences c'est cool, le Control vocal c'est hyper cool, Xiaomi Yeelight c'est supracool.
Mais de mon coté il est temps d'ajouter un peu d'intelligence.
J'ai des pièces équipées de matériel Yeelight qui permet de jouer sur la température du blanc : Blanc Chaud presque orange a un blanc froid type néon.
L'une de ces pièces est presque aveugle, j'ai bien une fenêtre mais elle donne sur un escalier, sous une terrasse, donc même de jour il faut allumer la lumiére.
C'est sur cette pièce que je souhaite faire ceci partant du principe que :
- Le soleil au zénith peu ce traduire par une température de blanc froid de type néon : 6000k
- Que de nuit il nous faut une lumière plus chaude tirant sur le jaune orange : 3500k
- Que dans Domoticz nous avons les infos de levé et de couché du soleil
Je souhaiterait avoir une variation automatique de la température du blanc en fonction de la position du soleil, ceci toutes les 5 minutes, afin que ce soit le plus progressif possible et presque invisible / perturbant.
Exemple :
lever de soleil a 7h : Lumière a 3500k qui grimpe a 6000k a 13h puis retourne a 3500k a 19h pour le couché du soleil et la nuit.
Nous avons donc 19h00-7h : 12h00 de jour : 720 minutes soit 144 tranches de 5 minutes au total :
- 72 de 7h a 13h
- 72 de 13h a 19h
Soit des variations de : (6000-3500)/144 : 17.361111k j'arrondi a 17k
En attendant que les dev de Domoticz intègre la gestion des températures de blancs, il faut passer par l'api Yeelight, ce n'est pas le plus difficile.
Pour faciliter la gestion des variations je pensais garder la température a "afficher sur l'ampoule" dans une variable utilisateur.
Si les heures de lever et de coucher était aussi carré que l'exemple ce serait "facile" mais vous le savez ce sont des variables qui ne sont pas forcement multiple de 5, oui on peut tricher pour faire commencer et finir les variations au multiple de 5 prés.
J'ai bien des connaissances en LUA Domoticz mais elles sont "basiques" ici il faut faire des maths que je ne sais pas forcement traduire.
Si vous avez des exemples ou idée je suis preneur.
Merci
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: La bonne température a la bonne heure
Salut,
un peut à l'arrache.. ça va demander affinage, arrondissage, mis en variables, etc..... mais en gros un truc comme ça ?
un peut à l'arrache.. ça va demander affinage, arrondissage, mis en variables, etc..... mais en gros un truc comme ça ?
Code : Tout sélectionner
commandArray = {}
local color
time = os.date("*t")
if time.hour > 7 and time.hour < 19 then
local insecond = 60*(time.hour*60 + time.min)
color = 4750+1250*math.cos(2.8*math.pi/66000*insecond)
else
color = 3500
end
print('color:'..color)
return commandArray
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: La bonne température a la bonne heure
Comme a ton d'habitude tu me sors un truc super...Merci.vil1driver a écrit :Salut,
un peut à l'arrache.. ça va demander affinage, arrondissage, mis en variables, etc..... mais en gros un truc comme ça ?
Code : Tout sélectionner
commandArray = {} local color time = os.date("*t") if time.hour > 7 and time.hour < 19 then local insecond = 60*(time.hour*60 + time.min) color = 4750+1250*math.cos(2.8*math.pi/66000*insecond) else color = 3500 end print('color:'..color) return commandArray
Je publierais le script ici avant d'etre sur mon blog
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: La bonne température a la bonne heure
affinage #1
pleine prise en compte du soleil


pleine prise en compte du soleil
Code : Tout sélectionner
commandArray = {}
local mini = 3500
local maxi = 6000
local delta = maxi - mini
local wakeup = 60*timeofday['SunriseInMinutes']
local goodnight = 60*timeofday['SunsetInMinutes']
local periode = goodnight - wakeup
local offset = wakeup-periode/2
local color = mini
local time = os.date("*t")
local now = 60*(time.hour*60 + time.min)
if now >= wakeup and now < goodnight then
color = math.floor((maxi-delta/2)+(delta/2)*math.cos((now-offset)*2*math.pi/periode)+0.5)
end
print('color:'..color)
return commandArray

MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: La bonne température a la bonne heure
petits codes pour convertir au besoin
KelvinColor en RGB
RGB en hexadecimal
KelvinColor en RGB
Code : Tout sélectionner
-- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940)
dofile('/home/vil1driver/domoticz/scripts/lua/modules.lua')
local debug = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
-- to rgb
color = color/100
local red, green, blue
--Calculate Red:
if color <= 66 then
red = 255
else
red = constrain(round(329.698727446 * ((color - 60) ^ -0.1332047592)),0,255)
end
--Calculate Green:
if color <= 66 then
green = constrain(round(99.4708025861 * math.log(color) - 161.1195681661),0,255)
else
green = constrain(round(288.1221695283 * ((color - 60) ^ -0.0755148492)),0,255)
end
--Calculate Blue:
if color >= 66 then
blue = 255
else
if color <= 19 then
blue = 0
else
blue = constrain(round(138.5177312231 * math.log(color - 10) - 305.0447927307),0,255)
end
end
log(red)
log(green)
log(blue)
Code : Tout sélectionner
-- to hex
local rgb = {red,green,blue}
local hexadecimal = '#'
for key, value in pairs(rgb) do
local hex = ''
while(value > 0)do
local index = math.fmod(value, 16) + 1
value = math.floor(value / 16)
hex = string.sub('0123456789ABCDEF', index, index) .. hex
end
if(string.len(hex) == 0)then
hex = '00'
elseif(string.len(hex) == 1)then
hex = '0' .. hex
end
hexadecimal = hexadecimal .. hex
end
log(hexadecimal)
Dernière modification par vil1driver le 01 avr. 2018, 14:43, modifié 1 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
-
landaisbenj
- Messages : 695
- Inscription : 12 mars 2017, 19:24
Re: La bonne température a la bonne heure
Des oufs ...
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Re: La bonne température a la bonne heure
Merci Vil1D
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
Re: La bonne température a la bonne heure
vil1driver a écrit :petits codes pour convertir au besoin
KelvinColor en RGB
Code : Tout sélectionner
-- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940) dofile('/home/vil1driver/domoticz/scripts/lua/modules.lua') local debug = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir -- to rgb color = color/100 local red, green, blue --Calculate Red: if color <= 66 then red = 255 else red = constrain(round(329.698727446 * ((color - 60) ^ -0.1332047592)),0,255) end --Calculate Green: if color <= 66 then green = constrain(round(99.4708025861 * math.log(color) - 161.1195681661),0,255) else green = constrain(round(288.1221695283 * ((color - 60) ^ -0.0755148492)),0,255) end --Calculate Blue: if color >= 66 then Blue = 255 else if color <= 19 then blue = 0 else blue = constrain(round(138.5177312231 * math.log(color - 10) - 305.0447927307),0,255) end end log(red) log(green) log(blue)
Merci pour ce bout de code car j'ai bien "device" qui demande ce type d'info : Mon bureau
https://drive.google.com/uc?id=1nzgQOr5 ... uS_3KfeYUt
Fait avec code : https://github.com/jasoncoon/esp8266-fastled-webserver : une esp8266 + 5m de ruban de led adressable et c'est la fete : effets façon fete foraine, couleur, j'essaye de faire un plugin python pour ceci justement
Par contre il ne suit pas du tout une variation de blanc mais une variation de couleur, c'est fait expres (en prennant en compte les variation possible de teinte d'un ruban a l'autre) ?
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: La bonne température a la bonne heure
Pas de quoi, ce sujet m'a inspiré..
Je vai très certainement faire la même chose que toi.
Je vai très certainement faire la même chose que toi.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
-
landaisbenj
- Messages : 695
- Inscription : 12 mars 2017, 19:24
Re: La bonne température a la bonne heure
Il devrait exister la même chose pour l'intensité lumineuse :} Plus ça s'assombrit, plus ça s'allume.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway