Les tutoriels sont valables pour la version myrobotlab.1.0.2693.16.zip et
Java JRE 1.8 Update 202 (64-bit) Not higher version – https://www.java.com/fr/download/manual.jsp
Nota : le tuto est fait pour les débutants.
Après avoir regardé les tutos de GAEL du finger starter
http://inmoov.fr/finger-starter/
Il va falloir donc installer :
Voici déjà le tuto de Gael très pédagogique pour débuter en programmation et installer votre environnement. https://www.youtube.com/watch?v=230FjTTJw6s
L’éditeur de texte que je vous propose Notepad++ (il est multi-langage) à télécharger ici :
https://notepad-plus-plus.org/downloads/
Gael et Anthony ont crées un environnement tout prêt pour débuter :
Télécharge le zip sur github.
www.inmoov.fr/wp-content/uploads/mrl/myrobotlab.1.0.2693.7.zip
L’avantage de cet environnement c' est qu’il n’est pas nécessaire d’avoir fini son InMoov en entier. Il est possible d’activer au choix la tête, le bras, une main, les 2 mains , le torse
en allant dans les fichiers de config .
Une fois le fichier zip téléchargé, créer un dossier sur votre ordinateur, puis dé-zipper le fichier dans ce dossier .
Exemple :D:/MRL2693
Lancer le fichier START_INMOOV.bat
A la première installation myrobtlab installera tous les services, il faut être patient.
Mettre à jour votre carte Arduino .
Voila maintenant nous somme prêt a programmer ce sera la leçon Numéro 4
FAIRE BOUGER LA MAIN ET LES DOIGTS (avec python) .
Si vous avez un accent anglais pas terrible, nous allons mettre notre InMoov en français.
Se positionner dans le répertoire :
…./InMoov/config/
Editer avec notepad++ le fichier : service_5_Mouth.config
Voici a quoi il ressemble : (Pour les débutant tout ce qui commence par un point virgule est ignoré par le système, il s’agit de commentaires)
;----------------------------- BASIC CONFIGURATION ----------------------------------------
[TTS]
Speechengine=LocalSpeech
; you can use :
;MarySpeech : open source TTS : http://myrobotlab.org/service/MarySpeech
;LocalSpeech : Local operating system TTS : http://myrobotlab.org/service/LocalSpeech
;Polly : [NEED API KEY AccessKey (apiKey1) and SecretKey (apiKey2)] http://myrobotlab.org/service/Polly
;VoiceRss : [NEED API KEY (apiKey1)] Free cloud service : http://myrobotlab.org/service/VoiceRss
;IndianTts : [NEED API KEY (apiKey1) and userid (apiKey2)] Hindi support : http://myrobotlab.org/service/IndianTts
VoiceName=3
;VoiceName=cmu-bdl-hsmm
; MarySpeech voices - take HSMM ones - http://myrobotlab.org/content/marytts-multi-langua...
; LocalSpeech : use local windows voices/macOs ( 0,1,2 etc ) print mount.getVoices()
; 0 voix hortense , 3 voix de julie , 1 paul , 2 zira anglaise
; amazon polly : http://docs.aws.amazon.com/polly/latest/dg/voiceli...
[API_KEY]
apiKey1=
apiKey2=
;----------------------------------- END --------------------------------------------------
C’est le premier fichier de config que l on va modifier, il y en aura d’autres.
Nous allons donc expliquer chaque entête
TTS c’est ici que l’on va choisir son moteur vocale, vous pouvez utiliser MarySpeech ou
LocalSpeech ,Polly,voiceRss,IndianTts etc ....
[TTS]
Speechengine=LocalSpeech
VoiceName=3
[API_KEY] (clés APi pour les voix Polly,VoiceRss, ou IndianTts)
Sauvegarder votre fichier modifié dans le même répertoire.
NOTA : Pour connaitre les voix installées , dans le répertoire MRL/TTS
(sous dos) taper la commande TTS -V
Voici le résultat : c :\mrl2693\tts>tts -V
0 Microsoft Hortense Desktop - French
1 Microsoft Zira Desktop - English (United States)
Ici nous n'avons que 2 voix installées dans WINDOWS
Il faudra modifier la base de registre pour installer 2 voix supplémentaires sous WINDOWS
Lien qui explique comment faire voix windows SAPI 5
(sauvegarder votre base de registre on sais jamais ...)
Après modification vous avez 3 voix en français :
0 Microsoft Hortense Desktop - French
1 Microsoft Paul Mobile - French (France)
2 Microsoft Zira Desktop - English (United States)
3 Microsoft Julie Mobile - French (France)
Modifier donc le fichier service_5_Mouth.config (rubrique VoiceName) selon votre choix.
le fichier _InMoov.config .
Ce fichier permet de gérer la partie électronique de vos montages.
;----------------------------- BASIC CONFIGURATION ----------------------------------------
[MAIN]
ScriptType=NoArduino
; RightSide: Also called FINGERSTARTER : connect one arduino ( called right ) to use FingerStarter + inmoov right side
; LeftSide: connect one arduino ( called left) to use head / inmoov left side
; setup your com ports inside service_6_Arduino.config
; NoArduino: vocal Only
; Full: Both side arduinos connected
; Virtual: virtual arduino and inmoov !
debug=True
Language=fr
; en,fr,es,de,nl,ru,hi
;----------------------------------- END --------------------------------------------------
Explication des Entêtes :
[MAIN]
ScriptType =
debug=True
pour voir défiler les commandes dans MRL et voir les messages d'erreur.
Language=fr
; en,fr,es,de,nl,ru,hi
Mettre fr pour la voix en français .
Maintenant nous allons commencer à programmer en python
Le but de l’exercice faire bouger la main et les doigts de notre InMoov.
Première chose avant de programmer, nous allons aller dans les fichiers de config de Anthony .
Supposons que nous avons fini la main gauche
Nous allons donc modifier le fichier skeleton_leftArm.config
Avec l’éditeur Notepad++ouvrir le fichier skeleton_leftArm.config et mettre à TRUE
[MAIN]
isLeftHandActivated=True
A quoi servent les entêtes
;----------------------------- LEFT HAND CONFIGURATION ----------------------------------------
[MAIN]
isLeftHandActivated=True Activation de la main
[SERVO_MINIMUM_MAP_OUTPUT] Valeur minimal des servos après les avoir calibrés
thumb=0
index=0
majeure=0
ringFinger=0
pinky=0
wrist=0
[SERVO_MAXIMUM_MAP_OUTPUT] Valeur maximal des servos après les avoir calibrés
thumb=180
index=180
majeure=180
ringFinger=180
pinky=170
wrist=180
[SERVO_MAP_REST] Valeur au démarrage des servomoteurs
thumb=0
index=0
majeure=0
ringFinger=0
pinky=0
wrist=90
;----------------------------------- ADVANCED CONFIGURATION -------------
[SERVO_INVERTED] Inverse le sens des moteurs
thumb=False
index=False
majeure=False
ringFinger=False
pinky=False
wrist=False
[MINIMUM_MAP_INPUT] Valeur minimal pour le mapping
thumb=0
index=0
majeure=0
ringFinger=0
pinky=0
wrist=0
[MAXIMUM_MAP_INPUT] Valeur Maxi pour le mapping
thumb=180
index=180
majeure=180
ringFinger=180
pinky=180
wrist=180
[VELOCITY] Valeur pour la rapidité
thumb=10
index=40
majeure=40
ringFinger=40
pinky=40
wrist=40
[MAX_VELOCITY]
thumb=-1
index=-1
majeure=-1
ringFinger=-1
pinky=-1
wrist=-1
[SERVO_PIN] Ce sont les pins ou sont branchées les servomoteurs . Si vous avez suivi la documentation de Gael il y a rien a modifier.
thumb=2
index=3
majeure=4
ringFinger=5
pinky=6
wrist=7
thumb = c’est le pouce
index = c’est l index
majeure = le majeur
ringFinger = l’annulaire
pinky = le petit doigt
wrist = le poignet
Au fur et à mesure de votre construction il faudra configurer vos fichiers
Dans la prochaine leçon on commence à programmer promis ………..
Maintenant nous allons commencer à programmer en python
Nous allons partir du fichier exemple de Gaël, et essayer de comprendre le premier programme python lancé au démarrage. (le fichier InMoov.py)
Se positionner dans le répertoire :
…./InMoov/
Editer avec Nodepad++ le fichier Inmoov.py
Tout ce qui commence par # ne sont pas interprété par python, il s’agit de commentaires
En programmation on prendra l’habitude de mettre des commentaires, très pratique lorsque l’on modifie sont programme plus tard.
Exemple :
# this will run with versions of MRL above :
# cela fonctionnera avec les versions de MRL ci-dessus:
mrlCompatible='2685'
mrlCompatible est la déclaration du variable dans la valeur est 2685
Dans le langage Python il faudra faire attention à l’indentation
C'est-à-dire la tabulation entre chaque ligne
# Déclaration de la class objet i01 = lance le service inmoov
i01 = Runtime.createAndStart("i01", "InMoov")
# Initialisation du robot avec le script InitCheckup.py , je passe toutes les phases de l’initialisation (déclaration des variable , des bibliothèques etc….) et déclaration du répertoire de travail.
RuningFolder="InMoov
execfile(RuningFolder+'/system/InitCheckup.py')
Il y a deux façons de parler au robot avec la classe ear ou avec le chatbot
Nous commencerons par le plus simple, utiliser la classe ear .
Le chatbot est plus puissant mai il faut maîtriser le langage AIML. Je ferai des tutos après.
;-------------- CHATBOT CONFIG -------------------------------
[MAIN]
isChatbotActivated=True
;----------------------------------- END ---------------------
###############################################################
# Aller plus loin, vous pouvez trouver plus de commandes vocales dans inmoov/ minimal/earCommands_french.py
# Aller plus loin, vous pouvez trouver plus de fonctions associées dans inmoovGestures
###############################################################
# Exemple de commandes
ear.addCommand = addCommand est une méthode qui fais parti de la classe ear
Ce qui est en parenthèses se sont les arguments passés
Si vous avez compris
En ligne 2 detact tous les servomoteurs de la main gauche avec le mot detache
En ligne 3 exécute la procédure python fingeropen avec le mot ouvre
C’est un petit morceau de programme dans lequel on peut passer des paramètres.
En langage python une procédure commence par :
def "le nom de la proc()" suivi de :
Exemple :
def fingeropen() :
j aurai pu mettre def ouvreledoigt() :
je peut créer des variables locales dans les parenthèses.
Exemple :
def ouvreledoigt(« un »,2,3, « quatre ») :
Je reviendrai plus tard sur cet aspect de paramètres.
Pour le moment mon sous programme ne fais rien, donc il faut mettre des instructions dedans.
ATTENTION il faut commencer a indenter c'est-à-dire ne pas partir de la colonne 0
Dans python l’indentation est rigoureuse si vous voulez ne pas avoir des messages à la compilation.
Utiliser soit la barre espace, soit la tabulation, mais soyez rigoureux.
Exemple :
def fingerclose():
leftHand.attach()
sleep(5)
#speed = vitesse main gauche pouce index majeux ring poignet
i01.setHandSpeed("left",0.9,1,1,1,1,0.7)
i01.moveHand("left",0,0,0,0,0,20)
sleep(5)
talkBlocking("ma main est fermer")
sleep(10)
leftHand.detach()
Dire à votre robot le mot compte
Et le faire compter sur ses doigts jusqu'à trois en disant 1 , 2 et 3
Correction à la prochaine leçon, enfin si seulement cela vous intéresse, j’attends vos retours
La seule limite de votre robot est votre imagination……..
Nota : (livre pour débuter : Apprendre à programmer avec PYTHON 3 chez EYROLLES)
Correction de l’exercice de la leçon numéro 4
Dans le programme principal il fallait ajouter (dans InMoov.py)
ear.addCommand("compte", "python", "compte123")
Et voici le sous programme à créer un peu plus pas (dans../InMoov/ custom/InMoov_custom.py)

Je suis sur que tout le monde à bon.
i01.head.attach()à pour attacher les servos de la tête
i01.head.detach() à pour les détacher
i01.head.eyeX.moveTo(90) à déplace les yeux sens horizontale de 90 degrés
i01.head.eyeY.moveTo(20) à déplace les yeux sens verticale de 20 degrés
i01.setHeadSpeed(0.6, 0.6)à règle la vitesse des servos a 0.6 ( valeur max 1)
i01.moveHead(120,50)à déplace la tête à droite jusqu’a 120 degrés, coup à 50.
i01.moveHead(90,120)à déplace la tête à gauche jusqu'à 120 degrés, coup à 90.
i01.head.neck.moveTo(90) à déplace que le coup à 90 degrés
i01.head.rothead.moveTo(80) à déplace que la tête a 80 degrés
[MAIN]
isHeadActivated=True
i01.leftArm.attach() attache les servomoteurs du bras gauche
i01.leftArm.detach( ) détache les servomoteurs du bras gauche
i01.rightArm.attach() attache les servomoteurs du bras droit
i01.rightArm.detach() détache les servomoteurs du bras droit
i01.setArmSpeed("left", 0.80, 0.80, 0.80, 0.85) règle la vitesses des servomoteurs du bras gauche
Les arguments :
Exemple de mouvement du bras gauche:
Ici bras gauche biceps a 30 degrés, rotate à 100 degrés, bras à 120 degrés et omoplate a 0
[MAIN]
isLeftArmActivated=True
i01.setTorsoSpeed(1.0, 1.0, 1.0)à vitesse de stomacktop et mids
i01.moveTorso(60,90,90)à déplacement de stomack top et mids
Autres commandes :
i01.mouth.speak("Merci") à dit le mot merci
ear.pauseListening()à arrêt d’écouter les mots
Bien vous avez déjà de quoi faire bouger votre InMoov dans tous les sens
Écrire à scenario que l on appellera par le mot « action » et votre robot devra exécuter une suite d’ordre que vous aurez programmé (je vous laisse choisir les mouvements)
conseil :
En programmation plus on écrit de petites procédure mieux cela vaux.
Correction de l’exercice de la leçon numéro 5
Dans le programme principal (inmoov.py) , il fallait ajouter :
ear.addCommand("action ", "python", "action")
Et voici un exemple de sous programme à créer un peu plus pas

