Hi,
maybe the following example can help you:
I have an irrigation system consisting of four (4) lines (Strang1, Strang2, Vordergarten, BlumenHinten).
I have also a cistern with a pump as well a a humidity sensor in the lawn.
Note that switches (weekdays from Montag/Monday to Sonntag/Sunday) and Numbers (Stunde/hours and Minute/minutes) per line are also defined.
My item file Looks like this:
// ### Bewaesserungstimer ##################################################################################################################
String Bewaesserungstimer â[%s]â
Switch weckerMontag âMontagâ (gWeckerWochentage)
Switch weckerDienstag âDienstagâ (gWeckerWochentage)
Switch weckerMittwoch âMittwochâ (gWeckerWochentage)
Switch weckerDonnerstag âDonnerstagâ (gWeckerWochentage)
Switch weckerFreitag âFreitagâ (gWeckerWochentage)
Switch weckerSamstag âSamstagâ (gWeckerWochentage)
Switch weckerSonntag âSonntagâ (gWeckerWochentage)
String weckerZeitMessage â%sâ
Number weckerZeitStunde âStunde [%d]â (gWeckerZeit)
Number weckerZeitMinute âMinute [%d]â (gWeckerZeit)
Number weckerZeitMinuteTimer âMinute [%d]â (gWeckerZeit)
Number weckerZeitStundeTimer âMinute [%d]â (gWeckerZeit)
Number weckerZeitDauerStrang1 âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerTimerStrang1 âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerStrang2 âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerTimerStrang2 âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerTerrasse âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerTimerTerrasse âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerVorne âDauer in Minuten [%d]â (gWeckerZeit)
Number weckerZeitDauerTimerVorne âDauer in Minuten [%d]â (gWeckerZeit)
Number ZeitHelp âZeitHelp [%d]â
Dimmer Strang1 âStrang 1 [%d %%]â (Steckdose, Garten, Bewaesserung) { rwe=âid=25de4c34-66fb-4fc5-a5ba-a006228439fb,param=dimmerâ }
Dimmer Strang2 âStrang 2 [%d %%]â (Steckdose, Garten, Bewaesserung) { rwe=âid=3276a4bc-1cb9-4e56-9e77-6d8fd139eff4,param=dimmerâ }
Dimmer Vordergarten âVordergarten [%d %%]â (Steckdose, Garten, Bewaesserung) { rwe=âid=ce6863fa-a67d-4219-8047-505e060aada7,param=dimmerâ }
Dimmer BlumenHinten âBlumen Hinten [%d %%]â (Steckdose, Garten, Bewaesserung) { rwe=âid=aa20a890-2647-47c0-9b8e-6408bbbe03c2,param=dimmerâ }
Number Bewaesserung_Chart_Period âBewaesserung_Chart_Periodâ
Switch Zisternenpumpe âZisternenpumpeâ (Steckdose, Garten) {rwe=âid=f607806f-7360-4c68-bdc5-a854f273f8b4,param=switchâ}
Number Bewaesserungszeit âBewaesserungszeitâ
Number Countdown âCountdown [%.0f]â
Number FeuchteRasen1 âFeuchte Rasen1 [%.0f]â (Garten, Bodenfeuchte) { exec="<[/data/OpenHab/NETAVRIO.sh:60000:REGEX((.*?))]" }
Number FeuchteRasen_Chart_Period âBewaesserung_Chart_Periodâ
Based on the example presented here âhttps://github.com/openhab/openhab/wiki/Samples-Rules#irrigation-controllerâ I have adopted the rule to the follwing:
// ### Zeit Minuten ################################################################################################################
rule âZeit Minutenâ
when
Item weckerZeitMinuteTimer received command
then
switch (receivedCommand) {
case 0 : {postUpdate(weckerZeitMinute, 0}
case 1 : {postUpdate(weckerZeitMinute, 5}
case 2 : {postUpdate(weckerZeitMinute, 10}
case 3 : {postUpdate(weckerZeitMinute, 15}
case 4 : {postUpdate(weckerZeitMinute, 20}
case 5 : {postUpdate(weckerZeitMinute, 25}
case 6 : {postUpdate(weckerZeitMinute, 30}
case 7 : {postUpdate(weckerZeitMinute, 35}
case 8 : {postUpdate(weckerZeitMinute, 40}
case 9 : {postUpdate(weckerZeitMinute, 45}
case 10 : {postUpdate(weckerZeitMinute, 50}
case 11 : {postUpdate(weckerZeitMinute, 55}
}
end
// ### Zeit Stunden ################################################################################################################
rule âZeit Stundenâ
when
Item weckerZeitStundeTimer received command
then
switch (receivedCommand) {
case 0 : {postUpdate(weckerZeitStunde, 0}
case 1 : {postUpdate(weckerZeitStunde, 1}
case 2 : {postUpdate(weckerZeitStunde, 2}
case 3 : {postUpdate(weckerZeitStunde, 3}
case 4 : {postUpdate(weckerZeitStunde, 4}
case 5 : {postUpdate(weckerZeitStunde, 5}
case 6 : {postUpdate(weckerZeitStunde, 6}
case 7 : {postUpdate(weckerZeitStunde, 7}
case 8 : {postUpdate(weckerZeitStunde, 8}
case 9 : {postUpdate(weckerZeitStunde, 9}
case 10 : {postUpdate(weckerZeitStunde, 10}
case 11 : {postUpdate(weckerZeitStunde, 11}
case 12 : {postUpdate(weckerZeitStunde, 12}
case 13 : {postUpdate(weckerZeitStunde, 13}
case 14 : {postUpdate(weckerZeitStunde, 14}
case 15 : {postUpdate(weckerZeitStunde, 15}
case 16 : {postUpdate(weckerZeitStunde, 16}
case 17 : {postUpdate(weckerZeitStunde, 17}
case 18 : {postUpdate(weckerZeitStunde, 18}
case 19 : {postUpdate(weckerZeitStunde, 19}
case 20 : {postUpdate(weckerZeitStunde, 20}
case 21 : {postUpdate(weckerZeitStunde, 21}
case 22 : {postUpdate(weckerZeitStunde, 22}
case 23 : {postUpdate(weckerZeitStunde, 23}
}
end
// ### Zeit Dauer Strang 1 ################################################################################################################
rule âZeit Dauer Strang 1â
when
Item weckerZeitDauerTimerStrang1 received command
then
switch (receivedCommand) {
case 0 : {postUpdate(weckerZeitDauerStrang1, 0}
case 1 : {postUpdate(weckerZeitDauerStrang1, 5}
case 2 : {postUpdate(weckerZeitDauerStrang1, 10}
case 3 : {postUpdate(weckerZeitDauerStrang1, 15}
case 4 : {postUpdate(weckerZeitDauerStrang1, 20}
case 5 : {postUpdate(weckerZeitDauerStrang1, 25}
case 6 : {postUpdate(weckerZeitDauerStrang1, 30}
case 7 : {postUpdate(weckerZeitDauerStrang1, 35}
case 8 : {postUpdate(weckerZeitDauerStrang1, 40}
case 9 : {postUpdate(weckerZeitDauerStrang1, 45}
case 10 : {postUpdate(weckerZeitDauerStrang1, 50}
case 11 : {postUpdate(weckerZeitDauerStrang1, 55}
}
end
// ### Zeit Dauer Strang 2 ################################################################################################################
rule âZeit Dauer Strang 2â
when
Item weckerZeitDauerTimerStrang2 received command
then
switch (receivedCommand) {
case 0 : {postUpdate(weckerZeitDauerStrang2, 0}
case 1 : {postUpdate(weckerZeitDauerStrang2, 5}
case 2 : {postUpdate(weckerZeitDauerStrang2, 10}
case 3 : {postUpdate(weckerZeitDauerStrang2, 15}
case 4 : {postUpdate(weckerZeitDauerStrang2, 20}
case 5 : {postUpdate(weckerZeitDauerStrang2, 25}
case 6 : {postUpdate(weckerZeitDauerStrang2, 30}
case 7 : {postUpdate(weckerZeitDauerStrang2, 35}
case 8 : {postUpdate(weckerZeitDauerStrang2, 40}
case 9 : {postUpdate(weckerZeitDauerStrang2, 45}
case 10 : {postUpdate(weckerZeitDauerStrang2, 50}
case 11 : {postUpdate(weckerZeitDauerStrang2, 55}
}
end
// ### Zeit Dauer Terrasse ################################################################################################################
rule âZeit Dauer Terrasseâ
when
Item weckerZeitDauerTimerTerrasse received command
then
switch (receivedCommand) {
case 0 : {postUpdate(weckerZeitDauerTerrasse, 0}
case 1 : {postUpdate(weckerZeitDauerTerrasse, 5}
case 2 : {postUpdate(weckerZeitDauerTerrasse, 10}
case 3 : {postUpdate(weckerZeitDauerTerrasse, 15}
case 4 : {postUpdate(weckerZeitDauerTerrasse, 20}
case 5 : {postUpdate(weckerZeitDauerTerrasse, 25}
case 6 : {postUpdate(weckerZeitDauerTerrasse, 30}
case 7 : {postUpdate(weckerZeitDauerTerrasse, 35}
case 8 : {postUpdate(weckerZeitDauerTerrasse, 40}
case 9 : {postUpdate(weckerZeitDauerTerrasse, 45}
case 10 : {postUpdate(weckerZeitDauerTerrasse, 50}
case 11 : {postUpdate(weckerZeitDauerTerrasse, 55}
}
end
// ### Zeit Dauer Vorne ################################################################################################################
rule âZeit Dauer Vorneâ
when
Item weckerZeitDauerTimerVorne received command
then
switch (receivedCommand) {
case 0 : {postUpdate(weckerZeitDauerVorne, 0}
case 1 : {postUpdate(weckerZeitDauerVorne, 5}
case 2 : {postUpdate(weckerZeitDauerVorne, 10}
case 3 : {postUpdate(weckerZeitDauerVorne, 15}
case 4 : {postUpdate(weckerZeitDauerVorne, 20}
case 5 : {postUpdate(weckerZeitDauerVorne, 25}
case 6 : {postUpdate(weckerZeitDauerVorne, 30}
case 7 : {postUpdate(weckerZeitDauerVorne, 35}
case 8 : {postUpdate(weckerZeitDauerVorne, 40}
case 9 : {postUpdate(weckerZeitDauerVorne, 45}
case 10 : {postUpdate(weckerZeitDauerVorne, 50}
case 11 : {postUpdate(weckerZeitDauerVorne, 55}
}
end
// ### BEWAESSERUNGSTIMER ###########################################################################################################################
rule âInitializationâ
when
System started
then
postUpdate(weckerZeitStundeTimer, 0)
postUpdate(weckerZeitMinuteTimer, 0)
postUpdate(weckerZeitDauerTimerStrang1, 0)
postUpdate(weckerZeitDauerTimerStrang2, 0)
postUpdate(weckerZeitDauerTimerTerrasse, 0)
postUpdate(weckerZeitDauerTimerVorne, 0)
postUpdate(weckerZeitStunde, 0)
postUpdate(weckerZeitMinute, 0)
postUpdate(weckerZeitDauerStrang1, 0)
postUpdate(weckerZeitDauerStrang2, 0)
postUpdate(weckerZeitDauerTerrasse, 0)
postUpdate(weckerZeitDauerVorne, 0)
postUpdate(weckerMontag, OFF)
postUpdate(weckerDienstag, OFF)
postUpdate(weckerMittwoch, OFF)
postUpdate(weckerDonnerstag, OFF)
postUpdate(weckerFreitag, OFF)
postUpdate(weckerSamstag, OFF)
postUpdate(weckerSonntag, OFF)
postUpdate(weckerZeitMessage, âOFFâ)
postUpdate(Bewaesserungstimer, âOFFâ)
end
rule âWeckzeitâ
when
Item weckerMontag changed or
Item weckerDienstag changed or
Item weckerMittwoch changed or
Item weckerDonnerstag changed or
Item weckerFreitag changed or
Item weckerSamstag changed or
Item weckerSonntag changed or
Item weckerZeitStunde changed or
Item weckerZeitMinute changed
then
postUpdate(Bewaesserungstimer, âONâ)
if ((weckerMontag.state == OFF) && (weckerDienstag.state == OFF) && (weckerMittwoch.state == OFF) && (weckerDonnerstag.state == OFF) && (weckerFreitag.state == OFF) && (weckerSamstag.state == OFF) && (weckerSonntag.state == OFF)) {
postUpdate(weckerZeitStundeTimer, 0)
postUpdate(weckerZeitMinuteTimer, 0)
postUpdate(weckerZeitDauerTimerStrang1, 0)
postUpdate(weckerZeitDauerTimerStrang2, 0)
postUpdate(weckerZeitDauerTimerTerrasse, 0)
postUpdate(weckerZeitDauerTimerVorne, 0)
postUpdate(weckerZeitStunde, 0)
postUpdate(weckerZeitMinute, 0)
postUpdate(weckerZeitDauerStrang1, 0)
postUpdate(weckerZeitDauerStrang2, 0)
postUpdate(weckerZeitDauerTerrasse, 0)
postUpdate(weckerZeitDauerVorne, 0)
postUpdate(weckerZeitMessage, âOFFâ)
postUpdate(Bewaesserungstimer, âOFFâ)
}
var String msg = ""
// Copy the Alarm-Time from the UI to local variables
var stunde = weckerZeitStunde.state as DecimalType
var minute = weckerZeitMinute.state as DecimalType
// Combine the hour and minutes to one string to be displayed in the
// user interface
if (stunde < 10) { msg = "0" }
msg = msg + weckerZeitStunde.state.format("%d") + ":"
if (minute < 10) { msg = msg + "0" }
msg = msg + weckerZeitMinute.state.format("%d")
postUpdate(weckerZeitMessage,msg)
// calculate the alarm time [min]
var int weckzeit1
weckzeit1 = (weckerZeitStunde.state as DecimalType).intValue * 60 +
(weckerZeitMinute.state as DecimalType).intValue
weckzeit1 = weckzeit1.intValue
// calculate current time [min]
var int jetzt1
jetzt1 = now.getMinuteOfDay
jetzt1 = jetzt1.intValue
// calculate the difference between the requested alarm time and
// current time (again in minutes)
var int delta1
delta1 = (weckzeit1 - jetzt1)
delta1 = delta1.intValue
// add one day (1440 minutes) if alarm time for today already passed
if (jetzt1 > weckzeit1) { delta1 = delta1 + 1440 }
// check if there is already an alarm timer; cancel it if present
if (timer1 != null) {
timer1.cancel
timer1 = null
}
var int endtimeStrang1
endtimeStrang1 = (weckerZeitDauerStrang1.state as DecimalType).intValue * 60 * 1000
endtimeStrang1 = endtimeStrang1.intValue
var int endtimeStrang2
endtimeStrang2 = (weckerZeitDauerStrang2.state as DecimalType).intValue * 60 * 1000
endtimeStrang2 = endtimeStrang2.intValue
var int endtimeTerrasse
endtimeTerrasse = (weckerZeitDauerTerrasse.state as DecimalType).intValue * 60 * 1000
endtimeTerrasse = endtimeTerrasse.intValue
var int endtimeVorne
endtimeVorne = (weckerZeitDauerVorne.state as DecimalType).intValue * 60 * 1000
endtimeVorne = endtimeVorne.intValue
// create a new timer using the calculated delta [min]
timer1 = createTimer(now.plusMinutes(delta1)) [|
// This code will be executed if the timer triggers
// ************************************************
// check if alarm clock is armed for this weekday
var Number day = now.getDayOfWeek
if (((day == 1) && (weckerMontag.state == ON)) ||
((day == 2) && (weckerDienstag.state == ON)) ||
((day == 3) && (weckerMittwoch.state == ON)) ||
((day == 4) && (weckerDonnerstag.state == ON)) ||
((day == 5) && (weckerFreitag.state == ON)) ||
((day == 6) && (weckerSamstag.state == ON)) ||
((day == 7) && (weckerSonntag.state == ON))) {
// The things to do if the alarm clock is enabled for this day of week:
// ...
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
if (endtimeStrang1>0) {
sendCommand(HueOfen, ON)
sendCommand(Strang1, "100")
// ##############################
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
Thread::sleep(endtimeStrang1)
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
sendCommand(HueOfen, OFF)
sendCommand(Strang1, "0")
}
if (endtimeStrang2>0) {
sendCommand(HueRegalLinks, ON)
sendCommand(Strang2, "100")
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
Thread::sleep(endtimeStrang2)
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
sendCommand(HueRegalLinks, OFF)
sendCommand(Strang2, "0")
}
if (endtimeTerrasse>0) {
sendCommand(HueRegalRechts, ON)
sendCommand(Vordergarten, "100")
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
Thread::sleep(endtimeTerrasse)
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
sendCommand(HueRegalRechts, OFF)
sendCommand(Vordergarten, "0")
}
if (endtimeVorne>0) {
sendCommand(HueKlavier, ON)
sendCommand(BlumenHinten, "100")
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
Thread::sleep(endtimeVorne)
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
sendCommand(HueKlavier, OFF)
sendCommand(BlumenHinten, "0")
}
Strang1.persist
Strang2.persist
Vordergarten.persist
BlumenHinten.persist
// ##############################
]
}
// Re-Arm the timer to trigger again tomorrow (same time)
timer1.reschedule(now.plusHours(24))
// ************************************************
// Here the code ends that executes once the timer triggers
]
Finally my sitemap Looks like the follwing:
Group item=Garten icon=âPflanzenâ{
Frame item=Markise
{
Slider item=MarkiseRechts icon=âMarkiseâ
Slider item=MarkiseLinks icon=âMarkiseâ
}
Frame item=Licht
{
Switch item=Gartenbeleuchtung icon=âGartenbeleuchtungâ
}
Frame label=Bewaesserung icon=âGartenHintenâ
{
Slider item=Strang1 icon=âIrrigation1â switchSupport
Slider item=Strang2 icon=âIrrigation1â switchSupport
Slider item=BlumenHinten icon=âIrrigation1â switchSupport
Slider item=Vordergarten icon=âIrrigation1â switchSupport
}
Frame label=âBewaesserungszeitenâ {
Text label=âBewĂ€sserungstimer [%s]â item=Bewaesserungstimer icon=âIrrigation1â {
Frame label=âStartzeitâ {
Selection label=âStundeâ icon=âclockâ item=weckerZeitStundeTimer mappings=[0=â00 hâ, 1=â01 hâ, 2=â02 hâ, 3=â03 hâ, 4=â04 hâ, 5=â05 hâ, 6=â06 hâ, 7=â07 hâ, 8=â08 hâ, 9=â09 hâ, 10=â10 hâ, 11=â11 hâ, 12=â12 hâ, 13=â13 hâ, 14=â14 hâ, 15=â15 hâ, 16=â16 hâ, 17=â17 hâ, 18=â18 hâ, 19=â19 hâ, 20=â20 hâ, 21=â21 hâ, 22=â22 hâ, 23=â23 hâ]
Selection label=âMinuteâ icon=âclockâ item=weckerZeitMinuteTimer mappings=[0=â0 minâ, 1=â5 minâ, 2=â10 minâ, 3=â15 minâ, 4=â20 minâ, 5=â25 minâ, 6=â30 minâ, 7=â35 minâ, 8=â40 minâ, 9=â45 minâ, 10=â50 minâ, 11=â55 minâ]
}
Frame label=âBeregnungsdauernâ {
Selection label=âStrang 1 (min)â icon=âclockâ item=weckerZeitDauerTimerStrang1 mappings=[0=âOFFâ, 1=â5 minâ, 2=â10 minâ, 3=â15 minâ, 4=â20 minâ, 5=â25 minâ, 6=â30 minâ, 7=â35 minâ, 8=â40 minâ, 9=â45 minâ, 10=â50 minâ, 11=â55 minâ]
Selection label=âStrang 2 (min)â icon=âclockâ item=weckerZeitDauerTimerStrang2 mappings=[0=âOFFâ, 1=â5 minâ, 2=â10 minâ, 3=â15 minâ, 4=â20 minâ, 5=â25 minâ, 6=â30 minâ, 7=â35 minâ, 8=â40 minâ, 9=â45 minâ, 10=â50 minâ, 11=â55 minâ]
Selection label=âTerrasse (min)â icon=âclockâ item=weckerZeitDauerTimerTerrasse mappings=[0=âOFFâ, 1=â5 minâ, 2=â10 minâ, 3=â15 minâ, 4=â20 minâ, 5=â25 minâ, 6=â30 minâ, 7=â35 minâ, 8=â40 minâ, 9=â45 minâ, 10=â50 minâ, 11=â55 minâ]
Selection label=âVordergarten (min)â icon=âclockâ item=weckerZeitDauerTimerVorne mappings=[0=âOFFâ, 1=â5 minâ, 2=â10 minâ, 3=â15 minâ, 4=â20 minâ, 5=â25 minâ, 6=â30 minâ, 7=â35 minâ, 8=â40 minâ, 9=â45 minâ, 10=â50 minâ, 11=â55 minâ]
}
Frame label=âWochentageâ {
Switch item=weckerMontag
Switch item=weckerDienstag
Switch item=weckerMittwoch
Switch item=weckerDonnerstag
Switch item=weckerFreitag
Switch item=weckerSamstag
Switch item=weckerSonntag
}
}
Text label=âStart BewĂ€sserung [%s]â item=weckerZeitMessage icon=âIrrigation1â
Text label=âBewĂ€sserungszeit Strang 1 [%s]â item=weckerZeitDauerStrang1 icon=âIrrigation1â
Text label=âBewĂ€sserungszeit Strang 2 [%s]â item=weckerZeitDauerStrang2 icon=âIrrigation1â
Text label=âBewĂ€sserungszeit Terrasse [%s]â item=weckerZeitDauerTerrasse icon=âIrrigation1â
Text label=âBewĂ€sserungszeit Vorne [%s]â item=weckerZeitDauerVorne icon=âIrrigation1â
}
Frame label=Zisterne icon=âZisterne1â
{
Switch item=Zisternenpumpe icon=âZisterne1â
}
Frame label=Rasenzustand icon=âLuftfeuchteâ
{
Text item=FeuchteRasen1 icon=âLuftfeuchteâ
Switch item=FeuchteRasen_Chart_Period icon=âclock-onâ label=âChart Periodâ mappings=[0=âDâ, 1=âWâ, 2=âMâ]
Chart item=Bodenfeuchte label="%" period=D refresh=100000 service=âmysqlâ visibility=[FeuchteRasen_Chart_Period==0]
Chart item=Bodenfeuchte label="%" period=W refresh=100000 service=âmysqlâ visibility=[FeuchteRasen_Chart_Period==1, FeuchteRasen_Chart_Period==âUninitializedâ]
Chart item=Bodenfeuchte label="%" period=M refresh=100000 service=âmysqlâ visibility=[FeuchteRasen_Chart_Period==2]
}
Frame label=âBewaesserungszeitenâ{
Switch item=Bewaesserung_Chart_Period icon=âclock-onâ label=âChart Periodâ mappings=[0=âhâ, 1=â4hâ, 2=âDâ, 3=âWâ, 4=âMâ]
Chart item=Bewaesserung label=âhâ period=h refresh=100000 service=âmysqlâ visibility=[Bewaesserung_Chart_Period==0, Bewaesserung_Chart_Period==âUninitializedâ]
Chart item=Bewaesserung label=âhâ period=4h refresh=100000 service=âmysqlâ visibility=[Bewaesserung_Chart_Period==1]
Chart item=Bewaesserung label=âhâ period=D refresh=100000 service=âmysqlâ visibility=[Bewaesserung_Chart_Period==2]
Chart item=Bewaesserung label=âhâ period=W refresh=100000 service=âmysqlâ visibility=[Bewaesserung_Chart_Period==3]
Chart item=Bewaesserung label=âhâ period=M refresh=100000 service=âmysqlâ visibility=[Bewaesserung_Chart_Period==4]
}
}
Finally it looks on level 1 GUI like that:
If you press on "BewÀsserungstimer " to set the times you see the following:
And behind the Stunde and the Minute as well as behind the time of the lines you see the following:
Cheers