Aller au contenu

Recommended Posts

Quick App - Reboot via Double Clic

 

Permet de redémarrer la HC3 a partir d'un double clic

local duree = 3      -- la durée max entre 2 clique (en seconde)

 

1.jpg.637081c62417d8d4139a157c489df908.jpg2.jpg.7a3998ee7ebd27916619c6d67b16c946.jpg3.jpg.4390a0eb13a1b8678ec8bb2777c6458a.jpg

 

Version 1.00 : Double_Clic_Version_1.00.fqa

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici le code double clic pour plusieurs boutons

 

Exemple avec 2 boutons

function QuickApp:onInit()
    self:debug("onInit")
    self.DoubleClic = 0
    self.NomBouton = " "
    self:updateView("label2", "text", "Redemarrage Double Clic Version 0.55 Beta")
    self:updateView("button", "text", "Redemarrage HC3")

end
-----------------------------------
-- bouton "button" avec double clic
-----------------------------------
function QuickApp:RebootClic()
     local message1clic =  "Ré-appuyer pour confirmer"  -- Message de confirmation
     local messageBouton = "Redemarrage HC3"            -- Message bouton default
     local duree = 2                                    -- la durée max entre 2 clique (en seconde)
     local NomBouton = "Reboot"                         -- ID du bouton qui doit avoir un double clic
     local time = os.time()
     if ( self:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) ) == true then -- Si double clic
         self:startReboot(NomBouton, messageBouton)
     end
 end

 function QuickApp:ArretClick()
     local message1clic =  "Ré-appuyer pour confirmer"  -- Message de confirmation
     local messageBouton = "Arret HC3"            -- Message bouton default
     local duree = 2                                    -- la durée max entre 2 clique (en seconde)
     local NomBouton = "Arret"                         -- ID du bouton qui doit avoir un double clic
     local time = os.time()
     if ( self:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) ) == true then -- Si double clic
         self:startArret(NomBouton, messageBouton)
     end
 end
-----------------------------------
-- confirmation d un double click
-----------------------------------
function QuickApp:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton)
    if NomBouton ~= self.NomBouton or time > self.DoubleClic + duree then
       self.NomBouton = NomBouton
       self.DoubleClic = os.time()
       self:updateView(NomBouton, "text", message1clic)
       fibaro.setTimeout(duree*1000, function() 
          self:updateView(NomBouton, "text", messageBouton)
          self.DoubleClic = 0
       end)
       return false
    end
    self:updateView(NomBouton, "text", " ")
    self.DoubleClic = 0
    return true 
end

-----------------------------------------------------------------
-- code exécuté suite a un double click
-----------------------------------------------------------------
function QuickApp:startArret(NomBouton, messageBouton)
      self:updateView(NomBouton, "text", "Votre HC3 va Redemarrée....")
      self.message = string.format("double click a : %s", os.date("%d/%m/%Y à %Hh %Mmn %Ss"))
      self:updateView("label1", "text", self.message)
      self:updateView(NomBouton, "text", messageBouton)
      print("-----------------------------------Arret")
end

function QuickApp:startReboot(NomBouton, messageBouton)
    self:updateView(NomBouton, "text", "Votre HC3 va Redemarrée....")
    self.message = string.format("double click a : %s", os.date("%d/%m/%Y à %Hh %Mmn %Ss"))
    self:updateView("label1", "text", self.message)
    self:updateView(NomBouton, "text", messageBouton)
    print("-----------------------------------Reboot")
end

 

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Je n'ai pas étudié en détail, mais ça me parait pas mal comme code :60:

Bravo et merci du partage

Partager ce message


Lien à poster
Partager sur d’autres sites

@lazer juste un petit soucis avec l' affichage lorsque l'on change de bouton alors que l'autre bouton est en attente

 

plus de set variable maintenant que j'ai un peu prêt compris la portée du self.variable

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

ça n'a pas l'air codé avec les pouces :police:

Partager ce message


Lien à poster
Partager sur d’autres sites

a priori c’est bon pour autant de bouton que l'on veut

 

-- Generic device type have no default actions to handle
-- Version 0.54 Beta double click par MPRINFO
-- https://www.domotique-fibaro.fr/topic/14343-quick-app-reboot-via-double-clic/?tab=comments#comment-226796

function QuickApp:onInit()
    self:debug("onInit")
    self.DoubleClic = 0
    self.NomBouton = {"0", "0"} 
    self:updateView("label2", "text", "Redemarrage Double Clic Version 0.57 Beta")
    self:updateView("button", "text", "Redemarrage HC3")

end


-----------------------------------
-- bouton "button" avec double clic
-----------------------------------
function QuickApp:RebootClic()
     local message1clic =  "Ré-appuyer pour confirmer"  -- Message de confirmation
     local messageBouton = "Redemarrage HC3"            -- Message bouton default
     local duree = 10                                   -- la durée max entre 2 clique (en seconde)
     local NomBouton = "Reboot"                         -- ID du bouton qui doit avoir un double clic
     local time = os.time()
     if ( self:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) ) == true then -- Si double clic
        self:updateView(NomBouton, "text", messageBouton)
        -- votre ICI
        self:startReboot(NomBouton, messageBouton)
     end
 end

 function QuickApp:ArretClick()
     local message1clic =  "Ré-appuyer pour confirmer"  -- Message de confirmation
     local messageBouton = "Arret HC3"                  -- Message bouton default
     local duree = 10                                   -- la durée max entre 2 clique (en seconde)
     local NomBouton = "Arret"                          -- ID du bouton qui doit avoir un double clic
     local time = os.time()
     if ( self:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton) ) == true then -- Si double clic
         self:updateView(NomBouton, "text", messageBouton)
         -- votre ICI
         self:startArret(NomBouton, messageBouton)
     end
 end
