ifif DS18B20outside < 50 then {
target_value = -0.4 * DS18B20outside + 40;
}
Этот блок проверяется при событии DS18B20outside.
if DS18B20outside then target_value = DS18B20outside + 10;
if target_value then OTset1 = target_value;
Событие датчика меняет target_value, а оно запускает второй блок и меняет OTset1.
cron может казаться постоянно истиннымif cron1h & DS18B20outside < 50 then {
OTset1 = -0.4 * DS18B20outside + 40;
}
В условии присутствуют два ID: cron1h и DS18B20outside. Блок будет проверяться при событии любого из них. Если значение cron1h остаётся ненулевым, очередное событие датчика снова делает всё условие истинным. Это не гарантирует выполнение строго раз в час.
Для строго периодического действия используйте отдельный импульсный элемент/таймер и не включайте обновляемые датчики в верхнее условие либо сначала сохраняйте валидное значение датчика в отдельную переменную.
При событии, упомянутом во вложенном if, проверяются также окружающие условия. Не создавайте присваивание той же переменной, которая участвует в условиях, без защиты от повторного события.
if source then {
if target != source then target = source;
}
Если поддержка проверена на вашей сборке, внутреннее служебное значение можно присваивать через :=, чтобы не создавать новое событие.
if onStart then {
boiler.SetBoilerStatus(BoilerEnable, 1, DHWenable, 0, 0, 0, 0, 0);
}
onStart — системное событие старта или переинициализации сценария, а не нажатие кнопки.
reboot() — перезапуск контроллера;digitalRead(pin) — чтение цифрового входа;analogRead(pin) — чтение аналогового входа;digitalWrite(pin, value) — запись цифрового выхода;digitalInvert(pin) — инвертирование цифрового выхода;deepSleep(seconds) — глубокий сон;getHours(), getMinutes(), getSeconds() — части времени;getMonth(), getDay() — месяц и день;gethhmm(), gethhmmss(), getTime() — время/дата строкой;getRSSI() — уровень Wi‑Fi;getIP() — IP-адрес;getUptime() — время работы;mqttPub(topic, payload) — публикация MQTT;mqttIsConnect() — состояние MQTT;wifiIsConnect() — состояние сети;addPortMap(...) — добавление перенаправления порта, применять только при понимании сетевых рисков;exit() — прекратить текущую обработку сценария.Доступность функции зависит от версии и платформы прошивки.
Источник: полное руководство SmartKot OpenTherm на Live-Control, редакция от 20.08.2026.