Aller au contenu

Module Virtuel "hc2 - Diagnostics"


Messages recommandés

  • 7 mois après...
Posté(e)

Salut, je déterre un peu le poste.

Le VD fonctionne parfaitement à un détail près, le Reboot ne marche pas.

Je suis en 4.120.

J'ai essayé toutes les solutions données sur ce fil mais rien n'y fait.

Quelqu'un aurait une idée?

Posté(e)

Oui c'est normal, depuis le firmware 4.110 le code LUA a changé, et il n'est plus possible de redémarrer la HC2 depuis un VD, il faut utiliser une scène avec la nouvelle API LUA : https://www.domotique-fibaro.fr/topic/9811-lua-arreter-ou-redémarrer-sa-hc2/

 

 

Donc le bouton reboot de ton VD doit être vidé, et remplacé par une simple commande permettant de lancer ta scène :

fibaro:startScene(sceneID)

Tu remplaces sceneID par l'ID de ta nouvelle scène.

  • Upvote 1
Posté(e)

Tu te trompe mon cher @Lazer -_-  voici le code avec reboot qui fonctionne dans un VD.

et avec la fonction double click (pour cela, créer un label et l'appeler: lblMessage )

 

Bouton Reboot:

-- Double click by sebcbien --
local msg = "Ré-appuyer pour confirmer" -- Confirm message
local action_msg = "REBOOTING !!!" -- message when double click activated
local labelId = "lblMessage" -- ID of the label hosting the messages
local secondes = 2 -- maximum time between two clicks for the action to be validated
-- do not modify below and place your action in line 25
local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value")
local action
if (current == "") or (current == "SHUTTING DOWN !!!") or (current == "REBOOTING !!!") then
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg.." ("..string.sub(os.time(),-4)..")")
		fibaro:debug("First Click")
		action = false
elseif tonumber(string.sub(os.time(),-4)) - tonumber(string.sub(current,-5,-2)) <= secondes then
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", action_msg)
		fibaro:debug("Double click Validated !")
		fibaro:sleep(2*1000)
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", "")
		action = true
elseif tonumber(string.sub(os.time(),-4)) - tonumber(string.sub(current,-5,-2)) > secondes then
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", "")
		fibaro:debug("Cleaning")
		action = false
end

if action then
fibaro:sleep(5*1000)
  -- Reboot system
local HC2 = Net.FHttp("127.0.0.1", 80)
local response, status, errorCode = HC2:GET("/reboot.php")

fibaro:log(status.. "Reboot en cours")
fibaro:debug(status.. "Reboot en cours")
end

Bouton shutdown:

  -- Double click by sebcbien --
local msg = "Ré-appuyer pour confirmer" -- Confirm message
local action_msg = "SHUTTING DOWN !!!" -- message when double click activated
local labelId = "lblMessage" -- ID of the label hosting the messages
local secondes = 2 -- maximum time between two clicks for the action to be validated
-- do not modify below and place your action in line 25
local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value")
local action
if (current == "") or (current == "SHUTTING DOWN !!!") or (current == "REBOOTING !!!") then
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg.." ("..string.sub(os.time(),-4)..")")
		fibaro:debug("First Click")
		action = false
elseif tonumber(string.sub(os.time(),-4)) - tonumber(string.sub(current,-5,-2)) <= secondes then
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", action_msg)
		fibaro:debug("Double click Validated !")
		fibaro:sleep(2*1000)
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", "")
		action = true
elseif tonumber(string.sub(os.time(),-4)) - tonumber(string.sub(current,-5,-2)) > secondes then
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", "")
		fibaro:debug("Cleaning")
		action = false
end

if action then
  -- PLACE YOUR CODE HERE --
fibaro:sleep(5*1000)
-- Shutdown system
local HC2 = Net.FHttp("127.0.0.1", 80)
local response, status, errorCode = HC2:GET("/shutdown.php") 
  
