Welcome to Domotique-fibaro

 

Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous serez en mesure de contribuer à ce site en soumettant votre propre contenu ou en répondant au contenu existant. Vous serez en mesure de personnaliser votre profil, de recevoir des points de réputation comme une récompense pour la soumission de contenu, tout en communiquant avec d'autres membres via votre boîte de réception privée, et bien plus encore! Ce message sera supprimé une fois que vous vous êtes connecté.

 

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Nikko

Tuto HC2
Backup Via Scene Lua

44 messages dans ce sujet

@pepite: sous Windows (10 en tout cas mais à mon avis depuis bien longtemps), tu peux aussi le faire en ligne de commande avec certutil:

 

  • Tu écris le couple login:pass sous un fichier infile.txt, mais sans espace ou CR à la fin
  • Depuis un shell, dans le même répertoire que infile.txt: certutil -encode infile.txt outfile.txt
  • Tu as ton ensemble en base 64 dans outfile.txt

Et bien sûr le résultat est le même quel que soit l'OS:

 

certutil_03.pngbase64_linux.png

 

 

Bref des méthodes il en existe des tas ;-)

 

 

 

1

Partager ce message


Lien à poster
Partager sur d’autres sites

Nickel. vous ètes trop forts. merci nikko pour les 2 scènes de backup et merci pepite pour la scène d'encodage. :13:

0

Partager ce message


Lien à poster
Partager sur d’autres sites

petite, j'ai copié collé ton code dans un scene, mais dans le debug j'ai rien ?

le print m'affiche rien. comprends pas

0

Partager ce message


Lien à poster
Partager sur d’autres sites

bon j'ai fait comme cela et j'arrive a récupérer le mdp

local test = enc('login:pwd')
fibaro:debug(test)

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

bon j'ai fait comme cela et j'arrive a récupérer le mdp

local test = enc('login:pwd')
fibaro:debug(test)

 

Modifié par Sakkhho
0

Partager ce message


Lien à poster
Partager sur d’autres sites

@Sakkhho

t'as essaye ca, ca fonctionne chez moi

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

oui ca fonctionne bien, c'était le "print" qui marchait pas  chez moi

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Y'a moyen de backuper sur un share réseau? Qui pourrait m'aiguiller sachant que j'ai les accès adéquats nécessaires...

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Venant de basculer sur le dernier frimware, merci pour cette correction.

Mise en place, tester, et fonctionnel

Super boulot, comme toujours

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites
Y'a moyen de backuper sur un share réseau? Qui pourrait m'aiguiller sachant que j'ai les accès adéquats nécessaires...

Oui je pense que cela est possible

Envoyé de mon SM-G901F en utilisant Tapatalk

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Question ?

Y a t'il une utilité de garder les backups liés à des versions de firm ancien.

Si un recovery est nécéssaire, on part de la 4.31 initiale ( Clé) puis il va nous proposer de se mettre a jour

directement sur la dernière stable ou en passant  par les stables intermédiaires ?

Apres cette mise à jour sur la dernière stable seul les backups compatibles seront utiles, les vieux, compatibles avec des versions antérieures peuvent être supprimés ?

Je n'ai jamais fait je préfère me renseigner avant.

 

Modifié par henri-allauch
0

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui je pense que cela est possible

Envoyé de mon SM-G901F en utilisant Tapatalk


Une piste? Je sèche et je suis conscient qu'on peut pas trop partager ouvertement sur ce point sur le forum... en MP peut-être?
0

Partager ce message


Lien à poster
Partager sur d’autres sites

Après MAJ en 4.110 j'avais oublie dé mettre à jour Backup et DeleteBackup ;-)

Encore merci @Nikko

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir, que devons nous changer pour que sa fonctionne de nouveau en vers 4.114

Fonctionne plus depuis la .110 je crois?

Merci

Envoyé de mon SM-G920W8 en utilisant Tapatalk

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

je vous relance pour le Delete, je ne suis pas sur de bien comprendre ce que je dois mettre dans ma scène pour que sa fonctionne, je suis rendu en version 4.131B

 

Merci de votre aide et bonne journée,

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Plap3014

 

Voila la scène de backup fonctionnelle pour moi, suite aux modifications de nikko, il faut que tu encode ton couple login@toto.fr:motdepasse en base 64, regarde dans un des posts, il y'a le code pour le faire

--[[
%% properties
%% events
%% globals
--]]
-- BACKUP
-- ID des mobiles,tablettes pour notification
local portable = {} -- {XX, XX}
 
-- Message Descriptif du Backup
local descriptif = 'Backup HC2 du '..os.date("%d/%m/%y - %HH%M")
-- Password admin encodé en base64
local password = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
 
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 httpClient = net.HTTPClient()
httpClient:request(url , {
        success = function(response)
                    if tonumber(response.status) == 201 or tonumber(response.status) == 202 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/json',
                        ["Authorization"] = 'Basic '..password
                          },
                data = datas
            }
});

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié)

Merci,

 

mais le backup fonctionne bien chez moi, c'est le delete qui fonctionne plus, as-tu quelque chose?

 


Envoyé de mon SM-G920W8 en utilisant Tapatalk
 

Modifié par Plap3014
0

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Plap3014

 

Pardon, je n'avais pas bien suivi ;-)

 

J'ai aussi et fonctionnel

--[[
%% properties
%% events
%% globals
--]]
 
--DELETE BACKUP
-- Flag dryrun; Si true, la requete sur api pour effacer le backup n'est pas effectuée
local dryrun = false
 
-- Password admin encodé en base64
local password = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
function sortBackup(data)
    local backups = json.decode(data)
    -- 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) 
        deleteBackup(id)
    else
        print("Erreur lors de la récupération de l'ID")
        fibaro:abort()
    end
end
function deleteBackup(id)
    -- Requete via API pour effacer le backup le plus ancien
    if (not dryrun) and (id) then
        print('Effacement du backup '..id..' en cours. Cela peut prendre 30s')
        local url = 'http://127.0.0.1/api/service/backups/'..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;',
                        ["authorization"] = 'Basic '..password
                            },
                    data = 'id='..id
                }
        })
    end
end
-- Récupération de la list des backups
local GETClient = net.HTTPClient()
if dryrun then print('Mode DryRun -> La requète pour effacer ne sera pas éxécutée') end
GETClient:request('http://127.0.0.1/api/service/backups', {
    success = function(response)
                if tonumber(response.status) == 200 then
                    sortBackup(response.data)
                else
                    print("Error " .. response.status)                      
                   end
                end,
    error = function(err)
                print('error = ' .. err)
            end,
    headers = {
                ["content-type"] = 'application/x-www-form-urlencoded;',
                ["authorization"] = 'Basic '..password
                }                       
    });

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @pepite,

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites