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

Respuesta a: Indicador de báscula USB-RS232 en Pi: error de permisos, ttyUSB0/ttyUSB1 cambia, readline se bloquea

Traducido del Türkçe por IA ·

Viví las dos cosas, en un proyecto de báscula.Nombre del puerto: el número ttyUSB se asigna según el orden de enumeración, así que no te fíes de él. Revisa con ls -l /dev/serial/by-id/, ahí hay un nombre permanente que contiene el número de serie del convertidor, úsalo. Si tienes dos chips iguales sin números de serie, puedes nombrarlos por puerto USB con una regla udev, pero casi siempre basta con by-id.readline: por defecto espera
. La mayoría de los indicadores terminan las líneas con , así que nunca retorna. Además, si no pones timeout, espera para siempre cuando se desconecta el cable. Esto es lo que uso:

PORT = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A10K3XYZ-if00-port0'
ser = serial.Serial(PORT, 9600, bytesize=8, parity='N', stopbits=1, timeout=2)
buf = b''
while True:
    chunk = ser.read(64)
    if not chunk:
        continue          # sin datos durante 2 s, registrar aquí
    buf += chunk
    while b'' in buf:
        line, buf = buf.split(b'', 1)
        w = parse_weight(line)   # p. ej. b'ST,GS,+0012.45kg'
        if w is not None:
            client.publish('v1/telemetry', json.dumps({'weight_kg': w}), qos=1)

Si el indicador imprime varias veces por segundo, no envíes cada línea. Envía una vez por segundo, o solo las líneas ST (estable). Escribe una unit de systemd para el servicio, pon tu propio usuario en la línea User= y usa Restart=always.

Ağ geçidi yine bağlanıyor…
Solución aceptada♥ 5