Aller au contenu

Messages recommandés

Posté(e)

Bonjour tout le monde

Ce petit post pour voir votre avis.

Ce matin en partant de la maison la Box ronronnée sans pb.

Reboot cette nuit programmé, aprés un petit backup (mon sésame)

 

La matinée s'est passé sans personne à  la maison.

Après un bon repas en famille, impossible de lancer le lave linge ... Etrange.

Ma femme compréhensive vient me voir....

 

Et là , désastre.

Que c'est il passé, tout semble cassé.

L'ensemble des modules sont en erreur et doivent être tous pour la plupart reconfiguré...

Rien à  y comprendre.

post-1489-0-21150000-1478442140_thumb.png

 

Bien heureux que le systeme automatique de backup est correctement fonctionné (Couple Scene + GEA)

Un petit restaure et  tout est rentré dans l'ordre.

 

Cependant une question se pose.

Qu'est ce qui peut occasionner ce type de bordel?

Pourquoi la boxe perd comme ça la maitrise de l'ensemble des modules?

 

Auriez vous une idée?

Merci pour vos remarques.

 

Posté(e)

Salut @Kio,

 

Un module qui te mettrait le bazar ?

 

C'est quoi ton Backup couple scène GEA ?

 

Concernant le bug de Dimanche matin, je ne l'explique pas.

Pour l'instant, je croise les doigts tout reste stable

En tout cas je pense que je vais faire des sauvegardes plus régulièrement

 

Concernant la fonction de sauvegarde, en fait, je n'ai fais que mettre en oeuvre une solution exposée sur ce forum

 

Dans GEA

     -- Fonction déterminant si nous sommes le 1er samedi du mois
     function isFirstSaturday()
           local t = os.date('*t')
           return ( t['day'] < 8 and t['wday'] == 7 )
     end

-- Backup le 1er samedi du mois
GEA.add({"Function",function() return isFirstSaturday() end} , 30 , "Backup mensuel de la HC2" , {{"Time","01:30","01:31"},{"Scenario", 387},{"Global", "SMS", "HC2 - Bakcup mensuel OK"},envoiSMS,{"Email", id["USER_ERIC"],"INFO TECHNIQUE - HC2"}})
GEA.add({"Function",function() return isFirstSaturday() end} , 30 , "Suppression mensuel du plus vieux backup de la HC2" , {{"Time","04:00","04:01"},{"Scenario", 386},{"Email", id["USER_ERIC"],"INFO TECHNIQUE - HC2"}})

Ensuite j'ai deux agents qui se chargent de faire le backup et le nettoyage

--[[
%% properties
%% events
%% globals
--]]
     
-- ID des mobiles,tablettes pour notification
local portable = {446}
 
-- Message Descriptif du Backup
local descriptif = 'Backup du '..os.date("%d/%m/%y - %HH%M")
 
function sendPush(message)
    if #portable > 0 then
        for _,v in ipairs(portable) do
            fibaro:call(v,'sendPush', message)
        end
    end
end
 
local url = 'http://127.0.0.1:11111/api/settings/backups'
local httpClient = net.HTTPClient()
httpClient:request(url , {
        success = function(response)
                    if tonumber(response.status) == 201 then
                        print("Backup Created at " .. os.date())
                        sendPush(descriptif .. ' effectué')
                    else
                        print("Error " .. response.status)
                        sendPush('Erreur lors de la création du Backup')
                    end
                end,
        error = function(err)
                    print('error = ' .. err)
                end,
        options = {
                method = 'POST',
                headers = {
                        ["content-type"] = 'application/x-www-form-urlencoded;'
                          },
                data = 'action=create&description='..descriptif
            }
});
--[[
%% properties
%% events
%% globals
--]]
 
-- Flag dryrun; Si true, la requete sur api pour effacer le backup n'est pas effectuée
local dryrun = true
 
-- Récupération de la list des backups
local backups = api.get('/settings/backups')
 
-- Vérification de présence Backup
if (backups and type(backups == 'table') and #backups > 0) then
    if #backups > 1 then print(#backups .. ' Backups présents') else print('1 Backup présent') end
    
    for i in ipairs(backups) do
        fibaro:debug('ID: '..backups[i]['id']..' | TIMESTAMP: '..backups[i]['timestamp']..' | DESCRIPTION: '..backups[i]['description'])
    end
else
    print('Pas de backup ou erreur lors de la récupération de la liste')
    fibaro:abort()
end
 
 
-- Pour chaque Backup on stock le timestamp de la date de réalisation dans une table
-- On classe ensuite les timestamps par ordre croissant
local timestamp = {}
for i in ipairs(backups) do
    table.insert(timestamp, backups[i]['timestamp'])
end
table.sort(timestamp)
 
 
-- Le 1er timestamp de la table est le plus petit donc le plus ancien en epochtime
-- Dans la table de backup on recherche le backup ayant ce timestamp
local id = false
for i in ipairs(backups) do
    if (tonumber(backups[i]['timestamp']) == tonumber(timestamp[1])) then id = backups[i]['id'] end
end
 
if id then
    print("ID du backup le plus ancien: "..id)
else
    print("Erreur lors de la récupération de l'ID")
    fibaro:abort()
end
 
 
-- Requete via API pour effacer le backup le plus ancien
if not dryrun then
    local url = 'http://127.0.0.1:11111/api/settings/backups?id='..id
    local httpClient = net.HTTPClient()
    httpClient:request(url , {
        success = function(response)
                    if tonumber(response.status) == 200 then
                        print("Backup deleted at " .. os.date())
                    else
                        print("Error " .. response.status)                        
                    end
                end,
        error = function(err)
                    print('error = ' .. err)
                end,
        options = {
                method = 'DELETE',
                headers = {
                    ["content-type"] = 'application/x-www-form-urlencoded;'
                            },
                data = 'id='..id
            }
    });
end

En place depuis premier samedi du mois, et cela marche super bien

Rien à  dire

En tout cas cette fois cela m'a sauvé la mise.

 

Bonne soirée.

Posté(e)

Ah ok merci @kio.

 

En fait c'est le code de @nikko, en place aussi pour moi tous les samedis dans la nuit :

- un delete puis un backup ;-)

×
×
  • Créer...