Paso 3: Explotación de los datos
OK, ahora lo que tenemos es una colección de archivos de datos que contienen pedacitos (en realidad caracteres que representan los dígitos binarios, que es técnicamente diferente).
El uso de un programa de comparación de archivos ayudará a identificar qué parte cambia para cada parámetro.
Lo que podemos ver no es sólo una parte cambios sino la parte final del mensaje también. Generalmente cuando está involucrada la comunicación la corrección de los datos no está garantizada nunca para que una suma de comprobación se utiliza generalmente para asegurarse de que no hay datos se ha corrompido. La suma de comprobación se estudiará más adelante.
Los comandos
ENCENDIDO/APAGADO:
Sólo un bit cambia, el primero de los 6 bytes (o 40 bits). Si 1 el comando está activado, si es 0 el comando está apagado
AUTO/CALOR/FRÍO/SECO
cambio de 3 bits: bits de 45 a 48 (ver imagen)
oscilación
bits de 64 a 67:
Velocidad del ventilador
pedacito de 68 a 72:
Opciones (Byte 13):
Temperatura:
Aquí se hace un poco más complicado porque sería bueno entender cómo está codificado el valor y no analizar todas las posibilidades.
Hemos muestreado 16° C, 30° C y 21° C. En binario:
La zona correcta para que la temperatura no se encuentra con estos valores. Pero a menudo hardware bits en orden inverso (Bit más significativo o por lo menos pedacito significativo a la izquierda del número, también conocida como Little Endian o Big Endian). Si los bits de los valores obtenidos de la inversión es:
Esto da a un partido para los 3 valores en bits 49 a 53. Esto es algo sorprendente como el valor no está alineado con un byte (más cercano sería 6 x 8 = 48 bits). Esto significa que cuando el código de construcción de un mensaje tendrá a cambio de un bit el valor de temperatura.
Que valida, en consecuencia, la primera hipótesis relativa a los valores de sincronización utilizados para 0 y 1 :)
Contador de tiempo A:
Los temporizadores se cifran en múltiples posiciones: primer valor se utiliza para indicar que el temporizador A es a, entonces otro se utiliza para indicar el valor del temporizador.
Estado activo de temporizador puede encontrarse en el mismo byte como ON_OFF (6 bytes, segundo bit, así que a partir del principio de la broca 41 carga útil).
Así que el Timer A está activo si el byte es el byte 6:
Durante todo el tiempo, utilizando la misma codificación que con temperatura y codificación minutos y no horas (como las pantallas remotas), el valor puede encontrarse en la segunda mitad de los 12 bytes.
Temporizador de B:
Temporizador de B es activa si el bit 2 del byte ON/OFF 1. Como timer A está siempre encendido cuando se usa el reloj B, el byte se parece:
OK, aquí he de reconocer que yo no se pudo encontrar la clave de este valor, tal vez sea un delta entre el temporizador A y B, tal vez otra unidad... ¿Verdad es: que se preocupa por temporizadores cuando el objetivo es controlar (automáticamente) de un ordenador? :) Contador de tiempo incluso A no se utiliza al final de mi sistema, me alegró sólo han encontrado.
Suma de comprobación:
Ah. Aquí es un valor que no puede ser ignorado. Es fundamental para entenderlo.
Después de algunas pruebas, parece que la suma de comprobación de la carga útil parte única (no incluyendo la introducción), y es el resultado de la simple suma de los bytes, manteniendo sólo un byte el resultado (haciendo caso omiso de desbordamientos). El truco es, por supuesto, que esta suma de comprobación se hace por un sistema Endian grande, por lo que cada byte debe invertirse antes de ser sumadas, entonces el resultado revirtió otra vez.