Effectivement une procédure peut appeler d’autres procédures, ici tetedroite , tetegauche, etc……
Évidement le nom des procédures dépends de se que vous avez crée.
MAINTENANT On se dit si je continue comme cela mon programme va faire 50000 lignes et il va devenir une usine à gaz.
On va donc simplifier tout cela.
Notre ami Anthony a prévu un répertoire de travail.
……/InMoov/gestures/
Créer un fichier geste.py et un autre ordre.py
Vous avez compris que dans le premier nous aurons les scénarios des gestes et dans l’autre les ordres vocales
Exemple du contenu du fichier ordre.py
# commande vocales
ear.addCommand("ouvre", "python", "fingeropen")
ear.addCommand("ferme", "python", "fingerclose")
ear.addCommand("milieu", "python", "fingermiddle")
ear.addCommand("compte", "python", "compte123")
ear.addCommand("droite", "python", "tetedroite")
ear.addCommand("gauche", "python", "tetegauche")
ear.addCommand("regarde", "python", "yeux")
ear.addCommand("bras", "python", "bras")
ear.addCommand("biceps", "python", "biceps")
ear.addCommand("action", "python", "action")
ear.addCommand("regarde le ciel", "python", "ciel")
ear.addCommand("bonjour", "python", "bonjour")
Exemple du contenu du fichier ordre.py
def ciel():
i01.head.attach()
i01.setHeadSpeed(0.6, 0.6)
i01.head.neck.moveTo(180)
sleep(3)
talkBlocking("whaaaaaaa.. toutes ses aitoiles")
i01.head.detach()
def bras():
i01.leftArm.attach()
i01.setArmSpeed("left", 0.80, 0.80, 0.80, 0.85)
# parametres biceps , rotate, bras ,omoplate
talkBlocking("je tourne mon bras")
sleep(5)
i01.moveArm("left",30,100,180,0)
sleep(5)
talkBlocking("je leve mon bras")
sleep(5)
i01.moveArm("left",60,90,160,0)
sleep(5)
# position initiale
talkBlocking("je decend mon bras et le tourne")
sleep(3)
i01.moveArm("left",0,75,180,0)
sleep(2)
i01.leftArm.detach()
def biceps():
i01.leftArm.attach()
talkBlocking("je leve mon biceps")
sleep(5)
i01.moveArm("left",85,75,180,0)
sleep(2)
i01.leftArm.detach()
ETC………………je liste pas tous les sous programmes
Bien dans le fichier inmoov.py nous aurons seulement les commandes principales de lancement plus l'exécution de nos programmes grâce à la commande execfile
Exemple :
# Main inmoov service
i01 = Runtime.createAndStart("i01", "InMoov")
# robot checkup and initialisation ( skeleton & services )
RuningFolder="InMoov"
execfile(RuningFolder+'/system/InitCheckup.py')
#Go further !!!! and write some code lines inside custom/InMoov_custom.py
execfile(RuningFolder+'custom/InMoov_custom.py')
#Allez plus loin! Et coder votre propre script dans un fichier séparé
execfile(RuningFolder+'InMoov/Custom/ordre.py')
execfile(RuningFolder+'InMoov/Custom/gestes.py')
Relancer votre Inmoov normalement tout doit marcher comme avant.
NOTA :
Il est possible de mettre directement vos fichiers python directement dans
…/InMoov/gestures
Sans exécuter la commande execfile au démarrage.
Les fondamentaux de la programmation : L’instruction conditionnelle IF
Nous allons partir d’une idée simple, d’ailleurs en programmation on commence par écrire un programme en langage de tous les jours.
On voudrait que lorsque dit bonjour à notre robot, selon l’heure qu’il est, il nous donne des réponses différentes.
En français ça donne cela :
Quelle heure est-il
Mettre l’heure dans une variable
S’il est 12 heures alors dit bla bla bla
S’il est 16 heures alors dit ……..
S’il est 20 heures alors dit ……..
Sinon donne simplement l’heure
MAINTENANT ON VA TRADUIRE EN PYTHON
def bonjour():
# affecte l'heure système a la variable local de type entier nommer heure
heure = int(time.strftime('%H'))
# affiche le résultat dans debug python optionnel pour tester votre prog
print heure
# conditions si
if heure == 12 :
talkBlocking("bonjour jean pierre ,il est plus de " + str(heure) +" heure . il est temps de sortir les fourchettes")
if heure == 16 :
talkBlocking("bonjour jean pierre ,il est plus de " + str(heure) +" heure . c est l heure de gouter")
if heure == 20 :
talkBlocking("bonjour jean pierre ,il est plus de " + str(heure) +" heure . je vais faire la soupe")
else :
talkBlocking("bonjour jean pierre ,il est plus de " + str(heure) +"heure .")
Voici un lien pour débutant avec des exemples simple.
http://apprendre-python.com/page-apprendre-conditions-structures-conditionnelles-if-else-python-cours-debutant
==égal à
!=différent de (fonctionne aussi avec )
>strictement supérieur à
>=supérieur ou égal à
<strictement inférieur à
<=inférieur ou égal à
si vous ne comprenez pas tout laissez des posts
NOTA : pour la fonction time.strftime('%H') il faut que la bibliothèque soit dans le fichier
…./InMoov/system/Import_Librairies.py , je vous rassure il y est déjà.
Mais si vous utilisez d autres fonctions il faudra parfois ajouter des bibliothèques.
(comme en langage C++ ,et autres….)
Les fondamentaux de la programmation : Les boucles avec instruction while
(En française tant que..)
Tant que cette valeur n’est pas atteinte tu fait tels actions.
Par exemple :
On voudrait que notre robot se muscle et lève son biceps 10 fois de suite avec le mot exercices.
On pourrait répéter la commande 10 fois, mais c pas très élégant et cela alourdi le programme.
En français cela donne cela :
Déclare une variable locale a zéro
Attache les servomoteurs du bras
TANT QUE cette variable n’est pas égale à 10
Lève ton biceps
Fais une pose
Décents ton biceps
Fais une pause
Ajoute 1 a la variable
Fin TANT QUE
Dit je suis fatigué
Détache les servomoteurs du bras
MAINTENANT ON VA TRADUIRE EN PYTHON
def gym():
x = 0
i01.leftArm.attach()
while x < 10:
i01.moveArm("left",90,75,180,0)
sleep(5)
i01.moveArm("left",0,75,180,0)
sleep(5)
x=x+1
talkBlocking("je suis fatiguer")
i01.leftArm.detach()
Créer un programme python nommé exercices.py et copier le dans
…/InMoov/gestures
Et rajouter et la commande vocale ear.addCommand("exercices", "python", "gym") dans
…/InMoovt/minimal/earCommands_french.py
Voici un lien pour débutant avec des exemples simple et les différentes boucles en python.
http://apprendre-python.com/page-apprendre-boucles-python-loop
Nous allons maintenant utiliser le CHATBOT bien plus puissant avec le langage AIML
Notre ami Anthony à commencer un immense travail sur l’ AI en française pour notre INMOOV.
(AI , intelligence artificielle).
La première chose à faire est de dire à notre robot de changer de moteur pour la voix
Nous allons donc modifier le fichier de config service_A_Chatbot.config
Qui se trouve …/InMoov/config/
Nous allons mettre à TRUE la variable isChatbotActivated.
;-------------- CHATBOT CONFIG -------------------------------
[MAIN]
isChatbotActivated=True
;----------------------------------- END ---------------------
Relancer le tout vous êtes maintenant avec le Chatbot
Les fichiers de travail se trouvent dans :
…/InMoov/chatbot/bots/fr/aiml
Aiml
Aimlif
Config
Maps
sets
Nous travaillerons surtout dans aiml pour comprendre, mais Anthony a déjà beaucoup codé de fichier AIML prêt à l’emploi
Nous allons partir d’un exemple pour expliquer les balises vous aller vite comprendre.
Il s’agit d un langage de balise basé sur XML (comme pour développé sous android)
Lien en anglais pour un tuto aiml
http://www.tutorialspoint.com/aiml/
Comme je suis nul en anglais je vais essayer de vous traduire ce que j’ai compris.
Exemple :

<aiml> Entête principale d ‘un document on fermera la balise par </aiml>
<category> Définit l’unité de connaissance on fermera la balise par </category>
<pattern> Les mots que va comprendre le bot on fermera la balise par </pattern>
<template> Défini la réponse du robot on fermera la balise par </template>
Maintenant nous allons essayer de faire un exemple avec le petit programme que nous avons créé avec les tutos précédent.
Nous voulons que notre InMoov compte jusqu’à trois.
Nous avons déjà écris le script python pour cela, on va donc simplement demande au chatbot de le lancer.
Nous allons créer un fichier nommé test.aiml dans le répertoire :
…/InMoov/chatbot/bots/fr/aiml
Voici le contenu du fichier :

Lorsque que l on dira le mot compte la réponse du bot sera d’exécuter le script python .
Que ce passe t-il entre la balise <oob> </oob> ,
En français , Exécute ma méthode (exec) du service python en passant en paramètre le script « compte123() »
Relancer le tout et maintenant votre inMoov fonction avec son Intelligence Artificielle ,vous pouvez commencer à papoter avec lui .
Dite le mot compte, normalement il devrait compter sur ses doigts.
Je vous parlerai des autres Balises si cela vous intéresse bien sur.

Cette fois-ci l’idée est de commander votre télévision avec votre robot InMoov.
Une box et un décodeur ORANGE .(car nous allons utiliser API de Orange)
Pour les autres fournisseurs d’accès en fouillant sur internet vous trouverez surement.
C’est quoi une API (Application Programming Interface) . En clair, L'API peut être résumée à une solution informatique qui permet à 2 applications de communiquer entre elles et de s'échanger mutuellement des services ou des données.
Comme à chaque fois nous devrons créer un programme python et un programme AIML pour donner les ordres vocales .
Voici le programme python qui consiste juste à envoyer une commande http.

