Inheco SCILA#

Summary

Image

  • Automated CO₂-controlled incubator with 4 independently accessible drawers for SBS-format plates.
  • OEM Link
  • Communication Protocol / Hardware: SiLA 2 (SOAP/HTTP) / Ethernet
  • Communication Level: SiLA 2 interface (documentation shared by OEM)
  • 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
Figure: Inheco SCILA

Setup (Physical)#

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.

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

Setup (Programmatic)#

import asyncio
from pylabrobot.storage.inheco.scila import SCILABackend

scila = SCILABackend(scila_ip="169.254.1.117")
await scila.setup()

Usage#

Status Requests#

Device status ("standBy", "inError", "startup", …):

await scila.request_status()
'idle'

Water level in the built-in humidification reservoir (e.g. "High", "Low"). The SCILA uses this reservoir to maintain humidity inside the drawers:

await scila.request_liquid_level()
'Empty'

Drawer status for all 4 drawers:

await scila.request_drawer_status(1)
'Closed'
await scila.request_drawer_statuses()
{1: 'Closed', 2: 'Closed', 3: 'Closed', 4: 'Closed'}

CO₂ and H₂O valve status:

await scila.request_valve_status()
{'H2O': 'Opened', 'CO2 Normal': 'Opened', 'CO2 Boost': 'Closed'}

CO₂ flow status:

await scila.request_co2_flow_status()
'NOK'

Status of a single drawer:

await scila.request_drawer_status(3)
'Closed'

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.open(2)
await scila.close(2)

Temperature Control#

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

Current temperature in °C:

await scila.measure_temperature()
23.65
await scila.start_temperature_control(37.0)

Check the target temperature and current temperature after starting:

await scila.request_target_temperature()
37.0
await asyncio.sleep(4)

await scila.measure_temperature()
24.53
await scila.is_temperature_control_enabled()
True

Stop temperature control and verify it is disabled:

await scila.stop_temperature_control()
await scila.is_temperature_control_enabled()
False

Closing Connection#

Close the SiLA 2 HTTP server and disconnect from the SCILA.

await scila.stop()