vars_ventil_1_rest_in_prozent
vars_ventil_2_rest_in_prozent
vars_pfad
vars_ventil_3_rest_in_prozent
vars_aktor_typ
vars_ventil_dauer_in_minuten
vars_aktor_name
restzeit_ventil_in_prozent
vars_sonnenaufgang
vars_sonoff_ip
vars_sonnenuntergang
vars_morgens_verzoegerung_sonnenaufgang
vars_abends_verzoegerung_sonnenuntergang
vars_pumpe
startzeit_sonnenaufgang
vars_notify_mail
startzeit_sonnenaufgang_stunde
vars_bewaesserung_aktiv
vars_notify_alexa
startzeit_sonnenaufgang_minute
vars_notify_alexa_device
vars_feste_startzeit_1_uhrzeit_start_stunde
vars_feste_startzeit_1_uhrzeit_start_minute
vars_feste_startzeit_2_uhrzeit_start_stunde
vars_feste_startzeit_2_uhrzeit_start_minute
vars_feste_startzeit_3_uhrzeit_start_stunde
vars_feste_startzeit_3_uhrzeit_start_minute
timeout
vars_notify_pushover
vars_notify_log
vars_morgens_uhrzeit_start_stunde
vars_bewaesserung_pause
vars_wetter_max_temp
vars_morgens_urhzeit_start_minute
morgens
vars_schwellwert_temperatur
vars_ventil_1_restzeit_in_sek
vars_ventil_2_restzeit_in_sek
vars_ventil_3_restzeit_in_sek
vars_ventil_4_restzeit_in_sek
vars_wetter_regen
info_enduhrzeit_raw
vars_schwellwert_regen
abends
info_endzeit_stunde
vars_ventil_1
vars_ventil_2
vars_ventil_3
vars_ventil_4
vars_ventil_1_dauer
vars_ventil_2_dauer
vars_ventil_3_dauer
vars_ventil_4_dauer
vars_morgens_uhrzeit_start
info_endzeit_minute
vars_ventil_1_ende
startzeit_sonnenuntergang
vars_restlautzeit_in_sek
info_endzeit_sekunde
ventil_enduhrzeit_raw
vars_ventil_2_ende
startzeit_sonnenuntergang_stunde
vars_morgens_aktiv
startzeit_fix_1_stunde
ventil_enduhrzeit_std
vars_ventil_3_ende
vars_bewaesserung_automatik
startzeit_sonnenuntergang_minute
vars_abends_uhrzeit_start_stunde
vars_abends_uhrzeit_start_minute
startzeit_fix_1_minunte
ventil_enduhrzeit_min
vars_ventil_4_ende
ventil_1_dauer
vars_ventil_1_aktor
vars_ventil_2_aktor
vars_ventil_3_aktor
vars_ventil_4_aktor
vars_feste_startzeit_1_uhrzeit_start
ventil_enduhrzeit_sek
ventil_enduhrzeit_verzoegerung
vars_ventil_1_restzeit
waitmail2
vars_abends_aktiv
fix_1
vars_laufzeit_gesamt_in_sek
vars_anzahl_aktive_ventile
vars_lautzeit_ende_uhrzeit
restlaufzeit_vis_min
info_endzeit_aktive_ventile
vars_restlautzeit
startzeit_fix_2_stunde
ventil_2_dauer
ventil_3_dauer
ventil_4_dauer
restlaufzeit_vis_sek
startzeit_fix_2_minunte
vars_ventil_2_restzeit
vars_aktives_ventil
vars_feste_startzeit_2_uhrzeit_start
vars_ventil_1_name
info_text
restzeit
vars_abends_uhrzeit_start
vars_feste_startzeit_1_aktiv
fix_2
vars_ventil_2_name
info_betreff
vars_ventil_3_name
vars_ventil_1_aktor_ontime
vars_ventil_4_name
restzeit_gesamt_min
startzeit_fix_3_stunde
vars_ventil_3_restzeit
restzeit_gesamt_sek
vars_ventil_2_aktor_ontime
startzeit_fix_3_minute
vars_feste_startzeit_3_uhrzeit_start
ventil_1_rest
vars_ventil_3_aktor_ontime
vars_feste_startzeit_2_aktiv
fix_3
ventil_2_rest
vars_ventil_4_aktor_ontime
vars_ventil_4_restzeit
restzeit_ventil_min
ventil_3_rest
restzeit_ventil_sek
ventil_4_rest
vars_feste_startzeit_3_aktiv
restzeit_ventil_prozent
v2.3.0 - angepasst mit rest %
Datenpunkte_erstellen
LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjEgKDI2IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiAnMF91c2VyZGF0YS4wJyBvciAnamF2YXNjcmlwdC54Jy4KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4KICogQHBhcmFtIHthcnJheX0gc3RhdGVzVG9DcmVhdGUgIFN0YXRlKHMpIHRvIGNyZWF0ZS4gc2luZ2xlIGFycmF5IG9yIGFycmF5IG9mIGFycmF5cwogKiBAcGFyYW0ge29iamVjdH0gW2NhbGxiYWNrXSAgICAgT3B0aW9uYWw6IGEgY2FsbGJhY2sgZnVuY3Rpb24gLS0gVGhpcyBwcm92aWRlZCBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCBzdGF0ZXMgYXJlIGNyZWF0ZWQuCiAqLwoKLyoqCiogSGllciBiaXR0ZSBkZW4gU3BlaWNoZXJvcnQsZGVuIFBmYWQgZWludHJhZ2VuIHVuZCBkZW4gTmFtZW4gZGVyIEtyZWlzZSBlaW5nZWJlbgoqIEJlaXNwaWVsZTogCgoJc3BlaWNoZXJvcnQgPSAnMF91c2VyZGF0YS4wLicKCXNwZWljaGVyb3J0ID0gJ2phdmFzY3JpcHQuMCcKCQoJcGZhZCA9ICdiZXdhc3NlcnVuZy4nCglwZmFkID0gJ0dhcmRlbmEuQmV3YWVzc2VydW5nLicKICAgIAogICAga3JlaXMxID0gJ0hlY2tlJwogICAga3JlaXMyID0gJ1Jhc2VuJwoKKi8Kc3BlaWNoZXJvcnQgPSAnamF2YXNjcmlwdC4wJwpwZmFkID0gJ2Jld2Flc3NlcnVuZy4nCmtyZWlzMSA9ICdIZWNrZScKa3JlaXMyID0gJ1Jhc2VuJwprcmVpczMgPSAnQmVldCcKa3JlaXM0ID0gJ2tsLiBSYXNlbicKCgpmdW5jdGlvbiBjcmVhdGVVc2VyU3RhdGVzKHdoZXJlLCBmb3JjZSwgc3RhdGVzVG9DcmVhdGUsIGNhbGxiYWNrID0gdW5kZWZpbmVkKSB7CiAgICAKICAgIGNvbnN0IFdBUk4gPSBmYWxzZTsgLy8gT25seSBmb3IgMF91c2VyZGF0YS4wOiBUaHJvd3Mgd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIGZvcmNlPWZhbHNlLiBEZWZhdWx0IGlzIGZhbHNlLCBzbyBubyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgZXhpc3RzLgogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayAKICAgIC8vIGJlZm9yZSB0aGUgc3RhdGUgaXMgYWN0dWFsIGNyZWF0ZWQuIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlciBhcyBhIHdvcmthcm91bmQuCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKS4gSW5jcmVhc2UgdGhpcyB0byAxMDAsIGlmIGl0IGlzIG5vdCB3b3JraW5nLgoKICAgIC8vIFZhbGlkYXRlICJ3aGVyZSIKICAgIGlmICh3aGVyZS5lbmRzV2l0aCgnLicpKSB3aGVyZSA9IHdoZXJlLnNsaWNlKDAsIC0xKTsgLy8gUmVtb3ZlIHRyYWlsaW5nIGRvdAogICAgaWYgKCAod2hlcmUubWF0Y2goL14oKGphdmFzY3JpcHRcLihbMS05XVswLTldfFswLTldKSkkfDBfdXNlcmRhdGFcLjAkKS8pID09IG51bGwpICkgewogICAgICAgIGxvZygnVGhpcyBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0byBjcmVhdGUgc3RhdGVzIHVuZGVyIFsnICsgd2hlcmUgKyAnXScsICdlcnJvcicpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUKICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5CgogICAgLy8gQWRkICJ3aGVyZSIgdG8gU1RBVEVTX1RPX0NSRUFURQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7IGkrKykgewogICAgICAgIGxldCBscFBhdGggPSBzdGF0ZXNUb0NyZWF0ZVtpXVswXS5yZXBsYWNlKC9cLipcLi9nLCAnLicpOyAvLyByZXBsYWNlIGFsbCBtdWx0aXBsZSBkb3RzIGxpa2UgJy4uJywgJy4uLicgd2l0aCBhIHNpbmdsZSAnLicKICAgICAgICBscFBhdGggPSBscFBhdGgucmVwbGFjZSgvXigoamF2YXNjcmlwdFwuKFsxLTldWzAtOV18WzAtOV0pXC4pfDBfdXNlcmRhdGFcLjBcLikvLCcnKSAvLyByZW1vdmUgYW55IGphdmFzY3JpcHQueC4gLyAwX3VzZXJkYXRhLjAuIGZyb20gYmVnaW5uaW5nCiAgICAgICAgbHBQYXRoID0gd2hlcmUgKyAnLicgKyBscFBhdGg7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nCiAgICAgICAgc3RhdGVzVG9DcmVhdGVbaV1bMF0gPSBscFBhdGg7CiAgICB9CgogICAgaWYgKHdoZXJlICE9ICcwX3VzZXJkYXRhLjAnKSB7CiAgICAgICAgLy8gQ3JlYXRlIFN0YXRlcyB1bmRlciBqYXZhc2NyaXB0LngKICAgICAgICBsZXQgbnVtU3RhdGVzID0gc3RhdGVzVG9DcmVhdGUubGVuZ3RoOwogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7CiAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJyk7CiAgICAgICAgICAgIGxldCBsb29wSW5pdCA9IChsb29wUGFyYW1bMV1bJ2RlZiddID09IHVuZGVmaW5lZCkgPyBudWxsIDogbG9vcFBhcmFtWzFdWydkZWYnXTsgLy8gbWltaWMgc2FtZSBiZWhhdmlvciBhcyBjcmVhdGVTdGF0ZSBpZiBubyBpbml0IHZhbHVlIGlzIHByb3ZpZGVkCiAgICAgICAgICAgIGNyZWF0ZVN0YXRlKGxvb3BQYXJhbVswXSwgbG9vcEluaXQsIGZvcmNlLCBsb29wUGFyYW1bMV0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIENyZWF0ZSBTdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wCiAgICAgICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgICAgICBsZXQgY291bnRlciA9IC0xOwogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7CiAgICAgICAgICAgIGNvdW50ZXIgKz0gMTsKICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nICgnW0RlYnVnXSBDdXJyZW50bHkgcHJvY2Vzc2luZyBmb2xsb3dpbmcgc3RhdGU6IFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKTsKICAgICAgICAgICAgaWYoICgkKGxvb3BQYXJhbVswXSkubGVuZ3RoID4gMCkgJiYgKGV4aXN0c1N0YXRlKGxvb3BQYXJhbVswXSkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4CiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBpcyBleGlzdGluZy4KICAgICAgICAgICAgICAgIGlmIChXQVJOICYmICFmb3JjZSkgbG9nKCdTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIGNyZWF0ZWQuJywgJ3dhcm4nKTsKICAgICAgICAgICAgICAgIGlmICghV0FSTiAmJiBMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcuIE9wdGlvbiBmb3JjZSAoPW92ZXJ3cml0ZSkgaXMgc2V0IHRvIFsnICsgZm9yY2UgKyAnXS4nKTsKICAgICAgICAgICAgICAgIGlmKCFmb3JjZSkgewogICAgICAgICAgICAgICAgICAgIC8vIFN0YXRlIGV4aXN0cyBhbmQgc2hhbGwgbm90IGJlIG92ZXJ3cml0dGVuIHNpbmNlIGZvcmNlPWZhbHNlCiAgICAgICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLgogICAgICAgICAgICAgICAgICAgIG51bVN0YXRlcy0tOwogICAgICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFuIG9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCwgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIGV4ZWN1dGUgbm93LicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIG91dCBhbmQgY29udGludWUgd2l0aCBuZXh0IGVsZW1lbnQgaW4gbG9vcC4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xODQ1MjkyMC9jb250aW51ZS1pbi1jdXJzb3ItZm9yZWFjaAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gLy8gaWYoIWZvcmNlKQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTdGF0ZSBpcyBub3QgZXhpc3Rpbmcgb3IgZm9yY2UgPSB0cnVlLCBzbyB3ZSBhcmUgY29udGludWluZyB0byBjcmVhdGUgdGhlIHN0YXRlIHRocm91Z2ggc2V0T2JqZWN0KCkuCiAgICAgICAgICAgIGxldCBvYmogPSB7fTsKICAgICAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgICAgICBvYmoubmF0aXZlID0ge307CiAgICAgICAgICAgIG9iai5jb21tb24gPSBsb29wUGFyYW1bMV07CiAgICAgICAgICAgIHNldE9iamVjdChsb29wUGFyYW1bMF0sIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdCBmb3Igc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXTogJyArIGVycik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJykKICAgICAgICAgICAgICAgICAgICBsZXQgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCA9IGxvb3BQYXJhbVsxXS5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGxvb3BQYXJhbVswXSwgaW5pdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gc2V0U3RhdGUgZHVyY2hnZWbDvGhydDogJyArIGxvb3BQYXJhbVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQWxsIHN0YXRlcyBwcm9jZXNzZWQuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gRnVuY3Rpb24gdG8gY2FsbGJhY2sgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0sIERFTEFZICsgKDIwICogY291bnRlcikgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9Cn0KCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKCiAgIC8vQmV3w6Rzc2VydW5nCiAgIFtwZmFkKydiZXdhZXNzZXJ1bmdfYWt0aXYnLCB7J25hbWUnOidiZXdhZXNzZXJ1bmdfYWt0aXYnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsnYmV3YWVzc2VydW5nX2F1dG9tYXRpaycsIHsnbmFtZSc6J2Jld2Flc3NlcnVuZ19hdXRvbWF0aWsnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsnYmV3YWVzc2VydW5nX3BhdXNlJywgeyduYW1lJzonYmV3YWVzc2VydW5nX3BhdXNlJywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwKCiAgIC8vVGltZXIKICAgW3BmYWQrJ2xhdXR6ZWl0X2dlc2FtdF9pbl9zZWsnLCB7J25hbWUnOidsYXV0emVpdF9nZXNhbXRfaW5fc2VrJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sCiAgIFtwZmFkKydsYXV0emVpdF9lbmRlX3VocnplaXQnLCB7J25hbWUnOidsYXV0emVpdF9lbmRlX3VocnplaXQnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOiAnMDA6MDAnLCd1bml0JzogJ1Vocid9XSwKICAgW3BmYWQrJ3Jlc3RsYXV0emVpdCcsIHsnbmFtZSc6J3Jlc3RsYXV0emVpdCcsJ3R5cGUnOiAnc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjAsJ3VuaXQnOidNaW51dGVuJ31dLAogICBbcGZhZCsncmVzdGxhdXR6ZWl0X2luX3NlaycsIHsnbmFtZSc6J3Jlc3RsYXV0emVpdF9pbl9zZWsnLCd0eXBlJzonbnVtYmVyJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidudW1iZXInLCdkZWYnOjAsJ3VuaXQnOidTZWt1bmRlbid9XSwKCiAgIC8vVmVudGlsZQogICBbcGZhZCsndmVudGlsZS5ha3RpdmVzX3ZlbnRpbCcsIHsnbmFtZSc6ICdha3RpdmVzX3ZlbnRpbCcsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6J2F1cyd9XSwKICAgW3BmYWQrJ3ZlbnRpbGUuYW56YWhsX2FrdGl2ZV92ZW50aWxlJywgeyduYW1lJzonYW56YWhsX2FrdGl2ZV92ZW50aWxlJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCdtaW4nOjAsICdtYXgnOjR9IF0sCgogICAvL1ZlbnRpbCAxCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xJywgeyduYW1lJzondmVudGlsXzEnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9kYXVlcicsIHsnbmFtZSc6ICd2ZW50aWxfMV9kYXVlcicsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9lbmRlJywgeyduYW1lJzondmVudGlsXzFfZW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfbmFtZScsIHsnbmFtZSc6J3ZlbnRpbF8xX25hbWUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOmtyZWlzMX1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9yZXN0emVpdCcsIHsnbmFtZSc6J3ZlbnRpbF8xX3Jlc3R6ZWl0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzA6MDAnLCd1bml0JzonTWludXRlbid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfcmVzdHplaXRfaW5fc2VrJywgeyduYW1lJzondmVudGlsXzFfcmVzdHplaXRfaW5fc2VrJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sCgogICAvL1ZlbnRpbCAyCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yJywgeyduYW1lJzondmVudGlsXzInLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9kYXVlcicsIHsnbmFtZSc6ICd2ZW50aWxfMl9kYXVlcicsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9lbmRlJywgeyduYW1lJzondmVudGlsXzJfZW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfbmFtZScsIHsnbmFtZSc6J3ZlbnRpbF8yX25hbWUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOmtyZWlzMn1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9yZXN0emVpdCcsIHsnbmFtZSc6J3ZlbnRpbF8yX3Jlc3R6ZWl0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzA6MDAnLCd1bml0JzonTWludXRlbid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfcmVzdHplaXRfaW5fc2VrJywgeyduYW1lJzondmVudGlsXzJfcmVzdHplaXRfaW5fc2VrJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sCgogICAvL1ZlbnRpbCAzCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zJywgeyduYW1lJzondmVudGlsXzMnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19kYXVlcicsIHsnbmFtZSc6ICd2ZW50aWxfM19kYXVlcicsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19lbmRlJywgeyduYW1lJzondmVudGlsXzNfZW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfbmFtZScsIHsnbmFtZSc6J3ZlbnRpbF8zX25hbWUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOmtyZWlzM31dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19yZXN0emVpdCcsIHsnbmFtZSc6J3ZlbnRpbF8zX3Jlc3R6ZWl0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzA6MDAnLCd1bml0JzonTWludXRlbid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfcmVzdHplaXRfaW5fc2VrJywgeyduYW1lJzondmVudGlsXzNfcmVzdHplaXRfaW5fc2VrJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sCgogICAvL1ZlbnRpbCA0CiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80JywgeyduYW1lJzondmVudGlsXzQnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9kYXVlcicsIHsnbmFtZSc6ICd2ZW50aWxfNF9kYXVlcicsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9lbmRlJywgeyduYW1lJzondmVudGlsXzRfZW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfbmFtZScsIHsnbmFtZSc6J3ZlbnRpbF80X25hbWUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOmtyZWlzNH1dLAogICBbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9yZXN0emVpdCcsIHsnbmFtZSc6J3ZlbnRpbF80X3Jlc3R6ZWl0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzA6MDAnLCd1bml0JzonTWludXRlbid9XSwKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfcmVzdHplaXRfaW5fc2VrJywgeyduYW1lJzondmVudGlsXzRfcmVzdHplaXRfaW5fc2VrJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sCgogICAvL1plaXRwbGFuCiAgIFtwZmFkKyd6ZWl0cGxhbi5zb25uZW5hdWZnYW5nJywgeyduYW1lJzonc29ubmVuYXVmZ2FuZycsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwKICAgW3BmYWQrJ3plaXRwbGFuLnNvbm5lbnVudGVyZ2FuZycsIHsnbmFtZSc6J3Nvbm5lbnVudGVyZ2FuZycsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwKICAgLy9Nb3JnZW5zCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX2FrdGl2JywgeyduYW1lJzonbW9yZ2Vuc19ha3RpdicsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3VocnplaXRfc3RhcnQnLCB7J25hbWUnOidtb3JnZW5zX3VocnplaXRfc3RhcnQnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3VocnplaXRfc3RhcnRfc3R1bmRlJywgeyduYW1lJzonbW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAnfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3VocnplaXRfc3RhcnRfbWludXRlJywgeyduYW1lJzonbW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAnfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3ZlcnpvZWdlcnVuZ19zb25uZW5hdWZnYW5nJywgeyduYW1lJzonbW9yZ2Vuc192ZXJ6b2VnZXJ1bmdfc29ubmVuYXVmZ2FuZycsJ3R5cGUnOiAnc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjAsJ3VuaXQnOidNaW51dGVuJ31dLAoKICAgLy9BYmVuZHMKICAgW3BmYWQrJ3plaXRwbGFuLmFiZW5kc19ha3RpdicsIHsnbmFtZSc6J2FiZW5kc19ha3RpdicsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5hYmVuZHNfdWhyemVpdF9zdGFydCcsIHsnbmFtZSc6J2FiZW5kc191aHJ6ZWl0X3N0YXJ0JywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMDA6MDAnLCd1bml0JzonVWhyJ31dLAogICBbcGZhZCsnemVpdHBsYW4uYWJlbmRzX3VocnplaXRfc3RhcnRfc3R1bmRlJywgeyduYW1lJzonYWJlbmRzX3VocnplaXRfc3RhcnRfc3R1bmRlJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMCd9XSwKICAgW3BmYWQrJ3plaXRwbGFuLmFiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsIHsnbmFtZSc6J2FiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAnfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5hYmVuZHNfdmVyem9lZ2VydW5nX3Nvbm5lbnVudGVyZ2FuZycsIHsnbmFtZSc6J2FiZW5kc192ZXJ6b2VnZXJ1bmdfc29ubmVudW50ZXJnYW5nJywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MCwndW5pdCc6J01pbnV0ZW4nfV0sCgogICAvL0Zlc3RlIFN0YXJ0emVpdCAxCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfMV9ha3RpdicsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8xX2FrdGl2JywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwKICAgW3BmYWQrJ3plaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF8xX3VocnplaXRfc3RhcnQnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfMV91aHJ6ZWl0X3N0YXJ0JywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMDA6MDAnLCd1bml0JzonVWhyJ31dLAogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzFfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfMV91aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLAogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzFfdWhyemVpdF9zdGFydF9taW51dGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfMV91aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLAkKICAgCiAgIC8vRmVzdGUgU3RhcnR6ZWl0IDIKICAgW3BmYWQrJ3plaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF8yX2FrdGl2JywgeyduYW1lJzonZmVzdGVfc3RhcnR6ZWl0XzJfYWt0aXYnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLAogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzJfdWhyemVpdF9zdGFydCcsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8yX3VocnplaXRfc3RhcnQnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfMl91aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8yX3VocnplaXRfc3RhcnRfc3R1bmRlJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzowfV0sCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfMl91aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8yX3VocnplaXRfc3RhcnRfbWludXRlJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzowfV0sCiAgIAogICAvL0Zlc3RlIFN0YXJ0emVpdCAzCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfM19ha3RpdicsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8zX2FrdGl2JywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwKICAgW3BmYWQrJ3plaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF8zX3VocnplaXRfc3RhcnQnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfM191aHJ6ZWl0X3N0YXJ0JywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMDA6MDAnLCd1bml0JzonVWhyJ31dLAogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfM191aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLAogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzNfdWhyemVpdF9zdGFydF9taW51dGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfM191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLApdOyAgIAogICAgY3JlYXRlVXNlclN0YXRlcyhzcGVpY2hlcm9ydCwgZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKTs=
Datenpunkte erstellen.Einmalig ausführen!
eigeneVars
Beschreibe diese Funktion …
vars_ventil_1_rest_in_prozent
vars_pfad
ventile.ventil_1.ventil_1_rest_in_prozent
vars_ventil_2_rest_in_prozent
vars_pfad
ventile.ventil_2.ventil_2_rest_in_prozent
vars_ventil_3_rest_in_prozent
vars_pfad
ventile.ventil_3.ventil_3_rest_in_prozent
vars_ventil_dauer_in_minuten
TRUE
restzeit_ventil_in_prozent
100
Datenpunkte erstellen.Einmalig ausführen!
Datenpunkte_erstellen2
LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjEgKDI2IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiAnMF91c2VyZGF0YS4wJyBvciAnamF2YXNjcmlwdC54Jy4KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4KICogQHBhcmFtIHthcnJheX0gc3RhdGVzVG9DcmVhdGUgIFN0YXRlKHMpIHRvIGNyZWF0ZS4gc2luZ2xlIGFycmF5IG9yIGFycmF5IG9mIGFycmF5cwogKiBAcGFyYW0ge29iamVjdH0gW2NhbGxiYWNrXSAgICAgT3B0aW9uYWw6IGEgY2FsbGJhY2sgZnVuY3Rpb24gLS0gVGhpcyBwcm92aWRlZCBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCBzdGF0ZXMgYXJlIGNyZWF0ZWQuCiAqLwoKLyoqCiogSGllciBiaXR0ZSBkZW4gU3BlaWNoZXJvcnQsZGVuIFBmYWQgZWludHJhZ2VuIHVuZCBkZW4gTmFtZW4gZGVyIEtyZWlzZSBlaW5nZWJlbgoqIEJlaXNwaWVsZTogCgoJc3BlaWNoZXJvcnQgPSAnMF91c2VyZGF0YS4wLicKCXNwZWljaGVyb3J0ID0gJ2phdmFzY3JpcHQuMCcKCQoJcGZhZCA9ICdiZXdhc3NlcnVuZy4nCglwZmFkID0gJ0dhcmRlbmEuQmV3YWVzc2VydW5nLicKICAgIAogICAga3JlaXMxID0gJ0hlY2tlJwogICAga3JlaXMyID0gJ1Jhc2VuJwoKKi8Kc3BlaWNoZXJvcnQgPSAnamF2YXNjcmlwdC4wJwpwZmFkID0gJ2Jld2Flc3NlcnVuZy4nCmtyZWlzMSA9ICdIZWNrZScKa3JlaXMyID0gJ1Jhc2VuJwprcmVpczMgPSAnQmVldCcKa3JlaXM0ID0gJ2tsLiBSYXNlbicKCgpmdW5jdGlvbiBjcmVhdGVVc2VyU3RhdGVzKHdoZXJlLCBmb3JjZSwgc3RhdGVzVG9DcmVhdGUsIGNhbGxiYWNrID0gdW5kZWZpbmVkKSB7CiAgICAKICAgIGNvbnN0IFdBUk4gPSBmYWxzZTsgLy8gT25seSBmb3IgMF91c2VyZGF0YS4wOiBUaHJvd3Mgd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIGZvcmNlPWZhbHNlLiBEZWZhdWx0IGlzIGZhbHNlLCBzbyBubyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgZXhpc3RzLgogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayAKICAgIC8vIGJlZm9yZSB0aGUgc3RhdGUgaXMgYWN0dWFsIGNyZWF0ZWQuIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlciBhcyBhIHdvcmthcm91bmQuCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKS4gSW5jcmVhc2UgdGhpcyB0byAxMDAsIGlmIGl0IGlzIG5vdCB3b3JraW5nLgoKICAgIC8vIFZhbGlkYXRlICJ3aGVyZSIKICAgIGlmICh3aGVyZS5lbmRzV2l0aCgnLicpKSB3aGVyZSA9IHdoZXJlLnNsaWNlKDAsIC0xKTsgLy8gUmVtb3ZlIHRyYWlsaW5nIGRvdAogICAgaWYgKCAod2hlcmUubWF0Y2goL14oKGphdmFzY3JpcHRcLihbMS05XVswLTldfFswLTldKSkkfDBfdXNlcmRhdGFcLjAkKS8pID09IG51bGwpICkgewogICAgICAgIGxvZygnVGhpcyBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0byBjcmVhdGUgc3RhdGVzIHVuZGVyIFsnICsgd2hlcmUgKyAnXScsICdlcnJvcicpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUKICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5CgogICAgLy8gQWRkICJ3aGVyZSIgdG8gU1RBVEVTX1RPX0NSRUFURQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7IGkrKykgewogICAgICAgIGxldCBscFBhdGggPSBzdGF0ZXNUb0NyZWF0ZVtpXVswXS5yZXBsYWNlKC9cLipcLi9nLCAnLicpOyAvLyByZXBsYWNlIGFsbCBtdWx0aXBsZSBkb3RzIGxpa2UgJy4uJywgJy4uLicgd2l0aCBhIHNpbmdsZSAnLicKICAgICAgICBscFBhdGggPSBscFBhdGgucmVwbGFjZSgvXigoamF2YXNjcmlwdFwuKFsxLTldWzAtOV18WzAtOV0pXC4pfDBfdXNlcmRhdGFcLjBcLikvLCcnKSAvLyByZW1vdmUgYW55IGphdmFzY3JpcHQueC4gLyAwX3VzZXJkYXRhLjAuIGZyb20gYmVnaW5uaW5nCiAgICAgICAgbHBQYXRoID0gd2hlcmUgKyAnLicgKyBscFBhdGg7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nCiAgICAgICAgc3RhdGVzVG9DcmVhdGVbaV1bMF0gPSBscFBhdGg7CiAgICB9CgogICAgaWYgKHdoZXJlICE9ICcwX3VzZXJkYXRhLjAnKSB7CiAgICAgICAgLy8gQ3JlYXRlIFN0YXRlcyB1bmRlciBqYXZhc2NyaXB0LngKICAgICAgICBsZXQgbnVtU3RhdGVzID0gc3RhdGVzVG9DcmVhdGUubGVuZ3RoOwogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7CiAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJyk7CiAgICAgICAgICAgIGxldCBsb29wSW5pdCA9IChsb29wUGFyYW1bMV1bJ2RlZiddID09IHVuZGVmaW5lZCkgPyBudWxsIDogbG9vcFBhcmFtWzFdWydkZWYnXTsgLy8gbWltaWMgc2FtZSBiZWhhdmlvciBhcyBjcmVhdGVTdGF0ZSBpZiBubyBpbml0IHZhbHVlIGlzIHByb3ZpZGVkCiAgICAgICAgICAgIGNyZWF0ZVN0YXRlKGxvb3BQYXJhbVswXSwgbG9vcEluaXQsIGZvcmNlLCBsb29wUGFyYW1bMV0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIENyZWF0ZSBTdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wCiAgICAgICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgICAgICBsZXQgY291bnRlciA9IC0xOwogICAgICAgIHN0YXRlc1RvQ3JlYXRlLmZvckVhY2goZnVuY3Rpb24obG9vcFBhcmFtKSB7CiAgICAgICAgICAgIGNvdW50ZXIgKz0gMTsKICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nICgnW0RlYnVnXSBDdXJyZW50bHkgcHJvY2Vzc2luZyBmb2xsb3dpbmcgc3RhdGU6IFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKTsKICAgICAgICAgICAgaWYoICgkKGxvb3BQYXJhbVswXSkubGVuZ3RoID4gMCkgJiYgKGV4aXN0c1N0YXRlKGxvb3BQYXJhbVswXSkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4CiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBpcyBleGlzdGluZy4KICAgICAgICAgICAgICAgIGlmIChXQVJOICYmICFmb3JjZSkgbG9nKCdTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIGNyZWF0ZWQuJywgJ3dhcm4nKTsKICAgICAgICAgICAgICAgIGlmICghV0FSTiAmJiBMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcuIE9wdGlvbiBmb3JjZSAoPW92ZXJ3cml0ZSkgaXMgc2V0IHRvIFsnICsgZm9yY2UgKyAnXS4nKTsKICAgICAgICAgICAgICAgIGlmKCFmb3JjZSkgewogICAgICAgICAgICAgICAgICAgIC8vIFN0YXRlIGV4aXN0cyBhbmQgc2hhbGwgbm90IGJlIG92ZXJ3cml0dGVuIHNpbmNlIGZvcmNlPWZhbHNlCiAgICAgICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLgogICAgICAgICAgICAgICAgICAgIG51bVN0YXRlcy0tOwogICAgICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFuIG9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCwgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIGV4ZWN1dGUgbm93LicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIG91dCBhbmQgY29udGludWUgd2l0aCBuZXh0IGVsZW1lbnQgaW4gbG9vcC4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xODQ1MjkyMC9jb250aW51ZS1pbi1jdXJzb3ItZm9yZWFjaAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gLy8gaWYoIWZvcmNlKQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTdGF0ZSBpcyBub3QgZXhpc3Rpbmcgb3IgZm9yY2UgPSB0cnVlLCBzbyB3ZSBhcmUgY29udGludWluZyB0byBjcmVhdGUgdGhlIHN0YXRlIHRocm91Z2ggc2V0T2JqZWN0KCkuCiAgICAgICAgICAgIGxldCBvYmogPSB7fTsKICAgICAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOwogICAgICAgICAgICBvYmoubmF0aXZlID0ge307CiAgICAgICAgICAgIG9iai5jb21tb24gPSBsb29wUGFyYW1bMV07CiAgICAgICAgICAgIHNldE9iamVjdChsb29wUGFyYW1bMF0sIG9iaiwgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdCBmb3Igc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXTogJyArIGVycik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJykKICAgICAgICAgICAgICAgICAgICBsZXQgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnbnVtYmVyJykgaW5pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnYm9vbGVhbicpIGluaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCA9IGxvb3BQYXJhbVsxXS5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKGxvb3BQYXJhbVswXSwgaW5pdCwgdHJ1ZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gc2V0U3RhdGUgZHVyY2hnZWbDvGhydDogJyArIGxvb3BQYXJhbVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQWxsIHN0YXRlcyBwcm9jZXNzZWQuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gRnVuY3Rpb24gdG8gY2FsbGJhY2sgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0sIERFTEFZICsgKDIwICogY291bnRlcikgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9Cn0KCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKCiAgIC8vVmVudGlsIDEKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfcmVzdF9pbl9wcm96ZW50JywgeyduYW1lJzondmVudGlsXzFfcmVzdF9pbl9wcm96ZW50JywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonJSd9XSwKCiAgIC8vVmVudGlsIDIKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfcmVzdF9pbl9wcm96ZW50JywgeyduYW1lJzondmVudGlsXzJfcmVzdF9pbl9wcm96ZW50JywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonJSd9XSwKCiAgIC8vVmVudGlsIDMKICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfcmVzdF9pbl9wcm96ZW50JywgeyduYW1lJzondmVudGlsXzNfcmVzdF9pbl9wcm96ZW50JywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonJSd9XSwKCgpdOyAgIAogICAgY3JlYXRlVXNlclN0YXRlcyhzcGVpY2hlcm9ydCwgZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKTs=
Datenpunkte erstellen.Einmalig ausführen!
Variablen_definieren
Beschreibe diese Funktion …
--- Die folgenden Variablen bitte anpassen ---
vars_pfad
Bitte hier den Speicheroprt angeben.z.B.javascript.0.bewasserung0_userdata.0.Garten.Bewasserung
javascript.0.bewaesserung.
vars_aktor_typ
Mögliche Werte:hm = Homematic Aktorsonoff = Sonoff Aktor
hm
vars_aktor_name
Hier bitte dem Namen des Aktor eintragen.hm-rpc.0.QEQ12345678sonoff.0.Bewaesserung
hm-rpc.1.OEQ0044740
vars_aktor_name
Hier bitte dem Namen des Aktor eintragen.hm-rpc.0.QEQ12345678sonoff.0.Bewaesserung
sonoff.0.Bewaesserung
vars_sonoff_ip
Nur notendig wenn ein Sonoff Aktor verwendet wird.Bitte die IP vom aktor eintragen
192.168.4.110
vars_pumpe
Pfad zum STATE um die Pumpe zu aktivieren.Falls nicht notwensig, einfach das Feld leer lassen.
vars_notify_mail
Soll per Mail über Start und Stop informiert werden?Mögliche Werte:truefalse
TRUE
vars_notify_alexa
Soll per Alexa über Start und Stop informiert werden?Mögliche Werte:truefalse
FALSE
vars_notify_alexa_device
Hier bitte den State vom Alexa Device Eintragen:Beispiel:alexa2.0.Echo-Devices.ABCDEFGHIJK.Commands.announcement
javascript.0.echo.sprachausgabe_alle_geraete
vars_notify_pushover
Soll per Pushover über Start und Stop informiert werden?Mögliche Werte:truefalse
FALSE
vars_notify_log
Sollen bei Start und Stop Log-Einträge generiert werden ?Mögliche Werte:truefalse
FALSE
vars_wetter_max_temp
Wettervorhersage: Tagehöchstwertz.B.: daswetter.0.NextDays.Location_1.Day_1.Maximale_Temperatur_valuefalse, wenn keine Werte verwendet werden können
daswetter.0.NextDays.Location_1.Day_1.Maximale_Temperatur_value
vars_schwellwert_temperatur
Hier bitte den Schwellwerte der Temepratur eingeben, ab wann in der Automatik beregnet werden soll.z.B.: 24 fuer groesser/gleich 24°C
0
vars_wetter_regen
Wettervorhersage: erwartete Regenmengez.B.:daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_valuefalse, wenn keine Werte verwendet werden koennen
daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_value
vars_schwellwert_regen
Hier bitte den Schwellwerte der maximalen Regenmenge eingeben, bis wann die Automatik beregnen soll.z.B.: 0.5 fuer 0.5mm
0
--- Ab hier nichts mehr aendern ---
Bewaesserung
vars_bewaesserung_aktiv
vars_pfad
bewaesserung_aktiv
vars_bewaesserung_automatik
vars_pfad
bewaesserung_automatik
vars_bewaesserung_pause
vars_pfad
bewaesserung_pause
Laufzeit
vars_laufzeit_gesamt_in_sek
vars_pfad
lautzeit_gesamt_in_sek
vars_lautzeit_ende_uhrzeit
vars_pfad
lautzeit_ende_uhrzeit
vars_restlautzeit
vars_pfad
restlautzeit
vars_restlautzeit_in_sek
vars_pfad
restlautzeit_in_sek
Ventile
EQ
vars_aktor_typ
hm
vars_ventil_1_aktor
vars_aktor_name
.1.STATE
vars_ventil_1_aktor_ontime
vars_aktor_name
.1.ON_TIME
vars_ventil_2_aktor
vars_aktor_name
.2.STATE
vars_ventil_2_aktor_ontime
vars_aktor_name
.2.ON_TIME
vars_ventil_3_aktor
vars_aktor_name
.3.STATE
vars_ventil_3_aktor_ontime
vars_aktor_name
.3.ON_TIME
vars_ventil_4_aktor
vars_aktor_name
.4.STATE
vars_ventil_4_aktor_ontime
vars_aktor_name
.4.ON_TIME
EQ
vars_aktor_typ
sonoff
vars_ventil_1_aktor
vars_aktor_name
.POWER1
vars_ventil_2_aktor
vars_aktor_name
.POWER2
vars_ventil_3_aktor
vars_aktor_name
.POWER3
vars_ventil_4_aktor
vars_aktor_name
.POWER4
vars_aktives_ventil
vars_pfad
ventile.aktives_ventil
vars_anzahl_aktive_ventile
vars_pfad
ventile.anzahl_aktive_ventile
Ventil 1
vars_ventil_1
vars_pfad
ventile.ventil_1.ventil_1
vars_ventil_1_dauer
vars_pfad
ventile.ventil_1.ventil_1_dauer
vars_ventil_1_ende
vars_pfad
ventile.ventil_1.ventil_1_ende
vars_ventil_1_name
vars_pfad
ventile.ventil_1.ventil_1_name
vars_ventil_1_restzeit
vars_pfad
ventile.ventil_1.ventil_1_restzeit
vars_ventil_1_restzeit_in_sek
vars_pfad
ventile.ventil_1.ventil_1_restzeit_in_sek
Ventil 2
vars_ventil_2
vars_pfad
ventile.ventil_2.ventil_2
vars_ventil_2_dauer
vars_pfad
ventile.ventil_2.ventil_2_dauer
vars_ventil_2_ende
vars_pfad
ventile.ventil_2.ventil_2_ende
vars_ventil_2_name
vars_pfad
ventile.ventil_2.ventil_2_name
vars_ventil_2_restzeit
vars_pfad
ventile.ventil_2.ventil_2_restzeit
vars_ventil_2_restzeit_in_sek
vars_pfad
ventile.ventil_2.ventil_2_restzeit_in_sek
Ventil 3
vars_ventil_3
vars_pfad
ventile.ventil_3.ventil_3
vars_ventil_3_dauer
vars_pfad
ventile.ventil_3.ventil_3_dauer
vars_ventil_3_ende
vars_pfad
ventile.ventil_3.ventil_3_ende
vars_ventil_3_name
vars_pfad
ventile.ventil_3.ventil_3_name
vars_ventil_3_restzeit
vars_pfad
ventile.ventil_3.ventil_3_restzeit
vars_ventil_3_restzeit_in_sek
vars_pfad
ventile.ventil_3.ventil_3_restzeit_in_sek
Ventil 4
vars_ventil_4
vars_pfad
ventile.ventil_4.ventil_4
vars_ventil_4_dauer
vars_pfad
ventile.ventil_4.ventil_4_dauer
vars_ventil_4_ende
vars_pfad
ventile.ventil_4.ventil_4_ende
vars_ventil_4_name
vars_pfad
ventile.ventil_4.ventil_4_name
vars_ventil_4_restzeit
vars_pfad
ventile.ventil_4.ventil_4_restzeit
vars_ventil_4_restzeit_in_sek
vars_pfad
ventile.ventil_4.ventil_4_restzeit_in_sek
Zeitplan
vars_sonnenaufgang
vars_pfad
zeitplan.sonnenaufgang
vars_sonnenuntergang
vars_pfad
zeitplan.sonnenuntergang
Morgens
vars_morgens_aktiv
vars_pfad
zeitplan.morgens_aktiv
vars_morgens_uhrzeit_start
vars_pfad
zeitplan.morgens_uhrzeit_start
vars_morgens_uhrzeit_start_stunde
vars_pfad
zeitplan.morgens_uhrzeit_start_stunde
vars_morgens_urhzeit_start_minute
vars_pfad
zeitplan.morgens_uhrzeit_start_minute
vars_morgens_verzoegerung_sonnenaufgang
vars_pfad
zeitplan.morgens_verzoegerung_sonnenaufgang
Abends
vars_abends_aktiv
vars_pfad
zeitplan.abends_aktiv
vars_abends_uhrzeit_start
vars_pfad
zeitplan.abends_uhrzeit_start
vars_abends_uhrzeit_start_stunde
vars_pfad
zeitplan.abends_uhrzeit_start_stunde
vars_abends_uhrzeit_start_minute
vars_pfad
zeitplan.abends_uhrzeit_start_minute
vars_abends_verzoegerung_sonnenuntergang
vars_pfad
zeitplan.abends_verzoegerung_sonnenuntergang
Feste Startzeit 1
vars_feste_startzeit_1_aktiv
vars_pfad
zeitplan.feste_startzeit_1_aktiv
vars_feste_startzeit_1_uhrzeit_start
vars_pfad
zeitplan.feste_startzeit_1_uhrzeit_start
vars_feste_startzeit_1_uhrzeit_start_stunde
vars_pfad
zeitplan.feste_startzeit_1_uhrzeit_start_stunde
vars_feste_startzeit_1_uhrzeit_start_minute
vars_pfad
zeitplan.feste_startzeit_1_uhrzeit_start_minute
Feste Startzeit 2
vars_feste_startzeit_2_aktiv
vars_pfad
zeitplan.feste_startzeit_2_aktiv
vars_feste_startzeit_2_uhrzeit_start
vars_pfad
zeitplan.feste_startzeit_2_uhrzeit_start
vars_feste_startzeit_2_uhrzeit_start_stunde
vars_pfad
zeitplan.feste_startzeit_2_uhrzeit_start_stunde
vars_feste_startzeit_2_uhrzeit_start_minute
vars_pfad
zeitplan.feste_startzeit_2_uhrzeit_start_minute
Feste Startzeit 3
vars_feste_startzeit_3_aktiv
vars_pfad
zeitplan.feste_startzeit_3_aktiv
vars_feste_startzeit_3_uhrzeit_start
vars_pfad
zeitplan.feste_startzeit_3_uhrzeit_start
vars_feste_startzeit_3_uhrzeit_start_stunde
vars_pfad
zeitplan.feste_startzeit_3_uhrzeit_start_stunde
vars_feste_startzeit_3_uhrzeit_start_minute
vars_pfad
zeitplan.feste_startzeit_3_uhrzeit_start_minute
Sonnenauf- und Sonnenuntergang
10 0,12 * * *
true
FALSE
Object ID
vars_sonnenaufgang
TRUE
hh:mm
sunrise
0
0
true
FALSE
Object ID
vars_sonnenuntergang
TRUE
hh:mm
sunset
0
0
Startzeit fuer Automatik berechnen
ne
default
vars_morgens_verzoegerung_sonnenaufgang
default
vars_abends_verzoegerung_sonnenuntergang
default
vars_sonnenaufgang
default
vars_sonnenuntergang
Morgens
startzeit_sonnenaufgang
MINUS
1
mid
sunrise
0
1
ADD
1
MULTIPLY
1
val
vars_morgens_verzoegerung_sonnenaufgang
-1
1
ADD
1
ADD
1
DIVIDE
0
val
vars_ventil_1_restzeit_in_sek
60
1
DIVIDE
1
val
vars_ventil_2_restzeit_in_sek
60
1
ADD
1
DIVIDE
1
val
vars_ventil_3_restzeit_in_sek
60
1
DIVIDE
1
val
vars_ventil_4_restzeit_in_sek
60
startzeit_sonnenaufgang_stunde
ROUNDDOWN
3.1
DIVIDE
1
startzeit_sonnenaufgang
60
startzeit_sonnenaufgang_minute
MINUS
1
startzeit_sonnenaufgang
1
MULTIPLY
1
startzeit_sonnenaufgang_stunde
60
Stunde und Minute in Objekt fuer cron
true
FALSE
Object ID
vars_morgens_uhrzeit_start_stunde
TRUE
startzeit_sonnenaufgang_stunde
0
true
FALSE
Object ID
vars_morgens_urhzeit_start_minute
TRUE
startzeit_sonnenaufgang_minute
0
Uhrzeit fuer VIS
LT
startzeit_sonnenaufgang_stunde
10
startzeit_sonnenaufgang_stunde
0
startzeit_sonnenaufgang_stunde
LT
startzeit_sonnenaufgang_minute
10
startzeit_sonnenaufgang_minute
0
startzeit_sonnenaufgang_minute
true
FALSE
Object ID
vars_morgens_uhrzeit_start
TRUE
startzeit_sonnenaufgang_stunde
:
startzeit_sonnenaufgang_minute
0
Abends
startzeit_sonnenuntergang
ADD
1
mid
sunset
0
1
val
vars_abends_verzoegerung_sonnenuntergang
startzeit_sonnenuntergang_stunde
ROUNDDOWN
3.1
DIVIDE
1
startzeit_sonnenuntergang
60
startzeit_sonnenuntergang_minute
MINUS
1
startzeit_sonnenuntergang
1
MULTIPLY
1
startzeit_sonnenuntergang_stunde
60
Stunde und Minute in Objekt fuer cron
true
FALSE
Object ID
vars_abends_uhrzeit_start_stunde
TRUE
startzeit_sonnenuntergang_stunde
0
true
FALSE
Object ID
vars_abends_uhrzeit_start_minute
TRUE
startzeit_sonnenuntergang_minute
0
Uhrzeit fuer VIS
LT
startzeit_sonnenuntergang_stunde
10
startzeit_sonnenuntergang_stunde
0
startzeit_sonnenuntergang_stunde
LT
startzeit_sonnenuntergang_minute
10
startzeit_sonnenuntergang_minute
0
startzeit_sonnenuntergang_minute
true
FALSE
Object ID
vars_abends_uhrzeit_start
TRUE
startzeit_sonnenuntergang_stunde
:
startzeit_sonnenuntergang_minute
0
Pumpe einschalten
ne
default
vars_bewaesserung_aktiv
AND
EQ
val
vars_bewaesserung_aktiv
TRUE
NEQ
vars_pumpe
EQ
val
vars_pumpe
FALSE
false
FALSE
Object ID
vars_pumpe
TRUE
0
AND
EQ
val
vars_bewaesserung_aktiv
FALSE
NEQ
vars_pumpe
EQ
val
vars_pumpe
TRUE
false
FALSE
Object ID
vars_pumpe
FALSE
0
Bewaesserung autom. starten
ne
default
vars_morgens_verzoegerung_sonnenaufgang
default
vars_abends_verzoegerung_sonnenuntergang
default
vars_feste_startzeit_1_uhrzeit_start_stunde
default
vars_feste_startzeit_1_uhrzeit_start_minute
default
vars_feste_startzeit_2_uhrzeit_start_stunde
default
vars_feste_startzeit_2_uhrzeit_start_minute
default
vars_feste_startzeit_3_uhrzeit_start_stunde
default
vars_feste_startzeit_3_uhrzeit_start_minute
default
vars_sonnenaufgang
timeout
1
sec
Morgens
morgens
morgens
* * * * *
FALSE
FALSE
*
4-10
*
*
val
vars_morgens_uhrzeit_start_stunde
*
val
vars_morgens_urhzeit_start_minute
AND
AND
EQ
val
vars_morgens_aktiv
TRUE
AND
EQ
val
vars_bewaesserung_automatik
TRUE
EQ
val
vars_bewaesserung_aktiv
TRUE
AND
OR
GTE
val
vars_wetter_max_temp
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
vars_schwellwert_regen
EQ
vars_wetter_regen
false
true
FALSE
Object ID
vars_bewaesserung_aktiv
TRUE
0
Abends
abends
abends
* * * * *
FALSE
FALSE
*
4-10
*
*
val
vars_abends_uhrzeit_start_stunde
*
val
vars_abends_uhrzeit_start_minute
AND
AND
EQ
val
vars_abends_aktiv
TRUE
AND
EQ
val
vars_bewaesserung_automatik
TRUE
EQ
val
vars_bewaesserung_aktiv
TRUE
AND
OR
GTE
val
vars_wetter_max_temp
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
vars_schwellwert_regen
EQ
vars_wetter_regen
false
true
FALSE
Object ID
vars_bewaesserung_aktiv
TRUE
0
Feste Uhrzeit 1
LT
val
vars_feste_startzeit_1_uhrzeit_start_stunde
10
startzeit_fix_1_stunde
0
val
vars_feste_startzeit_1_uhrzeit_start_stunde
startzeit_fix_1_stunde
val
vars_feste_startzeit_1_uhrzeit_start_stunde
LT
val
vars_feste_startzeit_1_uhrzeit_start_minute
10
startzeit_fix_1_minunte
0
val
vars_feste_startzeit_1_uhrzeit_start_minute
startzeit_fix_1_minunte
val
vars_feste_startzeit_1_uhrzeit_start_minute
true
FALSE
Object ID
vars_feste_startzeit_1_uhrzeit_start
TRUE
startzeit_fix_1_stunde
:
startzeit_fix_1_minunte
0
fix_1
fix_1
* * * * *
FALSE
FALSE
*
4-10
*
*
val
vars_feste_startzeit_1_uhrzeit_start_stunde
*
val
vars_feste_startzeit_1_uhrzeit_start_minute
AND
AND
EQ
val
vars_feste_startzeit_1_aktiv
TRUE
AND
EQ
val
vars_bewaesserung_automatik
TRUE
EQ
val
vars_bewaesserung_aktiv
FALSE
AND
OR
GTE
val
vars_wetter_max_temp
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
vars_schwellwert_regen
EQ
vars_wetter_regen
false
true
FALSE
Object ID
vars_bewaesserung_aktiv
TRUE
0
Feste Uhrzeit 2
LT
val
vars_feste_startzeit_2_uhrzeit_start_stunde
10
startzeit_fix_2_stunde
0
val
vars_feste_startzeit_2_uhrzeit_start_stunde
startzeit_fix_2_stunde
val
vars_feste_startzeit_2_uhrzeit_start_stunde
LT
val
vars_feste_startzeit_2_uhrzeit_start_minute
10
startzeit_fix_2_minunte
0
val
vars_feste_startzeit_2_uhrzeit_start_minute
startzeit_fix_2_minunte
val
vars_feste_startzeit_2_uhrzeit_start_minute
true
FALSE
Object ID
vars_feste_startzeit_2_uhrzeit_start
TRUE
startzeit_fix_2_stunde
:
startzeit_fix_2_minunte
0
fix_2
fix_2
* * * * *
FALSE
FALSE
*
4-10
*
*
val
vars_feste_startzeit_2_uhrzeit_start_stunde
*
val
vars_feste_startzeit_2_uhrzeit_start_minute
AND
AND
EQ
val
vars_feste_startzeit_2_aktiv
TRUE
AND
EQ
val
vars_bewaesserung_automatik
TRUE
EQ
val
vars_bewaesserung_aktiv
FALSE
AND
OR
GTE
val
vars_wetter_max_temp
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
vars_schwellwert_regen
EQ
vars_wetter_regen
false
true
FALSE
Object ID
vars_bewaesserung_aktiv
TRUE
0
Feste Uhrzeit 3
LT
val
vars_feste_startzeit_3_uhrzeit_start_stunde
10
startzeit_fix_3_stunde
0
val
vars_feste_startzeit_3_uhrzeit_start_stunde
startzeit_fix_3_stunde
val
vars_feste_startzeit_3_uhrzeit_start_stunde
LT
val
vars_feste_startzeit_3_uhrzeit_start_minute
10
startzeit_fix_3_minute
0
val
vars_feste_startzeit_3_uhrzeit_start_minute
startzeit_fix_3_minute
val
vars_feste_startzeit_3_uhrzeit_start_minute
true
FALSE
Object ID
vars_feste_startzeit_3_uhrzeit_start
TRUE
startzeit_fix_3_stunde
:
startzeit_fix_3_minute
0
fix_3
fix_3
* * * * *
FALSE
FALSE
*
4-10
*
*
val
vars_feste_startzeit_3_uhrzeit_start_stunde
*
val
vars_feste_startzeit_3_uhrzeit_start_minute
AND
AND
EQ
val
vars_feste_startzeit_3_aktiv
TRUE
AND
EQ
val
vars_bewaesserung_automatik
TRUE
EQ
val
vars_bewaesserung_aktiv
FALSE
AND
OR
GTE
val
vars_wetter_max_temp
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
vars_schwellwert_regen
EQ
vars_wetter_regen
false
true
FALSE
Object ID
vars_bewaesserung_aktiv
TRUE
0
Enduhrzeiten berechnen
ne
default
vars_bewaesserung_aktiv
default
vars_bewaesserung_pause
Gesamt
EQ
val
vars_bewaesserung_aktiv
TRUE
Enduhrzeit berechnen
info_enduhrzeit_raw
Jedes Ventil startet mit einer Verzögerung von 1 Sekunde. Daher wird pro Ventil 1 Sekunde auf die Gesamtlaufzeit drauf gerechnetGesamtlaufzeit = Jetzt + Laufzeit + Umschaltsekunden
ADD
1
sid
1
val
vars_restlautzeit_in_sek
info_endzeit_stunde
ROUNDDOWN
3.1
DIVIDE
1
info_enduhrzeit_raw
3600
info_endzeit_minute
ROUNDDOWN
3.1
DIVIDE
1
MINUS
1
info_enduhrzeit_raw
1
MULTIPLY
1
info_endzeit_stunde
3600
60
info_endzeit_sekunde
MINUS
1
info_enduhrzeit_raw
1
MULTIPLY
1
info_endzeit_stunde
3600
info_endzeit_sekunde
MINUS
1
info_endzeit_sekunde
1
MULTIPLY
1
info_endzeit_minute
60
Mail Stunden formatieren bei kleiner 10
LT
info_endzeit_stunde
10
info_endzeit_stunde
0
info_endzeit_stunde
Mail Minuten formatieren bei kleiner 10
LT
info_endzeit_minute
10
info_endzeit_minute
0
info_endzeit_minute
Mail Sekunden formatieren bei kleiner 10
LT
info_endzeit_sekunde
10
info_endzeit_sekunde
0
s
true
FALSE
Object ID
vars_lautzeit_ende_uhrzeit
TRUE
info_endzeit_stunde
:
info_endzeit_minute
:
info_endzeit_sekunde
Uhr
0
pro Ventil
AND
EQ
val
vars_bewaesserung_aktiv
TRUE
EQ
val
vars_bewaesserung_pause
FALSE
Ventil 1 End-Uhrzeit
EQ
val
vars_ventil_1
TRUE
ventil_enduhrzeit_raw
ADD
Plus 1 Sekuden fpr das setzen des wertes ON_TIME des HM Aktors
1
ADD
1
sid
1
val
vars_ventil_1_restzeit_in_sek
1
ventil_enduhrzeit_std
ROUNDDOWN
3.1
DIVIDE
1
ventil_enduhrzeit_raw
3600
ventil_enduhrzeit_min
ROUNDDOWN
3.1
DIVIDE
1
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
60
ventil_enduhrzeit_sek
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
ventil_enduhrzeit_sek
MINUS
1
ventil_enduhrzeit_sek
1
MULTIPLY
1
ventil_enduhrzeit_min
60
LT
ventil_enduhrzeit_std
10
ventil_enduhrzeit_std
0
ventil_enduhrzeit_std
LT
ventil_enduhrzeit_min
10
ventil_enduhrzeit_min
0
ventil_enduhrzeit_min
LT
ventil_enduhrzeit_sek
10
ventil_enduhrzeit_sek
0
ventil_enduhrzeit_sek
true
FALSE
Object ID
vars_ventil_1_ende
TRUE
ventil_enduhrzeit_std
:
ventil_enduhrzeit_min
:
ventil_enduhrzeit_sek
0
true
FALSE
Object ID
vars_ventil_1_ende
TRUE
deaktiviert
0
Ventil 2 End-Uhrzeit
EQ
val
vars_ventil_2
TRUE
Pro aktivem Ventil kommt 1 Sekunde Verzögerung für das setzen von ON_TIME hinzu
EQ
val
vars_ventil_1
FALSE
ventil_enduhrzeit_verzoegerung
1
EQ
val
vars_ventil_1
TRUE
ventil_enduhrzeit_verzoegerung
2
ventil_enduhrzeit_raw
ADD
1
ADD
1
sid
1
val
vars_ventil_1_restzeit_in_sek
1
ADD
1
val
vars_ventil_2_restzeit_in_sek
1
ventil_enduhrzeit_verzoegerung
ventil_enduhrzeit_std
ROUNDDOWN
3.1
DIVIDE
1
ventil_enduhrzeit_raw
3600
ventil_enduhrzeit_min
ROUNDDOWN
3.1
DIVIDE
1
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
60
ventil_enduhrzeit_sek
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
ventil_enduhrzeit_sek
MINUS
1
ventil_enduhrzeit_sek
1
MULTIPLY
1
ventil_enduhrzeit_min
60
LT
ventil_enduhrzeit_std
10
ventil_enduhrzeit_std
0
ventil_enduhrzeit_std
LT
ventil_enduhrzeit_min
10
ventil_enduhrzeit_min
0
ventil_enduhrzeit_min
LT
ventil_enduhrzeit_sek
10
ventil_enduhrzeit_sek
0
ventil_enduhrzeit_sek
true
FALSE
Object ID
vars_ventil_2_ende
TRUE
ventil_enduhrzeit_std
:
ventil_enduhrzeit_min
:
ventil_enduhrzeit_sek
0
true
FALSE
Object ID
vars_ventil_2_ende
TRUE
deaktiviert
0
Ventil 3 End-Uhrzeit
EQ
val
vars_ventil_3
TRUE
Pro aktivem Ventil kommt 1 Sekunde Verzögerung für das setzen von ON_TIME hinzu
EQ
val
vars_ventil_3
TRUE
AND
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_2
FALSE
ventil_enduhrzeit_verzoegerung
1
OR
EQ
val
vars_ventil_1
TRUE
EQ
val
vars_ventil_2
TRUE
ventil_enduhrzeit_verzoegerung
2
AND
EQ
val
vars_ventil_1
TRUE
EQ
val
vars_ventil_2
TRUE
ventil_enduhrzeit_verzoegerung
3
ventil_enduhrzeit_raw
ADD
1
ADD
1
sid
1
val
vars_ventil_1_restzeit_in_sek
1
ADD
1
ADD
1
val
vars_ventil_2_restzeit_in_sek
1
val
vars_ventil_3_restzeit_in_sek
1
ventil_enduhrzeit_verzoegerung
ventil_enduhrzeit_std
ROUNDDOWN
3.1
DIVIDE
1
ventil_enduhrzeit_raw
3600
ventil_enduhrzeit_min
ROUNDDOWN
3.1
DIVIDE
1
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
60
ventil_enduhrzeit_sek
MINUS
1
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
1
MULTIPLY
1
ventil_enduhrzeit_min
60
LT
ventil_enduhrzeit_std
10
ventil_enduhrzeit_std
0
ventil_enduhrzeit_std
LT
ventil_enduhrzeit_min
10
ventil_enduhrzeit_min
0
ventil_enduhrzeit_min
LT
ventil_enduhrzeit_sek
10
ventil_enduhrzeit_sek
0
ventil_enduhrzeit_sek
true
FALSE
Object ID
vars_ventil_3_ende
TRUE
ventil_enduhrzeit_std
:
ventil_enduhrzeit_min
:
ventil_enduhrzeit_sek
0
true
FALSE
Object ID
vars_ventil_3_ende
TRUE
deaktiviert
0
Ventil 4 End-Uhrzeit
EQ
val
vars_ventil_4
TRUE
Pro aktivem Ventil kommt 1 Sekunde Verzögerung für das setzen von ON_TIME hinzu
EQ
val
vars_ventil_4
TRUE
AND
AND
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_2
FALSE
EQ
val
vars_ventil_3
FALSE
ventil_enduhrzeit_verzoegerung
1
OR
OR
EQ
val
vars_ventil_1
TRUE
EQ
val
vars_ventil_2
TRUE
EQ
val
vars_ventil_3
TRUE
ventil_enduhrzeit_verzoegerung
2
AND
AND
EQ
val
vars_ventil_1
TRUE
EQ
val
vars_ventil_2
TRUE
EQ
val
vars_ventil_3
FALSE
ventil_enduhrzeit_verzoegerung
3
AND
AND
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_2
TRUE
EQ
val
vars_ventil_3
TRUE
ventil_enduhrzeit_verzoegerung
3
AND
AND
EQ
val
vars_ventil_1
TRUE
EQ
val
vars_ventil_2
FALSE
EQ
val
vars_ventil_3
TRUE
ventil_enduhrzeit_verzoegerung
3
AND
AND
EQ
val
vars_ventil_1
TRUE
EQ
val
vars_ventil_2
TRUE
EQ
val
vars_ventil_3
TRUE
ventil_enduhrzeit_verzoegerung
4
ventil_enduhrzeit_raw
ADD
1
ADD
1
sid
1
ADD
1
val
vars_ventil_1_restzeit_in_sek
1
val
vars_ventil_2_restzeit_in_sek
1
ADD
1
ADD
1
val
vars_ventil_3_restzeit_in_sek
1
val
vars_ventil_4_restzeit_in_sek
1
ventil_enduhrzeit_verzoegerung
ventil_enduhrzeit_std
ROUNDDOWN
3.1
DIVIDE
1
ventil_enduhrzeit_raw
3600
ventil_enduhrzeit_min
ROUNDDOWN
3.1
DIVIDE
1
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
60
ventil_enduhrzeit_sek
MINUS
1
MINUS
1
ventil_enduhrzeit_raw
1
MULTIPLY
1
ventil_enduhrzeit_std
3600
1
MULTIPLY
1
ventil_enduhrzeit_min
60
LT
ventil_enduhrzeit_std
10
ventil_enduhrzeit_std
0
ventil_enduhrzeit_std
LT
ventil_enduhrzeit_min
10
ventil_enduhrzeit_min
0
ventil_enduhrzeit_min
LT
ventil_enduhrzeit_sek
10
ventil_enduhrzeit_sek
0
ventil_enduhrzeit_sek
true
FALSE
Object ID
vars_ventil_4_ende
TRUE
ventil_enduhrzeit_std
:
ventil_enduhrzeit_min
:
ventil_enduhrzeit_sek
0
true
FALSE
Object ID
vars_ventil_4_ende
TRUE
deaktiviert
0
EQ
val
vars_bewaesserung_aktiv
FALSE
true
FALSE
Object ID
vars_ventil_1_ende
TRUE
0
true
FALSE
Object ID
vars_ventil_2_ende
TRUE
0
true
FALSE
Object ID
vars_ventil_3_ende
TRUE
0
true
FALSE
Object ID
vars_ventil_4_ende
TRUE
0
Laufzeiten setzen
--> Angepasst: Minuten
--> Angepasst: %
ne
default
vars_ventil_1
default
vars_ventil_2
default
vars_ventil_3
default
vars_ventil_4
default
vars_ventil_1_dauer
default
vars_ventil_2_dauer
default
vars_ventil_3_dauer
default
vars_ventil_4_dauer
default
vars_bewaesserung_aktiv
Laufzeit Ventile
EQ
val
vars_bewaesserung_aktiv
FALSE
Ventil 1 - Laufzeit
EQ
val
vars_ventil_1
TRUE
EQ
vars_ventil_dauer_in_minuten
FALSE
in Sekunden
ventil_1_dauer
val
vars_ventil_1_dauer
in Minuten
ventil_1_dauer
MULTIPLY
1
val
vars_ventil_1_dauer
60
ventil_1_dauer
0
true
FALSE
Object ID
vars_ventil_1_restzeit
TRUE
DIVIDE
60
ventil_1_dauer
60
:00
0
true
FALSE
Object ID
vars_ventil_1_restzeit_in_sek
TRUE
ventil_1_dauer
0
true
FALSE
Object ID
vars_ventil_1_rest_in_prozent
TRUE
100
0
Ventil 2 - Laufzeit
EQ
val
vars_ventil_2
TRUE
EQ
vars_ventil_dauer_in_minuten
FALSE
in Sekunden
ventil_2_dauer
val
vars_ventil_2_dauer
in Minuten
ventil_2_dauer
MULTIPLY
1
val
vars_ventil_2_dauer
60
ventil_2_dauer
0
true
FALSE
Object ID
vars_ventil_2_restzeit
TRUE
DIVIDE
1
ventil_2_dauer
60
:00
0
true
FALSE
Object ID
vars_ventil_2_restzeit_in_sek
TRUE
ventil_2_dauer
0
true
FALSE
Object ID
vars_ventil_2_rest_in_prozent
TRUE
100
0
Ventil 3 - Laufzeit
EQ
val
vars_ventil_3
TRUE
EQ
vars_ventil_dauer_in_minuten
FALSE
in Sekunden
ventil_3_dauer
val
vars_ventil_3_dauer
in Minuten
ventil_3_dauer
MULTIPLY
1
val
vars_ventil_3_dauer
60
ventil_3_dauer
0
true
FALSE
Object ID
vars_ventil_3_restzeit
TRUE
DIVIDE
1
ventil_3_dauer
60
:00
0
true
FALSE
Object ID
vars_ventil_3_restzeit_in_sek
TRUE
ventil_3_dauer
0
true
FALSE
Object ID
vars_ventil_3_rest_in_prozent
TRUE
100
0
Ventil 4 - Laufzeit
EQ
val
vars_ventil_4
TRUE
ventil_4_dauer
val
vars_ventil_4_dauer
ventil_4_dauer
0
true
FALSE
Object ID
vars_ventil_4_restzeit
TRUE
DIVIDE
1
ventil_4_dauer
60
:00
0
true
FALSE
Object ID
vars_ventil_4_restzeit_in_sek
TRUE
ventil_4_dauer
0
Gesamtlaufzeit
EQ
val
vars_bewaesserung_aktiv
FALSE
Gesamtlaufzeit in Sek
true
FALSE
Pro aktives Ventil wird auf die Gesamtlaufzeit eine Sekunden drauf gerechnet für das setzen der ON_TIME
Object ID
vars_laufzeit_gesamt_in_sek
TRUE
ADD
1
ADD
1
ADD
1
ventil_1_dauer
1
ventil_2_dauer
1
ADD
1
ventil_3_dauer
1
ventil_4_dauer
1
ADD
1
ADD
1
val
vars_ventil_1
1
val
vars_ventil_2
1
ADD
1
val
vars_ventil_3
1
val
vars_ventil_4
0
true
FALSE
Object ID
vars_restlautzeit_in_sek
TRUE
ADD
1
ADD
1
ADD
1
ventil_1_dauer
1
ventil_2_dauer
1
ADD
1
ventil_3_dauer
1
ventil_4_dauer
1
ADD
1
ADD
1
val
vars_ventil_1
1
val
vars_ventil_2
1
ADD
1
val
vars_ventil_3
1
val
vars_ventil_4
0
Gesamtlaufzeit fuer die VIS
restlaufzeit_vis_min
ROUNDDOWN
3.1
DIVIDE
1
val
vars_laufzeit_gesamt_in_sek
60
restlaufzeit_vis_sek
MINUS
1
val
vars_laufzeit_gesamt_in_sek
1
MULTIPLY
1
restlaufzeit_vis_min
60
LT
restlaufzeit_vis_sek
10
restlaufzeit_vis_sek
0
restlaufzeit_vis_sek
true
FALSE
Object ID
vars_restlautzeit
TRUE
restlaufzeit_vis_min
:
restlaufzeit_vis_sek
0
Mail / Pushover / Alexa
ne
default
vars_bewaesserung_aktiv
default
vars_bewaesserung_pause
Start
AND
EQ
val
vars_bewaesserung_aktiv
TRUE
EQ
val
vars_bewaesserung_pause
FALSE
Mail Text und Betreff
waitmail2
1
sec
Aktive Ventile
EQ
val
vars_ventil_1
TRUE
info_endzeit_aktive_ventile
Ventil 1 (
val
vars_ventil_1_name
):
val
vars_ventil_1_ende
Uhr
EQ
val
vars_ventil_2
TRUE
info_endzeit_aktive_ventile
info_endzeit_aktive_ventile
\n
Ventil 2 (
val
vars_ventil_2_name
):
val
vars_ventil_2_ende
Uhr
EQ
val
vars_ventil_3
TRUE
info_endzeit_aktive_ventile
info_endzeit_aktive_ventile
\n
Ventil 3 (
val
vars_ventil_3_name
):
val
vars_ventil_3_ende
Uhr
EQ
val
vars_ventil_4
TRUE
info_endzeit_aktive_ventile
info_endzeit_aktive_ventile
\n
Ventil 4 (
val
vars_ventil_4_name
):
val
vars_ventil_4_ende
Uhr
info_text
Die Gartenbew䳳erung wurde akiviert.
\n
\n
Bew䳳erungsdauer:
val
vars_restlautzeit
\n
Start:
hh:mm:ss
Uhr
\n
Ende:
val
vars_lautzeit_ende_uhrzeit
\n
\n
Aktive Ventile:
\n
info_endzeit_aktive_ventile
info_betreff
+++
hh:mm
Uhr - Gartenbew䳳erung aktiviert +++
EQ
vars_notify_mail
TRUE
FALSE
val
javascript.0.mailadressen.mailadresse_daniel
info_text
info_betreff
EQ
vars_notify_pushover
TRUE
.0
0
text
info_text
info_betreff
Sprachausgabe
EQ
vars_notify_alexa
TRUE
NEQ
info_endzeit_minute
00
true
FALSE
Object ID
vars_notify_alexa_device
TRUE
Gartenbewässerung gestartet. ende um
info_endzeit_stunde
Uhr
info_endzeit_minute
und
info_endzeit_stunde
Sekunden
0
true
FALSE
Object ID
vars_notify_alexa_device
TRUE
Gartenbewässerung gestartet. ende um
info_endzeit_stunde
Uhr
und
info_endzeit_stunde
Sekunden
0
Stop
EQ
val
vars_bewaesserung_aktiv
FALSE
EQ
vars_notify_mail
TRUE
FALSE
val
javascript.0.mailadressen.mailadresse_daniel
Gartenbew䳳erung beendet
+++
hh:mm
Uhr - Gartenbew䳳erung beendet +++
EQ
vars_notify_pushover
TRUE
.0
0
+++
hh:mm
Uhr - Gartenbew䳳erung beendet +++
EQ
vars_notify_alexa
TRUE
true
FALSE
Object ID
vars_notify_alexa_device
TRUE
Gartenbew䳳erung beendet.
0
Log Eintraege
ne
default
vars_bewaesserung_aktiv
default
vars_ventil_1_aktor
default
vars_ventil_2_aktor
default
vars_ventil_3_aktor
default
vars_ventil_4_aktor
EQ
vars_notify_log
TRUE
+++ Bewässerung gestartet +++
Log Eintrag wird nur ausgegeben, wenn alle Ventile aus sind, und die Variable sich vor 1 Sek geändert hat.
AND
AND
EQ
val
vars_bewaesserung_aktiv
TRUE
AND
EQ
DD.MM.YYYY
DD.MM.YYYY
lc
vars_bewaesserung_aktiv
LTE
MINUS
1
sid
1
sid
lc
vars_bewaesserung_aktiv
1
AND
AND
EQ
lc
vars_ventil_1_aktor
FALSE
EQ
lc
vars_ventil_2_aktor
FALSE
AND
EQ
lc
vars_ventil_3_aktor
FALSE
EQ
lc
vars_ventil_4_aktor
FALSE
log
+++ Bewässerung gestartet +++
EQ
val
vars_bewaesserung_aktiv
FALSE
log
+++ Bewässerung beendet +++
Ventil 1
AND
EQ
DD.MM.YYYY
DD.MM.YYYY
lc
vars_ventil_1_aktor
LTE
MINUS
1
sid
1
sid
lc
vars_ventil_1_aktor
5
EQ
val
vars_ventil_1_aktor
TRUE
log
+++ Bewässerung: Ventil 1 -
val
vars_ventil_1_name
aktiv +++
Ventil 2
AND
EQ
DD.MM.YYYY
DD.MM.YYYY
lc
vars_ventil_2_aktor
LTE
MINUS
1
sid
1
sid
lc
vars_ventil_2_aktor
5
EQ
val
vars_ventil_2_aktor
TRUE
log
+++ Bewässerung: Ventil 2 -
val
vars_ventil_2_name
aktiv +++
Ventil 3
AND
EQ
DD.MM.YYYY
DD.MM.YYYY
lc
vars_ventil_3_aktor
LTE
MINUS
1
sid
1
sid
lc
vars_ventil_3_aktor
5
EQ
val
vars_ventil_3_aktor
TRUE
log
+++ Bewässerung: Ventil 3 -
val
vars_ventil_3_name
aktiv +++
Ventil 4
AND
EQ
DD.MM.YYYY
DD.MM.YYYY
lc
vars_ventil_4_aktor
LTE
MINUS
1
sid
1
sid
lc
vars_ventil_4_aktor
5
EQ
val
vars_ventil_4_aktor
TRUE
log
+++ Bewässerung: Ventil 4 -
val
vars_ventil_4_name
aktiv +++
Aktive Ventile zaehlen
ne
default
vars_ventil_1_aktor
default
vars_ventil_2_aktor
default
vars_ventil_3_aktor
default
vars_ventil_4_aktor
true
FALSE
Object ID
vars_anzahl_aktive_ventile
TRUE
0
0
true
FALSE
Object ID
vars_anzahl_aktive_ventile
TRUE
ADD
1
ADD
1
val
vars_ventil_1_aktor
1
val
vars_ventil_2_aktor
1
ADD
1
val
vars_ventil_3_aktor
1
val
vars_ventil_4_aktor
0
Ventil Steuerung
ne
default
vars_bewaesserung_aktiv
default
vars_bewaesserung_pause
default
vars_restlautzeit_in_sek
AND
EQ
val
vars_bewaesserung_aktiv
TRUE
EQ
val
vars_bewaesserung_pause
FALSE
Ventil 1
AND
EQ
val
vars_ventil_1
TRUE
NEQ
val
vars_ventil_1_restzeit_in_sek
0
AND
EQ
val
vars_ventil_1_aktor
FALSE
LT
val
vars_anzahl_aktive_ventile
3
Einshaltdauer setzen
EQ
vars_aktor_typ
hm
ON_TIME fuer Homematic
false
FALSE
Object ID
vars_ventil_1_aktor_ontime
TRUE
val
vars_ventil_1_restzeit_in_sek
0
EQ
vars_aktor_typ
sonoff
PulseTime fuer Sonoff
FALSE
text
http://
vars_sonoff_ip
/cm?cmnd=PulseTime1%20
ADD
100
1
val
vars_ventil_1_restzeit_in_sek
false
FALSE
Object ID
vars_ventil_1_aktor
TRUE
1000
true
FALSE
Object ID
vars_aktives_ventil
TRUE
ventil_1
1000
Ventil 2
AND
OR
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_1_restzeit_in_sek
0
AND
EQ
val
vars_ventil_2
TRUE
NEQ
val
vars_ventil_2_restzeit_in_sek
0
AND
EQ
val
vars_ventil_2_aktor
FALSE
LT
val
vars_anzahl_aktive_ventile
3
Ventil 1 ausschalten
EQ
val
vars_ventil_1_aktor
TRUE
false
FALSE
Object ID
vars_ventil_1_aktor
FALSE
0
Einshaltdauer setzen
EQ
vars_aktor_typ
hm
ON_TIME fuer Homematic
false
FALSE
Object ID
vars_ventil_2_aktor_ontime
TRUE
val
vars_ventil_2_restzeit_in_sek
0
EQ
vars_aktor_typ
sonoff
PulseTime fuer Sonoff
FALSE
text
http://
vars_sonoff_ip
/cm?cmnd=PulseTime2%20
ADD
100
1
val
vars_ventil_2_restzeit_in_sek
false
FALSE
Object ID
vars_ventil_2_aktor
TRUE
1000
true
FALSE
Object ID
vars_aktives_ventil
TRUE
ventil_2
1000
Ventil 3
AND
OR
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_1_restzeit_in_sek
0
AND
OR
EQ
val
vars_ventil_2
FALSE
EQ
val
vars_ventil_2_restzeit_in_sek
0
AND
EQ
val
vars_ventil_3
TRUE
NEQ
val
vars_ventil_3_restzeit_in_sek
0
AND
EQ
val
vars_ventil_3_aktor
FALSE
LT
val
vars_anzahl_aktive_ventile
3
Ventil 2 ausschalten
EQ
val
vars_ventil_2_aktor
TRUE
false
FALSE
Object ID
vars_ventil_2_aktor
FALSE
0
Einshaltdauer setzen
EQ
vars_aktor_typ
hm
ON_TIME fuer Homematic
false
FALSE
Object ID
vars_ventil_3_aktor_ontime
TRUE
val
vars_ventil_3_restzeit_in_sek
0
EQ
vars_aktor_typ
sonoff
PulseTime fuer Sonoff
FALSE
text
http://
vars_sonoff_ip
/cm?cmnd=PulseTime3%20
ADD
100
1
val
vars_ventil_3_restzeit_in_sek
false
FALSE
Object ID
vars_ventil_3_aktor
TRUE
1000
true
FALSE
Object ID
vars_aktives_ventil
TRUE
ventil_3
1000
Ventil 4
AND
AND
OR
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_1_restzeit_in_sek
0
OR
EQ
val
vars_ventil_2
FALSE
EQ
val
vars_ventil_2_restzeit_in_sek
0
AND
OR
EQ
val
vars_ventil_3
FALSE
EQ
val
vars_ventil_3_restzeit_in_sek
0
AND
EQ
val
vars_ventil_4
TRUE
NEQ
val
vars_ventil_4_restzeit_in_sek
0
AND
EQ
val
vars_ventil_4_aktor
FALSE
LT
val
vars_anzahl_aktive_ventile
3
Ventil 3 ausschalten
EQ
val
vars_ventil_3_aktor
TRUE
false
FALSE
Object ID
vars_ventil_3_aktor
FALSE
0
Einshaltdauer setzen
EQ
vars_aktor_typ
hm
ON_TIME fuer Homematic
false
FALSE
Object ID
vars_ventil_4_aktor_ontime
TRUE
val
vars_ventil_4_restzeit_in_sek
0
EQ
vars_aktor_typ
sonoff
PulseTime fuer Sonoff
FALSE
text
http://
vars_sonoff_ip
/cm?cmnd=PulseTime4%20
ADD
100
1
val
vars_ventil_4_restzeit_in_sek
false
FALSE
Object ID
vars_ventil_4_aktor
TRUE
1000
true
FALSE
Object ID
vars_aktives_ventil
TRUE
ventil_4
1000
AND
EQ
val
vars_bewaesserung_aktiv
TRUE
EQ
val
vars_bewaesserung_pause
TRUE
Ventil 1 pausieren
EQ
val
vars_ventil_1_aktor
TRUE
false
FALSE
Object ID
vars_ventil_1_aktor
FALSE
0
Ventil 2 pausieren
EQ
val
vars_ventil_2_aktor
TRUE
false
FALSE
Object ID
vars_ventil_2_aktor
FALSE
0
Ventil 3 pausieren
EQ
val
vars_ventil_3_aktor
TRUE
false
FALSE
Object ID
vars_ventil_3_aktor
FALSE
0
Ventil 4 pausieren
EQ
val
vars_ventil_4_aktor
TRUE
false
FALSE
Object ID
vars_ventil_4_aktor
FALSE
0
AND
EQ
val
vars_bewaesserung_aktiv
FALSE
EQ
val
vars_bewaesserung_pause
FALSE
true
FALSE
Object ID
vars_aktives_ventil
TRUE
aus
0
Restzeit gesamt berechnen
ne
default
vars_bewaesserung_aktiv
EQ
val
vars_bewaesserung_aktiv
TRUE
restzeit
1000
ms
EQ
val
vars_bewaesserung_pause
FALSE
true
FALSE
Object ID
vars_restlautzeit_in_sek
TRUE
MINUS
1
val
vars_restlautzeit_in_sek
1
0
restzeit_gesamt_min
ROUNDDOWN
3.1
DIVIDE
0
val
vars_restlautzeit_in_sek
60
restzeit_gesamt_sek
MINUS
1
val
vars_restlautzeit_in_sek
1
MULTIPLY
1
restzeit_gesamt_min
60
0 hinzufuegen wenn Minuten < 10
LT
restzeit_gesamt_min
10
restzeit_gesamt_min
0
restzeit_gesamt_min
0 hinzufuegen wenn Sekunden < 10
LT
restzeit_gesamt_sek
10
restzeit_gesamt_sek
0
restzeit_gesamt_sek
true
FALSE
Object ID
vars_restlautzeit
TRUE
restzeit_gesamt_min
:
restzeit_gesamt_sek
0
EQ
val
vars_restlautzeit_in_sek
0
true
FALSE
Object ID
vars_bewaesserung_aktiv
FALSE
0
restzeit
EQ
val
vars_bewaesserung_aktiv
FALSE
restzeit
Restzeit Ventile berechnen
--> Angepasst: % Ventile 1-3
ne
default
vars_bewaesserung_aktiv
EQ
val
vars_bewaesserung_aktiv
TRUE
Ventil 1
EQ
val
vars_ventil_1
TRUE
true
FALSE
Umschaltverzögerung für ON_TIME
Object ID
vars_ventil_1_restzeit_in_sek
TRUE
ADD
1
val
vars_ventil_1_restzeit_in_sek
1
0
ventil_1_rest
1000
ms
AND
EQ
val
vars_bewaesserung_pause
FALSE
AND
EQ
val
vars_ventil_1
TRUE
NEQ
val
vars_ventil_1_restzeit_in_sek
0
true
FALSE
Object ID
vars_ventil_1_restzeit_in_sek
TRUE
MINUS
1
val
vars_ventil_1_restzeit_in_sek
1
0
VIS Anzeige setzen
restzeit_ventil_min
ROUNDDOWN
3.1
DIVIDE
1
val
vars_ventil_1_restzeit_in_sek
60
restzeit_ventil_sek
MINUS
1
val
vars_ventil_1_restzeit_in_sek
1
MULTIPLY
1
restzeit_ventil_min
60
%
LT
restzeit_ventil_sek
10
true
FALSE
Object ID
vars_ventil_1_restzeit
TRUE
restzeit_ventil_min
:0
restzeit_ventil_sek
0
true
FALSE
Object ID
vars_ventil_1_restzeit
TRUE
restzeit_ventil_min
:
restzeit_ventil_sek
0
EQ
vars_ventil_dauer_in_minuten
FALSE
Laufzeit in Sekunden
restzeit_ventil_prozent
ROUND
3.1
DIVIDE
1
val
vars_ventil_1_restzeit_in_sek
1
MULTIPLY
1
val
vars_ventil_1_dauer
1
100
true
FALSE
Object ID
vars_ventil_1_rest_in_prozent
TRUE
restzeit_ventil_prozent
0
Laufzeit in Minuten
restzeit_ventil_prozent
ROUND
3.1
MULTIPLY
1
DIVIDE
1
val
vars_ventil_1_restzeit_in_sek
1
MULTIPLY
1
MULTIPLY
1
val
vars_ventil_1_dauer
60
1
100
10000
true
FALSE
Object ID
vars_ventil_1_rest_in_prozent
TRUE
restzeit_ventil_prozent
0
EQ
val
vars_ventil_1_restzeit_in_sek
0
Rest auf 100%
true
FALSE
Object ID
vars_ventil_1_rest_in_prozent
TRUE
100
0
ventil_1_rest
Ventil 2
EQ
val
vars_ventil_2
TRUE
true
FALSE
Umschaltverzögerung für ON_TIME
Object ID
vars_ventil_2_restzeit_in_sek
TRUE
ADD
1
val
vars_ventil_2_restzeit_in_sek
1
0
ventil_2_rest
1000
ms
AND
EQ
val
vars_bewaesserung_pause
FALSE
AND
OR
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_1_restzeit_in_sek
0
AND
EQ
val
vars_ventil_2
TRUE
NEQ
val
vars_ventil_2_restzeit_in_sek
0
true
FALSE
Object ID
vars_ventil_2_restzeit_in_sek
TRUE
MINUS
1
val
vars_ventil_2_restzeit_in_sek
1
0
VIS Anzeige setzen
restzeit_ventil_min
ROUNDDOWN
3.1
DIVIDE
1
val
vars_ventil_2_restzeit_in_sek
60
restzeit_ventil_sek
MINUS
1
val
vars_ventil_2_restzeit_in_sek
1
MULTIPLY
1
restzeit_ventil_min
60
LT
restzeit_ventil_sek
10
true
FALSE
Object ID
vars_ventil_2_restzeit
TRUE
restzeit_ventil_min
:0
restzeit_ventil_sek
0
true
FALSE
Object ID
vars_ventil_2_restzeit
TRUE
restzeit_ventil_min
:
restzeit_ventil_sek
0
%
EQ
vars_ventil_dauer_in_minuten
FALSE
Laufzeit in Sekunden
restzeit_ventil_prozent
ROUND
3.1
DIVIDE
1
val
vars_ventil_2_restzeit_in_sek
1
MULTIPLY
1
val
vars_ventil_2_dauer
1
100
true
FALSE
Object ID
vars_ventil_2_rest_in_prozent
TRUE
restzeit_ventil_prozent
0
Laufzeit in Minuten
restzeit_ventil_prozent
ROUND
3.1
MULTIPLY
1
DIVIDE
1
val
vars_ventil_2_restzeit_in_sek
1
MULTIPLY
1
MULTIPLY
1
val
vars_ventil_2_dauer
60
1
100
10000
true
FALSE
Object ID
vars_ventil_2_rest_in_prozent
TRUE
restzeit_ventil_prozent
0
EQ
val
vars_ventil_2_restzeit_in_sek
0
Rest auf 100%
true
FALSE
Object ID
vars_ventil_2_rest_in_prozent
TRUE
100
0
ventil_2_rest
Ventil 3
EQ
val
vars_ventil_3
TRUE
true
FALSE
Umschaltverzögerung für ON_TIME
Object ID
vars_ventil_3_restzeit_in_sek
TRUE
ADD
1
val
vars_ventil_3_restzeit_in_sek
1
0
ventil_3_rest
1000
ms
AND
AND
EQ
val
vars_bewaesserung_pause
FALSE
AND
OR
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_1_restzeit_in_sek
0
OR
EQ
val
vars_ventil_2
FALSE
EQ
val
vars_ventil_2_restzeit_in_sek
0
AND
EQ
val
vars_ventil_3
TRUE
NEQ
val
vars_ventil_3_restzeit_in_sek
0
true
FALSE
Object ID
vars_ventil_3_restzeit_in_sek
TRUE
MINUS
1
val
vars_ventil_3_restzeit_in_sek
1
0
VIS Anzeige setzen
restzeit_ventil_min
ROUNDDOWN
3.1
DIVIDE
1
val
vars_ventil_3_restzeit_in_sek
60
restzeit_ventil_sek
MINUS
1
val
vars_ventil_3_restzeit_in_sek
1
MULTIPLY
1
restzeit_ventil_min
60
LT
restzeit_ventil_sek
10
true
FALSE
Object ID
vars_ventil_3_restzeit
TRUE
restzeit_ventil_min
:0
restzeit_ventil_sek
0
true
FALSE
Object ID
vars_ventil_3_restzeit
TRUE
restzeit_ventil_min
:
restzeit_ventil_sek
0
%
EQ
vars_ventil_dauer_in_minuten
FALSE
Laufzeit in Sekunden
restzeit_ventil_prozent
ROUND
3.1
DIVIDE
1
val
vars_ventil_3_restzeit_in_sek
1
MULTIPLY
1
val
vars_ventil_3_dauer
1
100
true
FALSE
Object ID
vars_ventil_3_rest_in_prozent
TRUE
restzeit_ventil_prozent
0
Laufzeit in Minuten
restzeit_ventil_prozent
ROUND
3.1
MULTIPLY
1
DIVIDE
1
val
vars_ventil_3_restzeit_in_sek
1
MULTIPLY
1
MULTIPLY
1
val
vars_ventil_3_dauer
60
1
100
10000
true
FALSE
Object ID
vars_ventil_3_rest_in_prozent
TRUE
restzeit_ventil_prozent
0
EQ
val
vars_ventil_3_restzeit_in_sek
0
Rest auf 100%
true
FALSE
Object ID
vars_ventil_3_rest_in_prozent
TRUE
100
0
ventil_3_rest
Ventil 4
EQ
val
vars_ventil_4
TRUE
true
FALSE
Umschaltverzögerung für ON_TIME
Object ID
vars_ventil_4_restzeit_in_sek
TRUE
ADD
1
val
vars_ventil_4_restzeit_in_sek
1
0
ventil_4_rest
1000
ms
AND
EQ
val
vars_bewaesserung_pause
FALSE
AND
AND
AND
OR
EQ
val
vars_ventil_1
FALSE
EQ
val
vars_ventil_1_restzeit_in_sek
0
OR
EQ
val
vars_ventil_2
FALSE
EQ
val
vars_ventil_2_restzeit_in_sek
0
OR
EQ
val
vars_ventil_3
FALSE
EQ
val
vars_ventil_3_restzeit_in_sek
0
AND
EQ
val
vars_ventil_4
TRUE
NEQ
val
vars_ventil_4_restzeit_in_sek
0
true
FALSE
Object ID
vars_ventil_4_restzeit_in_sek
TRUE
MINUS
1
val
vars_ventil_4_restzeit_in_sek
1
0
VIS Anzeige setzen
restzeit_ventil_min
ROUNDDOWN
3.1
DIVIDE
1
val
vars_ventil_4_restzeit_in_sek
60
restzeit_ventil_sek
MINUS
1
val
vars_ventil_4_restzeit_in_sek
1
MULTIPLY
1
restzeit_ventil_min
60
LT
restzeit_ventil_sek
10
true
FALSE
Object ID
vars_ventil_4_restzeit
TRUE
restzeit_ventil_min
:0
restzeit_ventil_sek
0
true
FALSE
Object ID
vars_ventil_4_restzeit
TRUE
restzeit_ventil_min
:
restzeit_ventil_sek
0
EQ
val
vars_ventil_4_restzeit_in_sek
0
ventil_4_rest
ventil_1_rest
ventil_2_rest
ventil_3_rest
ventil_4_rest
Manuelles abschalten -> alle Ventile abschalten
ne
default
vars_bewaesserung_aktiv
default
vars_restlautzeit_in_sek
OR
EQ
val
vars_bewaesserung_aktiv
FALSE
EQ
val
vars_restlautzeit_in_sek
0
Ventil 1
EQ
val
vars_ventil_1_aktor
TRUE
false
FALSE
Object ID
vars_ventil_1_aktor
FALSE
0
Ventil 2
EQ
val
vars_ventil_2_aktor
TRUE
false
FALSE
Object ID
vars_ventil_2_aktor
FALSE
0
Ventil 3
EQ
val
vars_ventil_3_aktor
TRUE
false
FALSE
Object ID
vars_ventil_3_aktor
FALSE
0
Ventil 4
EQ
val
vars_ventil_4_aktor
TRUE
false
FALSE
Object ID
vars_ventil_4_aktor
FALSE
0
Pause
EQ
val
vars_bewaesserung_pause
TRUE
true
FALSE
Object ID
vars_bewaesserung_pause
FALSE
0