HUE Philips variation aleatoire de couleur [LUA]

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
MisterT
Messages : 55
Inscription : 12 avr. 2015, 19:04

HUE Philips variation aleatoire de couleur [LUA]

Message par MisterT »

Salut a tous

J'ai recement fait l'acqusition d'une lampe Philips HUE GO et d'un pont pour pouvoir me faire une lumière d'ambiance dans mon salon. Mon but de ce script est que la lampe change de couleur de manière aleatoire toute les 10 minutes. J'ai donc commencé sur un script avec variation au bout de 10 min avec les variables HUE standard

Code : Tout sélectionner

-- script_time_variation_hue.lua
t1 = os.time()
s = otherdevices_lastupdate['Hue go 1']
-- returns a date time like 2013-07-11 17:23:12
 
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
 
commandArray = {}
 
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices['Hue go 1'] == 'On' and difference > 600 and difference < 700) then
  brightness = 80
  iswhite = "false"
  hue = "0" -- red
  idx = otherdevices_idx["Hue go 1"] -- name lamp
  url = 'http://xxx.xxx.x.xx:xxxx/json.htm?type=command&param=setcolbrightnessvalue&idx=' .. idx .. '&hue=' .. hue .. '&brightness=' .. brightness ..'&iswhite=' .. iswhite
  commandArray['OpenURL']= url  
end 
 
return commandArray

Ce script fonctionne et me passe ma lampe au bout de 10 min en rouge.
Je cherche desormais a faire varier les variables HUE en aleatoire:
- Pour brightness aleatoire entre 1 et 254
- Pour hue aleatoire entre 1 et 65535

Quelqu'un saurait m'aider pour ces variables en random?

Merci pour les futures réponses
naerleth
Messages : 38
Inscription : 14 déc. 2016, 14:25

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par naerleth »

Hello

Je te conseille de jeter un oeil à la doc, et de tester des bouts de code LUA avec cette page :
https://www.lua.org/cgi-bin/demo

Pour t'aider plus précisément :

Code : Tout sélectionner

-- Initialise le seed
math.randomseed(os.time())
-- brightness entre 1 et 255 (FF)
local brightness = math.random(1, 255))
-- hue entre 1 et 65535 (FFFF)
local hue = math.random(1, 65535)
Voilà
MisterT
Messages : 55
Inscription : 12 avr. 2015, 19:04

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par MisterT »

Salut

Je reviens pour la variation aleatoire de la lumiere de la lampe HUE. Avec ces variables, aucun probleme.
Ma question porte desormais sur le fait de changer toute les 10 minutes la couleur. Avec mes peu de competences en lua et apres avoir essayé plusieurs bout de script en m'inspirant de script sur le forum je n'y arrive pas

j'ai essayé ça mais sans resultat:(je n'utilise plus difference mais

Code : Tout sélectionner

t1 = os.date("*t")

if (otherdevices['Hue go 1'] == 'On' and t1.min%10 == 0) then
et le script en entier

Code : Tout sélectionner


-- script_time_variation_hue.lua
t1 = os.date("*t")
s = otherdevices_lastupdate['Hue go 1']
-- Initialise le seed
math.randomseed(os.time())
-- returns a date time like 2013-07-11 17:23:12

year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)

commandArray = {}

t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
--  difference = (os.difftime (t1, t2))
--  if (otherdevices['Hue go 1'] == 'On' and difference > 120 and difference < 220) then
 if (otherdevices['Hue go 1'] == 'On' and t1.min%5 == 0) then
--  brightness = 80
local brightness = math.random(1, 255)
  iswhite = "false"
--  hue = "0" -- red
local hue = math.random(1, 65535)
  idx = otherdevices_idx["Hue go 1"] -- name lamp
  url = 'http://192.168.1.xx:808x/json.htm?type=command&param=setcolbrightnessvalue&idx=' .. idx .. '&hue=' .. hue .. '&brightness=' .. brightness ..'&iswhite=' .. iswhite
  commandArray['OpenURL']= url
end
return commandArray

un petit coup de main pour finir ce script ?
naerleth
Messages : 38
Inscription : 14 déc. 2016, 14:25

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par naerleth »

Si tu ajoutes

Code : Tout sélectionner

print(otherdevices['Hue go 1'])
print(otherdevices_idx['Hue go 1'])
print(t1.min%5)
avant

Code : Tout sélectionner

if (otherdevices['Hue go 1'] == 'On' and t1.min%5 == 0) then
tu obtiens quoi ?
MisterT
Messages : 55
Inscription : 12 avr. 2015, 19:04

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par MisterT »

salut naerleth

suivant ta demande j'obtiens

2017-02-06 13:54:00.426 LUA: Off
2017-02-06 13:54:00.426 LUA: 120
2017-02-06 13:54:00.427 LUA: 4

pour

print(otherdevices['Hue go 1'])
print(otherdevices_idx['Hue go 1'])
print(t1.min%5)

