Integración de Node-RED: Dar acceso a los puertos USB al contenedor Docker

Hola @pierre-gilles
¿Esto corresponde a esta instrucción?
:sudo chown -R 1000:1000 /var/lib/gladysassistant/node-red

Si es así
he modificado el Docker run de la siguiente manera y funciona:

sudo docker run -d \
-u node-red:dialout \
  --name gladys-node-red \
  --restart always \
  -p 1881:1880 \
  -v /var/lib/gladysassistant/node-red:/data \
  --log-opt max-size=10m \
--device=/dev/ttyUSB0 \
  nodered/node-red:3.1

Pero hay que ejecutar después este comando:

sudo chown -R 1000:1000 /var/lib/gladysassistant/node-red

Pero si me confirmas que está en el código de la integración de node red debería funcionar.

Con este comando --device=/dev/ttyUSB0, ¿se fuerza la conexión del Rflink al puerto USB0? ¿Esto causa algún problema?

¡Sí, es eso! :slight_smile:

Sí, eso plantea un problema, es el mismo problema de siempre, no sabemos qué puerto se va a usar.

Por eso, en principio, mi PR inicial proponía un enfoque basado en el intercambio de volúmenes:

-v /dev:/dev \
-v /run/udev:/run/udev:ro \

Además de la opción --privileged para dar derechos adicionales al contenedor.

Pero según tus comentarios, no funciona.

hace mucho tiempo que hice lo que me pediste :roll_eyes:
Gladys se ejecuta como root, pero node-red se ejecuta con el usuario node-red.

pi@rasp3b:~ $ docker exec -it gladys-node-red bash
eeb32d757218:~$ whoami
node-red
eeb32d757218:~$ groups
node-red
eeb32d757218:~$ exit


pi@rasp3b:~ $ docker exec -it gladys bash
root@rasp3b:/src/server# whoami
root
root@rasp3b:/src/server# groups
root

¿Entonces hay un problema? Si he entendido bien.

Quería poner node-red en el grupo dialout, en el docker run/ de la imagen Gladys, pero como el contenedor node-red aún no se ha creado, me devuelve un error

No creo que esté relacionado, estás comparando usuarios dentro del contenedor, no es lo mismo.

Si miramos el Dockerfile del proyecto Node-RED (Fuente), vemos que crean un usuario Node-RED.

Buenas noches @pierre-gilles
Aquí estoy al final de mis conocimientos y si no tengo ayuda para orientarme, no podré hacer nada más, lo siento :thinking:

Ah, vaya, es cierto que es un tema muy técnico :smiley:

En este tema, ¿quién « necesitaba » este desarrollo?

¿Solo tú @elfedagger?

