diff --git a/.omp/skills/usbtoggle-relay/SKILL.md b/.omp/skills/usbtoggle-relay/SKILL.md index 5871432..c514d46 100644 --- a/.omp/skills/usbtoggle-relay/SKILL.md +++ b/.omp/skills/usbtoggle-relay/SKILL.md @@ -70,14 +70,14 @@ cd /Users/eddy/src/usbtoggle ./relay 1 # relais aan → USB afgekoppeld (module uit) ./relay 0 # relais uit → USB aangekoppeld (module aan) ./relay id # identificatie (chip-ID) -./relay 1 /dev/cu.usbserial-XXXX # poort expliciet opgeven (alleen als auto-detect faalt) ``` -- Zonder poortargument zoekt het script de module **automatisch**: het - probeert alle CH340-poorten (`VID:PID=1A86:7523`) met het `id`-commando - en gebruikt de eerste die `ID usbtoggle-relay` antwoordt. De module - wordt dus gevonden waar die ook is aangesloten; de poortnaam hoeft - nooit hardcoded te worden. +- Het script zoekt de module **automatisch**: het probeert alle + CH340-poorten (`VID:PID=1A86:7523`) met het `id`-commando en gebruikt + de eerste die `ID usbtoggle-relay` antwoordt. De module wordt dus + gevonden waar die ook is aangesloten; de poortnaam hoeft nooit + hardcoded te worden. Kan de module niet gevonden worden, dan faalt het + script met een foutmelding (exit 1). - Replies: `ON` / `OFF` / `ID ...`; exit 0 = gelukt, exit 1 = fout (usage, poort niet te openen, geen geldige reply). diff --git a/README.md b/README.md index 66b4ffd..1d6ff48 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,12 @@ Sluit aan via USB en stuur commando's: ./relay 1 # relais aan ./relay 0 # relais uit ./relay id # toont module-ID (chip-ID, uniek per chip, onafhankelijk van USB-poort) -./relay 1 /dev/cu.usbserial-XXXX # poort expliciet opgeven (alleen als auto-detect faalt) ``` -Zonder poortargument zoekt het script de module zelf: het probeert alle -CH340-poorten met het `id`-commando en gebruikt de eerste die `ID -usbtoggle-relay` antwoordt — waar de module ook is aangesloten. +Het script zoekt de module altijd zelf: het probeert alle CH340-poorten +met het `id`-commando en gebruikt de eerste die `ID usbtoggle-relay` +antwoordt — waar de module ook is aangesloten. Kan de module niet +gevonden worden, dan faalt het script met een foutmelding (exit 1). ## Linux diff --git a/relay b/relay index ba3d346..c477ed3 100755 --- a/relay +++ b/relay @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -"""Toggle the USB relay via serial: ./relay 1|0|id [serial_port]. +"""Toggle the USB relay via serial: ./relay 1|0|id. -Without an explicit port the relay board is found automatically: every -USB serial port is probed with the ID command until one answers. +The relay board is found automatically: every USB serial port is probed +with the ID command until one answers. """ import sys import serial @@ -39,20 +39,17 @@ def find_relay_port() -> str | None: return None def main() -> int: - if len(sys.argv) not in (2, 3) or sys.argv[1] not in ("0", "1", "id"): - print(f"Usage: {sys.argv[0]} 0|1|id [serial_port]", file=sys.stderr) + if len(sys.argv) != 2 or sys.argv[1] not in ("0", "1", "id"): + print(f"Usage: {sys.argv[0]} 0|1|id", file=sys.stderr) return 1 command = sys.argv[1] serial_cmd = "?" if command == "id" else command - if len(sys.argv) == 3: - port = sys.argv[2] - else: - port = find_relay_port() - if port is None: - print("ERROR: no relay module found on any USB serial port", - file=sys.stderr) - return 1 - print(f"Using {port}", file=sys.stderr) + port = find_relay_port() + if port is None: + print("ERROR: no relay module found — is the Wemos D1 connected?", + file=sys.stderr) + return 1 + print(f"Using {port}", file=sys.stderr) 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