Aller au contenu
mprinfo

Zerobrainstudio Pour Ecrire Et Tester Vos Scripts Lua Directement Sur Votre Pc

Recommended Posts

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

 

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 -----------------


gallery_374_242_19225.png

 

 

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.

 

723882451.png

 

468442152.png

 

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

 

01.png

 

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.

 

07.png

 

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)

 

02.png

 

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.

 

03.png

 

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.

 

04.png

 

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.

 

05.png

 

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.

 

06.png

 

 

Je remercie encore une fois steven pour ce super travail

  • Thanks 1
  • Upvote 6

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est identique sous MAC il faut mettre cela dans le dossier lualibs du programme

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

@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 :P

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :lol:
 
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: :lol:
 
Bonne journée à  tous

Partager ce message


Lien à poster
Partager sur d’autres sites

et au fait 2 raccourcis à  connaitre

 

Ctrl + i pour indenter automatiquement le code

Ctrl + u pour commenter/décommenter le texte sélectionné

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

@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}
  • Like 1
  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

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

  • Like 1
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci d'avoir pensé à  moi pour l'interface en français :60:

 

@steven j'ai ajouté toutes tes amélioration dans le post 1 Merci

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

723882451.png

 

468442152.png

 

fibaro.lua

  • Like 1
  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Top, merci @Master.

 

Pour l'instant pour moi, rien ne fonctionne lol, mais j'y cro is hihi

Partager ce message


Lien à poster
Partager sur d’autres sites

Mise a jour de post 1 réaliser merci Chef

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Le problème est sà»rement ... sur la chaise  :D

 

:98:

  • Like 1
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est sur que l'erreur est sur la chaise hihi entre l'ecran et le dossier ;-)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.
  • Like 1
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

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

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

@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")
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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é.

  • Like 1
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×