Étape 3: Code client
Le client est codé dans NodeJS. Si vous voulez sauter cette partie et simplement créer la même routine de démonstration exacte comme nous l’avons fait, vous pouvez télécharger le code sur le dépôt GitHub : https://github.com/hermanbanken/thomas-bot. Lorsque vous générez votre propre logique de ce référentiel peut également contenir des exemples pratiques.
Architecture
Étant donné que le serveur sera écrit dans Meteor, afin d’accélérer la mise au point, l’Edison doit se connecter à l’api DDP du serveur. DDP est comme une api REST, mais n’a de JSON et met à jour réactive sur le client lorsque les données sur le serveur changent.
Le point d’entrée du client est main.js. Il nous sera tout d’abord s’authentifier sur le serveur, puis exécuter une routine ou attendre pour obtenir des instructions. Si vous avez copié le code, vous devrez ajuster le nom d’hôte ou adresse IP du serveur.
Plusieurs fonctions distinctes sont référencées dans main.js : la logique de l’accéléromètre (accel.js), le capteur tactile (touch.js), un écran lcd en option (lcd.js) et le capteur flex (flex.js) sont tous séparés dans des fichiers différents.
Installation
Installer ces scripts et paquets sur les deux cartes Edison en déplaçant le code là-bas en utilisant le XDK ou scp. Nous avons constaté que parfois le XDK ne compile pas les dépendances correctement sur votre ordinateur de développement, donc vous pourriez besoin de copier les sources et d’exécuter "NGP installer' sur l’Edison lui-même. C’était précisément le cas pour les bibliothèques bluetooth différents, que nous avons essayé.
Manipulation des DDP
Une partie importante de la buddy, c’est qu’il puisse recevoir l’enfant a besoin pour effectuer des exercices. Pour cela, nous avons défini une « collection », un endroit pour les documents à publier. À l’aide de la DDP, nous nous abonnons sur nouveau message dans cette collection de boîte de réception :
Au niveau du serveur : Meteor.publish (« userInbox », function() {return Inbox.find ({nom d’utilisateur : this.userId});})
Si la boîte de réception ci-dessous contient uniquement les messages de l’utilisateur connecté.
DDP.Subscribe ('userInbox', []) ;
var taskObserver = ddp.observe("inbox") ;
taskObserver.added = {function(id)}
var message = ddp.collections.inbox[id] ;
Console.log (« Faire quelque chose avec », message) ;
}