Aller au contenu

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


Lazer

Messages recommandés

à 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:

Lien vers le commentaire
Partager sur d’autres sites

à 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

Lien vers le commentaire
Partager sur d’autres sites

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....

Lien vers le commentaire
Partager sur d’autres sites

@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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

@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
Lien vers le commentaire
Partager sur d’autres sites

@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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

@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

 

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

@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

 

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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.

 

Lien vers le commentaire
Partager sur d’autres sites

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

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...