Aller au contenu

[Topic de travail] Modules Virtuels et Scènes à migrer en QuickApps


Messages recommandés

Posté(e)

@mprinfo j'ai un autre challenge pour toi : implémenter la sécurité du reboot en réintroduisant le double-clic du bouton. Ça devrait être faisable sans souci grâce à une variable interne du QA.

Posté(e)
à l’instant, Lazer a dit :

J'allais la faire :13::2:

Aurais-tu osé les diffuser portés ? :D

J'ai vraiment réfléchi à la question... Enfin, surtout sur le modèle adulte, à vrai dire :lol:

Le plus complexe a été de trouver un body, qui-plus-est classique :16:

Posté(e)
à l’instant, Lazer a dit :

@mprinfo j'ai un autre challenge pour toi : implémenter la sécurité du reboot en réintroduisant le double-clic du bouton. Ça devrait être faisable sans souci grâce à une variable interne du QA.

@lazer le reboot ne fonctionne pas chez moi seul l’arrêt fonctionne

Posté(e)

bah Krikri t'a donné une piste, tu as essayé ?

Je considère que ce n'est pas un problème et que tu vas passer immédiatement à la suite, d'où le nouveau challenge :P (encore plus valable pour le bouton Shutdown d'ailleurs, bien plus dangereux que le reboot)

 

De mon coté j'ai repris le QA Netatmo partagé sur le market Fibaro, je récupère plus d'infos, et notamment la valeur des batteries des modules :D Enfin on pourra surveiller ça depuis la HC3, et visualiser dans Domocharts. Ce n'est pas trop tôt....

Posté(e)

@lazer j'y comprends rien  net.HTTPClient() je le met ou le code de krikri dans le net.HTTPClient()

D'ou ma question de body

Pour le double clic je ne sais ou on trouve cela c'est @steven qui avait donné le code

Posté(e)

Steven n'a rien donné du tout vu qu'il n'a pas de HC3 :P Et surtout tu peux oublier l'astuce de l'époque qui ne fonctionne plus depuis longtemps.

Si je te lances un challenge, c'est pour que tu cherches un peu ;) sinon c'est trop facile. Idem pour le client http, il est identique à ce qu'on a dans les scènes depuis la v4 de la HC2, donc il y a pas mal d'exemple sur le forum :)

Posté(e)
@lazer j'y comprends rien  net.HTTPClient() je le met ou le code de krikri dans le net.HTTPClient()
D'ou ma question de body
Pour le double clic je ne sais ou on trouve cela c'est@steven qui avait donné le code

Je vais mettre à jour


Envoyé de mon iPhone en utilisant Tapatalk
Posté(e)

@krikroff :wub::P

 

le problème c'est que je sais pas faire les appels socket etc....

 

par contre pour le double clic c'est simple avec les VG des QA

d'ailleurs sur HC2 avec VG c'est faisable vu que tu as la date de modification

Posté(e)

Tu peux déclarer le body sous la méthode ;)
Du coup puisque tu as la doc maintenant je te laisse faire , tu seras incollable ensuite


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)

@lazer ou a @Krikroff echange code double clic contre code reboot

 

j'ai trouvé pour le double clic :D

 

voici un bout du code

function QuickApp:DoubleClick()
     local message = "Ré-appuyer pour confirmer" -- le message de confirmation
     local duree = 3                            -- la durée max entre 2 clique (en seconde)
     local time = os.time()

     if ( self:confirm(message, duree, time) ) then
           print("Confirmé") 
           -- votre code ici en cas de confirmation
     else 
           print("Annulé")  
           -- votre code ici en cas d'annulation
     end
end

 

Posté(e)
Il y a 2 heures, Krikroff a dit :

Aujourd'hui c'est ultra simplifié mais logiquement cela devrait rapidement évolué, apparence, composants additionnels ...

il y aura des checkBox ? des Combo ?

Posté(e)
Il y a 3 heures, Lazer a dit :

@mprinfo j'ai un autre challenge pour toi : implémenter la sécurité du reboot en réintroduisant le double-clic du bouton. Ça devrait être faisable sans souci grâce à une variable interne du QA.

1.jpg.57fb028cede7c193c0cd4e4df99f380b.jpg2.jpg.b9a23af5d20f9b18681be443c2714c04.jpg

Posté(e)
Il y a 2 heures, mprinfo a dit :

@krikroff :wub::P

 

le problème c'est que je sais pas faire les appels socket etc....

 

par contre pour le double clic c'est simple avec les VG des QA

d'ailleurs sur HC2 avec VG c'est faisable vu que tu as la date de modification

 