Veo que hablas de la persiana Somfy más arriba, no sé si has seguido, pero estoy desarrollando una integración Matter, que soporta Matterbridge, que a su vez tiene un plugin somfy-tahoma, que ha sido probado por @mutmut, y funciona ( 🚀 Matter & Gladys Assistant : C’est parti! - #69 par mutmut )

¡Así que la solución puede estar en otro lugar!

¡Buenas noches! Creo que sería interesante realizar una encuesta entre quienes utilizan Arduinos, Rflink, RXcom, etc. ¡Es una pena no seguir investigando, ya que Node Red interno en Gladys es más práctico de instalar y, además, si pudiéramos lanzar una copia de seguridad que pudiéramos recuperar como Zigbee, sería genial. Por mi parte, sigo usando NodeRed externo, que una vez lanzado funciona muy bien y para hacer copias de seguridad exporto el archivo a las descargas de Windows y lo guardo por si acaso.

Hola,

Me interesaría poder controlar mis persianas Somfy directamente desde Gladys. Temo perder todo o desconfigurar todo con los montajes y ajustes, así que me quedo con el control básico con el mando a distancia. Es problemático cuando me ausento.

@Jluc ¿Qué material de Somfy tienes?
¿Persiana, toldo, cortina, Vélux?
¿IO, RTS?
¿Caja (¿cuál?), control remoto?
Si es necesario, podemos crear un nuevo tema para hablar de esta parte y evitar saturar este hilo.

He vuelto a pasar a Node Red externo, pero cuando hay un corte de corriente y Gladys se detiene, al reiniciar los puertos USB se invierten y nada funciona. Ni Zigbee ni RFlink, es un lío tener que reiniciar todo. En cuanto a Mater, espero a ver. Con el RFlink no tengo que intervenir en mis persianas. Mis persianas son solares, así que ni hablar de añadirles más material o invertir en una caja fuera de precio para que funcionen con Mater.

Hola a todos,
es cierto, me había olvidado de este problema también, de ahí el interés de este tutorial

Gracias por tu respuesta @elfedagger :slight_smile:

En este caso podemos mirarlo juntos, no es muy complicado de cambiar, no hay nada relacionado con esta solicitud si es solo eso lo que te molesta.

¿Hay un tema dedicado donde podamos hablar de esto?

Hola @pierre-gilles,

He reanudado mis pruebas para abrir los puertos USB para que RFLink pueda conectarse a Node-RED. Aquí tienes un docker run que funciona. Cuando tengas un momento, ¿podrías revisarlo y hacerme una imagen Gladys-Node-RED con este Docker integrado? Para que pueda probarlo en la práctica.
Gracias de antemano y que pases unas buenas fiestas de fin de año.

docker run -d \
  --name gladys-node-red \
  --restart always \
  --network host \
  --privileged \
  -e "PORT=1881" \
  --group-add dialout \
  -v /dev:/dev \
  -v /var/lib/gladysassistant/node-red:/data \
  --log-opt max-size=10m \
  nodered/node-red:3.1

No había visto esta pregunta.

Lo que más necesito es que Node Red integrado en Gladys reconozca los puertos USB para poder usarlo con mi RFlink y parece que va por buen camino. En cuanto a los puertos USB que se invierten en Node Red externo, he puesto en marcha un procedimiento de reinicio de mi mini PC y me conviene. Lo que más me interesa es poder eliminar Node Red externo por todas las ventajas que Psoy ha mencionado antes.

Buenas noches @elfedagger,

¿Me puedes explicar qué has hecho? Porque en mi caso siempre se invierte.

Buenas noches, cuando mi mini PC se apaga debido a un corte de corriente, antes de reiniciarlo, desconecto todo lo que está conectado a mis puertos USB, dejando solo conectado mi dongle Zigbee. Cuando Gladys arranca, el puerto usb0 se asigna a zigbee2mqtt y luego puedo volver a conectar mi RFlink y se le asigna el puerto usb1. Reinicio Node-RED externo y todo vuelve a funcionar en mi casa. Es muy molesto, pero es el único método que tengo mientras Node-RED interno reconoce los puertos USB de mi mini PC. Mi RFlink solo sirve para automatizar mis persianas Somfy, me pregunto si no voy a conseguir un Tahoma Mini y automatizar mis persianas fuera de Gladys, quizás con Alexa para eliminar este problema.

buenas noches @elfedagger
Tenemos el mismo método, creía que habías nombrado tus puertos.
Gracias por tu respuesta
Buenas noches

¡Gracias @Psoy por las pruebas!

¿Podrías explicarme cada parámetro que modificaste?

En particular --network host \ + -e "PORT=1881" \ ?

Actualmente, estábamos haciendo un mapeo de puertos, ¿cambiaste eso para poder hacer un escaneo de red, por ejemplo?

Hola @pierre-gilles,
Justo antes de abordar el problema de los puertos USB, intentaba reconectar mi pasarela Xiaomi y como tenía dos Node-RED en funcionamiento, la IA me recomendó "--network host \" + -e « PORT=1881 » `". Acabo de probar volviendo a -p 1881:1880 `, funciona pero se necesitan estas líneas: --privileged \ --group-add dialout \ -v /dev:/dev \

Aquí está el docker run:

docker run -d \
  --name gladys-node-red \
  --restart always \
  -p 1881:1880 \
  --privileged \
  --group-add dialout \
  -v /dev:/dev \
  -v /var/lib/gladysassistant/node-red:/data \
  --log-opt max-size=10m \
  nodered/node-red:3.1

Por eso preguntaba si verificar si estos comandos no causaban problemas.
Para ser sincero, es la IA la que trabaja, yo intento entender y probar :grinning:
Gracias de antemano por retomar este tema

¡Vale, gracias por la respuesta!

Al final, en mi PR inicial solo faltaba --group-add dialout :slight_smile:

He actualizado la PR, por cierto:

Acabo de relanzar un build que estará disponible en gladysassistant/gladys:node-red-usb-ports en unos veinte minutos, ¡acepto tu opinión! :wink: