
jjacques68
Membres confirmés-
Compteur de contenus
4 349 -
Inscription
-
Dernière visite
-
Jours gagnés
39
Tout ce qui a été posté par jjacques68
-
Utilisation des fichiers dans les QA
jjacques68 a répondu à un(e) sujet de jjacques68 dans Tutoriels
alors je me suis rendu compte qu'il faisait une simple copie du code du fichier dans le QA... en affichant le "content" du file. du coup, ça risque d'alourdir la taille des QA... ? voir leur réactivité ?? il va falloir optimiser les "fichier", en créer plusieurs pour regrouper les fonctions (traitement de chaines, opérations sur nombres, etc...) On aura jamais besoin de tout en même temps... -
Voici un petit tuto sur la gestion des fichiers dans les QA. petite nouveauté depuis la version 5.040.37 - 23/07/2020 Le code utilisé provient de @jgab sur le fofo officiel : https://forum.fibaro.com/topic/49113-hc3-quickapps-coding-tips-and-tricks/?do=findComment&comment=211496 (lien cité par @Lazer dans le topic dédié à la mise à jour : https://www.domotique-fibaro.fr/topic/14477-hc3-504037-23072020/) Donc le principe de ces fichiers est de partager des fonctions d'un QA à un autre. On pouvait déjà appeler une fonction d'un QA x depuis une scène ou un autre QA avec : fibaro:call(id_QA, "MaFonction") Mais maintenant on peut exploiter le retour de la fonction, ce qui super intéressant. On peut donc se créer une vrai bibliothèque de fonctions Voici un exemple concret : le QA "source" le QA "utilisateur" l'appel d'une fonction la modification du fonction Remarques 1. Le QA "source" : En cliquant sur l'icone "File" tout à gauche, une liste de fichier apparaît. En cliquant sur le bouton "+", on ajoute un nouveau fichier, ici "newFile". La navigation se fait facilement d'un fichier à un autre via des onglets : On a la possibilité de supprimer ou renommer un fichier. Dans mon exemple : voici le contenu du fichier Main : au passage, ce fichier ne peut pas être supprimer donc en fait, il y a rien de particulier pour lui... voici le contenu du fichier "newFile" que j'ai renommé "ToolBox" : on y voit 2 fonctions : StringToTimeStamp() Split() 2. le QA "utilisateur" Dans un nouveau QA, j'ai inséré cette fonction : merci à @jagb du fofo officiel. function QuickApp:copyFile(deviceId,fileName) local copyFile = api.get(string.format("/quickApp/%s/files/%s", deviceId, fileName)) assert(copyFile,"File doesn't exists") local myFile = api.get(string.format("/quickApp/%s/files/%s", self.id, fileName)) if not myFile then --création du fichier local stat,res = api.post(string.format("/quickApp/%s/files", self.id), {name=fileName, type="lua", isMain=false, isOpen=false, content=copyFile.content}) if res == 200 then self:debug("File '",fileName,"' added") else self:error("Error:",res) end elseif myFile.content ~= copyFile.content then --mise à jour si existant local stat,res = api.put(string.format("/quickApp/%s/files/%s", self.id, fileName), {name=fileName, type="lua", isMain=false, isOpen=false, content=copyFile.content}) if res == 200 then self:debug("File '",fileName,"' updated") else self:error("Error:",res) end else --rien à changer self:debug("File '",fileName,"' not changed") end end et dans le code onInit() de ce QA : j'appelle cette fonction avec comme argument l'ID du QA précédent, et comme nom, le fichier créé dans ce QA précédent : function QuickApp:onInit() self:debug("onInit") self:copyFile(494,"ToolBox") end après un petit refresh de la page : on voit que le fichier ToolBox a été ajouté Mais faut faire gaffe, ça saute pas au yeux, mais je suis bien dans le nouveau QA que je viens de créer et non dans le QA précédent ! et on peut accéder à son code en cliquant dessus ! MAIS ATTENTION A NE PAS MODIFIER LE CODE ICI ! sinon la modif ne sera pas répercutée sur le QA "source" ! 3. pour faire appel à une fonction de ce fichier intégré rien de plus simple : print(self:StringToTimeStamp("25/07/2020 16:00:00")) réponse : [25.07.2020] [16:17:37] [DEBUG] [QUICKAPP618]: 1595685600 4. En cas de modification du fichier "source" : encore une fois, rien de plus simple : on modifie le fichier source. on relance le QA qui intègre ce fichier source. (penser à faire des refresh du navigateur sinon on ne voit pas la modification) et le code est mise à jour. 5. Remarques : Il est possible bien-sûr d'intégrer le même fichier dans plusieurs QA, et la modification sera évidemment répercutée sur tous les QA... Visiblement dès qu'on change de fichier dans les onglets, ça relance le QA... Donc attention lors du développement, vu que les QA se relancent automatiquement en cas d'erreurs, ça peut vite tourner en boucle... Le code de la fonction "copyFile" est très clair, mais lors des mises à jour, il affiche toujours dans le debug "not changed". Alors qu'en réalité, il y a bien eu une modification !! Impossible de trouver dans l'API, les infos sur ce "fichier" intégrer au QA. Normalement, on devrait y trouver une propriété "files" avec le code, mais je trouve pas...
-
vous me faites peur avec vos chiffres si bas... !!! si on compte pas le cache je suis à 35 %
-
ah j'ai pas fait gaffe hier, aujourd'hui suis à 69 % stable...
-
c'est vraiment étrange, chez moi ça tient... bonne chance !!
-
c'est pas faux... mais avec tout ce que je lui ai mis dans la tronche ce soir, pour le moment elle ronronne ... bon, faut pas le dire trop fort...
-
je viens de tester cette histoire de "Files" dans les QA ! Et bien c'est juste de la bombe puissance 10 ! Maintenant on peux créer de vrai bibliothèques de fonctions ! ça va être de la tuerie ! EDIT : Va quand même falloir être prudent avec cette logique... Si une modif est à faire, ne surtout pas la faire dans le QA bénéficiaire, mais dans le QA source ! Vous allez dire que c'est logique, mais on peut vite y perdre le nord EDIT 2 : Impossible de trouver ces infos dans l'API ! Je ne trouve pas de propriété "files" dans le QA ! ou alors le Swagger n'est pas à jour...
-
pour le moment chez moi ça tient...
-
c'est dommage, elle avait bien commencée !!
-
alors là ça tourne avec la nouvelle version, on va voir combien de temps... je vais afficher le panel des ressources. attention dans mon cas, elle ne rebootait pas, elle bloquait nette, comme figée dans le temps ! J'ai du forcer le reboot.
-
c'est ce que je me suis dit en premier, mais j'ai jamais eu de soucis quelconques avant hier... alors du coup... par contre comme toi je fais appel à l'IPX par requête, et si ça devait planter à cause des requêtes, ça aurait planté bien plus tôt !! donc je sais plus trop quoi pensé de cette affaire. vais refaire la mise à jour, pour approfondir un peu plus, maintenant que je sais que le recovery fonctionne bien
-
je suis arrivé un peu avant la version 4, mais jamais j'ai eu les soucis dont vous parliez... Pour la HC3, elle a très bien marché pendant les quelques heures qui ont suivi l'update. Ensuite j'ai bien l'impression que lorsque des requêtes HTTP ont commencé a être utilisées, elle a planté. Je dis ça car je trace tout ce qui se passe en base de données, et la dernière info, était justement sur un QA qui execute des requête HTTP. Après le hard reboot, j'ai essayé de faire des requête HTTP depuis un autre QA, et boum ! re-plantage ! Elle s'est à nouveau figée... plus rien, plus d'accès à l'interface, plus de réponse Z-Wave.... Donc pas besoin de réfléchir plus longtemps, j'ai downgradé.
-
le downgrade s'est bien passé... Ce qui permet aussi d'avoir tester les backup auto réalisé par le script de @Lazer sur le syno... Mais alors franchement, c'est bien la première fois que je dois faire un downgrade de ma vie. Même avec la HC2, j'ai jamais eu de soucis...
-
ah la vache, 2ème fois !! visiblement quand ça emet des requettes HTTP ! allé zouu -> je retrogade de version.
-
aaaaaah ! vous portez malheur les gars !!!!! coupez tous vos petits doigts ! ma HC3 vient de planter... obligé de faire un hard reboot... C'est bien la première fois depuis que je l'ai ! bon elle a bien redémarrer... A suivre !
-
Pas de chance les gars, chez j'ai aucun soucis !! Ça roule tout seul, en tout cas j'ai rien remarqué d'anormal... Envoyé de mon iPhone en utilisant Tapatalk Pro
-
hé ben c'était du rapide ce coup là
-
bon, update en cours...
-
ah punaise je l'avais pas vu lui ! interessant !
-
ah zut, toujours pas : - icône pour QA - bug de l'IHM pour le gardenPanel - multiinstance des scènes - les objets des QA dans la mobile APP et je veux pas de câlins
-
bon : les admin du fofo : y en a un qui est sérieux en manque de câlins ! il a du être traumatisé étant plus jeune... on peut pas faire qqch pour lui ?
-
aaaah j'ai trouvé : local MonExemple = "un \010\013 deux \010\013 trois"
-
ben voilà ce que je souhaite faire : local MonExemple = "un \n deux \n trois" fibaro.alert("email", {xx}, tostring(MonExemple)) mais j'ai pas les sauts de ligne, ni avec "\r\n"...
-
hello !! J'espère que tout le monde va bien !! Petite question, comment faire pour avoir run retour chariot lorsque l'on compose un mail ? j'ai essayé le "\n" sans succès... merci d'avance !
-
Sauvegarde HC3 automatique sur NAS Synology
jjacques68 a répondu à un(e) sujet de Lazer dans Tutoriels
@Lazer : c'est tiptop installé et en fonction tous les matin à 02h00... merci !!! remarque ... je vais faire mon chieur : J'ai galéré un peu car j'ai des noms d'espaces dans les chemins d'accès : donc dans les paramètres de la tâche sur le NAS, il faut encadrer les chemins par des "" . Dans le script shell, ligne 73 et 78, il faut ajouter également les "" autour de ${NAS_PATH} # Check destination directory if [ ! -d "${NAS_PATH}" ] then Error "Erreur : le répertoire de destination '${NAS_PATH}' n'existe pas" Quit 2 fi cd "${NAS_PATH}" Ensuite c'est con mais j'ai utilisé comme login:user, mon adresse mail comme pour me connecter en temps normal, et il a pas aimé, faut bien utiliser le user admin.