Звідки взявся oCBot
Від автора. Це не інструкція і не маніфест. Це відповідь на питання, яке ставлять найчастіше: чому не взяти готовий контролер, а писати своє. Відповідь довга, бо шлях був довгий.
Перший апарат#
Перший апарат був задовго до будь-якої автоматики. Дядько працював у Донецьку на аерокосмічному факультеті і мав доступ до титану, нержавійки й правильних зварювальників. Тому перший апарат — звичайна «буква Г» на молочному бідоні, охолодження трубкою з крана, на кухні.
У 2014-му, після переїзду до Львова, з'явилась перша колона: 30-літровий куб і двохдюймова царга з магазинних деталей. Частину вузлів довелося замовляти за власними кресленнями — те, що продавалось, було скопійоване з російських форумів і за фізикою працювати не могло. Автоматики не було й не треба було: інженерна освіта і досвід дозволяють вести процес руками. І зараз дозволяють.
Коли постало питання автоматики#
Коли настоянкам знадобився чистіший продукт, куб став на 80 літрів, а ректифікація тримала під добу. Стояти добу біля колони — уже не хобі.
Альтернатив тоді не було. Найпередовіше з відкритого — контролер з форуму, який зібрав кум-електронник. Далі очікування зіткнулися з реаліями: сотні людей на форумі обговорювали ті самі проблеми. Електрику вирішили своєю платою — вона працювала як годинник, десяток-два розійшлися по друзях. А от код виявився таким, що додати в нього своє було неможливо: друг-програміст витратив кілька тижнів і сказав, що спершу треба вигребти все сміття. Вирішили, що воно того не варте.
Наступні кілька років пішли на власну прошивку з найманими програмістами. Результату не дали. Програміст може писати код, але не розуміє процесу, а пояснити, що і як має бути, забирає більше часу, ніж написати самому.
Рішення: інструмент, а не прошивка під задачу#
У якийсь момент рішення стало стратегічним: не писати прошивку під конкретну дію чи задачу, а написати інструмент, який закриє будь-яку забаганку. А коли з'явилась перша власна збірка, кожна розмова з друзями, колегами і клієнтами показувала одне й те саме: у кожного своя каструля, своя периферія, свої обмеження по електриці й воді, свої можливості. Так замість прошивки з'явилась операційна система.
Шість свобод, під які писався інструмент#
- Будь-яка периферія. Не два клапани на один вихід як костиль, а стільки датчиків і виконавчих пристроїв, скільки треба. ESP32 із платами розширення це дозволяє. Див. Свобода периферії.
- Свобода інтерфейсів. Пристрій — це пристрій, а не «шнурок, підключений до конкретного порту». Поміняти порт, замінити датчик, перенести клапан — без перепрошивки.
- Пульт поза сценарієм. Окремо ввімкнути воду, окремо глянути датчик, окремо запустити двигун — без складної автоматизації. Див. Віртуальні панелі оператора.
- Математика між периферією. Зв'язки задаються калькуляторами: між термометром і ТЕНом, між обертами насоса і наповненням куба. Об'єм можна міряти рівнем, витратоміром, вагою або ємністю — людина обирає, як саме. Див. Базові скрипти.
- Керувати станами, а не діями. Скрипт — математична модель взаємодії периферії без етапів, початку й кінця. Сценарій лише каже скрипту, на які параметри вийти. Це оркестрація, і саме вона дозволила об'єднати кілька контролерів в одну систему. Див. Сценарії і Мультиконтролерність.
- Безпека на рівні периферії. На ринку аварія живе в сценарії. Тут будь-який датчик, навіть не дотичний до сценарію, може бути умовою аварії або блокувати силову частину. Див. розділ про безпеку в Сценаріях.
Коли стало зрозуміло, що контролерів може бути кілька, зникла й потреба у власній платі: на ринку є готові контролери за розумні гроші, і прошивка підтримує їх як базові. Купив, прошив, користуєшся. Див. KC868-A16 і KC868-A6.
Апетит: пам'ять#
Після цього шляху з'явився апетит на те, чого не дає жоден контролер, — пам'ять. Нотатки під час прогону, логування, паспорт прогону з витратами електрики й води, плеєр, який прокручує прогін як відео. Про це — Пам'ять прогону у базі «Портал».
Чесна ціна#
За все це заплачено часом користувача. Операційна система потребує більше часу, щоб розібратися й налаштувати, ніж маленька базова прошивка. Натомість нове з'являється без «костилів» під кожну задачу: потрібна модель — з'являється калькулятор; потрібна периферія — додається елемент; потрібна логіка — новий скрипт, який підхоплюють усі сценарії. Це і є режим «крок за кроком», у якому проєкт живе дотепер.
Що далі?#
- Ідеологія oCBot — принципи, які з цієї історії випливають.
- Сфери призначення — де це працює, крім дистиляції.