Petit ajout personnel à ce super script (qui m'a permis de décommissioner l'équivalent PHP sur mon NAS !):
Une fonction pour l'espace disque restant (je faisais ça avant en PHP avec une alerte quand il faut faire du ménage, genre en dessous de 20Go restant) :
function GetDiskFreeBytes(enable)
--Toolkit.Net.isTraceEnabled = true;
local HttpClient = Toolkit.Net.HttpRequest(FreeboxObject._host, 80);
HttpClient:setReadTimeout(1000);
local response, status, errorCode = HttpClient:request("GET",
"/api/v1/storage/disk/1", {
"User-Agent: FibaroHC2/1.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3",
"Accept-Encoding: deflate",
"Accept-Charset: utf-8",
"X-Fbx-App-Auth: "..FreeboxObject._sessionToken,
"X-Fbx-App-Id: plugin.freebox.fibaro"
});
HttpClient:disconnect();
HttpClient:dispose();
HttpClient = nil;
--Toolkit.Net.isTraceEnabled = false;
local _return = false;
-- check for error
if errorCode == 0 then
if tonumber(status) == 200 then
local jsonTable = json.decode(response);
if (jsonTable.success == true ) then
Tk:trace("Get Disk Storage Status with success");
FreeboxObject._diskFreeBytes = jsonTable.result or {};
_return = true;
else
Tk:trace("Get Disk Storage Status failed");
end
else
Tk:trace("status: "..status);
end
else
Tk:trace("Communication error");
end
return _return;
end
Bien penser à rajouter la variable _diskFreeBytes au début du script Freebox.
Puis ce code à rajouter dans le main pour rafraîchir le label :
if (GetDiskFreeBytes()) then
fibaro:call(FreeboxObject._selfId, "setProperty", "ui.lblDisk.value", math.floor(FreeboxObject._diskFreeBytes.partitions[1].free_bytes/1000000000,2).." Go libres sur "..math.floor(FreeboxObject._diskFreeBytes.partitions[1].total_bytes/1000000000,2).." Go");
end
Une autre fonction pour monitorer la °C de la freebox :
function GetTemperatures()
local payload = [[
{"db":"temp", "fields":["temp1", "temp2", "temp3"], "precision":10}
]];
--Toolkit.Net.isTraceEnabled = true;
local HttpClient = Toolkit.Net.HttpRequest(FreeboxObject._host, 80);
HttpClient:setReadTimeout(1000);
local response, status, errorCode = HttpClient:request("POST",
"/api/v1/rrd/", {
"User-Agent: FibaroHC2/1.0",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3",
"Accept-Encoding: deflate",
"Accept-Charset: utf-8",
"X-Fbx-App-Auth: "..FreeboxObject._sessionToken,
"X-Fbx-App-Id: plugin.freebox.fibaro"
},payload);
HttpClient:disconnect();
HttpClient:dispose();
HttpClient = nil;
--Toolkit.Net.isTraceEnabled = false;
local _return = false;
-- check for error
if errorCode == 0 then
if tonumber(status) == 200 then
local jsonTable = json.decode(response);
if (jsonTable.success == true ) then
Tk:trace("Getting Temperatures with success");
FreeboxObject._temperatures = jsonTable.result or {};
_return = true;
else
Tk:trace("Getting Temperatures failed");
end
else
Tk:trace("status: "..status);
end
else
Tk:trace("Communication error");
end
return _return;
end
Et pareil pour la variable _temperatures ainsi que le rafraîchissement du label :
if (GetTemperatures()) then
fibaro:call(FreeboxObject._selfId, "setProperty", "ui.lblTemperatures.value", (FreeboxObject._temperatures.data[1].temp1/10)..", "..(FreeboxObject._temperatures.data[1].temp2/10)..", "..(FreeboxObject._temperatures.data[1].temp3/10).."°C");
end
Bien sà»r il faut rajouter les label dans avec les ID lblDisk et lblTemperatures
Voilà !
Ah oui et sinon Krikroff, "failed", il n'y a qu'un "l" !