donc Off c'est bon, la hue est bien éteinte
pour 120 c'est bon ma hue à bien l'idx 120
pour le 4 je ne comprends pas trop mon but est de changer la couleur toutes les 5 minutes

Je précise que le script fonctionne mais il n'y a qu'un seul changement de couleur, il n'y en a pas toutes les 5 minutes

une idée
naerleth
Messages : 38
Inscription : 14 déc. 2016, 14:25

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par naerleth »

MisterT a écrit :salut naerleth

suivant ta demande j'obtiens

2017-02-06 13:54:00.426 LUA: Off
2017-02-06 13:54:00.426 LUA: 120
2017-02-06 13:54:00.427 LUA: 4

pour

print(otherdevices['Hue go 1'])
print(otherdevices_idx['Hue go 1'])
print(t1.min%5)

donc Off c'est bon, la hue est bien éteinte
pour 120 c'est bon ma hue à bien l'idx 120
pour le 4 je ne comprends pas trop mon but est de changer la couleur toutes les 5 minutes

Je précise que le script fonctionne mais il n'y a qu'un seul changement de couleur, il n'y en a pas toutes les 5 minutes

une idée
Je vais regarder.

t1.min%5 ça veut dire le modulo 5 des minutes. S'il est 13h54, que tu obtiennes 4 est normal. Le modulo est le reste de la division entière, donc 54%5 = 4 (car 54 = 5 x 10 + 4). À 55, comme 55 = 5 x 11, tu auras bien 0.

J'ai une hue à la maison, je testerai ton script ce soir sinon (et je te le piquerai, il est marrant :) )
naerleth
Messages : 38
Inscription : 14 déc. 2016, 14:25

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par naerleth »

La réponse est là : https://www.domoticz.com/forum/viewtopi ... 499#p66197

Le statut "On" n'existe pas.
Au pire, teste ça :

Code : Tout sélectionner

if (otherdevices['Hue go 1'] ~= 'Off' and t1.min%5 == 0) then
MisterT
Messages : 55
Inscription : 12 avr. 2015, 19:04

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par MisterT »

Salut

je me remets doucement sur mon script lua pour ma lampe hue et j’ai fait évolué mon code. Je fais maintenant un comparatif avec l'état de ma freebox, l'état de ma télé, l'état de ma play4 et l'état de mon HTPC pour allumer ou non ma hue lamp. Le problème est maintenant sur la variable huecondition

sur huecondition = ('Hue_condition') j'ai ce message
Error: EventSystem: commandArray in script Script_time_variation.lua should only return ['string']='actionstring' or [integer]={['string']='actionstring'}

Ma variable est soit 0 soit 1 et je pense que cela ne passe pas car ce n'est pas un string mais je ne trouve pas comment corriger ceci.

Un petit coup de main please ?

Code : Tout sélectionner

-- script_time_variation_hue.lua
t1 = os.date("*t")
print(t1)
-- Initialise le seed
math.randomseed(os.time())
huename = "Hue go 1"
huecondition = ('Hue_condition')
commandArray = {}

    minutesnow = t1.min + t1.hour * 60
   -- test for t1 > sunset
   if (minutesnow > timeofday['SunsetInMinutes']) then
        if (otherdevices['Playstation 4 Etat'] == 'On' or otherdevices['Freebox player Etat'] == 'On' and t1.min%5 == 0 and huecondition == 0) then
                commandArray['Hue go 1'] = 'On'
                local brightness = math.random(1, 255)
                iswhite = "false"
                local hue = math.random(1, 65535)
                idx = otherdevices_idx[huename] -- name lamp
                url = 'http://192.168.1.37:8085/json.htm?type=command&param=setcolbrightnessvalue&idx=' .. idx .. '&hue=' .. hue .. '&brightness=' .. brightness ..'&iswhite=' .. iswhite
                commandArray['OpenURL']= url
                commandArray['Variable:Hue_condition'] = 1
        end
end

    if (otherdevices['Playstation 4 Etat'] == 'Off' or otherdevices['Freebox player Etat'] == 'Off' or otherdevices['Télévisions Etat'] == 'Off' or otherdevices['HTPC Etat'] == 'Off' and Hue_condition == 1) then
        commandArray['Hue go 1'] = 'Off'
        commandArray['Variable:Hue_condition'] = 0
        commandArray['le salon'] = 'Off'
    end
    
     if (otherdevices['HTPC Etat'] == 'On' and huecondition == 1) then
        commandArray['Hue go 1'] = 'Off'
        commandArray['Variable:Hue_condition'] = 0
        commandArray['le salon'] = 'Off'
    end
return commandArray


vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: HUE Philips variation aleatoire de couleur [LUA]

Message par vil1driver »

Salut,

Je n'ai pas tout regardé mais ceci

Code : Tout sélectionner

commandArray['Variable:Hue_condition'] = 1
Devrait être

Code : Tout sélectionner

commandArray['Variable:Hue_condition'] = '1'
Même chose lorsque tu lui passes 0
Une variable ne peut contenir qu'une chaîne
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
Répondre