Aller au contenu
razowski

Module Virtuel "hc2 - Diagnostics"

Recommended Posts

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @Lazer et @sebcbien pour vos réponses. J'ai testé uniquement celle de @sebcbien qui m'évite de créer encore une scène. Elle fonctionne parfaitement en 4.120 aussi bien en shutdown qu'en reboot.

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

ah bon très bien alors, merci de la précision @sebcbien :)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Allez, pour vous remercier voici des icônes pour le reboot, le refresh et le shutdown.

58f60ef517b52_HC2DiagnosticsReboot.png.beca3e6d9a5fdd03946719cfaa7e7fc8.png58f60ef61a762_HC2DiagnosticsRefresh.png.c33570c3498f5a0948216acce33a1d7f.png58f60ef77dc71_HC2DiagnosticsShutdown.png.4cbffefe766f79332a106da66b490eb6.png

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour ce bout de code, je vais mettre à jour mon VD !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

L'api étant différente je pense ce VD n'est plus fonctionnel en 4.510

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
[ERROR] 18:21:45: line 30: bad argument #2 to 'gsub' (string expected, got no value)

pourtant j'ai encodé mon mot de passe avec https://www.base64encode.org

 

local Pass = string.gsub("Encodé";)

Partager ce message


Lien à poster
Partager sur d’autres sites

La forme 

local Pass = string.gsub("Encodé");

serait syntaxiquement plus correcte...

Partager ce message


Lien à poster
Partager sur d’autres sites

oui bien sur

l'erreur ne vient pas de la. (faute de typo dans le post)

Partager ce message


Lien à poster
Partager sur d’autres sites

La fonction string.gsub attend au moins deux paramètres. Là cela ne peut pas fonctionner...

Je suggère :

local Pass = "Encodé";

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

 

All is good pour moi aussi, mode boulet ON, j'avais oublié de modifier le numéro du bouton ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

×