Paso 8: Avanzado: Añadir soporte para sus propios dispositivos
Si usted tiene nuevos dispositivos para apoyar (otros robots, televisores, etc.), usted necesitará conocer los códigos IR para su dispositivo. IR servidor soporta códigos Pronto así que si tienes Pronto compatible con hardware de captura, se puede usar eso. Yo descifrar los códigos de Thames y Kosmos usando un dispositivo de Brainlink (SurplusShed tenia a la venta).
Lo que necesitas tener en mano es o bien una secuencia hexadecimal de Pronto-compatible, o bien la siguiente información:
- frecuencia de portadora (generalmente alrededor de 38 khz)
- explosión de secuencia para cada función: se trata de una secuencia de encendido y apagado veces en microsegundos
- cantidad de tiempo en microsegundos para hacer una pausa entre volver a enviar una secuencia de explosión cuando emulando a un ser de botón pulsado (generalmente microsegundos de 20000-100000)
Con la información anterior, puede generar consultas de control compatibles de servidor de IR. Códigos de Pronto, el formato es:
? ir = repeatmode: pronto: xxxx xxxx xxxx + xxxx +...
donde repeatmode es una de:
- infinito : repetir hasta que se envía un código de parada
- count = x : tiempos de repetición x (x es un número entero positivo)
- tiempo = x : microsegundos de repetición x (x es un número entero positivo)
- una vez : juega una vez
y xxxx xxxx xxxx + xxxx +... Pronto código hexagonal con espacios reemplazado por signos más para el uso de la web. Por ejemplo, la web especifica el código Pronto para la función de limpieza de Roomba como
0000 0069 0000 0008 0071 0027 0023 0071 0023 0071 0023 0071 0071 0027 0023 0071 0023 0071 0023 030B
Usted puede generar la consulta de servidor de IR:
? ir = tiempo = 500000: pronto: 0000 + 0069 + 0000 + 0008 + 0071 + 0027 + 0023 + 0071 + 0023 + 0071 + 0023 + 0071 + 0071 + 0027 + 0023 + 0071 + 0023 + 0071 + 0023 + 030B
Esto juega el código limpio para medio segundo (500000 microsegundos).
Si tienes los datos en bruto, en cambio su formato es:
? ir = repeatmode: raw: repeatpause:carrier:xxx:xxx:xxx:...
Aquí repeatmode es la misma que para los códigos de Pronto, repeatpause es un entero no negativo especificando el número de microsegundos para hacer una pausa entre repeticiones (se omite si repeatmode es una vez), te recomiendo tratar de 20000 como un comienzo, y el portador es la frecuencia en Hz. Finalmente, la secuencia de explosión xxx:xxx:xxx:... es una secuencia de números especificando alternando encendido y apagado veces en microsegundos. Por lo tanto:
? ir = Conde = 12: raw: 20000:38000:400:200:400:200:300:150:100
las solicitudes que la secuencia de explosión emitido doce veces con un portador de 38000 Hz, con un microsegundo 20000 pausa en el medio. La secuencia es luego 400 microsegundos en, 200 de 400 en, 200 apagado, 300 en, 150 apagado, 100 en.
También es una consulta especial:
? ir = parada
que detiene un comando de juego anterior con repeatmode infinito, conteo o el tiempo .
Antes de hacer cualquier edición html, te recomiendo probar los códigos de configuración de servidor de IR conectado a un emisor y emitir manualmente los códigos mediante un navegador web. Por ejemplo, si el servidor de IR es en 168.1.1.49:7080, puede emitir mi código crudo yendo a:
http://168.1.1.49:7080/ir.html? ir = Conde = 12: raw: 20000:38000:400:200:400:200:300:150:100
Nota que no importa qué página web pones para "ir.html"--el código todavía se emiten. Para mayor eficiencia, puede hacer "empty.html".
Una vez que has trabajado hacia fuera de los códigos de consulta para las funciones de su dispositivo, necesita crear un archivo html control. Una vez que has instalado a servidor de IR, son sus archivos html en el directorio de mobi.omegacentauri.irserver de almacenamiento interno del teléfono. Encontrarás un montón de archivos que eres libre de editar allí (si se desea actualizar con las versiones oficiales, pulse Menú y sobreescribir en el servidor de IR). El archivo roomba.html es un buen comienzo. Que copie en un nuevo archivo (por ejemplo, xyzzy.html) y editarlo para que el tipo de diseño desea que el dispositivo tiene y para editar los códigos.
La idea básica es que cuando IR servidor recibe una solicitud con uno de los ? ir = consulta de códigos, se descodifica el código y lo juega. La solicitud puede ser añadida a cualquier archivo html, pero el archivo empty.html es más eficiente. También, para la eficiencia, en lugar de emitir una solicitud GET , solo puede emitir una petición principal .
El archivo roomba.html contiene un poco de javascript diseñada para emitir las solicitudes al pulsar un botón apropiado. Hay dos tipos de botones. Botones repetición reproduce un código repetidamente hasta que uno deja ir el botón. Uso de un modo infinito y código ontouchstart y onmousedown para trabajar en ambos táctil y ratón basado en navegadores. (Aunque soy un experimentado programador de C y un programador java experiencia algo, soy completamente nuevo en javascript, por lo que puedo no estar haciendo las cosas la mejor manera.) No-repeat botones juegan un código una cantidad determinada de tiempo por lo que no Haz perdido y hacerlo a través de onclick. Hay funciones javascript diferentes a estos.
Te darás cuenta que hay especial simplificado ? ir las solicitudes de códigos de Roomba y Thames y Kosmos. Para estos, sólo un único número decimal debe especificar en lugar de una secuencia de la explosión, y obtiene codificada según los protocolos de Roomba y Thames y Kosmos (véase la clase IRCommand en la fuente IR servidor de como funciona esto).
Ponga el nuevo archivo html en el directorio de mobi.omegacentauri.irserver de almacenamiento interno del teléfono. Se puede acceder directamente por su nombre, o usted puede Agregar un enlace a él en el archivo controllers.html .