Explication :
Procédure décodeur en paramètre (commande) , la commande envoyer par le fichier AIML
Ligne 3 si commande est égale à 10
Ligne 4 envoie le chiffre 1 via la commande http url
Ligne 6 envoi le chiffre 0 via la commande http url
Ligne 16 sinon envoie une autre commande
Ligne 20 à 28 gestion des erreurs

Ligne 282 balise pattern (écoute le mot programme suivi de n importe quoi)
Ligne 284 variable chaine initialisée
286 à 318 balise condition de la variable chaine (le numéro de la chaine) Thin réponds si compris.
319 à325 exécute la procédure décodeur en paramètre la variable chaine
Pour changer de chaine dire “PROGRAMME X”
ou dire “PROGRAMME SUIVANT” “PROGRAMME PRÉCÉDENT”
Pour lancer la Vidéo à la demande dire “PROGRAMME VIDÉO”
AUTRE COMMANDE
– ARRÊTE LE DÉCODEUR
– DÉMARRE LE DÉCODEUR
– AUGMENTE LE SON
– DIMINUE LE SON
– COUPE LE SON
POUR NAVIGUER DANS LES MENUS
– SOURIS EN HAUT
– SOURIS EN BAS
– SOURIS A GAUCHE
– SOURIS A DROITE
– SOURIS VALIDE (ok)
– SOURIS RETOUR
– SOURIS MENU
Bien sur vous pouvez modifier le nom des commandes en modifiant le fichier AIML
L’idée notre robot nous annonce notre planning du jour J et J + 1.
Pour cela nous allons lire un fichier EXCEL .
Nous aurions pu utiliser la bibliothèque xrld (spécial excel pour python) mais malheureusement elle n’est pas implémenté dans MRL .
Nous allons donc utiliser les bibliothèques time et csv qui sont déjà implémenté .
Nous devrons donc sauvegarder notre planning EXCEL au format csv .
CI joint photo à quoi ressemble le fichier EXCEL