Ceci devrait fonctionner, à mon avis il faut passer l'auth lorsque ça passe par l' API :) 

 

    local http = net.HTTPClient({ timeout = 2000 })
    local payload = {recovery=false}
    return http:request("http://localhost/api/service/reboot",{
    options={ 
        headers = {
            ["content-type"] = "application/json;charset=UTF-8",
            ["Authorization"] = "Basic YWRtaW46YWRtaW4=",              
            ["X-Fibaro-Version"] = "2"
        }, 
        method = "POST",
        data =  json.encode(payload)
        }
    })

 

  • Like 1
Posté(e)

@Krikroff merci

 

comme promis voici le code pour le double clic

-- Generic device type have no default actions to handle
-- double click par MPRINFO
-- https://www.domotique-fibaro.fr

function QuickApp:onInit()
    self:debug("onInit")
end

function QuickApp:buttonclick()
      self:DoubleClick()
end


function QuickApp:confirmDoubleClick(msg, duree, time)
    if self:getVariable("DoubleClic") == "" or self:getVariable("DoubleClic") < 10000 then
       self:setVariable("DoubleClic", os.time())
    end
    local DernierClic = tonumber(self:getVariable("DoubleClic"))
    if time < DernierClic + duree then
       self:updateView("label", "text", " ")
       return true 
    else
       self:setVariable("DoubleClic", os.time())
       self:updateView("label", "text", msg)
       fibaro.setTimeout(duree*1000, function() 
           self:updateView("label", "text", " ")
       end)
       return false
    end
end

function QuickApp:DoubleClick()
     local message = "Ré-appuyer pour confirmer" -- le message de confirmation
     local duree = 3                          -- la durée max entre 2 clique (en seconde)
     local time = os.time()

     if ( self:confirmDoubleClick(message, duree, time) ) == true then
        self:updateView("label1", "text", "Double clic")
        self:start()
     end
end

-----------------------------------------------------------------
-- code exécuté suite a un double click
-----------------------------------------------------------------
function QuickApp:start()
    --exemple
    self.message = string.format("double click a : %s", os.date("%d/%m/%Y à %Hh %Mmn %Ss"))
    self:updateView("label1", "text", self.message)
end

 

Posté(e)

@krikroff c'est ok pour le reboot super merci

 

ce qui ma mis en erreur c'est @lazer qui a posté un code QA je pensais qu'il avait testé

Posté(e)

Mouais, désolé mais je suis pas fan... ce n'est pas comme ça que j'aurais fait.

Pourquoi utiliser setvariable() ? C'est moche, ça fait des écritures inutiles dans la DB, l'utilisateur va le voir en regardant les propriétés du QA, etc...

 

Y'a tellement plus simple et plus rapide, il suffit d'utiliser une variable interne, self.doubleClic = os.time() et c'est réglé.

 

Tu t'es compliqué la vie.

  • Like 1
Posté(e)

non plutôt comme une variable globale.

Enfin pas tout à fait, pour être précis la portée est celle de tout l'objet instancié. Donc accessible depuis n'importe quelle fonction de ta classe QuickApp dans ton cas.

 

Posté(e)

Non je ne suis pas d'accord ;)

Si tu joues avec les Child Devices (ce que je n'arrête pas de faire avec IPX800 et Netatmo) tu verras que c'est totalement faux et peu induire en erreur.

 

En parlant de Netatmo, ma version modifiée avec plus de valeurs météos remontées depuis l'API officielle, et surtout le statut des batteries des modules. Ce qui m'a permis de jouer avec l'injection d'interfaces dans les devices, merci @tinman sur le forum officiel : https://forum.fibaro.com/topic/49113-hc3-quickapps-coding-tips-and-tricks/?do=findComment&amp;comment=202936

 

Regardez les petites icônes de jauge de batterie :

 

image.thumb.png.617f491dd7b6754067bc6b611859795f.png

 

Donc c'est intégré proprement, nativement dans l'interface, avec les notifications par email et remonté dans DomoCharts, comme si c'était un module Z-Wave natif :

 

image.thumb.png.d100e8b3d45158a1bd4c78a427a024aa.png

 

Fantastique les QuickApps, j'adore :wub:

 

 

Vite vite vite la suite :D
 

 

Je vais tenter de mettre les modules en "dead" (nœud mort) quand ils sont injoignables par la station ou en batterie HS

 

 

 

Posté(e)
il y a 8 minutes, Lazer a dit :

Si tu joues avec les Child Devices

ah oui exacte ! tout à fait ! j'y pensais pas à eux, en effet !! :) 

sorry...

 

là où je me suis fais plaisir avec les Child, c'est pour les plantes vertes (info venant de Jeedom) et le wake on lan/shutdown des PC  !!

en effet, une fois qu'on pigé le truc, c'est un vrai bonheur !!

×
×
  • Créer...