Integración - RFplayer

Hola a todos,

Estoy trabajando en una integración externa Gladys para la llave RFPlayer RFP1000 (Ziblue / GCE Electronics, 433 y 868 MHz).

:backhand_index_pointing_right: Código: GitHub - prohand/gladys-rfplayer: Gladys external integration to connect rfplayer devices in Gladys · GitHub

Qué hace

  • Sensores escuchados, propuestos en la pestaña Descubrimiento: sondas Oregon (temperatura, humedad, presión, viento, lluvia, UV) y contadores OWL.
  • Detectores Visonic, X2D y KD101: alarma, autoprotección, batería baja.
  • Mandos a distancia: Chacon/DiO, X10, Somfy RTS, Blyss, X2D, llaves Visonic…
  • Actuadores controlados por la llave: enchufes, interruptores, lámparas variables, persianas Somfy RTS (el « my » sirve de parada) y portones.
  • Emparejamiento en un clic: el botón « Emparejar un actuador » envía el marco de emparejamiento y añade el dispositivo a la configuración.
  • Detección de interferencia de radio de la llave, útil para una alarma inalámbrica.
  • Disparadores de escena (Gladys 5.1): mando a distancia presionado, detector activado, batería baja, interferencia.
  • Acciones de escena (Gladys 5.1): enviar una orden de radio, simular una interferencia.
  • Widget « Radio RFPlayer » en el tablero de control.
  • 100 % local, sin ningún cloud.

:warning: El problema: la integración no puede acceder al USB

Las integraciones externas funcionan en un contenedor aislado, y este contenedor no recibe ningún puerto serie: ni /dev/ttyUSB*, ni /dev/ttyACM*.

En el manifiesto, las únicas clases de hardware que se pueden solicitar son coral-usb, coral-pcie, gpu y video. Y aún: solo para subcontenedores, no para el contenedor principal.

Resultado: imposible conectar una llave USB serie directamente a una integración externa.

He tenido el mismo problema con una integración Téléinfo. También afectará a las llaves Zigbee y Z-Wave, RFXtrx, EnOcean, Arduino…

La solución actual

Exponemos el puerto serie de la llave en TCP con ser2net (o socat) en la máquina donde está conectada. La integración se conecta luego a IP:port.

Ejemplo de /etc/ser2net.yaml:

connection: &rfplayer
  accepter: tcp,4000
  enable: on
  options:
    kickolduser: true
  connector: serialdev,/dev/serial/by-id/usb-XXXX-if00-port0,115200n81,local

Luego, en la configuración de la integración: host = IP local de la máquina (no localhost), puerto = 4000.

Funciona, pero no es ideal:

  • Un paso técnico más para el usuario: instalar y configurar ser2net. No es el espíritu « un clic » de la tienda.
  • No hay contraseña en el puerto TCP: cualquiera en la red local puede controlar los dispositivos de radio. Hay que limitar la escucha a una IP o filtrar con el cortafuegos.
  • Un servicio más para vigilar en la máquina anfitriona.

La solicitud está hecha :bullseye:

He propuesto una clase de hardware serial: la integración la solicita, el usuario elige qué llave darle, y Gladys monta solo ese puerto en el contenedor. La caja de arena sigue siendo segura.

Se necesitan cambios en 3 lugares, una issue para cada uno:

:backhand_index_pointing_right: Si os afecta (RFPlayer, Téléinfo, Zigbee, Z-Wave…), poned un :+1: en estas issues o añadid vuestro caso en los comentarios. Ayuda a priorizar.

@pierre-gilles, puedo ayudar a probar tan pronto como haya algo.

Llamada a los probadores

La integración sigue la especificación oficial de la API RFPlayer y está cubierta por pruebas automáticas. Sin embargo, todavía no la he probado en una llave real.

Si tenéis un RFPlayer, vuestros comentarios me ayudan mucho, especialmente en:

  • las persianas Somfy RTS: la función « my » y el emparejamiento;
  • los enchufes Chacon/DiO: el emparejamiento;
  • las sondas Oregon y los detectores Visonic.

La documentación de instalación completa está en francés, incluyendo ser2net: gladys-rfplayer/docs/fr.md at main · prohand/gladys-rfplayer · GitHub

¡Gracias! :slightly_smiling_face:

@prohand creo que el mensaje está truncado, o es que no entiendo nada ^^

Gracias :slight_smile:
Está corregido