Un fois créer copier le fichier à la racine de votre disque (exemple d:)
Voici le script python
dans la variable fname mettre le chemin d’accès de votre fichier planning.csv
le reste du code est commenté , cela reste un petit script
on pourrait utiliser des taches de google mais c est un peu plus compliqué …..

Maintenant le fichier AIML
Donc vous dite le mot PLANNING ou DONNE MOI MON PLANNING et InMOOV vous lira votre planning EXCEL. Les fichiers python et aim sont à mettre aux mêmes endroit .
Bonne programmation

Le but du programme est de tirer au hasard 5 numéros et un numéro complémentaire avec la fonction random de python.

Maintenant le fichier AIML
Donc vous dite la phrase numéro du loto ou donne moi les numéros du loto et InMOOV vous lira une grille de loto à jouer . Les fichiers python et aim sont à mettre aux mêmes endroit .

C'est quoi une base de données
Une base de données est une collection d’informations organisées afin d’être facilement consultables . Les données sont organisées en lignes, colonnes et tableaux. Elles sont indexées afin de pouvoir facilement trouver les informations .
Les plus connues sont (MySQL , DBASE, OPEN office, Oracle etc .....)
Dans notre tutoriel nous allons donc créer deux dictionnaire, un pour les anniversaires l'autre pour les saints .
lien python sur les dictionnaires : http://apprendre-python.com/page-apprendre-dictionnaire-python
exemple :
data = {"name": "Olivier", "age": 30}
Voici le code du programme Python :

Pour le fichier AIML je laisse à votre imagination créer la phrase qui lancera le fichier Python.
Pour commencer nous allons ajouter les bibliothèques pour l’envoi de mail . Le Python comme beaucoup de langages utilise des bibliothèques (modules écrit en C) . Elles permettent d'avoir des fonctions toutes faites.
Donc nous allons ajouter des bibliothèques pour envoyer des mails .
il faudra modifier le fichier :
…/InMoov/system/Import_Librairies.py (Ce fichier est lancé au démarrage de InMoov)
Editer le fichier avec NotePAD++ et
ajouter cela en fin du fichier :

Première procédure (ligne 500)mailsend en paramètre amis (le nom fourni pour le fichier AIML)

Ligne 504 création d'un dictionnaire des amis (vous savez déjà faire)
Ligne 506 à 517 test si mon ami existe dans le dictionnaire .
Si ami inconnu dans le dico ==> message inconnu sinon exécute le fichier AIML SYSMAIL
Ligne 519 à 526 gestion des erreurs .
Maintenant voici la deuxième procédure qui traite l'envoi du mail .
J'utilise le serveur SMTP de ORANGE , il vous faudra regarder sur internet le nom du serveur SMTP de votre fournisseur internet.
Lignes 531 à 545 variables des entêtes du message
Ligne 532 votre adresse de messagerie (toto@wanadoo.fr par exemple)
Ligne 550 adresse de votre serveur SMTP avec le port utilisé.
Ligne 552 le mot de passe de votre compte de messagerie
Ligne 554 envoi du mail
Ligne 557 à 558 fermeture des fichiers
Lignes 560 à 568 gestion des erreurs

Pour envoyer un mail dire ENVOYER UN MAIL A JEAN PIERRE par exemple
Le fichier AIML exécute la procédure "maisend" avec le nom du destinataire en paramètre .
Si le destinataire existe SYSMAIL exécute la procédure envoi en paramètre le texte dicté.

Pour utiliser le protocole IMAP il faut ajouter la bibliothèque imaplib ( nous l'avons fait au tutoriel précédent) .
Je passe le tuto ou placé le programme et le fichier AIML (voir les TUTO précédents)
Pour lire les mails , il faudra dire : (lire les messages de ……)
les messages au format texte sont seulement lus , les autres sont ignorés
la fonction vous donne le nombres de messages en attente et vous lira tous les mails de votre ami (uniquement au format texte)
Pour les photos envoyées depuis INMOOV la fonction vous averti qu une photo est en attente.
Voici le fichier PYTHON :


Ligne 4 définition du dictionnaire la clés c'est le prénom les données From suivi du nom de la bal
Lignes 6 et 7 si pas trouvé le prénom message "personne inconnu au bataillon"
Lignes 9 à 16 SINON déclaration des variables pour le protocole IMAP (ici celui ORANGE)
Lignes 17 à 25 recherche message de expéditeur , supprime les espace ,calcule le nombre de messages.
Lignes 26 à 35 première boucle pour lire le contenu et le convertir en texte
Lignes 36 à 44 deuxième boucle pour les pièces jointes
Ligne 41 dicte le message
Lignes 46 à la fin fermeture du protocole IMAP gestion des erreurs
Ci dessous le fichier AIML :

En construction ..............