# Irrigation

Verarbeitung
Irrigation
T
R
P
S1
S2
S3
S4
S5
S6
S7
S8

# Eingänge

IDKürzelNameTypStandardBeschreibung
triggerTtriggerBOOLEANfalse
resetRresetBOOLEANfalse

# Ausgänge

IDKürzelNameTypStandardBeschreibung
pumpPpumpBOOLEANfalse
section_1S1section_1BOOLEANfalse
section_2S2section_2BOOLEANfalse
section_3S3section_3BOOLEANfalse
section_4S4section_4BOOLEANfalse
section_5S5section_5BOOLEANfalse
section_6S6section_6BOOLEANfalse
section_7S7section_7BOOLEANfalse
section_8S8section_8BOOLEANfalse

# Konfiguration

IDNameTypStandardEinheitBeschreibung
s1_enableds1_enabledBOOLEANtrue
s1_durations1_durationNUMBER600s

Details:

Sichtbar wenns1_enabled = true
≥ 0
s2_enableds2_enabledBOOLEANfalse
s2_durations2_durationNUMBER600s

Details:

Sichtbar wenns2_enabled = true
≥ 0
s3_enableds3_enabledBOOLEANfalse
s3_durations3_durationNUMBER600s

Details:

Sichtbar wenns3_enabled = true
≥ 0
s4_enableds4_enabledBOOLEANfalse
s4_durations4_durationNUMBER600s

Details:

Sichtbar wenns4_enabled = true
≥ 0
s5_enableds5_enabledBOOLEANfalse
s5_durations5_durationNUMBER600s

Details:

Sichtbar wenns5_enabled = true
≥ 0
s6_enableds6_enabledBOOLEANfalse
s6_durations6_durationNUMBER600s

Details:

Sichtbar wenns6_enabled = true
≥ 0
s7_enableds7_enabledBOOLEANfalse
s7_durations7_durationNUMBER600s

Details:

Sichtbar wenns7_enabled = true
≥ 0
s8_enableds8_enabledBOOLEANfalse
s8_durations8_durationNUMBER600s

Details:

Sichtbar wenns8_enabled = true
≥ 0

# Zustand

IDNameTypStandardEinheitBeschreibung
activeactiveBOOLEANfalse

# Quellcode

Volang-Quellcode anzeigen
channel = input::channel()

section_count = 8

fn disable_all(section_count) {
    section = 0
    while (section < section_count) {
        section += 1
        output::set(str::fmt("section_{}", section), false)
    }
}

extern fn onCallback(section_count, callback_id) {
    disable_all(section_count)

    current_section = 0
    if (callback_id == 0) {
        output::set("pump", true)
        callback::set(0, "onCallback", section_count, 1)
        return
    } else if (callback_id > 0 and callback_id < (section_count + 1)) {
        current_section = callback_id
    } else if (callback_id == (section_count + 1)) {
        output::set("pump", false)
        state::set("active", false)
        return
    }

    section_output = str::fmt("section_{}", current_section)
    section_enabled_cfg = str::fmt("s{}_enabled", current_section)
    section_duration_cfg = str::fmt("s{}_duration", current_section)

    section_enabled = config::get(section_enabled_cfg)
    section_duration = config::get(section_duration_cfg)

    if (!section_enabled) {
        callback::set(0, "onCallback", section_count, current_section + 1)
        return
    }

    output::set(section_output, true)
    callback::set(section_duration * 1000, "onCallback", section_count, current_section + 1)
}

input_value = input::value()

if (channel == "trigger" and input_value) {
    if (state::get("active")) {
        return
    }

    state::set("active", true)
    callback::set(0, "onCallback", section_count, 0)
    return
}

if (channel == "reset") {
    callback::clear()
    callback::set(0, "onCallback", section_count, section_count + 1)
    return
}
Erfahren Sie, wie der Logikbaustein Irrigation funktioniert, wann Sie ihn einsetzen und wie Sie ihn in Ihrer Voldeno Smart-Home-Automatisierung konfigurieren.