-----------------------------------
-- confirmation d un double click
-----------------------------------
function QuickApp:confirmDoubleClick(message1clic, messageBouton, duree, time, NomBouton)
    if NomBouton ~= self.NomBouton[1] then
       self:updateView(self.NomBouton[1], "text", self.NomBouton[2])
       self.NomBouton = {NomBouton, messageBouton}
       self:updateView(NomBouton, "text", message1clic)
       fibaro.setTimeout(duree*1000, function() 
          self:updateView(NomBouton, "text", messageBouton)
       end)
       self.DoubleClic = os.time()
       return false
    end
    if time > self.DoubleClic + duree then
       print("---------------------------------")
       print("---------------------------------NomBouton : ", NomBouton)
       self.DoubleClic = os.time()
       self:updateView(NomBouton, "text", message1clic)
       fibaro.setTimeout(duree*1000, function() 
          self:updateView(NomBouton, "text", messageBouton)
          self.DoubleClic = 0
       end)
       return false
    end
    self.DoubleClic = 0
    return true 
end

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

function QuickApp:startReboot(NomBouton, messageBouton)
    --self:updateView(NomBouton, "text", "Votre HC3 va Redemarrée....")
    self.message = string.format("Redemarrage : %s", os.date("%d/%m/%Y à %Hh %Mmn %Ss"))
    self:updateView("label1", "text", self.message)
    print("-----------------------------------Reboot")
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@krikroff j'ai modifier le body car j'ai pris du poids :D

-----------------------------------
-- Reboot HC3 
-----------------------------------
function QuickApp:Reboot()
    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)
        }
    })
end
-----------------------------------
-- Arret HC3 
-----------------------------------
function QuickApp:Arret()
    local http = net.HTTPClient({ timeout = 2000 })
    return http:request("http://localhost/api/service/shutdown",{
    options={ 
        headers = {
            ["X-Fibaro-Version"] = "2"
        }, 
        method = "POST",
        }
    })
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais au final pourquoi tu n'as pas mis ces boutons dans le QA Diagnostique ?

L'idée de base, c'était que si on voit que la RAM est saturée, alors on reboote.

 

PS : version 57 :2: bien joué

Partager ce message


Lien à poster
Partager sur d’autres sites

@lazer c'est le but

Par contre je voulez partager le code pour le double clic d'où ce QA pour montrer la méthode

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Nouvelle version de ce QA

 

Suppression du bouton Arret de la box (cette commande n'est plus disponible)

 

Ajout d'un Bouton pour passé en mode recovery

Ajout de l'encodage Base64 pour le mot de passe

 

1.jpg.f82ff20f336af73a2ddce673e1dfb264.jpg

 

Il faut renseigné les variables

User

Password

doubleClic (délais entre 2 clic)

2.thumb.jpg.5cb040adcd2dd1edfb834e2cd566db03.jpg

 

 

Double_Clic_Version_1.00.fqa

  • Like 2
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 3 heures, mprinfo a dit :

Suppression du bouton Arret de la box (cette commande n'est plus disponible)

L'arrêt n'est en effet plus disponible.

Mais il y a un suspend, qui serait dispo maintenant. Je me demande si ce ne serait pas mieux de faire un suspend avant de retirer la prise (pour, par exemple, changer la box de place) ?

Et donc rajouter un bouton suspend dans ton code serait top ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@mprinfo, comme ça ne fonctionne pas chez moi, je te mets le log du dbug.

 

Pour le double clic sur reboot

[27.11.2022] [13:57:47] [DEBUG] [QUICKAPP837]: onInit
[27.11.2022] [13:57:56] [TRACE] [QUICKAPP837]: UIEvent: {"eventType":"onReleased","values":[],"elementName":"Reboot","deviceId":837}
[27.11.2022] [13:57:58] [TRACE] [QUICKAPP837]: UIEvent: {"eventType":"onReleased","values":[],"elementName":"Reboot","deviceId":837}
[27.11.2022] [13:57:58] [TRACE] [QUICKAPP837]: ------------------------- Redemarrage de la box ----------------------------
[27.11.2022] [13:57:58] [DEBUG] [QUICKAPP837]: ./include/main.lua:58: attempt to perform arithmetic on a boolean value
[27.11.2022] [13:57:58] [ERROR] [QUICKAPP837]: QuickApp crashed
[27.11.2022] [13:57:58] [ERROR] [QUICKAPP837]: Unknown error occurred: handleJsonRpc
[27.11.2022] [13:58:01] [DEBUG] [QUICKAPP837]: onInit

quand je fais un double clic sur Recovery :

la HC3 rentre bien en mode recovery

Partager ce message


Lien à poster
Partager sur d’autres sites

ligne 60 il y a un tiret qui traine a supprimer

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci, ça va tout de suite mieux sans ;-)

(tu publies donc la v1,01 vorrigée pour la communauré ?)

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui je vais refaire le poste 1

Envoyé de mon BLA-L29 en utilisant Tapatalk

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×