# Irrigation
System nawadniania
Irrigation
T
R
P
S1
S2
S3
S4
S5
S6
S7
S8
# Wejścia
| ID | Skrót | Nazwa | Typ | Domyślnie | Opis |
|---|---|---|---|---|---|
trigger | T | Wyzwól | BOOLEAN | false | |
reset | R | Resetuj | BOOLEAN | false |
# Wyjścia
| ID | Skrót | Nazwa | Typ | Domyślnie | Opis |
|---|---|---|---|---|---|
pump | P | Pompa | BOOLEAN | false | Wyjście sterowania pompą |
section_1 | S1 | Sekcja #1 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #1 |
section_2 | S2 | Sekcja #2 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #2 |
section_3 | S3 | Sekcja #3 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #3 |
section_4 | S4 | Sekcja #4 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #4 |
section_5 | S5 | Sekcja #5 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #5 |
section_6 | S6 | Sekcja #6 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #6 |
section_7 | S7 | Sekcja #7 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #7 |
section_8 | S8 | Sekcja #8 | BOOLEAN | false | Wyjście sterowania zaworem sekcji #8 |
# Konfiguracja
| ID | Nazwa | Typ | Domyślnie | Jednostka | Opis |
|---|---|---|---|---|---|
s1_enabled | S1 włączona | BOOLEAN | true | Określa czy sekcja #1 jest włączona | |
s1_duration | S1 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #1 Szczegóły: Widoczne gdy s1_enabled = true≥ 0 |
s2_enabled | S2 włączona | BOOLEAN | false | Określa czy sekcja #2 jest włączona | |
s2_duration | S2 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #2 Szczegóły: Widoczne gdy s2_enabled = true≥ 0 |
s3_enabled | S3 włączona | BOOLEAN | false | Określa czy sekcja #3 jest włączona | |
s3_duration | S3 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #3 Szczegóły: Widoczne gdy s3_enabled = true≥ 0 |
s4_enabled | S4 włączona | BOOLEAN | false | Określa czy sekcja #4 jest włączona | |
s4_duration | S4 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #4 Szczegóły: Widoczne gdy s4_enabled = true≥ 0 |
s5_enabled | S5 włączona | BOOLEAN | false | Określa czy sekcja #5 jest włączona | |
s5_duration | S5 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #5 Szczegóły: Widoczne gdy s5_enabled = true≥ 0 |
s6_enabled | S6 włączona | BOOLEAN | false | Określa czy sekcja #6 jest włączona | |
s6_duration | S6 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #6 Szczegóły: Widoczne gdy s6_enabled = true≥ 0 |
s7_enabled | S7 włączona | BOOLEAN | false | Określa czy sekcja #7 jest włączona | |
s7_duration | S7 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #7 Szczegóły: Widoczne gdy s7_enabled = true≥ 0 |
s8_enabled | S8 włączona | BOOLEAN | false | Określa czy sekcja #8 jest włączona | |
s8_duration | S8 czas trwania | NUMBER | 600 | s | Całkowity czas nawadniania w sekundach dla sekcji #8 Szczegóły: Widoczne gdy s8_enabled = true≥ 0 |
# Stan
| ID | Nazwa | Typ | Domyślnie | Jednostka | Opis |
|---|---|---|---|---|---|
active | Aktywny | BOOLEAN | false | Czy nawadnianie jest obecnie aktywne |
# Kod źródłowy
Pokaż kod Volang
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
}
