[{"data":1,"prerenderedAt":650},["ShallowReactive",2],{"$footer":3,"$announcement":138,"$navigation":143,"hub-authored-inheco-odtc":342},{"links":4,"social":72,"legal":93},[5,19,29,38,47,56,65],{"id":6,"type":7,"tags":8,"lang":9,"slug":10,"first_publication_date":11,"last_publication_date":12,"uid":13,"url":14,"link_type":15,"key":16,"isBroken":17,"text":18,"label":18,"to":14},"l-0","page",[],"en-us","solutions","2026-01-21T11:09:17+0000","2026-08-04T13:12:28+0000","lab-automation-solutions","/lab-automation-solutions/","Document","4a10367c-9d1e-458a-a0f7-728dbe2bd042",false,"Solutions",{"id":20,"type":7,"tags":21,"lang":9,"slug":22,"first_publication_date":23,"last_publication_date":24,"uid":25,"url":26,"link_type":15,"key":27,"isBroken":17,"text":28,"label":28,"to":26},"l-1",[],"product","2025-09-01T01:00:48+0000","2026-09-11T08:38:41+0000","products","/products/","a5f1eb81-8372-4fa7-b475-e86dad2f9ec7","Product",{"id":30,"type":7,"tags":31,"lang":9,"slug":32,"first_publication_date":33,"last_publication_date":34,"uid":32,"url":35,"link_type":15,"key":36,"isBroken":17,"text":37,"label":37,"to":35},"l-2",[],"hub","2025-09-02T13:51:54+0000","2026-05-26T10:20:22+0000","/hub/","7866b4e5-e7c8-4098-9fe7-377e691944b7","Devices",{"id":39,"type":7,"tags":40,"lang":9,"slug":41,"first_publication_date":42,"last_publication_date":43,"uid":41,"url":44,"link_type":15,"key":45,"isBroken":17,"text":46,"label":46,"to":44},"l-3",[],"resources","2026-01-21T11:06:49+0000","2026-07-31T13:04:35+0000","/resources/","8b6f5ff0-aa07-46cd-9775-9952f29ed3b0","Resources",{"id":48,"type":7,"tags":49,"lang":9,"slug":50,"first_publication_date":51,"last_publication_date":52,"uid":50,"url":53,"link_type":15,"key":54,"isBroken":17,"text":55,"label":55,"to":53},"l-4",[],"about-us","2025-04-30T08:52:13+0000","2026-09-07T12:44:30+0000","/company/about-us/","77d24f29-d95f-441f-a8f2-e3175a5ef5b8","About",{"id":57,"type":7,"tags":58,"lang":9,"slug":59,"first_publication_date":60,"last_publication_date":61,"uid":59,"url":62,"link_type":15,"key":63,"isBroken":17,"text":64,"label":64,"to":62},"l-5",[],"downloads","2026-03-10T10:07:49+0000","2026-03-20T14:59:07+0000","/downloads/","dd22fa8d-9f4a-413f-a94c-2e4c1220ad38","Downloads",{"link_type":66,"key":67,"url":68,"target":69,"text":70,"id":71,"label":70,"to":68},"Web","f1dbcc0e-3bf3-45ae-9b3c-03fcdefdc2a2","https://unitelabs.jobs.personio.com/","_blank","Careers","l-6",[73,78,83],{"link_type":66,"key":74,"url":75,"target":69,"text":76,"id":77,"label":76,"to":75},"e202bb6f-d390-4045-8f57-7d7a4dff3e6e","https://gitlab.com/unitelabs","GitLab","s-0",{"link_type":66,"key":79,"url":80,"target":69,"text":81,"id":82,"label":81,"to":80},"34c0f8f7-ea14-4ab4-abb9-0c5c31722c74","https://www.linkedin.com/company/unitelabs/","LinkedIn","s-1",{"id":84,"type":7,"tags":85,"lang":9,"slug":86,"first_publication_date":87,"last_publication_date":88,"uid":89,"url":90,"link_type":15,"key":91,"isBroken":17,"text":92,"label":92,"to":90},"s-2",[],"official-information-about-unitelabs","2026-05-06T08:10:20+0000","2026-08-06T08:40:24+0000","llm-info","/llm-info/","7f473901-c1e0-4d90-8bee-c2acd23966b2","Hey AI",[94,105,115,124,133],{"id":95,"type":96,"tags":97,"lang":9,"slug":98,"first_publication_date":99,"last_publication_date":100,"uid":101,"url":102,"link_type":15,"key":103,"isBroken":17,"text":104,"label":104,"to":102},"g-0","legal",[],"unitelabs-end-user-license-agreement","2026-04-23T09:49:18+0000","2026-05-26T12:07:17+0000","eula","/legal/eula/","d1698bf9-c43d-4039-8c98-8cf31182bd65","EULA",{"id":106,"type":96,"tags":107,"lang":9,"slug":108,"first_publication_date":109,"last_publication_date":110,"uid":111,"url":112,"link_type":15,"key":113,"isBroken":17,"text":114,"label":114,"to":112},"g-1",[],"legal-disclosure","2025-05-14T08:35:48+0000","2026-05-26T12:13:31+0000","disclosure","/legal/disclosure/","3bbf513e-3fc0-4d3f-80ad-5db764b33bbc","Disclosure",{"id":116,"type":96,"tags":117,"lang":9,"slug":118,"first_publication_date":119,"last_publication_date":120,"uid":118,"url":121,"link_type":15,"key":122,"isBroken":17,"text":123,"label":123,"to":121},"g-2",[],"privacy-policy","2025-05-14T15:27:59+0000","2026-05-26T12:15:16+0000","/legal/privacy-policy/","017c6841-72e4-4c37-a867-a650347d35b4","Privacy Policy",{"id":125,"type":96,"tags":126,"lang":9,"slug":127,"first_publication_date":128,"last_publication_date":129,"uid":127,"url":130,"link_type":15,"key":131,"isBroken":17,"text":132,"label":132,"to":130},"g-3",[],"cookie-policy","2025-05-14T15:27:48+0000","2026-05-26T12:11:54+0000","/legal/cookie-policy/","a1b14069-ce96-4f0c-be7b-31259b7f1b69","Cookie Policy",{"link_type":66,"key":134,"url":135,"text":136,"id":137,"label":136,"to":135},"a418bd2e-af6a-4b17-b528-f34ee301683c","#cookie-consent-manager/","Cookie Settings","g-4",{"text":139,"cta":140},"Our 'Lab of the Future' Manifesto: A Return to First Principles",{"url":141,"text":142,"external":17},"/resources/blog/lab-of-the-future-manifesto/","Read more",{"main":144,"social":316,"legal":326},{"mode":145,"items":146},"light",[147,226,230,234,266,292],{"id":148,"tags":149,"lang":9,"slug":10,"first_publication_date":11,"last_publication_date":12,"uid":13,"url":14,"link_type":15,"key":150,"isBroken":17,"text":18,"label":18,"to":14,"level":151,"viewAllLabel":152,"hasGroups":153,"children":154,"slot":225},"0",[],"6a03eb9b-163c-4ccc-98b3-b2660ee758cc",0,"View all solutions",true,[155,168,178,188,198,207,216],{"id":156,"tags":157,"lang":9,"slug":158,"first_publication_date":159,"last_publication_date":160,"uid":161,"url":162,"link_type":15,"key":163,"isBroken":17,"text":164,"label":164,"to":162,"description":165,"level":166,"group":167},"0-p-0",[],"solutions-for-lab-automators","2026-03-10T16:15:28+0000","2026-07-30T09:53:17+0000","automators","/lab-automation-solutions/automators/","3edcd1f4-71e6-4538-96c0-a4fdf93a3094","Automators","",1,"persona",{"id":169,"tags":170,"lang":9,"slug":171,"first_publication_date":172,"last_publication_date":173,"uid":174,"url":175,"link_type":15,"key":176,"isBroken":17,"text":177,"label":177,"to":175,"description":165,"level":166,"group":167},"0-p-1",[],"solutions-for-platform-leaders","2026-04-02T12:14:37+0000","2026-07-23T13:47:11+0000","platform-leaders","/lab-automation-solutions/platform-leaders/","c0a921f5-6508-42ec-8745-3162a6687dac","Platform Leaders",{"id":179,"tags":180,"lang":9,"slug":181,"first_publication_date":182,"last_publication_date":183,"uid":184,"url":185,"link_type":15,"key":186,"isBroken":17,"text":187,"label":187,"to":185,"description":165,"level":166,"group":167},"0-p-2",[],"solutions-for-scientists","2026-04-02T12:15:32+0000","2026-07-23T13:48:06+0000","scientists","/lab-automation-solutions/scientists/","39907433-8560-49c7-a2b1-ad172a691dd0","Scientists",{"id":189,"tags":190,"lang":9,"slug":191,"first_publication_date":42,"last_publication_date":192,"uid":193,"url":194,"link_type":15,"key":195,"isBroken":17,"text":196,"label":196,"to":194,"description":165,"level":166,"group":197},"0-s-0",[],"solutions-ai-driven-labs","2026-07-31T13:04:50+0000","ai-driven-labs","/lab-automation-solutions/ai-driven-labs/","0c227bee-8298-4cb1-b1eb-38c9e03a9aec","AI-Driven Labs","solution",{"id":199,"tags":200,"lang":9,"slug":201,"first_publication_date":42,"last_publication_date":202,"uid":203,"url":204,"link_type":15,"key":205,"isBroken":17,"text":206,"label":206,"to":204,"description":165,"level":166,"group":197},"0-s-1",[],"solutions-closed-loop-automation","2026-07-31T13:05:07+0000","closed-loop-automation","/lab-automation-solutions/closed-loop-automation/","d6ddd1c0-3530-4260-8a48-b07b026ffc33","Closed-Loop Automation",{"id":208,"tags":209,"lang":9,"slug":210,"first_publication_date":42,"last_publication_date":211,"uid":212,"url":213,"link_type":15,"key":214,"isBroken":17,"text":215,"label":215,"to":213,"description":165,"level":166,"group":197},"0-s-2",[],"solutions-data-as-a-resource","2026-08-04T15:14:37+0000","data-as-a-resource","/lab-automation-solutions/data-as-a-resource/","b528d738-c00b-46cc-8ae8-8edfb8310cd7","Data as a Resource",{"id":217,"tags":218,"lang":9,"slug":219,"first_publication_date":42,"last_publication_date":220,"uid":221,"url":222,"link_type":15,"key":223,"isBroken":17,"text":224,"label":224,"to":222,"description":165,"level":166,"group":197},"0-s-3",[],"solutions-liquid-handling","2026-07-31T13:05:49+0000","liquid-handling","/lab-automation-solutions/liquid-handling/","9fc29b31-6fac-4469-bf6e-5f3abb24c149","Liquid Handling","dropdown",{"id":227,"tags":228,"lang":9,"slug":22,"first_publication_date":23,"last_publication_date":24,"uid":25,"url":26,"link_type":15,"key":229,"isBroken":17,"text":28,"label":28,"to":26,"level":151,"viewAllLabel":165,"hasGroups":17},"1",[],"82776b86-5408-45ec-8de0-2c95f0f86d6d",{"id":231,"tags":232,"lang":9,"slug":32,"first_publication_date":33,"last_publication_date":34,"uid":32,"url":35,"link_type":15,"key":233,"isBroken":17,"text":37,"label":37,"to":35,"level":151,"viewAllLabel":165,"hasGroups":17},"2",[],"5b9008c9-ed8a-4bdf-aeaf-5037847de32c",{"id":235,"tags":236,"lang":9,"slug":237,"first_publication_date":238,"last_publication_date":239,"uid":240,"url":241,"link_type":15,"key":242,"isBroken":17,"text":243,"label":243,"to":241,"level":151,"viewAllLabel":244,"hasGroups":17,"children":245,"slot":225},"3",[],"discover-our-ecosystem","2026-07-23T13:40:10+0000","2026-07-30T14:44:40+0000","ecosystem","/ecosystem/","8812ff19-1102-449a-9898-eb0d7b1f1177","Ecosystem","View Ecosystem",[246,256],{"id":247,"tags":248,"lang":9,"slug":249,"first_publication_date":250,"last_publication_date":251,"uid":252,"url":253,"link_type":15,"key":254,"isBroken":17,"text":255,"label":255,"to":253,"description":165,"level":166,"group":197},"3-s-0",[],"join-our-academia-program","2026-07-24T08:28:12+0000","2026-08-04T13:14:20+0000","academia-program","/ecosystem/academia-program/","178e076d-16a5-42e2-914e-95b58d75af37","Academia Program",{"id":257,"tags":258,"lang":9,"slug":259,"first_publication_date":260,"last_publication_date":261,"uid":262,"url":263,"link_type":15,"key":264,"isBroken":17,"text":265,"label":265,"to":263,"description":165,"level":166,"group":197},"3-s-1",[],"join-our-startup-program","2026-07-23T12:42:12+0000","2026-08-12T14:34:44+0000","startup-program","/ecosystem/startup-program/","8fac5ab9-6327-4b00-bc31-152a6070cfc5","Startup Program",{"id":267,"tags":268,"lang":9,"slug":41,"first_publication_date":42,"last_publication_date":43,"uid":41,"url":44,"link_type":15,"key":269,"isBroken":17,"text":46,"label":46,"to":44,"level":151,"viewAllLabel":270,"hasGroups":17,"children":271,"slot":225},"4",[],"d8d6699d-1ef0-4ec7-857a-9b2a23d236d9","View all resources",[272,282,287],{"id":273,"tags":274,"lang":9,"slug":275,"first_publication_date":276,"last_publication_date":277,"uid":278,"url":279,"link_type":15,"key":280,"isBroken":17,"text":281,"label":281,"to":279,"description":165,"level":166,"group":197},"4-s-0",[],"unitelabs-university","2026-08-05T14:10:49+0000","2026-09-23T09:39:11+0000","university","/resources/university/","963a88fa-8ca6-470b-b89b-ac1b17395713","University",{"id":283,"tags":284,"lang":9,"slug":41,"first_publication_date":42,"last_publication_date":43,"uid":41,"url":44,"link_type":15,"key":285,"isBroken":17,"text":286,"label":286,"to":44,"description":165,"level":166,"group":197},"4-s-1",[],"ef5855a1-14f6-4420-8d47-b747e435ef08","Latest Articles",{"link_type":66,"key":288,"url":289,"target":69,"text":290,"id":291,"label":290,"to":289,"description":165,"level":166,"group":197},"f094d571-fed4-4fa6-bb5c-b1dce7a7ef07","https://docs.unitelabs.io","Support Docs","4-s-2",{"id":293,"tags":294,"lang":9,"slug":50,"first_publication_date":51,"last_publication_date":52,"uid":50,"url":53,"link_type":15,"key":295,"isBroken":17,"text":55,"label":55,"to":53,"level":151,"viewAllLabel":296,"hasGroups":17,"children":297,"slot":225},"5",[],"0ae2ccc5-50b5-4996-aa4b-0932d219ca0e","View all about",[298,303,307],{"id":299,"tags":300,"lang":9,"slug":50,"first_publication_date":51,"last_publication_date":52,"uid":50,"url":53,"link_type":15,"key":301,"isBroken":17,"text":302,"label":302,"to":53,"description":165,"level":166,"group":197},"5-s-0",[],"2e6db6d9-e99c-4fa7-933a-574e96a33fa6","About UniteLabs",{"link_type":66,"key":304,"url":68,"target":69,"text":305,"id":306,"label":305,"to":68,"description":165,"level":166,"group":197},"ddb8c9c6-d3cd-47fd-9db5-9b43ff5224de","Join the Team","5-s-1",{"id":308,"tags":309,"lang":9,"slug":310,"first_publication_date":23,"last_publication_date":311,"uid":312,"url":313,"link_type":15,"key":314,"isBroken":17,"text":315,"label":315,"to":313,"description":165,"level":166,"group":197},"5-s-2",[],"contact-us","2026-07-23T13:52:18+0000","contact","/company/contact/","86d985c2-13f2-47ce-b260-d31c86d9ea84","Contact Us",{"items":317},[318,320,323],{"link_type":66,"key":319,"url":75,"target":69,"text":76,"id":148,"label":76},"4a60eecf-e97e-4eb0-a504-f9d10a86693e",{"link_type":66,"key":321,"url":322,"target":69,"text":81,"id":227,"label":81},"96154e9d-6839-43a9-a055-7455cca4fb46","https://linkedin.com/company/unitelabs",{"link_type":66,"key":324,"url":325,"text":64,"id":231,"label":64,"target":69},"1dbab050-e74a-4b1d-88cd-5c464c1cc292","https://unitelabs.io/downloads/",{"items":327},[328,331,334,337,340],{"id":148,"type":96,"tags":329,"lang":9,"slug":108,"first_publication_date":109,"last_publication_date":110,"uid":111,"url":112,"link_type":15,"key":330,"isBroken":17,"text":114,"label":114},[],"ac213882-3dc6-4c7b-ab0c-1a11b9a71bda",{"id":227,"type":96,"tags":332,"lang":9,"slug":118,"first_publication_date":119,"last_publication_date":120,"uid":118,"url":121,"link_type":15,"key":333,"isBroken":17,"text":123,"label":123},[],"80f72514-ad3e-46f4-b493-7fe9ebd24f51",{"id":231,"type":96,"tags":335,"lang":9,"slug":98,"first_publication_date":99,"last_publication_date":100,"uid":101,"url":102,"link_type":15,"key":336,"isBroken":17,"text":104,"label":104},[],"e59104d7-5492-4a23-a8d1-5422dea41a1b",{"id":235,"type":96,"tags":338,"lang":9,"slug":127,"first_publication_date":128,"last_publication_date":129,"uid":127,"url":130,"link_type":15,"key":339,"isBroken":17,"text":132,"label":132},[],"4472b377-dbd1-40f5-8f80-d86c2949b6df",{"link_type":66,"key":341,"url":135,"text":136,"id":267,"label":136},"2298e0e6-1e5b-4296-8315-d3bc67917b9c",{"id":343,"uid":344,"url":345,"type":7,"href":346,"tags":347,"first_publication_date":348,"last_publication_date":349,"slugs":350,"linked_documents":352,"lang":9,"alternate_languages":353,"data":354},"arTfYhEAAC0AwhFr","inheco-odtc","/hub/inheco-odtc/","https://unitelabs.cdn.prismic.io/api/v2/documents/search?ref=arU9ghEAACcAwtTP&q=%5B%5B%3Ad+%3D+at%28document.id%2C+%22arTfYhEAAC0AwhFr%22%29+%5D%5D",[],"2026-09-24T14:01:07+0000","2026-09-24T15:10:25+0000",[351],"inheco-odtc-integration",[],[],{"title":355,"parent":361,"slices":365,"meta_title":643,"meta_description":644,"canonical_url":645,"json_ld":646},[356],{"type":357,"text":358,"spans":359,"direction":360},"heading1","Inheco ODTC Integration",[],"ltr",{"id":362,"type":7,"tags":363,"lang":9,"slug":32,"first_publication_date":33,"last_publication_date":34,"uid":32,"url":35,"link_type":15,"key":364,"isBroken":17},"aLb1oBIAACMADBNW",[],"9c08f7cb-f0e1-480d-8d6a-27811f112ae1",[366,399,417,469,485,532,564,627],{"variation":367,"version":368,"items":369,"primary":370,"id":396,"slice_type":397,"slice_label":398},"default","initial",[],{"badges":371,"title":378,"hook":381,"intro":382,"primary_cta":387,"docs_cta":391,"device_image":395},[372,375],{"label":373,"style":374},"Supported today","Status",{"label":376,"style":377},"Thermal Cycler","Neutral",[379],{"type":357,"text":358,"spans":380,"direction":360},[],"Write, load and start ODTC thermal methods via Python",[383],{"type":384,"text":385,"spans":386,"direction":360},"paragraph","Store and edit thermal methods, start a run by name, open and close the door, and stream block and lid temperatures in code. No SOAP client to build.",[],{"link_type":66,"key":388,"url":389,"text":390},"284a4aba-9d04-4f90-abbf-ccf1129ad1a0","https://unitelabs.io/company/book-demo/","Get this connector",{"link_type":66,"key":392,"url":393,"text":394},"e0757e11-77d1-4fb0-8f7f-29f1a0817fba","https://docs.unitelabs.io/","Read the docs",{},"hub_device_hero$b2000000-0000-4000-8000-000000000001","hub_device_hero",null,{"variation":367,"version":368,"items":400,"primary":401,"id":415,"slice_type":416,"slice_label":398},[],{"facts":402},[403,406,409,412],{"label":404,"value":405},"Models supported","ODTC 96, 384, 96XL, 384XL",{"label":407,"value":408},"Connects over","Ethernet (SiLA 1)",{"label":410,"value":411},"Vendor software","None required",{"label":413,"value":414},"Runs on","Linux / Windows / MacOS","device_facts$b2000000-0000-4000-8000-000000000002","device_facts",{"variation":367,"version":368,"items":418,"primary":419,"id":467,"slice_type":468,"slice_label":398},[],{"title":420,"description":425,"modules":429},[421],{"type":422,"text":423,"spans":424,"direction":360},"heading2","What You Can Command on the ODTC",[],[426],{"type":384,"text":427,"spans":428,"direction":360},"Methods, runs, temperatures, the door and device status each arrive as their own callable capability, so your code runs the ODTC directly.",[],[430,437,443,449,455,461],{"name":431,"description":432,"group":436},"Method Library",[433],{"type":384,"text":434,"spans":435,"direction":360},"Add, replace and delete methods and pre-methods by name, as typed steps or as raw MethodSet XML, without touching the rest of the library.",[],"Device",{"name":438,"description":439,"group":436},"Method Steps",[440],{"type":384,"text":441,"spans":442,"direction":360},"Plateau temperature and time, ramp slope, overshoot, loops, lid temperature and PID set per step, all typed with their units.",[],{"name":444,"description":445,"group":436},"Run Control",[446],{"type":384,"text":447,"spans":448,"direction":360},"Start a stored method by name with live progress and time remaining, and stop it mid-run.",[],{"name":450,"description":451,"group":436},"Temperature Monitoring",[452],{"type":384,"text":453,"spans":454,"direction":360},"A live stream of mount, lid, heatsink and ambient temperatures, plus the temperature trace of the last run.",[],{"name":456,"description":457,"group":436},"Door Control",[458],{"type":384,"text":459,"spans":460,"direction":360},"Open and close the door from code, so a plate handler can load and unload without an operator.",[],{"name":462,"description":463,"group":436},"Status and Recovery",[464],{"type":384,"text":465,"spans":466,"direction":360},"A status stream, device identification, pause and resume between processes, and a reset that re-initializes the ODTC.",[],"device_capabilities$b2000000-0000-4000-8000-000000000003","device_capabilities",{"variation":367,"version":368,"items":470,"primary":471,"id":483,"slice_type":484,"slice_label":398},[],{"content":472,"table":398},[473,476,479],{"type":422,"text":474,"spans":475,"direction":360},"Run a Method From Python",[],{"type":384,"text":477,"spans":478,"direction":360},"Ordinary async Python. Version it, test it, generate it at runtime like any other code.",[],{"type":480,"text":481,"spans":482,"direction":360},"preformatted","# find the ODTC, list its methods, run one, read the trace\nfrom unitelabs.sdk import AsyncApiClient\n\nclient = AsyncApiClient()\nodtc = await client.get_service_by_name(name=\"Inheco ODTC\")\n\nprint(await odtc.method_service.get_method_names())\n\nawait odtc.door_controller.close()\n\n# resolves when the run finishes\nawait odtc.method_service.start(method=\"PCR_30_cycles\", priority=1)\n\ntrace = await odtc.temperature_provider.get_last_data()\nawait odtc.door_controller.open()",[],"rich_text$b2000000-0000-4000-8000-000000000004","rich_text",{"variation":367,"version":368,"items":486,"primary":487,"id":530,"slice_type":531,"slice_label":398},[],{"tag":488,"title":489,"description":493,"cards":497,"gradient_color":398,"gradient_position":398},"How connectors work",[490],{"type":422,"text":491,"spans":492,"direction":360},"Know One Connector, and You Know Them All",[],[494],{"type":384,"text":495,"spans":496,"direction":360},"Three calls bring any instrument online, and the same Python drives whatever comes next.",[],[498,510,520],{"title":499,"tag":398,"description":504,"link":508},[500],{"type":501,"text":502,"spans":503,"direction":360},"heading3","One API, Every Instrument",[],[505],{"type":384,"text":506,"spans":507,"direction":360},"Three calls to start: configure(), initialize(), activate(). The same on a liquid handler, a reader or an incubator, whatever the vendor ships underneath.",[],{"link_type":509},"Any",{"title":511,"tag":398,"description":515,"link":519},[512],{"type":501,"text":513,"spans":514,"direction":360},"Ask a Connector What It Can Do",[],[516],{"type":384,"text":517,"spans":518,"direction":360},"Modules and actions are discoverable at runtime, and parameters carry their own types, units and constraints. You don't need a PDF to find out.",[],{"link_type":509},{"title":521,"tag":398,"description":525,"link":529},[522],{"type":501,"text":523,"spans":524,"direction":360},"One Outbound Connection",[],[526],{"type":384,"text":527,"spans":528,"direction":360},"One outbound TLS connection on port 443 to your tenant, so nothing needs opening inbound. Ports, hostnames and setup are in the docs.",[],{"link_type":509},"hub_tri_card$b2000000-0000-4000-8000-000000000006","hub_tri_card",{"variation":367,"version":368,"items":533,"primary":534,"id":562,"slice_type":563,"slice_label":398},[],{"title":535,"description":539,"links":543},[536],{"type":422,"text":537,"spans":538,"direction":360},"Also Works With…",[],[540],{"type":384,"text":541,"spans":542,"direction":360},"The same Python script can drive every instrument on the bench. A liquid handler sets up the plate, a thermal cycler can cycle it, and a reader measures it, all from one script.",[],[544,550,556],{"link":545,"label":548,"category":549},{"link_type":66,"key":546,"url":547},"de979e95-5171-400a-ad09-8b38e9d3f743","https://unitelabs.io/hub/agilent-bravo/","Agilent Bravo","Liquid handler",{"link":551,"label":554,"category":555},{"link_type":66,"key":552,"url":553},"b6b1f23c-ac60-4eec-a851-1b2654a06040","https://docs.unitelabs.io/device-guides/heater-shakers/inheco-thermoshake/","Inheco Thermoshake","Heater-shaker",{"link":557,"label":560,"category":561},{"link_type":66,"key":558,"url":559},"f5a0b32c-8692-4558-acbb-43e4178d72dc","https://docs.unitelabs.io/device-guides/readers/biotek-synergy-h1/","BioTek Synergy H1","Plate reader","works_with$b2000000-0000-4000-8000-000000000007","works_with",{"variation":367,"version":368,"items":565,"primary":566,"id":625,"slice_type":626,"slice_label":398},[],{"tag":567,"title":568,"description":572,"faq_items":576,"gradient_color":398,"gradient_position":398},"FAQ",[569],{"type":422,"text":570,"spans":571,"direction":360},"Inheco ODTC FAQ",[],[573],{"type":384,"text":574,"spans":575,"direction":360},"The questions automation engineers ask before integrating an ODTC.",[],[577,583,592,604,613,619],{"question":578,"answer":579},"Can you control an Inheco ODTC with Python?",[580],{"type":384,"text":581,"spans":582,"direction":360},"Yes. With the UniteLabs connector you call the ODTC from Python: store a thermal method, start it by name, open and close the door, and read block and lid temperatures. It's ordinary async Python, so it can be version-controlled, tested and generated at runtime like any other code.",[],{"question":584,"answer":585},"How does the connector talk to the ODTC?",[586,589],{"type":384,"text":587,"spans":588,"direction":360},"Over Ethernet, using the ODTC's own SiLA 1 interface. The connector finds the device by the node name on its SiLA label (ODTC_ followed by six characters), and falls back to a static IP or a MAC address sweep where name discovery is unreliable on your network.",[],{"type":384,"text":590,"spans":591,"direction":360},"The ODTC reports finished commands back to a small event listener on the connector host, so it needs to reach that host on the lab network. On Windows the connector adds the firewall rule itself. Toward your tenant it opens one outbound TLS connection on port 443.",[],{"question":593,"answer":594},"Is there a SiLA 2 connector for the ODTC?",[595],{"type":384,"text":596,"spans":597,"direction":360},"Yes. The ODTC ships with a SiLA 1 interface, and the connector exposes it as a SiLA 2 service on a local gRPC port, grouped into modules you can list at runtime. Find out more about how we use the SiLA 2 standard for instrument interoperability.",[598],{"start":599,"end":600,"type":601,"data":602},162,175,"hyperlink",{"link_type":66,"url":603,"target":69},"https://docs.unitelabs.io/connector-development/concepts/sila/",{"question":605,"answer":606},"Can I create and edit thermal methods in code?",[607,610],{"type":384,"text":608,"spans":609,"direction":360},"Yes. Add or replace a single method or pre-method by name and the rest of the library stays as it is. Build steps as typed data (plateau temperature and time, slope, overshoot, loops, lid temperature, PID set) or push MethodSet XML you already have.",[],{"type":384,"text":611,"spans":612,"direction":360},"A method's start block temperature has to match the last pre-method or the previous method's post-heating temperature. When it doesn't, the connector says so in the error.",[],{"question":614,"answer":615},"Which ODTC models are supported?",[616],{"type":384,"text":617,"spans":618,"direction":360},"The ODTC 96, ODTC 384, ODTC 96XL and ODTC 384XL, currently. Each method declares whether it targets the 96-well or 384-well block.",[],{"question":620,"answer":621},"Can I test ODTC code without the instrument?",[622],{"type":384,"text":623,"spans":624,"direction":360},"Yes. Set the connector to simulated mode and it keeps a method library in memory, preloaded with an example method, so you can add, replace, delete and start methods from your script before a run on hardware.",[],"faq$b2000000-0000-4000-8000-000000000008","faq",{"variation":628,"version":368,"items":629,"primary":630,"id":641,"slice_type":642,"slice_label":398},"blockAndGradient",[],{"headline":631,"eyebrow":635,"primary_cta":639},[632],{"type":422,"text":633,"spans":634,"direction":360},"Put Your ODTC to Work",[],[636],{"type":384,"text":637,"spans":638,"direction":360},"Tell us what you want to automate",[],{"link_type":66,"key":640,"url":389,"text":390},"b624e327-c443-4828-b54f-a23f00fb6854","text_section$b2000000-0000-4000-8000-000000000009","text_section","Inheco ODTC Integration | UniteLabs","Drive your thermal cycler in Python. Write, load, and start methods and stream block and lid temperatures, with no SOAP client to build.","https://unitelabs.io/hub/inheco-odtc/",[647],{"type":480,"text":648,"spans":649,"direction":360},"{\n  \"@type\": \"TechArticle\",\n  \"@id\": \"https://unitelabs.io/hub/inheco-odtc/#article\",\n  \"headline\": \"Inheco ODTC Integration\",\n  \"description\": \"Control the Inheco ODTC from Python: store and start thermal methods, open and close the door, and stream block and lid temperatures, with no SOAP client to build.\",\n  \"about\": {\n    \"@type\": \"Product\",\n    \"name\": \"Inheco ODTC\",\n    \"category\": \"Thermal Cycler\",\n    \"brand\": { \"@type\": \"Brand\", \"name\": \"Inheco\" }\n  },\n  \"proficiencyLevel\": \"Beginner\",\n  \"datePublished\": \"2026-09-24\",\n  \"author\": { \"@id\": \"https://unitelabs.io/#organization\" },\n  \"publisher\": { \"@id\": \"https://unitelabs.io/#organization\" },\n  \"isPartOf\": { \"@id\": \"https://unitelabs.io/hub/inheco-odtc/#webpage\" },\n  \"mainEntityOfPage\": { \"@id\": \"https://unitelabs.io/hub/inheco-odtc/#webpage\" }\n}",[],1790263076524]