kioneoranga Posté(e) le 6 novembre 2016 Signaler Posté(e) le 6 novembre 2016 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. 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.
pepite Posté(e) le 7 novembre 2016 Signaler Posté(e) le 7 novembre 2016 Salut @Kio, Un module qui te mettrait le bazar ? C'est quoi ton Backup couple scène GEA ?
kioneoranga Posté(e) le 7 novembre 2016 Auteur Signaler Posté(e) le 7 novembre 2016 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.
Nico Posté(e) le 7 novembre 2016 Signaler Posté(e) le 7 novembre 2016 Ton reboot n'a pas eu lieu en plein backupo ou un truc du genre ?
pepite Posté(e) le 7 novembre 2016 Signaler Posté(e) le 7 novembre 2016 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 ;-)
Messages recommandés