fibaro:log(status.. "Shutdown en cours")
fibaro:debug(status.. "Shutdown en cours")
end

 

  • Upvote 3
  • 2 semaines après...
Posté(e)

Merci pour ce virtual device au top ^^

 

Une petite question, y a t'il une syntaxe pour ramener l'occupation disque en octet plutôt qu'en pourcentage ?

  • 3 semaines après...
  • 2 mois après...
  • 11 mois après...
Posté(e) (modifié)

Bonjour,

 

Il suffit de rajouter ceci :

local User = string.gsub("votre_adresse_de_courriel", "%@", "%%40");
local Pass = "votre_mot_de_passe_ENCODE";
HC2:setBasicAuthentication(User, Pass);

juste après la ligne :

local HC2 = Net.FHttp("127.0.0.1",11111);

dans le code du bouton "Rafraîchir" !

 

Et de commenter les lignes suivantes :

	--Partition recovery  
	local rused = tonumber(result.storage.internal[2].used);
	local rfree = 100 - rused;
	rused = rused .. "%";
	rfree = rfree .. "%";
	fibaro:call(thismodule,"setProperty","ui.vlRecovery0.value", "Utilisé : " .. rused);
	fibaro:call(thismodule,"setProperty","ui.vlRecovery1.value", "Disponible : " .. rfree);

(mettre "--" devant chaque ligne ci-dessus).

 

Voilà ... :D

 

Modifié par Kana-chan
Oubli d'enlever le string.gsub pour le pass.
Posté(e)

BOnsoir bonsoir,

 

Au fait je n'ai pas suivi, ok pour la partition recovery, mais pour l'encodage du pass, pas suivi.

Donc quel est le code alors ?

 

Ca fonctionne sans chez moi sans, je comprends pas ;-) 

 

local vId = fibaro:getSelfId();
local HC2 = Net.FHttp("127.0.0.1",11111)
local response, status, errorCode = HC2:GET("/api/diagnostics")
if tonumber(status) == 200 then
    local result = json.decode(response);

 

 

 

Posté(e)
Il y a 16 heures, pepite a dit :

BOnsoir bonsoir,

 

Au fait je n'ai pas suivi, ok pour la partition recovery, mais pour l'encodage du pass, pas suivi.

Donc quel est le code alors ?

 

Ca fonctionne sans chez moi sans, je comprends pas ;-) 

 


local vId = fibaro:getSelfId();
local HC2 = Net.FHttp("127.0.0.1",11111)
local response, status, errorCode = HC2:GET("/api/diagnostics")
if tonumber(status) == 200 then
    local result = json.decode(response);

 

 

 

Moi aussi cela fonctionne comme  @pepite sans pb,

local HC2 = Net.FHttp("127.0.0.1",11111)

Je ne comprends pas pourquoi il faut jouter les lignes user et pass!

Est il possible d'expliquer?

Merci d'avance

Posté(e)

Bonjour,

 

En effet, cela fonctionne aussi sans.

Bizarre qu'il le faille dans certaines utilisations de l'API et pas d'autres alors !!

 

Voilà ... :P

 

  • Haha 1
Posté(e)

Bonsoir, bonsoir, 

 

oui c'est bizarre tout de même ce comportement différent ;-) 

Sinon, J'ai tout de même un comportement bizarre, plus de main loop. 

 

au fait, ceci permet de ne pas s'authentifier, enfin de s'authentifier sans user, pass ;-) spécifié. 

 

 

Net.FHttp("127.0.0.1",11111)
Posté(e)
Il y a 10 heures, pepite a dit :

Sinon, J'ai tout de même un comportement bizarre, plus de main loop.

Bonjour,

 

Bizarre, elle fonctionne bien chez moi :

image.png.36a555bee8479aaadd98513fb31ec2c6.png

 

Voilà ... :P

 

  • Like 1
×
×
  • Créer...