Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

La consola serie de mi pasarela Pi muestra códigos de escape en lugar de colores y htop es un desastre

La consola serie de mi pasarela Pi muestra códigos de escape en lugar de colores y htop es un desastre

Resuelto 6 5

Traducido del English por IA ·

Otra vez yo (la persona del amoníaco del gallinero). El Pi del gallinero ahora funciona como una pequeña pasarela: lee el sensor de NH3 y dos sondas de temperatura y publica en Hermetry. El Wi-Fi en el cobertizo es pésimo, así que cuando se cae conecto un cable USB-TTL CP2102 al UART GPIO del Pi y uso PuTTY en mi portátil a 115200.El inicio de sesión funciona, pero el script de la pasarela imprime líneas de log coloreadas y por serie veo cosas como:

^[[32mINFO^[[0m published nh3_ppm=9.1
^[[33mWARN^[[0m wifi reconnect (3)

Y htop dibuja basura y salta de línea a los 80 columnas, incluso con la ventana de PuTTY maximizada. Por SSH ambos se ven perfectos. ¿La conexión serie está simplemente limitada así?

♥ 0

Traducido del English por IA ·

¿Probaste picocom en lugar de PuTTY? Siempre me pareció raro PuTTY para el puerto serie.

♥ 1

Traducido del English por IA ·

Lo mismo con picocom desde mi equipo Linux, lo he probado.

♥ 0

Traducido del English por IA ·

El problema está en el lado de la Pi, no en el programa de terminal. Faltan dos cosas en un inicio de sesión serie que SSH te da gratis.El tipo de terminal: SSH transmite tu TERM (xterm-256color desde PuTTY). El getty serie establece TERM en vt220, que no tiene color, así que los programas que comprueban TERM recurren a alternativas o imprimen códigos sin procesar. Compruébalo con echo $TERM.El tamaño de la ventana: la línea serie no tiene forma de indicarle a la Pi qué tamaño tiene tu ventana, así que asume 80×24 y nunca cambia.Puse esto en ~/.bashrc en cada equipo al que me conecto por consola:

case "$(tty)" in
  /dev/ttyS0|/dev/ttyAMA0|/dev/serial0)
    export TERM=xterm-256color
    stty rows 50 cols 160      # match your PuTTY window
    ;;
esac

Si instalas el paquete xterm puedes escribir resize en lugar de fijar el tamaño a mano; pregunta al terminal y lo establece.Los colores de tu script deberían funcionar entonces, siempre que la biblioteca de registro compruebe TERM.

Solución aceptada♥ 8

Traducido del English por IA ·

Nota aparte: el mismo script también escribe en journald cuando se ejecuta como servicio, y los códigos de color en el journal resultan molestos. La mayoría de las bibliotecas de registro permiten desactivar el color cuando stdout no es una tty.

Timestamps in UTC or it didn't happen.
♥ 0

Traducido del English por IA ·

+1 al fragmento de bashrc, en nuestras pasarelas es igual. Yo también añadiría export LANG=C.UTF-8 ahí si ves que los caracteres de dibujo de cajas se rompen en htop.

♥ 1

Traducido del English por IA ·

TERM era exactamente vt220. Con el bloque de bashrc ya salen los colores y htop a todo el ancho por el puerto serie. También añadí el consejo de Eric: el servicio se ejecuta con el color desactivado, así el journal queda limpio. ¡Gracias a todos!

♥ 0
Viendo 7 entradas – de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir