Aller au contenu
Nikko

Backup Via Scene Lua

Recommended Posts

Je reprends le script modifié de DrBoss, mais j'ai toujours l'erreur 401

 

[DEBUG] 15:31:00: Current parameters:
[DEBUG] 15:31:00: delete after: 060 day(s), only backups with description start by [!]
[DEBUG] 15:31:10: Error 401

 

EDIT : c'est bon pour le backup, c'était le changement d'API (service VS setting) grrrr :D

Modifié par Domodial
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Question (maintenant que mon backup sur appuie manuel fonctionne)

Dites, la modification en 3 fichiers de DrBoss ne semble pas initier le backup automatiquement style tous les jours.

Il y a une notion de suppression des backups après xxx jours.

 

Dans ce cas il faut que je fasse un appel dans GEA sur le scénario de création de backup c'est ça ?

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Domodial,

 

Oui il n'y a rien dans la scene en automatique, tu dois la lancer avec GEA ou autre.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

Les scences de Backup et DeleteBakcup ne sont plus fonctionnelles en 4.510

C'était quand meme très pratique;

Qq'un sait comment faire avec la nouvelle API ?

 

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Il faut s'authentifier en encodant maintenant pour utiliser les GET/POST.

Donc le code deviendrait (exemple pour le backup) :

--[[
%% properties
%% events
%% globals
--]]
     
-- ID des mobiles,tablettes pour notification
local portable = { 385,378 }

-- specify user and passwort in clear text
local user = 'do.not@email.us'
local password = 'verystrongpassw0rd'

------------------------------------------------------------------
---------------- do not change anything below --------------------
------------------------------------------------------------------

-- base64 helper function
-- Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss <alexthkloss@web.de>
-- licensed under the terms of the LGPL2
function encbase64(data) 
  local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; 
  return ((data:gsub('.', function(x) 
          local r,b='',x:byte() 
          for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end 
        return r; 
        end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) 
          if (#x < 6) then return '' end 
          local c=0 
          for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end 
        return b:sub(c+1,c+1) 
   end)..({ '', '==', '=' })[#data%3+1]) 
end

-- 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 = {
                        ["Authorization"] = 'Basic '.. encbase64(user .. ':' .. password),
                        ["content-type"] = 'application/x-www-form-urlencoded;'
                          },
                data = 'action=create&description='..descriptif
            }
});

Pour faire le backup.

 

P.S. : Je n'ai pas testé mais fait la synthèse avec d'autres posts de ce forum à ce sujet.

 

Voilà ... :P

 

Modifié par Kana-chan

Partager ce message


Lien à poster
Partager sur d’autres sites

hello merci

 

j'ai une 

[DEBUG] 18:10:52: Error 501

quand j'applique ce code

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

 

Alors, une erreur 501 c'est "Fonctionnalité réclamée non supportée par le serveur", donc le backup a du être enlever de l'API ou placé ailleurs.

Je ne vois pas d'autres explication.

 

Voilà ... :(

 

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai commencé à regarder, l'API n'a plus rien à voir.

 

  • Lister les backups :
     
    • Requête :

      GET : /api/service/backups

       

    • Réponse :
      Code : 200
      Données : JSON
       

  • Faire un Backup Local :
     
    • Requête :
      POST : /api/service/backups
      Données : {"action":"create","params":{"type":"local","description":"Test%20de%20Backup%20Local"}}
      Content-Type: application/json
       
    • Réponse :
      Code : 202
       
    • Remarque :
      Un seul backup local est possible sur la box, donc à chaque fois qu'on réalise un nouveau backup local, cela supprime automatiquement le backup local précédent.
       
  • Faire un Backup Cloud :
     
    • Requête :
      POST : /api/service/backups
      Données : {"action":"create","params":{"type":"remote","description":"Test%20de%20Backup%20Cloud"}}
      Content-Type: application/json
       
    • Réponse :
      Code : 202
       
    • Remarque :
      Plusieurs backups clouds sont possible dans la limite de l'espace autorisé par Fibaro
       
  • Supprimer un Backup Local :
     
    • Requête :
      DELETE : /api/service/backups?type=local&id=1
       
    • Réponse :
      Code : 200
       
    • Remarque :
      Fonction sans intérêt puisqu'un seul backup local est possible
       
  • Supprimer un Backup Cloud :
     
    • Requête :
      DELETE : /api/service/backups?type=remote&id=38468
       
    • Réponse :
      Code : 200
       
    • Remarque :
      Il faut préalablement récupérer la liste des backups pour obtenir les identifiants
       
  •  Télécharger un Backup Local :
     
    • Requête :
      GET : /backups/backup_HC2-XXXXXX_2018_08_19-15_33_20.fbi
       
    • Réponse :
      Code : 200
      Données : le fichier de sauvegarde au format FBI, il s'agit en réalité d'un fichier ZIP renommé)
       
    • Remarque :
      Puisqu'un seul backup local est possible, alors il n'est possible de télécharger que le dernier backup local réalisé
      Il faut préalablement récupérer la liste des backups pour obtenir le nom du backup local.

 

Il reste maintenant à écrire le code LUA....

  • Like 1
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, Lazer a dit :

Il reste maintenant à écrire le code LUA....

:18:

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouais par contre là ça sera sans moi, je réalise mes backups via un script Shell externe.... l'intérêt étant de pouvoir vérifier le statut du backup et de me notifier par email si tout va bien, ou pas, puis de télécharger le backup et de le conserver sur le NAS.

 

Mais avec l'API ci-dessus, et en utilisant la scène LUA de backup déjà partagée, ça devrait être assez facile d'adapter je pense.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir, 

 

Voila voila, 

 

Testé pour les  2 types de backup. Merci @Lazer

Gros gain de temps :60:

-- BACKUP
-- ID des mobiles,tablettes pour notification
local portable = {} -- {XX, XX}
 
 -- Type de backup : local/remote (cloud)
 local type = 'local'
 --local type = 'remote'

-- Message Descriptif du Backup
local descriptif = 'Backup HC2 du '..os.date("%d/%m/%y - %HH%M")
-- Password admin encodé en base64
local password = 'xxxxxxxxxxxxxxxxxxxx'
 
function sendPush(message)
    if #portable > 0 then
        for _,v in ipairs(portable) do
            fibaro:call(v,'sendPush', message)
        end
    end
end
--[[function sendPush(message)
    if #portable > 0 then
            fibaro:setGlobal('FreeSms', message)
    end
end]]--
 
local url = 'http://127.0.0.1/api/service/backups'
--local datas = '{"action":"create","params":{"name":"'..descriptif..'"}}'
local datas = '{"action":"create","params":{"type":"'..type..'","description":"'..descriptif..'"}}'
local httpClient = net.HTTPClient()
httpClient:request(url , {
        success = function(response)
                    if tonumber(response.status) == 202 then
                        print("Backup Local Créé  " .. 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/json',
                        ["Authorization"] = 'Basic '..password
                          },
                data = datas
            }
});

 

  • Like 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca ne fonctionne pas chez moi, j'ai une erreur 401....

Partager ce message


Lien à poster
Partager sur d’autres sites

j'avais raté mon encodage.... ca tourne :)

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

question certainement bête, mais ou est stocker le backup local par la scène?

Partager ce message


Lien à poster
Partager sur d’autres sites

Le backup local est stocké sur le disque (clé USB à mémoire SLC) interne de la box, dans une partition différente du système, des logs, et des données.

 

La clé USB Recovery externe n'est plus utilisée

 

On peut conserver un seul backup local, chaque nouveau backup local écrase le précédent.

 

On peut télécharger le backup local (toujours le dernier réalisé, forcément, cf remarque précédente) pour le stocker ailleurs (PC, NAS, etc)

 

On peut aussi réaliser autant de backup Cloud que l'on désire, dans la limite de l'espace autorisé par Fibaro sur leurs serveurs.

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×