Inheco SCILA#

The SCILA is an automated CO₂-controlled incubator from Inheco with 4 independently accessible drawers for SBS-format plates. It communicates over Ethernet using the SiLA 2 protocol.

Summary

Image

  • OEM Link
  • Communication: SiLA 2 (SOAP/HTTP) over Ethernet
  • 4 independent drawers for SBS-format plates
  • Temperature control (single zone, all drawers)
  • CO₂ and H₂O valve monitoring
  • Humidification reservoir level monitoring
  • Only one drawer can be open at a time

scila
Inheco SCILA

Setup#

The SCILA communicates over Ethernet using the SiLA 2 protocol. To connect, you need:

  1. The IP address of the SCILA on your network.

  2. (Optional) The IP address of your client machine – auto-detected if omitted.

  3. (Optional) gas_mixer_connected=False if you are operating the SCILA without an external CO₂ gas mixer attached. This silences the non-fatal CO₂-flow warning that the device emits during drawer open/close in that configuration. Defaults to True.

The backend starts a local HTTP server to receive asynchronous responses from the SCILA.

If you don’t know the SCILA’s IP, the bundled SiLA discovery tool will find any SiLA 1 device on the local subnet:

python -m pylabrobot.io.sila.discovery --interface <your-link-local-ip>
from pylabrobot.inheco.scila import SCILA

scila = SCILA(name="scila", scila_ip="169.254.1.117")  # replace with your IP
await scila.setup()

Status Requests#

Query the overall device status ("idle", "standBy", "inError", "startup", …):

await scila.request_status()

Water level in the built-in humidification reservoir (e.g. "High", "Low", "Empty"):

await scila.request_liquid_level()

Drawer status for all 4 drawers, or a single drawer:

await scila.request_drawer_statuses()
await scila.request_drawer_status(1)

CO₂ and H₂O valve status:

await scila.request_valve_status()

CO₂ flow status:

await scila.request_co2_flow_status()

Drawer Control#

Only one drawer can be open at a time. Opening a second drawer while one is already open will raise an error.

await scila.drawers[2].open()
await scila.drawers[2].close()

Temperature Control#

The SCILA has a single temperature zone shared across all 4 drawers.

current = await scila.request_current_temperature()
print(f"{current:.1f} °C")
await scila.set_temperature(37.0)

Stop temperature control:

await scila.deactivate()

Teardown#

await scila.stop()