Aller au contenu
Fredmas

Questions de débutant en Quick Apps sur HC3

Recommended Posts

il y a 1 minute, Lazer a dit :

@jang a parfaitement répondu (qui en aurait douté :D )

Qui en aurait douté, pas moi :D

 

il y a 1 minute, Lazer a dit :

Quant à ta phrase, je l'aurais plutôt écrite comme ceci : "La position de la déclaration de ta variable locale a de l'importance finalement."

C'est en quelques sorte de la sémantique du langage.... notre langage d'humain  :lol:

 

Je suis complètement d'accord avec toi. Finalement ce n'est pas tant la position du onInit, mais la position de la déclaration des variables utilisées dans le onInit :P

Merci pour la sémantique, tu as raison elle compte. Et dans cet exemple c'est intellectuellement plus judicieux, afin de garder la bonne habitude de codage des déclarations en tête ^_^

Partager ce message


Lien à poster
Partager sur d’autres sites

The general advice to declare your variables in the beginning of the code/functions is usually a very good advice.

 

Actually, the QA is "executed" when the code is loaded. It's just that fibaro helps us by collecting a lot of nice-to-have functions in the QuickApp class and when the code is loaded is creates a QuickApp object and calls its :onInit() function as an "entry point" for our code.

If fibaro had not done that we could have achieved the same thing by creating the QuickApp object ourselves at the end of our code.

function QuickApp:onInit()

   self:debug("foo")

end



quickApp = QuickApp()  -- create object from class

quickApp:onInit()          -- call our "entry point"

 

However, we don't need an :onInit() in our QA. If there is no :onInit(), fibaro will not call it.

 

setInterval(function() fibaro.call(88,"turnOff") end,60*60*1000)

 

is a perfectly valid QA that will turn off device 88 every hour.

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

Question d'améliorer les choses, j'ai créé un slider qui me permet de changer le temps

 

Actuellement nous avons deux boutons deux heures et quatre heures mais j'aurais souhaité vient le slide enregistrer mon temps 0 à 100 minute

L'idée est d'essayer d'enregistrer cette valeur invariables duration 

 

Comme tu peux voir j'ai quand même bien avancé mais c'est juste au niveau de l'enregistrement de la valeur que je n'arrive pas

 

Merci pour ton aide

 

function QuickApp:onSliderChanged(event)
    local value = event.values[1]
    self:debug("value", value)
    self:updateView("etat", "text" , "slider - " .. value .." W " )
end



--2H
function QuickApp:buttonClim2()
self:debug("BOUTON 2H")
 duration = (value)*1000
  test1(self)
  test2(self)
  test3(self)
 --- self:DH() 
self:updateView("etat", "text", "Dernière action >> 2 Heurs")
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ha :60:

je arrivé comme un grand 

 

function QuickApp:onSliderChanged(event)
    local value = event.values[1]
    self:debug("value", value)
    self:updateView("etat", "text" , "slider - " .. value .." W " )

self:debug("slider ")
 duration = (value)*1000
  test1(self)
  test2(self)
  test3(self) 
self:updateView("etat", "text", "Dernière action >> 2 Heurs")
end

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Par contre j'ai une chose que je n'arrive pas à faire c'est de multiplier le facteur du SLIDER par deux ou trois

Partager ce message


Lien à poster
Partager sur d’autres sites

Purée tu enchaines les questions sans avoir le temps de te répondre :D

 

#1. Dans ton premiers exemple de code ça ne pouvait par marcher, car tu as déclaré value comme une variable local etn écrivant local value = event.values[1]

Donc la variable a une portée interne à function QuickApp:onSliderChanged(event)

Une solution aurait était de ne pas déclarer value en local mais en globale, ou alors en local mais en dehors de la fonction concernée, de sorte à être prise en compte en dehors de cette fonction.

 

#2. Dans ton deuxième exemple ça fonction car tu as copié le reste de ton code dans la function QuickApp:onSliderChanged(event), du coup la portée de value est compatible est réutilisable...

 

 

Je ne pas te dire ce qui te va le mieux finalement. Tout dépend de comment tu veux gérer tes déclenchements, slider, bouton, automatiquement, etc.

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 21 minutes, 971jmd a dit :

Par contre j'ai une chose que je n'arrive pas à faire c'est de multiplier le facteur du SLIDER par deux ou trois

Là ce n'est pas compliqué si j'ai bien compris le sens de ta phrase. Petit exemple :

local value
local toto
function QuickApp:onSliderChanged(event)
  value = event.values[1]
  self:debug("value", value)
  self:updateView("etat", "text" , "slider - " .. value .." W " )
  toto = value * 2
  print(toto)
end

 

Modifié par Fredmas

Partager ce message


Lien à poster
Partager sur d’autres sites

Finalement je viens de trouver je l'ai placé derrière  

 

values[1]*2

 

Par contre il y a une chose un peu dérangeant dans le slider c'est le pourcentage qu'il affiche quand on le déplace, et là je crois pas qu'on peut faire grand choses

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 6 minutes, 971jmd a dit :

Finalement je viens de trouver je l'ai placé derrière  

values[1]*2

Tout à fait. C’est ce que j’ai voulu te montrer avec mon exemple toto pour une lecture plus facile de la mécanique du calcul.

 

 

il y a 7 minutes, 971jmd a dit :

Par contre il y a une chose un peu dérangeant dans le slider c'est le pourcentage qu'il affiche quand on le déplace, et là je crois pas qu'on peut faire grand choses

Tu voudrais modifier l’unité de valeur visuelle du slider dans l’IHM de ton QA ?

Si c’est ça je ne sais pas si c’est faisable.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Une chose que j'aurais aimé savoir, c'est le un entre les accolades, À quoi sert-il ?

local value2 = val.values [1]

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, Fredmas a dit :

Tu voudrais modifier l’unité de valeur visuelle du slider dans l’IHM de ton QA ?

Si c’est ça je ne sais pas si c’est faisable.

Non je crois pas

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 8 minutes, 971jmd a dit :

Une chose que j'aurais aimé savoir, c'est le un entre les accolades, À quoi sert-il ?

local value2 = val.values [1]

 

C’est parce que event est une table, qui contient values qui est aussi une table. Le 1 est pour la première donnée à utiliser dans la table values.

Enfin dans ton écriture tu remplaces event de mon explication par val…

 

https://www.domotique-fibaro.fr/topic/15376-slider/?do=findComment&comment=243049

Modifié par Fredmas

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 16/11/2021 à 18:09, henri-allauch a dit :

Tu Insère une icône dans un device.

 

Click droit sur l'icône :  tu sélectionne enregistrer image sous

 

 

Capture d’écran 2021-11-16 à 23.04.28.png

 

 

Tu as dans le titre : User1005 par exemple

 

 

Capture d’écran 2021-11-16 à 23.04.42.png

 

 

 

 

Tu insère dans ton code   ->  self:updateProperty("deviceIcon", 1005)  

salut

 

j'ai essayer et ça fonctionne pas :( j'ai sûrement loupé un truc 

 

1969312662_Capturedcran2021-11-1722_07_15.png.e4e61753ef6a81b96352f05284f533f1.png

 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

une question, pensez-vous que la fonction 

centralSceneEvent

fonctionne sur les QA ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, 971jmd a dit :

salut

 

j'ai essayer et ça fonctionne pas :( j'ai sûrement loupé un truc 

 

1969312662_Capturedcran2021-11-1722_07_15.png.e4e61753ef6a81b96352f05284f533f1.png

 

 

L’ID de ton icône est 1006 il me semble ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

@971jmd 

Il y a 4 heures, 971jmd a dit :

j'ai essayer et ça fonctionne pas :( j'ai sûrement loupé un truc

cela ne fonctionne peut-être pas avec tous les icônes  ( Attention aux icônes à plusieurs états ) va voir cette discussion https://www.domotique-fibaro.fr/topic/14941-icones/  on en parle 

c'est là que j'avais lu la solution et je l'utilise dans tous mes QA

 

Modifié par henri-allauch

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 10 heures, 971jmd a dit :

Par contre il y a une chose un peu dérangeant dans le slider c'est le pourcentage qu'il affiche quand on le déplace, et là je crois pas qu'on peut faire grand choses

Je pense que c'est possible mais je n'ai jamais essayé.

Dans le JSON du module, on voit qu'il y a des bornes min et max :

 

image.png.ff7c20da88576aa3c5539109a0a36983.png

 

Tu peux tenter de mettre cette ligne dans le onInit() de ton QuickApp pour tester si ça fonctionne :

self:updateView("slider1", "min", "0")
self:updateView("slider1", "max", "200")

Évidemment tu remplaces le nom du "slider1" par le nom de ton slider, et les valeurs des bornes min max que tu veux.

Partager ce message


Lien à poster
Partager sur d’autres sites

salut @Lazer

 

j'ai essayer et toujours pareille 0 à 100 et toujours avec le %

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut à tous 

 

j'ai un soucie avec mon QA qui fonctionne tres bien et maintenant j'ai dans le debug

connection error

avez vous une idée 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

quand j uppuis sur le bouton 2H. (buttonClim2)

 

--2H
function QuickApp:buttonClim2()
self:debug("BOUTON 2H")
 duration = 10*1000
  test1(self)
  test2(self)
 --- test3(self) 
self:updateView("etat", "text", "Dernière action >> 2 Heurs")
end

il active 

 

function test1(self)
  ---self:ON24_S1_C1()
  if timeoutClim1 > 0 then clearTimeout(timeoutClim1) timeoutClim1 = 0 end
  timeoutClim1 = setTimeout(function() self:OFF_S1_C1() end, duration)
end

 après les 10 seconde j'ai 

 

[18.11.2021] [11:52:48] [DEBUG] [QUICKAPP55]: connection error

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Un truc que je ne comprends pas, pourquoi as-tu mis le ON en commentaire ?

---self:ON24_S1_C1()

Ton but n'étais pas d'allumer, puis d'éteindre X secondes plus tard ?

 

 

Sinon pour ton debug, avec de petits extraits de codes, c'est compliqué de savoir te dire sans voir ce que tu as mis dans la fonction OFF_S1_C1() ou ailleurs.

Au pire histoire de chercher à comprendre, remplace "function() self:OFF_S1_C1() end" par un banal print("toto"), et tu sauras si l'erreur vient bien du contenu de OFF_S1_C1()

Partager ce message


Lien à poster
Partager sur d’autres sites

alors je vient de comprendre le truc mai je ne c'est pas le résoudre 

 

je t'explique

 

Quand j'ai fait les tests avec les lumières ça fonctionnait très bien, sauf que maintenant j'ai raccorder le module IR et ce dernier ne peut pas accepter simultanément trois OFF

 

Il faut que tu m'aides à trouver une solution pour temporiser les OFF  des trois clim

 

 

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×