Dudas sobre sensor inalámbrico puerta 433 Mhz: posiciones y que trama devuelve

Buenas noches desde Málaga. Mi nombre es Luis y hace tiempo que venía pensando en hacer un mini-proyecto con Arduino relacionado con las puertas y ventanas de mi casa: la idea es a través de un sistema de LEDs, ver de un vistazo rápido si las puertas y ventanas de casa están cerradas antes de ir a dormir. De forma resumido y muy "beta" es usar una placa Arduino UNO, que alimente un rack de LEDs (rojo y verde por cada puerta o ventana):

Es Decir

Sensor Puerta/Ventana <---> Arduino ---> LED verde = cerrada / LED rojo = abierta

Entiendo que se puede comprender el pseudodiagrama que he puesto. El tema es que ya he adquirido un conjunto de transmisores/receptores por EBAY, para usar el receptor en el proyecto, y he comprado un sensor de estos que van a 433 MHZ en Amazon:

Y conecté todo el hardware, Arduino, pineado del receptor al Arduino y alimentado de los mismos, etc. Incluso he bajado la librería RCSwitch para su uso, y partiendo del ejemplo (como suele comentar el moderador a los más nuevos) "ReceiveDemo_Advaced" ya obtengo datos que puedo visionar a través del monitor serie:

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12988,404,1268,412,1264,1248,432,404,1272,408,1268,404,1272,1248,428,408,1272,404,1264,408,1272,404,1268,404,1268,1248,432,1244,436,404,1268,1244,436,400,1276,1236,436,404,1268,404,1272,404,1268,1248,436,1240,436,400,1272,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12992,408,1264,408,1268,1244,432,412,1272,408,1264,408,1268,1248,432,400,1272,408,1272,404,1268,408,1268,408,1264,1248,436,1240,436,404,1268,1244,436,400,1276,1244,436,404,1272,400,1276,400,1272,1244,436,1244,432,408,1268,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12984,408,1272,404,1272,1248,428,408,1268,408,1272,404,1272,1244,432,404,1276,400,136,60,144,60,912,128,120,1096,28,184,24,16,32,808,36,72,172,56,40,272,32,328,56,56,192,16,160,376,24,52,40,

Tengo tres dudas:

  • Estos sensores ¿tienen una posicion física determinada para detectar deslizamiento o apertura de las lamas? Quiero decir si se pone al lado -el sensor, del iman-, uno en el marco y otro en la puerta o ventana, es suficiente.

  • La duda más importante ¿qué parte de la trama es la que debería leer el Arduino para poder codficar el condicional, para que sean verde o rojo los estados... para activar una salida u otra. Quiero decir ¿qué valor? ¿qué parámetro?

INCISO: al volver a juntar el iman y el sensor para provocar otra respuesta al Arduino, el monitor serie me da esto:

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12980,412,1264,412,1264,1248,432,404,1272,408,1268,408,1272,1244,432,404,1268,408,1268,408,1268,404,1272,408,1268,1244,436,1240,440,404,1268,1244,436,404,1268,1240,436,400,1272,404,1272,404,1272,1244,436,1240,432,404,1276,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12984,408,1268,404,1268,1244,436,408,1268,412,1264,408,1268,1248,432,404,1268,408,1268,404,1272,408,1272,404,1264,1244,440,1240,440,400,1268,1244,440,396,1276,1240,436,404,1272,400,1276,400,1272,1240,440,1240,440,400,1272,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12980,408,1272,408,1264,1244,440,408,1264,408,1268,404,1272,1244,436,400,1272,408,1268,404,1272,400,1272,404,1276,1240,432,1248,432,404,1268,1244,436,408,1268,1240,440,400,1272,404,1272,400,60,100,84,68,16,104,104,
  • Todos los ejemplos empiezan con esta linea de código: RCSwitch mySwitch = RCSwitch(); ¿qué significa?

Gracias de antemano. Espero no haber preguntado muchas tonterías, soy nuevo en esta temática, me he informado antes y además soy viejo jejeje. Saludos.

  • Estos sensores ¿tienen una posicion física determinada para detectar deslizamiento o apertura de las lamas? Quiero decir si se pone al lado -el sensor, del iman-, uno en el marco y otro en la puerta o ventana, es suficiente.

Los sensores de puerta son todos iguales. Un iman que cuando esta proximo da un valor y cuando esta alejado cambia.

  • La duda más importante ¿qué parte de la trama es la que debería leer el Arduino para poder codficar el condicional, para que sean verde o rojo los estados... para activar una salida u otra. Quiero decir ¿qué valor? ¿qué parámetro?

Se supone que toda la trama a menos que las tres tramas tengan aspectos similares y puedas determinarlas con menos elementos del vector que has mostrado.
Yo veo que ni siquiera el 1er nro es el mismo en los 3, ni el 2do lo es.. entonces? Requieres de toda la trama para identificarlos.
Si las dos tramas primeras corresponden al mismo sensor, ya ves que ambas son diferentes. Asi que una vez mas, tiene que usar todo lo que la librería te ha indicado para reconocerlos.

  • Todos los ejemplos empiezan con esta linea de código: RCSwitch mySwitch = RCSwitch(); ¿qué significa?

