Move relay to GPIO5, harden relay script, add monitor_speed

This commit is contained in:
Eddy de Vink 2026-08-13 12:08:15 +02:00
commit 73dc2f188f
4 changed files with 53 additions and 5 deletions

50
relay
View file

@ -1,3 +1,47 @@
#!/bin/bash
[ $# -ne 1 ] || [ "$1" != "0" -a "$1" != "1" ] && { echo "Usage: relay 0|1"; exit 1; }
python3 -c "import serial; s=serial.Serial('/dev/cu.usbserial-2110',115200,timeout=2); s.write(b'$1'); print(s.read(10).decode())"
#!/usr/bin/env python3
"""Toggle the USB relay via serial: ./relay 1|0 [serial_port]."""
import sys
import serial
DEFAULT_PORT = "/dev/cu.usbserial-2110"
def main() -> int:
if len(sys.argv) not in (2, 3) or sys.argv[1] not in ("0", "1"):
print(f"Usage: {sys.argv[0]} 0|1 [serial_port]", file=sys.stderr)
return 1
command = sys.argv[1]
port = sys.argv[2] if len(sys.argv) == 3 else DEFAULT_PORT
try:
# dtr/rts expliciet uit vóór open: voorkomt (of beperkt) de CH340
# auto-reset (DTR->RST) bij het openen van de poort. pyserial 3.5
# accepteert geen dtr=/rts= kwargs in de constructor, maar de
# states worden wél geëerd door open().
s = serial.Serial()
s.port = port
s.baudrate = 115200
s.timeout = 2
s.dtr = False
s.rts = False
s.open()
except serial.SerialException as exc:
print(f"ERROR: cannot open {port}: {exc}", file=sys.stderr)
return 1
try:
# Als het board toch reset bij open: wacht op de boot-banner en
# gooi die weg, zodat de reply niet vervuild raakt. Geen banner
# binnen 2 s (timeout, readline geeft b"") = geen reset: door.
s.readline()
s.reset_input_buffer()
s.write(command.encode())
s.flush()
reply = s.readline().decode(errors="replace").strip()
finally:
s.close()
if reply in ("ON", "OFF"):
print(reply)
return 0
print(f"ERROR: no valid reply from board (got {reply!r})", file=sys.stderr)
return 1
if __name__ == "__main__":
sys.exit(main())