Étape 8: Advanced : ajout du support pour vos propres appareils
Si vous avez des nouveaux dispositifs de soutien (autres robots, téléviseurs, etc.), vous aurez besoin de connaître les codes IR de votre appareil. IR Server prend en charge les codes de format Pronto donc si vous avez Pronto compatible matériel de capture, vous pouvez l’utiliser juste. J’ai décodé les codes Thames et Kosmos en utilisant un dispositif de Brainlink (SurplusShed possédait le vendre).
Ce que vous devez avoir en main, c’est soit une séquence hexadécimale Pronto-compatible, ou bien les informations suivantes :
- fréquence porteuse (habituellement environ 38KHz)
- éclatement de séquence pour chaque fonction : il s’agit d’une séquence de sur et hors temps en microsecondes
- durée (en microsecondes) pour faire une pause entre ré-envoi d’une séquence de rafale en émulant un bouton étant maintenue enfoncée (habituellement 20000-100000 microsecondes)
En utilisant les informations ci-dessus, vous pouvez générer des requêtes de contrôle compatible serveur IR. Pour les codes de Pronto, le format est :
? ir = repeatmode : pronto : xxxx xxxx xxxx + + xxxx +...
où repeatmode est l’un des :
- infini : répéter jusqu'à ce qu’un code d’arrêt est envoyé
- comte = x : répéter x fois (x étant un nombre entier positif)
- temps = x : microsecondes répéter x (x étant un nombre entier positif)
- une fois que : jouer une fois
et xxxx xxxx xxxx + + xxxx +... est le Pronto code hexadécimal avec espaces remplacé par des signes plus pour une utilisation web. Par exemple, le web spécifie le code de Pronto de fonction propre de Roomba
0000 0069 0000 0008 0071 0027 0023 0071 0023 0071 0023 0071 0071 0027 0023 0071 0023 0071 0023 030 B
Vous pouvez ensuite générer la requête serveur IR :
? ir = temps = 500000 : pronto : 0000 + 0069 + 0000 + 0008 + 0071 + 0027 + 0023 + 0071 + 0023 + 0071 + 0023 + 0071 + 0071 + 0027 + 0023 + 0071 + 0023 + 0071 + 030 b 0023 +
Cela joue le code propre d’une demi-seconde (500000 microsecondes).
Si vous avez les données brutes, le format est plutôt :
? ir = repeatmode : raw : repeatpause:carrier:xxx:xxx:xxx:...
Ici, repeatmode est le même que pour les codes de Pronto, repeatpause est un entier non négatif indiquant le nombre de microsecondes pour faire une pause entre les répétitions (ignorées si repeatmode a une fois)--je vous recommandons d’essayer les 20000 dans un premier temps, et transporteur est la fréquence en Hz. Enfin, la séquence de rafale xxx:xxx:xxx:... est une séquence de nombres spécifiant alternant sur et hors temps en microsecondes. Donc :
? ir = count = 12 : raw : 20000:38000:400:200:400:200:300:150:100
demande que la salve suite émis douze fois avec un transporteur de 38000 Hz, avec une microseconde 20000 une pause entre les deux. La séquence est alors 400 microsecondes, 200 hors, 400 sur, 200 hors, 300, 150 rabais, 100 sur.
Il y a également une requête spéciale :
? ir = stop
qui s’arrête à un ordre de lecture précédente avec repeatmode infinie, de comte ou de temps .
Avant de procéder à toute modification du html, je vous recommandons de tester les codes de configurer un serveur relié à un émetteur IR et émettant manuellement les codes via un navigateur web. Par exemple, si IR Server se trouve dans 168.1.1.49:7080, vous pouvez émettre mon exemple de code brut en allant sur :
http://168.1.1.49:7080/ir.html? IR = count = 12 : raw : 20000:38000:400:200:400:200:300:150:100
Remarque qu’il n’importe quelle page web, mettez « ir.html »--le code sera toujours être émis. Pour plus d’efficacité, vous pouvez faire « empty.html ».
Une fois que vous avez travaillé sur les codes de requête pour les fonctions de votre appareil, vous devez créer un fichier html la contrôler. Une fois que vous avez installé le serveur de l’IR, les fichiers html sont dans le répertoire mobi.omegacentauri.irserver de stockage interne de votre téléphone. Vous y trouverez un tas de fichiers que vous pouvez librement modifier là (si vous souhaitez actualiser avec les versions officielles, appuyez sur Menu et écraser dans IR Server). Le fichier roomba.html est un bon début. Copie dans un nouveau fichier (par exemple, xyzzy.html) et le modifier pour avoir le genre de présentation vous voulez votre dispositif d’avoir et de modifier les codes.
L’idée de base est que lorsque IR serveur reçoit une demande avec l’un de le ? ir = interroger les codes, elle décode le code et la joue. La demande peut être ajoutée à n’importe quel fichier html, mais le fichier empty.html est plus efficace. Aussi, pour l’efficacité, au lieu d’émettre une demande GET , vous pouvez juste émettre une requête HEAD .
Le fichier roomba.html contient un peu de javascript conçu pour émettre des requêtes sur les touches appropriées. Il y a deux sortes de boutons. Boutons de répétition jouent un code à plusieurs reprises jusqu'à ce qu’on lâche le bouton. Ceux-ci utilisent un mode infini et ont tant ontouchstart et onmousedown code pour travailler sur les deux touch et souris selon les navigateurs. (Alors que je suis un programmeur expérimenté de C et un programmeur java expérience un peu, je suis complètement nouveau à javascript, donc je ne peux pas faire des choses mieux.) Boutons de répétition non jouent un code pendant un certain temps donc il n’est pas se raté et le faire via onclick. Il y a des fonctions différentes javascript à appeler pour ces derniers.
Vous remarquerez qu’il y a de spécial simplifiée ? ir demandes de codes de Roomba et Thames et Kosmos. Pour ces derniers, seulement un seul nombre décimal doit être spécifié au lieu d’une salve de suite, et il obtient codé selon les protocoles de Roomba et Thames et Kosmos (consultez la classe IRCommand dans la source de l’IR serveur pour comment cela fonctionne).
Mettre votre nouveau fichier html dans le répertoire mobi.omegacentauri.irserver de stockage interne de votre téléphone. Vous pouvez y accéder directement par nom, ou vous pouvez ajouter un lien vers elle dans le fichier controllers.html .