henri-allauch Posté(e) le 23 février 2023 Signaler Posté(e) le 23 février 2023 (modifié) Salut, si ça peut vous être utile ..... Au début du transfert de ma HC2 vers la Hc3, J'avais écrit un php pour analyser le contenu de la HC3 et créer sous forme de fichiers classés dans un répertoire(Daté) pour l'ensemble des QA : les fichiers lua, le fqa et les variables,. Idem pour scènes et les VG. Cela permet sans faire une sauvegarde fibaro, d'archiver les fichiers pour avoir sous la main une sauvegarde rapide, utilisable pour récupérer un source dégradé lors d'une modification ou autre par un couper coller ..... Ca ne remplace pas les sauvegardes fibaro. Pour l'utiliser il suffit de l'installer sur un serveur php, de créer un repertoire ex:SaveHc3 sur ce serveur, de lui donner les droits d'accès, et de le définir en début du source Php avec l'ip le user et le Passwd de la Box $Hc3Ip = "192.168.X.XX"; $Hc3Login = "TonUserBox"; $Hc3Pass = "TonPasswordBox"; $dirSaveHc3 = "SaveHc3"; Une fois lancé, choisir dans le menu Sauvegarder et Valider ce choix Un sous répertoire daté sera créé avec l'ensemble des éléments trouvé dans la HC3 Je ne suis pas un spécialiste de la programmation php, mais ça fait le boulot. j'avais créé ce truc car j'avais l'habitude d'utiliser l' appli de @Krikroff dont j'ai oublié le nom, mais je n'ai plus de système windows SaveHc3.php Modifié le 23 février 2023 par henri-allauch 4
jojo Posté(e) le 24 février 2023 Signaler Posté(e) le 24 février 2023 Salut, GENIAL ce développement, enfin un backup lisible... J'ai (comme d'hab) une question : - à quoi correspond/sert l'action <Abandon> ? et propositions d'évolution : 1) actuellement, la variable <$dirSaveHc3> coreespond à un sous-répertoire d'où est installé le php. sur mon NAS Synology, cela correspond à /volume1/web/SaveHc3/SaveHc3 Les backup de Lazer sont sauvés dans un sous répertoire de /volume1/Domo_Fibaro Ne serait-il pas possible que la variable <$dirSaveHc3> fasse référence à une destination absolue (au lieu de relative) ? 2) Après l'exécution de l'action, serait-il possible d'affficher une confirmation comme quoi tout s'est bien passé ? (car comme je ne voyais rien, j'ai fait plusieurs sauvegardes ...) Merci !
henri-allauch Posté(e) le 24 février 2023 Auteur Signaler Posté(e) le 24 février 2023 (modifié) @jojo Je vais te décevoir mais je n'ai pas mis ce scrip pour répondre à tous les besoins des différentes configurations de nos équipements. Il est basique et je pense que chacun pourra l'adapter à ses propres besoin. La partie extraction peut être conservée la partie écriture dans les fichiers peut être adaptée... Mais pour la question 1dans le php $dirSaveHc3 contient SaveHc3 c'est un chemin relatif au répertoire courant ou se trouve le php. Mais tu peux mettre un chemin absolu /home/messauvegardes... Mais il faut que ce répertoire ait les droits d'accès ouvert en écriture correspondant au user du serveur php Pour la question 2 en fin d'exécution "sauvegarder" est effacé par "choisir une action"... C'est donc fini Pour la question 3 l'action abandon.... A part d'effacer le menu (abandon +Valider) je ne me rappelle plus. Encore une fois suis désolé mais je ne ferai pas de modif c'est un bout de code qui m'a servi et qui reste à adapter aux besoin de chacun. Modifié le 24 février 2023 par henri-allauch 1
jojo Posté(e) le 24 février 2023 Signaler Posté(e) le 24 février 2023 nooo stress. Merci pour tes réponses, je l'adapterai donc à mes besoins...
jojo Posté(e) le 24 février 2023 Signaler Posté(e) le 24 février 2023 et j'oubliais le plus important : Merci pour le partage !
ericl78 Posté(e) le 17 juillet 2023 Signaler Posté(e) le 17 juillet 2023 Je viens de le mettre en place, NICKEL ! Je l'ai installé sur mon Syno, il fonctionne bien. 1000 Mercis à toi PS: je suis nul de chez nul en php, si un jour tu peux mettre une modif afin de lancer la sauvegarde en automatique depuis un schedule (Syno par exemple), cela permettrait de sauvegarder en automatique toutes les semaines :=) encore merci 1
chrisalex Posté(e) le 16 août 2023 Signaler Posté(e) le 16 août 2023 (modifié) Hello, pour ceux que ça interesse de lancer ce script php en auto à intervalles réguliers, je me suis permis de modifier légèrement le php original. Ensuite suffira d'appeler ce script par exemple via un quickApp dont je vous donne ici une version fonctionnelle (utilisable tel quel en créant un bouton et un label) : function QuickApp:onInit() self:debug("onInit") self.http = net.HTTPClient() end --- BACKUP PAR SYNO ----------------------------------------------------------------------------------------------- function QuickApp:backup() self.http:request("http://192.168.XXX.XXX/SaveHc3-Auto.php", { options = { data = json.encode(requestBody), method = "GET", headers = { ["Content-Type"] = "application/json", ["Accept"] = "application/json", -- Header with basic auth containing admin:admin. Replace it with your crendentials. ["Authorization"] = "Basic MY_Password", -- mot de passe en base 64 } }, success = function(response) self:debug(response.status) self:debug(response.data) ------------------------ self:updateView('label_Bck', 'text', 'Dernière sauvegarde : ' .. (os.date("%d/%m/%Y %H:%M:%S", backupsremotetimestamp))) -- maj du label ------------------------ end, error = function(message) self:debug("error:", message) end }) end SaveHc3-Auto.php Modifié le 16 août 2023 par chrisalex 3
ericl78 Posté(e) le 17 août 2023 Signaler Posté(e) le 17 août 2023 Merci à toi @chrisalex Je vais essayer cela ce soir, une sauvegarde de plus, cela est toujours sécurisant.
jojo Posté(e) le 17 août 2023 Signaler Posté(e) le 17 août 2023 Le 24/02/2023 à 14:38, jojo a dit : actuellement, la variable <$dirSaveHc3> coreespond à un sous-répertoire d'où est installé le php. sur mon NAS Synology, cela correspond à /volume1/web/SaveHc3/SaveHc3 Les backup de Lazer sont sauvés dans un sous répertoire de /volume1/Domo_Fibaro Ne serait-il pas possible que la variable <$dirSaveHc3> fasse référence à une destination absolue (au lieu de relative) ? Lors de la publication du php pour HC3, j'avais soumis l'idée suivante (cfr ci-dessus) ... Evidemment, comme je n'y connais rien en php, je n'ai pas réussi à la mettre en oeuvre. Mais maintenant qu'on a trouvé un expert php plein de bonne volonté, saurais-tu inclure cette petite modif ?
chrisalex Posté(e) le 17 août 2023 Signaler Posté(e) le 17 août 2023 désolé @jojo je suis vraiment pas bon en php j'ai trouvé la soluce sur un fofo. mais je regarderai et si je trouve je posterai...promis 1
jojo Posté(e) le 19 août 2023 Signaler Posté(e) le 19 août 2023 Le 16/08/2023 à 09:10, chrisalex a dit : -- Header with basic auth containing admin:admin. Replace it with your crendentials. ["Authorization"] = "Basic MY_Password", -- mot de passe en base 64 Bonjour, je ne sais pas comment renter mes credientials. Est-ce que l'utilisateur renseigné doit être admin du Syno (ou un simple utilisateur qui a les droits en lecture sur le dossier web suffit ?) Est-ce uniquement Password qui doit être en Base 64, ou tout le couple user:password ? Merci de ton aide
Kana-chan Posté(e) le 19 août 2023 Signaler Posté(e) le 19 août 2023 Bonjour, Il faut que les deux soient dans le base64. Pour encoder, vous pouvez utiliser le site suivant : https://www.base64encode.org/ Il faut que l'utilisateur sur le Synology aie les droits d'écriture. 1
jojo Posté(e) le 20 août 2023 Signaler Posté(e) le 20 août 2023 (modifié) @chrusalex, où est mon erreur ? Voici le log [20.08.2023] [18:05:30] [DEBUG] [QUICKAPP922]: onInit [20.08.2023] [18:06:51] [TRACE] [QUICKAPP922]: UIEvent: {"eventType":"onReleased","deviceId":922,"elementName":"bt-backup","values":[]} [20.08.2023] [18:07:06] [DEBUG] [QUICKAPP922]: 200 [20.08.2023] [18:07:06] [DEBUG] [QUICKAPP922]: Warning: Undefined array key "actions" in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 74 Warning: Undefined array key "conditions" in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 82 Warning: Undefined array key "actions" in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 74 Warning: Undefined array key "conditions" in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 82 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Warning: Array to string conversion in /volume4/web/SaveHc3/SaveHc3-Auto.php on line 166 Merci EDIT : en fait, il fait le job, mais pourquoi ce warning Modifié le 20 août 2023 par jojo
chrisalex Posté(e) le 21 août 2023 Signaler Posté(e) le 21 août 2023 @jojo tout a fait en phase avec toi il fait le job mais il y a un souci avec le code php de définition des tableaux (array). J'ai deux box à la maison et sur une je n'ai pas ces erreurs et sur l'autre j'ai exactement les même que toi (mais comme tu le dis ca fait le job malgré tout) Selon moi cela vient des scenes en mode block (peut être des espaces ou avec nom trop long ... je n'ai pas encore identifié quoi exactement) en tout cas il n'arrive pas à interpreter les paramètres de ces scenes pour les mettre en tableau, mais ce n'est pas gênant car de tout façon il ne peut backuper ces scenes car elle ne sont pas en lua.
henri-allauch Posté(e) le 21 août 2023 Auteur Signaler Posté(e) le 21 août 2023 (modifié) Pour une valeur de tableau non définie : La raison du warning est que depuis la version 8.0 de Php, "Undefined array key" a changé de niveau : de Notice à Warning. Deux solutions. 1 Modifiez les paramètres d'erreur PHP pour ne pas inclure E_WARNING (non recommandé) 2 Inclure un isset() pour vérifier existance de la variable (recommandé). Voir au niveau des lignes de warning obtenues dans debug ex 74 et autres Modifier du style if (isset($c["actions"])) { $n = file_put_contents($file, $c["actions"]); if ($n == false ) { Writelog( "Erreur ecriture" . $scenes["name"]. "_actions.lua"); } else { Writelog ("Sauvegarde de " . $scenes["name"]."_actions.lua : " .$n ." octets"); } } Je n'ai pas PHP 8 pour tester et je n'aurai pas le temps avant la fin de l'année mais je pense que c'est la piste à suivre pour le Pb de warning Le QA remonte les messages de la version modifié Auto. Modifié le 21 août 2023 par henri-allauch
chrisalex Posté(e) le 22 août 2023 Signaler Posté(e) le 22 août 2023 Hello @henri-allauch merci de ton intervention malgré ton manque de temps, cependant pour info si je passe sur php 7.4 le souci de warning est le même...enfin presque juste une différence entre "undefinied index action" et "undefined array key "actions"" : voir pj
henri-allauch Posté(e) le 22 août 2023 Auteur Signaler Posté(e) le 22 août 2023 OK alors la piste que tu suggère ( scènes en mode block ) est peut être la bonne. Je n'ai pas de scène mode bloc ni de scène à part celles les 4 imposés par Fibaro ( Morning Evening , ...) qui à priori ne pose pas de problème Il y a peut être quelque chose de différent dans le json /api/scenes/$deviceId des scènes qui provoque cette absence d'indice de clé
henri-allauch Posté(e) le 22 août 2023 Auteur Signaler Posté(e) le 22 août 2023 (modifié) J'ai jeté un petit coup d'oeil effectivement c'est bien lié aux scènes bloc. La structure du json scènes/content/actions est différente. Il y a 19 heures, chrisalex a dit : mais ce n'est pas gênant car de tout façon il ne peut backuper ces scenes car elle ne sont pas en lua Tu as raison, même si on récupère le contenu de la structure, il serait difficile de la déposer simplement dans la scène block. Donc la solution serait peut être d'ignorer les scènes mode block En attendant on reste avec un warning ++ Dernière Minute : j'ai fait une version modifiée pour Signaler mais ignorer les scènes Blocs (à vérifier) Modif SaveHc3-Auto.php Modifié le 22 août 2023 par henri-allauch Ajourtd'un Php modifié
chrisalex Posté(e) le 24 août 2023 Signaler Posté(e) le 24 août 2023 (modifié) hello @henri-allauch c'est pas mal du tout ça plus de warning ... cependant il semble ne plus sauvegarder aucune scene lua non plus, mais continue à sauvegarder les quatre scenes bloc Fibaro : "Time Light Scenario", "Gate Light Scenario", "Morning scenario" et "Evening Scenario" Modifié le 24 août 2023 par chrisalex
henri-allauch Posté(e) le 25 août 2023 Auteur Signaler Posté(e) le 25 août 2023 (modifié) ah ok j'ai fait l'essai sur une box qui n'avait que des scènes fibaro (: "Time Light Scenario", "Gate Light Scenario", "Morning scenario" et "Evening Scenario") qui sont de type scénarios donc il doit y voir au autre type scène a autoriser il faut que j'en crée pour tester J'ai ajouté le le type Lua ---- >> à tester. SaveHc3-Auto.php Modifié le 25 août 2023 par henri-allauch Ajourtd'un Php modifié 2
chrisalex Posté(e) le 26 août 2023 Signaler Posté(e) le 26 août 2023 hello, hé hé ça me parait être la bonne fournée cette fois ... plus d"erreur sauvegarde des scene lua et ignorance des scene blocs mais cerise sur le gateau référencées comme tel dans les logs et fichier. merci @henri-allauch
henri-allauch Posté(e) le 21 septembre 2023 Auteur Signaler Posté(e) le 21 septembre 2023 Le 24/02/2023 à 14:38, jojo a dit : J'ai (comme d'hab) une question : - à quoi correspond/sert l'action <Abandon> ? Si tu te sert toujours de cette version manuelle, Tu peux ajouter au traitement du Exit vers la ligne 321 du php initial la fonction window.close() case "Exit": echo "<script> window.close();</script>"; exit(); Ainsi quand tu sélectionne Abandon et que tu valide la fenêtre du Php se fermera. 1
Messages recommandés