mprinfo Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 ZerobrainStudio pour ecrire et tester vos scripts lua directement sur votre PC Merci a steven et Fred le ouf Dans un premier temps il faut telecharger ZerobrainStudio. Choisir la version qui correspond a votre systéme d'explotation pour moi ce sera Windows 32bit (exe installer) https://studio.zerobrane.com/download?not-this-time Il suffit d'installer le programme comme vous en avez l'habitude et bien regarder ou il sera installer Ensuite il va falloir ajouter le fichier que @Steven a partager sur le forum lualibs1.01.zip By Steven Ajout : le fibaro:sleep(<millisecondes>) fibaro:countScene() retournera toujours 1. Manque encore une astuce pour simuler le fibaro:getSourceTrigger() Il ne vous reste plus qu'a décompresser ce fichier dans le répertoire C:.......\ZeroBraneStudio\lualibs Utilistation : require("FibaroSceneAPI") hc2_user = "admin" hc2_pwd = "admin" hc2_ip = "192.168.x.x" -- Inséré votre code en dessous de cette ligne ----------------- Et pour ceux qui n'aime pas l'anglais : Edit -> Preferences -> Settings: System --[[-- Use this file to specify **System** preferences. Review [examples](+C:\PRGMS\ZeroBraneStudio\cfg\user-sample.lua) or check [online documentation](http://studio.zerobrane.com/documentation.html) for details. --]]-- language = "fr" Et redémarrer l'application Pour ceux qui souhaite les même couleurs que dans leur HC2, il faut aller dans le menu : Edit -> Preferences -> Settings: User et copier le code ci-dessous puis redémarrer. --[[-- Use this file to specify **User** preferences. Review [examples](+C:\PRGMS\ZeroBraneStudio\cfg\user-sample.lua) or check [online documentation](http://studio.zerobrane.com/documentation.html) for details. --]]-- styles = loadfile('cfg/tomorrow.lua')('TomorrowNight') stylesoutshell = styles -- apply the same scheme to Output/Console windows styles.auxwindow = styles.text -- apply text colors to auxiliary windows styles.calltip = styles.text -- apply text colors to tooltips local colors = { orange = {255,158,89}, braun = {217,191,140}, darkgray = {38,38,38}, blue = {89,158,255}, green = {188,210,121}, red = {179,94,77}, white = {255,255,255}, gray = {102,102,102} } styles.comment = {fg = colors.gray} styles.operator = {fg = colors.white} styles.number = {fg = colors.red} styles.stringtxt = {fg = colors.green} styles.keywords0 = {fg = colors.blue} styles.text = {fg = colors.braun, bg = colors.darkgray} styles.keywords3 = {fg = colors.orange} styles.keywords4 = {fg = colors.orange} styles.keywords5 = {fg = colors.orange} styles.keywords6 = {fg = colors.orange} styles.keywords7 = {fg = colors.orange} Encore une amélioration : Copier le fichier ci-joint "fibaro.lua" dans le sous-répertoire /api/lua/ fibaro.lua puis dans le menu : Edit -> Preferences -> Settings: System ajouter cette ligne : api = {luadeb = {'fibaro'}} Vous allez avoir l'auto-complétion des commandes fibaro ainsi que leur description. Astuce. Pour pouvoir tester les triggers, voici le code à utiliser __fibaroSceneSourceTrigger = {type="global", name="Pushbullet"} -- __fibaroSceneSourceTrigger = {type="global", name="Pushbullet"} -- __fibaroSceneSourceTrigger = {type="property", deviceID=6, propertyName="value"} -- __fibaroSceneSourceTrigger = {type="autostart"} -- __fibaroSceneSourceTrigger = {type="other"} print(fibaro.getSourceTrigger().type) -- global print(fibaro.getSourceTrigger().name) -- Pushbullet __fibaroSceneSourceTrigger = {type="autostart"} print(fibaro.getSourceTrigger().type) -- autostart Il suffit donc de modifier la variable __fibaroSceneSourceTrigger en utilisant un des exemple fourni. il est aussi possible de débuguer ligne à ligne, et même de modifier dynamiquement la valeur d'une variable directement en cours d'exécution. Allez, je me lance pour mon 1er tuto Ouvrir Zerobranstudio et afficher les fenêtres suivantes si ce n'est pas encore déjà fait insérer le code suivant dans une nouvelle fenêtre vide de Zerobranstudio (on va réviser les multiplications ) local boucle = true local i = 1 local j = 1 while boucle == true do i = i + 1 j = j + 2 print(i.." x "..j.." = "..i * j) end Pour activer le suivi dynamique des variables, il suffit de sélectionner le nom de la variable que l'on veut suivre, puis de faire clic droit dessus pour faire apparaitre un menu contextuel. Il faut ensuite sélectionner l'option Add watch expression comme dans l'image ci dessous. Dans notre cas, il faut le faire pour les 2 variables i & j. Pour passer en mode debug, appuyer 1 fois sur la touche F5, la fenêtre doit ressembler à ça. Le curseur vert est positionné sur la première instruction, et la fenêtre Watch affiche les valeurs de i et j (à nil pour le moment ce qui est logique) Appuyer maintenant plusieurs fois sur la touche F10 pour exécuter le programme pas à pas, jusqu'à afficher le premier résultat de la multiplication, comme ci dessous. Le résultat de la multiplication est en cohérence avec les valeurs de i et j. Pour tester maintenant la modification à la volée d'une variable, on va continuer l'exécution du programme et réexécuter une seconde fois la boucle en appuyant plusieurs fois sur la touche F10 mais sans exécuter l'instruction print, comme dans l'image ci dessous. La valeur des 2 variables a bien été modifiée par programmation. Pour modifier maintenant dynamiquement la valeur de j, il faut cliquer sur l'onglet Remote console, taper la ligne j = 20 puis appuyer sur la touche Entrée pour valider la commande, comme dans l'image ci dessous. On peut alors voir que la valeur de j a bien été modifiée dans la fenêtre de Watch. Il suffit maintenant de recliquer sur l'onglet Output (suspended), et d'appuyer de nouveau sur la touche F10 pour reprendre l'exécution du programme. On constate alors que la valeur de j mise à 20 à la main a bien été prise en compte dynamiquement par le programme. Je remercie encore une fois steven pour ce super travail 1 6
pepite Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 le retour des Tutos en couleurs de Pascal ;-) Tu nous avais manqué ;-) Merci Pascal, @steven, et @Fred le Ouf Reste à trouver où mettre la lib pour la pomme et linux ;-)
mprinfo Posté(e) le 19 octobre 2016 Auteur Signaler Posté(e) le 19 octobre 2016 C'est identique sous MAC il faut mettre cela dans le dossier lualibs du programme
pepite Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 Identique aussi sous debian ;-)
Berale64 Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 C'est super mega géant ce truc. Un grand merci ! :13:
Peter Posté(e) le 19 octobre 2016 Signaler Posté(e) le 19 octobre 2016 cool merci au codeur et a pascal pour ton tuto @pepite a raison cela nous manquait je pense que sa va bien m'aidé a progresser encore sur le lua
Fred le ouf Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 @steven un grand merci à toi par contre, je viens juste d'installer et cela ne fonctionne pas avec la version 1.30, il m'a fallut installer la version 1.40 de Zerobrane Studio. Allez, je vous laisse, je vais essayer de zerobraner un peu avant de taffer
Fred le ouf Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Bon, le résultat de mes premiers essais, ca marche bien pour les commandes et les variables.J'aime coder avec Zerobrane, mais là , c'est un régal de debuguer avec des vraies valeurs en vue watch. Par contre j'ai un message d'erreur dès que je veux m'amuser avec fibaro:getGlobalValue ou Net.FHttp.c'est peut être (surement ?) normal. Je laisse Dieu nous éclairer par exemple, le code ci dessous local response = fibaro:getGlobalValue('JSONMAISON') local jsonTable = json.decode(response) local HueAdresseIP = jsonTable.PhilipsHue.AdresseIP produit le message d'erreur suivant Program starting as '"C:\FRED\ZeroBraneStudio\bin\lua.exe" -e "io.stdout:setvbuf('no')" "C:\Users\PC01\AppData\Local\Temp\.3FC2.tmp"'. Program 'lua.exe' started in 'C:\FRED\ZeroBraneStudio\myprograms' (pid: 3504). Debugging session started in 'C:\FRED\ZeroBraneStudio\myprograms\'. Program completed in 4.46 seconds (pid: 3504). C:\FRED\ZeroBraneStudio\lualibs/json\decode\util.lua:35: unexpected character @ character: 30 0:30 ["] line: {"name":"JSONMAISON","value":" stack traceback: [C]: in function 'error' C:\FRED\ZeroBraneStudio\lualibs/json\decode\util.lua:35: in function <C:\FRED\ZeroBraneStudio\lualibs/json\decode\util.lua:32> [C]: in function 'match' C:\FRED\ZeroBraneStudio\lualibs/json\decode.lua:74: in function '__fibaro_get_global_variable' C:\FRED\ZeroBraneStudio\lualibs/FibaroSceneAPI.lua:147: in function 'getGlobalValue' HC2/3 - Virtual Device/Reseau/Bouton Analyse ARP 1.0.lua:9: in main chunk Debugging session completed (traced 4 instructions). le json est une variable globale dont le contenu est mis à jour par une scène (idée piquée dans ce forum, ça permet de stocker tout plein de données et de les avoir accessibles de partout)Dans le cas qui nous intéresse, il contient les données suivantes jsonMaison = { PhilipsHue = { AdresseIP = "192.168.0.23", HuePort = 80, Key = "XXXXXXXXXXXXXXXXXXXXXXXX", FIN_DU_BLOC = "" }, Zibase = { AdresseIP = "192.168.0.188", Port = 80, FIN_DU_BLOC = "" }, .... } voili voila si ca peut aider à faire avancer le schmilblick :lol: Bonne journée à tous
Fred le ouf Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 et au fait 2 raccourcis à connaitre Ctrl + i pour indenter automatiquement le code Ctrl + u pour commenter/décommenter le texte sélectionné
pepite Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Salut tout le monde, Pour moi ca ne fonctionne aps avec la pomme, snif j'ai certainement fait une boulette.. Le dossier lualib se trouve : /applications/Zerobrane.app/contents..../lualibs j'ai bien mis le contenu du repertoire mais que nenni ;-) un simple turnOff ne me renvoie rien dans le output console..et reste en attente tant que je ne l'arrete pas manuellement. Me suis trompé où ? J'essaierai sur Windows ce soir
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 @Fred le ouf C'est le json qui n'aime pas. J'ai intégrer une autre librairie que celle de fibaro, c'est peut-être la cause du problème. Faudra que je creuse un peu. Pourrais-tu m'envoyé le json complet par MP (sans les mots de passe) que je puisse tester avec des valeurs réelles ? Pour ceux qui souhaite les même couleurs que dans leur HC2, il faut aller dans le menu : Edit -> Preferences -> Settings: User et copier le code ci-dessous puis redémarrer. --[[-- Use this file to specify **User** preferences. Review [examples](+C:\PRGMS\ZeroBraneStudio\cfg\user-sample.lua) or check [online documentation](http://studio.zerobrane.com/documentation.html) for details. --]]-- styles = loadfile('cfg/tomorrow.lua')('TomorrowNight') stylesoutshell = styles -- apply the same scheme to Output/Console windows styles.auxwindow = styles.text -- apply text colors to auxiliary windows styles.calltip = styles.text -- apply text colors to tooltips local colors = { orange = {255,158,89}, braun = {217,191,140}, darkgray = {38,38,38}, blue = {89,158,255}, green = {188,210,121}, red = {179,94,77}, white = {255,255,255}, gray = {102,102,102} } styles.comment = {fg = colors.gray} styles.operator = {fg = colors.white} styles.number = {fg = colors.red} styles.stringtxt = {fg = colors.green} styles.keywords0 = {fg = colors.blue} styles.text = {fg = colors.braun, bg = colors.darkgray} styles.keywords3 = {fg = colors.orange} styles.keywords4 = {fg = colors.orange} styles.keywords5 = {fg = colors.orange} styles.keywords6 = {fg = colors.orange} styles.keywords7 = {fg = colors.orange} 1 4
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Et pour ceux qui n'aime pas l'anglais : Edit -> Preferences -> Settings: System --[[-- Use this file to specify **System** preferences. Review [examples](+C:\PRGMS\ZeroBraneStudio\cfg\user-sample.lua) or check [online documentation](http://studio.zerobrane.com/documentation.html) for details. --]]-- language = "fr" Et redémarrer l'application 1 1
mprinfo Posté(e) le 20 octobre 2016 Auteur Signaler Posté(e) le 20 octobre 2016 Merci d'avoir pensé à moi pour l'interface en français @steven j'ai ajouté toutes tes amélioration dans le post 1 Merci 1
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Encore une amélioration : Copier le fichier ci-joint "fibaro.lua" dans le sous-répertoire /api/lua/ puis dans le menu : Edit -> Preferences -> Settings: System ajouter cette ligne : api = {luadeb = {'fibaro'}} Vous allez avoir l'auto-complétion des commandes fibaro ainsi que leur description. fibaro.lua 1 4
pepite Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Top, merci @Master. Pour l'instant pour moi, rien ne fonctionne lol, mais j'y cro is hihi
mprinfo Posté(e) le 20 octobre 2016 Auteur Signaler Posté(e) le 20 octobre 2016 Mise a jour de post 1 réaliser merci Chef 1
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Le problème est sà»rement ... sur la chaise 1 1
supermenteur Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 ça marche du tonnerre. Merci 1
pepite Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 c'est sur que l'erreur est sur la chaise hihi entre l'ecran et le dossier ;-) 1
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Encore une astuce. Pour pouvoir tester les triggers, voici le code à utiliser __fibaroSceneSourceTrigger = {type="global", name="Pushbullet"} -- __fibaroSceneSourceTrigger = {type="global", name="Pushbullet"} -- __fibaroSceneSourceTrigger = {type="property", deviceID=6, propertyName="value"} -- __fibaroSceneSourceTrigger = {type="autostart"} -- __fibaroSceneSourceTrigger = {type="other"} print(fibaro.getSourceTrigger().type) -- global print(fibaro.getSourceTrigger().name) -- Pushbullet __fibaroSceneSourceTrigger = {type="autostart"} print(fibaro.getSourceTrigger().type) -- autostart Il suffit donc de modifier la variable __fibaroSceneSourceTrigger en utilisant un des exemple fourni. 1 2
pepite Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 j'espere que le type entre l'ecran et la chaise va réussir,car ca me parait TOP ;-) Manquera que les "Slips"...ou j'ai raté l'info lol 3
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 @pepite quand tu fais ton "turnOff" comme tu l'as décrit plus tôt. Est-ce que tu as bien mis l'entête avant : require("FibaroSceneAPI") hc2_user = "admin" hc2_pwd = "admin" hc2_ip = "192.168.x.x" fibaro:call(62, "turnOff") 1
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 j'espere que le type entre l'ecran et la chaise va réussir,car ca me parait TOP ;-) Manquera que les "Slips"...ou j'ai raté l'info lol Tu as raté l'info, je l'ai déjà implémenté. 1 1
pepite Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 oui @master, j'avais bien mis le require et tout et tout.. ;-) J'ai essaye vite fait sur une pomme, j'ai deja eu du mal a trouver le rep lualib.
Steven Posté(e) le 20 octobre 2016 Signaler Posté(e) le 20 octobre 2016 Au boulot, j'ai un peu le même comportement que toi, le script se lance et au bout de 5mn il se plante. C'est qu'il essaie de faire un appel http à la box mais il ne peux pas passer le firewall du boulot. Sinon, à la maison, cela fonctionne à merveille. 1
Messages recommandés