Eso que has señalado (que siempre debe ir entre etiquetas de código) es la inicialización del objeto mySwitch

Con el luego aprovechándote de la librería puedes reconocer lo que se lee o enviarlo.

surbyte:
Los sensores de puerta son todos iguales. Un iman que cuando esta proximo da un valor y cuando esta alejado cambia.

Se supone que toda la trama a menos que las tres tramas tengan aspectos similares y puedas determinarlas con menos elementos del vector que has mostrado.
Yo veo que ni siquiera el 1er nro es el mismo en los 3, ni el 2do lo es.. entonces? Requieres de toda la trama para identificarlos.
Si las dos tramas primeras corresponden al mismo sensor, ya ves que ambas son diferentes. Asi que una vez mas, tiene que usar todo lo que la librería te ha indicado para reconocerlos.

Ok, gracias por el comentario de que todos son similares o parecidos, entiendo que son la misma base de hardware, pero no se porqué tengo la intuición de que siendo más claro, te devolverá una trama más nítida.

Volviendo al tema de la trama; vuelvo a conectar el circuito, que lo tengo montado en el escritorio, y voy a probar de nuevo que ocurre al separar el imán del sensor. Este es el resultado:

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12992,404,1268,408,1268,1248,428,400,1268,408,1272,400,1268,1244,436,400,1276,400,1272,408,1272,400,1268,408,1268,1240,440,1232,440,404,1272,1240,436,400,1272,1240,436,404,1272,400,1272,400,1272,1240,440,1240,436,404,1268,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 419 microseconds Protocol: 1
Raw data: 12988,404,1276,400,1268,1244,436,408,1268,400,1272,400,1272,1240,440,400,1272,400,1272,404,1272,404,1268,404,1272,1240,436,1244,432,404,1272,1244,432,404,1268,1240,436,400,1276,404,1268,404,1268,1236,444,1236,440,396,1276,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 419 microseconds Protocol: 1
Raw data: 12992,408,1264,408,1264,1244,440,408,1268,404,1268,404,1272,1240,436,404,1268,404,1268,404,1268,404,1276,400,1268,1244,436,1244,428,400,1276,1240,436,400,1272,1240,440,396,1276,400,1276,400,1272,1236,440,1240,68,1388,28,

La trama no es la misma... ¿qué está ocurriendo? Mismo gesto, separar el imán del sensor, desprende cada vez una trama diferente.

Ahora, vuelvo a juntar el iman al sensor:

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12964,412,1264,404,1268,1240,432,408,1268,400,1272,404,1268,1236,440,400,1272,400,1272,400,1276,404,1272,400,1272,1240,436,1240,432,400,1276,1236,440,396,1276,1236,440,404,1268,396,1276,404,1272,1240,432,1244,432,404,1268,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12976,396,1272,404,1268,1240,436,408,1276,396,1276,400,1272,1244,428,404,1272,404,1268,400,1276,396,1272,404,1268,1240,436,1244,432,400,1276,1236,436,400,1276,1236,436,400,1276,400,1272,400,1272,1236,440,1240,432,400,1276,

Decimal: 2231622 (24Bit) Binary: 001000100000110101000110 Tri-State: not applicable PulseLength: 418 microseconds Protocol: 1
Raw data: 12972,404,1272,396,1276,1240,432,400,1272,400,1272,408,1264,1244,432,404,1272,404,1268,404,1268,396,1276,404,1268,1240,436,1240,436,400,1272,1240,436,400,1272,1240,440,400,1272,404,1268,404,1272,1236,440,1240,432,404,1272,

Idem, trama diferente a la obtenida la vez anterior...

¿? gracias por responder de forma tan apresurada.

NOTA: ¿tienes algún sensor probado que vaya mejor? Por saber si merece la pena desechar este.

surbyte:
Yo veo que ni siquiera el 1er nro es el mismo en los 3, ni el 2do lo es.. entonces? Requieres de toda la trama para identificarlos.
Si las dos tramas primeras corresponden al mismo sensor, ya ves que ambas son diferentes. Asi que una vez mas, tiene que usar todo lo que la librería te ha indicado para reconocerlos.

Releyendo no entiendo esta frase ¿qué quieres decir con "tiene que usar todo lo que la librería te ha indicado para reconocerlos"? Cada grupo de tres tramas, por decirlo así, es lo que lee el Arduino del sensor cada vez que realizas el gesto de separar o juntar el imán... resultan esas tres tramas. Por eso las he puesto cada vez de tres en tres.

Si el conjunto de tramas que sale cuando separas el iman del sensor no es igual a la siguiente vez que lo separes... idem al volver a juntarlo... ¿cómo cojo un argumento para condicionar?

Eso es lo que me tiene mosqueado.