Skip to content

feat(kbioscience): add KBioscience KUBE thermal plate sealer driver#1171

Merged
rickwierenga merged 1 commit into
v1b1from
feat/kbioscience-kube
Jul 21, 2026
Merged

feat(kbioscience): add KBioscience KUBE thermal plate sealer driver#1171
rickwierenga merged 1 commit into
v1b1from
feat/kbioscience-kube

Conversation

@rickwierenga

Copy link
Copy Markdown
Member

Adds a driver for the KBioscience KUBE thermal plate sealer, reverse-engineered from the Thermo Momentum device DLL (Thermo.Automation.Devices.Instruments.KBioscience.KUBE.dll).

Device

  • Microplate heat sealer, RS-232 ASCII protocol: 9600 baud, 8 data bits, no parity, 1 stop bit, no handshake, \r terminator.
  • The device echoes the command in front of its reply (e.g. A160A160ok), which is stripped before parsing. A reply containing syntax means the command was rejected.

API

Single plain async class KBioscienceKUBE (following the same shape as the KBiosystemsUltrasealEPRO driver in #1170):

  • setup() / stop()
  • seal(temperature, duration, preset=SealPreset.USER_DEFINED, idle_temperature) — seals by user-defined time/temperature or by one of the six presets stored on the instrument
  • set_temperature, set_sealing_time, set_seal_preset, set_plate_orientation, clear_error_window
  • request_status, request_error_code, request_sealing_temperature, request_sealing_time, request_temperature, request_firmware_version, request_product_name
  • wait_for_idle, wait_for_sealing_temperature
  • Status is exposed as a KUBEStatus IntFlag; error codes decode to messages via DEVICE_ERRORS.

At setup the driver performs the vendor's ALPS300-compatibility check: a unit configured for ALPS Compatibility speaks the older, incompatible protocol and is rejected with instructions to disable it in the instrument menu.

Testing

  • ruff check and ruff format --check: clean
  • mypy: no errors in the new module
  • Fake-serial test confirming exact wire bytes (A160, B25, P3, X1/X2), echo-strip decoding of readers, the error-code→message path, and the ALPS300 probe

Warning

This driver has not been tested against hardware. A warning is emitted at setup(); please open a follow-up PR to remove it once verified on a real KUBE.

🤖 Generated with Claude Code

Single plain async class `KBioscienceKUBE` over an ASCII RS-232 protocol
(9600 8N1, CR terminator, command echoed in front of each reply).

Supports sealing by user-defined time/temperature or by one of the six
presets stored on the instrument, plate orientation, status/error
decoding, and the ALPS300-compatibility protocol check performed at
setup. Not yet hardware-tested; a warning is emitted at setup.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rickwierenga
rickwierenga force-pushed the feat/kbioscience-kube branch from 89e18c5 to 69541f4 Compare July 21, 2026 00:06
@rickwierenga
rickwierenga merged commit 8d8d3d5 into v1b1 Jul 21, 2026
1 of 19 checks passed
@rickwierenga
rickwierenga deleted the feat/kbioscience-kube branch July 21, 2026 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant