variable et blockly

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 <\>.
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

variable et blockly

Message par vr6man »

Bonjour,

J'ai mis en place le script qui recupere les jours férié

Celui ci fonctionne bien et inscrit la valeur true ou false dans une variable jf

je veux a partir de cette valeur mettre à jour un dummy JourFerie

j'ai fait le blockly suivant

Image

Mais cela ne fonctionne pas

j'aimerais aussi utiliser la variable jf pour l'intégrer dans des blockly existant

comment faire ?

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

Re: variable et blockly

Message par vil1driver »

Salut

Quelle utilité de passer par une variable intermédiaire ?
Mets à jour le dummy directement
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
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: variable et blockly

Message par vr6man »

je me sert de la variable pour d'autres scripts

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

Re: variable et blockly

Message par vil1driver »

Et bien dans ce cas, a la suite de la ligne de maj de la variable, ajoute en une pour maj le dummy
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
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: variable et blockly

Message par vr6man »

ok mais je suis nul en lua tu fais comment

voila le script que j'ai récupéré

Code : Tout sélectionner

commandArray = {}
-- Retourne le jour de Pâques au format epoch
-- annee : année (Integer) dont on désire connaître le jour de Pâques (ex : 2014)
-- La fonction n'effectue le calcul que si l'année a changée depuis son dernier appel
GetJourPaquesAnnee=0      -- Variable globale (année du dernier calcul) pour ne pas recalculer le jour de Pâques à chaque appel
GetJourPaquesEpochPaque=0 -- Variable globale (jour de Pâques au format epoch) pour ne pas recalculer le jour de Pâques à chaque appel
time = os.date("*t")
if((time.min == 5) and (time.hour == 0)) then
function GetJourPaques(annee)
  if(GetJourPaquesAnnee~=annee or GetJourPaquesEpochPaque==0) then
    local a=math.floor(annee/100)   -- donne 20 pour 2015
    local b=math.fmod(annee,100)    -- donne 15 pour 2015
    local c=math.floor((3*(a+25))/4)  -- donne 33 pour 20
    local d=math.fmod((3*(a+25)),4)   -- donne 3 pour 20
    local e=math.floor((8*(a+11))/25)
    local f=math.fmod((5*a+b),19)
    local g=math.fmod((19*f+c-e),30)
    local h=math.floor((f+11*g)/319)
    local j=math.floor((60*(5-d)+b)/4)
    local k=math.fmod((60*(5-d)+b),4)
    local m=math.fmod((2*j-k-g+h),7)
    local n=math.floor((g-h+m+114)/31)
    local p=math.fmod((g-h+m+114),31)
    local jour=p+1
    local mois=n
    GetJourPaquesAnnee=annee
    GetJourPaquesEpochPaque=os.time{year=annee,month=mois,day=jour,hour=12,min=0}
  end
  return GetJourPaquesEpochPaque
end

-- Retourne true si le jour courant est un jour férié
-- Le calcul des jours férié n'est fait qu'un fois par an (ou si la Vera reboot)
JourFerieAnnee=0  -- Variable globale (année du dernier calcul) pour ne pas recalculer le tableau à chaque appel
JourFerieTab = {} -- Variable globale (tableau des jours fériés) pour ne pas recalculer le tableau à chaque appel
function JourFerie()
  local today=os.date("%m-%d")
  local annee=tonumber(os.date("%Y"))
  if(annee~=JourFerieAnnee) then
    JourFerieAnnee=annee
    -- Dates fixes
    JourFerieTab["01-01"] = true -- 1er janvier
    JourFerieTab["05-01"] = true -- Fête du travail
    JourFerieTab["05-08"] = true -- Victoire des alliés
    JourFerieTab["07-14"] = true -- Fête nationale
    JourFerieTab["08-15"] = true -- Assomption
    JourFerieTab["11-01"] = true -- Toussaint
    JourFerieTab["11-11"] = true -- Armistice
    JourFerieTab["12-25"] = true -- Noël
    -- Dates variables
    local epochPaques=GetJourPaques(annee)
    JourFerieTab[os.date("%m-%d",epochPaques)] = true             -- Pâques
    JourFerieTab[os.date("%m-%d",epochPaques+24*60*60)] = true    -- Lundi de Pâques = Pâques + 1 jour
    JourFerieTab[os.date("%m-%d",epochPaques+24*60*60*39)] = true -- Ascension = Pâques + 39 jours
    JourFerieTab[os.date("%m-%d",epochPaques+24*60*60*49)] = true -- Pentecôte = Ascension + 49 jours
  end
  return JourFerieTab[today] -- (nldr : Both nil and false make a condition false)
end

-- print(JourFerie())
-- jf=(JourFerie())
-- print (jf)

if JourFerie() == true
then
commandArray['Variable:jf'] = 'true'
else
commandArray['Variable:jf'] = 'false'
end
end
return commandArray

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

Re: variable et blockly

Message par vil1driver »

Tu sais repérer où est mis à jour la variable ?

Ajoute ceci à la suite

Code : Tout sélectionner

commandArray['JourFerie'] = 'On' 
Ou 'Off' selon le cas

Et pense à aller voir le wiki qui explique tout cela

Ps:bien sûr le dummy JourFerie doit exister
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
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: variable et blockly

Message par vr6man »

le dummy existe

par contre je positonne ou cette commande

je suppose qu'il faut mettre aussi un off quand le jour est pas férié

je met ou tout cela ?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: variable et blockly

Message par vil1driver »

Indice

Code : Tout sélectionner


if JourFerie() == true
then
commandArray['Variable:jf'] = 'true'
else
commandArray['Variable:jf'] = 'false'
end


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
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: variable et blockly

Message par vr6man »

j'ai mis ca

if JourFerie() == true
then
commandArray['Variable:jf'] = 'true'
commandArray['JourFerie'] = 'On'
else
commandArray['Variable:jf'] = 'false'
commandArray['JourFerie'] = 'Off'
end
end
return commandArray
Dernière modification par vr6man le 03 août 2018, 21:29, modifié 1 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: variable et blockly

Message par vil1driver »

;)
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