Мій перший сценарій: Крок за кроком
Розробка власних сценаріїв керування в oCBot дозволяє повністю адаптувати систему під унікальну конфігурацію обладнання. Автоматика oCBot виконує кастомні сценарії на базі мови C++, інтегрованої в середовище виконання FreeRTOS на ESP32.
Шаблон простого скрипта#
Розглянемо базову структуру класу сценарію, який виконує нагрівання куба до 80°C та після досягнення цієї температури автоматично переходить до наступного кроку (або зупиняє процес).
#include "OcbScript.h"
class MyFirstScenario : public OcbScript {
private:
int tempSensorId; // ID давача температури куба
int heaterRelayId; // ID реле керування ТЕНом
float targetTemperature; // Цільова температура
public:
// Конструктор класу
MyFirstScenario() {
tempSensorId = 1; // Вкажіть ID вашого давача з меню Периферії
heaterRelayId = 2; // Вкажіть ID вашого реле/SSR
targetTemperature = 80.0;
}
// Метод ініціалізації: викликається один раз при запуску скрипта
void init() override {
// Переконуємось, що реле вимкнене на старті
setPeripheralValue(heaterRelayId, 0.0);
logMessage("Сценарій запущено. Цільова температура: 80°C");
}
// Основний цикл: викликається періодично (наприклад, раз на секунду)
void loop() override {
// Зчитуємо поточну температуру давача
float currentTemp = getPeripheralValue(tempSensorId);
logMessage("Поточна температура: " + String(currentTemp, 1) + " °C");
if (currentTemp < targetTemperature) {
// Якщо температура нижча за цільову, вмикаємо ТЕН на повну
setPeripheralValue(heaterRelayId, 1.0);
} else {
// При досягненні цілі вимикаємо ТЕН та завершуємо скрипт
setPeripheralValue(heaterRelayId, 0.0);
logMessage("Цільову температуру досягнуто! Вимикаємо нагрів.");
stopScript(); // Зупиняємо виконання поточного сценарію
}
}
};
Розбір ключових функцій API oCBot#
Для взаємодії з апаратною частиною у ваших скриптах використовуються такі системні методи:
getPeripheralValue(int id):- Повертає поточне значення периферійного пристрою за його числовим ID. Для давачів температури це буде значення в градусах Цельсія (наприклад,
78.4), для цифрових входів,0.0або1.0.
- Повертає поточне значення периферійного пристрою за його числовим ID. Для давачів температури це буде значення в градусах Цельсія (наприклад,
setPeripheralValue(int id, float value):- Встановлює стан виконавчого пристрою.
- Для реле:
0.0(вимкнено) або1.0(увімкнено). - Для регуляторів або ШІМ-клапанів: відсоткове значення від
0.0до100.0.
logMessage(String text):- Відправляє повідомлення у консоль логів веб-інтерфейсу oCBot, що дозволяє відстежувати хід роботи сценарію у реальному часі.
stopScript():- Коректно завершує виконання поточного сценарію та переводить систему в режим очікування (Idle).
Перед запуском кастомного скрипта завжди перевіряйте правильність ідентифікаторів (ID) периферійних пристроїв. Їх можна знайти на вкладці Периферія головного меню. Неправильний ID давача призведе до того, що функція getPeripheralValue поверне 0.0, і система може продовжувати безконтрольний нагрів ТЕНу!