Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Antwort auf: USB-RS232-Waagenanzeige am Pi: Berechtigungsfehler, ttyUSB0/ttyUSB1 wechselt, readline hängt

Von Türkçe mit KI übersetzt ·

Beides hatte ich selbst, bei einem Wägeprojekt.Portname: Die ttyUSB-Nummer wird nach der Reihenfolge der Erkennung vergeben, also nicht darauf verlassen. Schau mit ls -l /dev/serial/by-id/ nach, dort gibt es einen dauerhaften Namen mit der Seriennummer des Wandlers, den nimm. Wenn du zwei gleiche Chips ohne Seriennummern hast, kannst du per udev-Regel nach USB-Port benennen, aber meistens reicht by-id.readline: Standardmäßig wartet es auf
. Die meisten Anzeigen beenden Zeilen mit , deshalb kehrt es nie zurück. Außerdem wartet es ohne Timeout bei abgezogenem Kabel ewig. Das benutze ich:

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          # keine Daten seit 2 s, hier loggen
    buf += chunk
    while b'' in buf:
        line, buf = buf.split(b'', 1)
        w = parse_weight(line)   # z. B. b'ST,GS,+0012.45kg'
        if w is not None:
            client.publish('v1/telemetry', json.dumps({'weight_kg': w}), qos=1)

Wenn die Anzeige mehrmals pro Sekunde ausgibt, sende nicht jede Zeile. Sende einmal pro Sekunde oder nur die ST-Zeilen (stabil). Schreib eine systemd-Unit für den Dienst, trag deinen eigenen Benutzer in die Zeile User= ein und nimm Restart=always.

Ağ geçidi yine bağlanıyor…
Akzeptierte Lösung♥ 5