vars_pfad
vars_aktor_typ
vars_cron_restart
vars_aktor_name
vars_pumpe
vars_sonnenaufgang
vars_notify_mail
vars_sonnenuntergang
vars_morgens_verzoegerung_sonnenaufgang
vars_abends_verzoegerung_sonnenuntergang
vars_notify_alexa
startzeit_sonnenaufgang
vars_notify_alexa_device
startzeit_sonnenaufgang_stunde
vars_bewaesserung_aktiv
vars_notify_pushover
startzeit_sonnenaufgang_minute
vars_notify_log
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_wetter_max_temp
vars_wetter_regen
vars_morgens_uhrzeit_start_stunde
vars_bewaesserung_pause
vars_morgens_urhzeit_start_minute
morgens
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_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
info_enduhrzeit_raw
vars_lautzeit_ende_uhrzeit
vars_bewaesserung_automatik
abends
info_endzeit_stunde
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
ventil_1_dauer
vars_anzahl_aktive_ventile
vars_laufzeit_gesamt_in_sek
startzeit_sonnenuntergang_stunde
vars_morgens_aktiv
startzeit_fix_1_stunde
ventil_enduhrzeit_std
vars_ventil_3_ende
vars_ventil_1_restzeit
waitmail2
timeout3
startzeit_sonnenuntergang_minute
vars_schwellwert_temperatur
vars_schwellwert_regen
vars_abends_uhrzeit_start_stunde
vars_abends_uhrzeit_start_minute
startzeit_fix_1_minunte
ventil_enduhrzeit_min
vars_ventil_4_ende
vars_ventil_1_aktor
vars_ventil_2_aktor
vars_ventil_3_aktor
vars_ventil_4_aktor
vars_restlautzeit
vars_feste_startzeit_1_uhrzeit_start
ventil_enduhrzeit_sek
restlaufzeit_vis_min
vars_abends_aktiv
fix_1
ventil_enduhrzeit_verzoegerung
ventil_2_dauer
vars_ventil_1_parallel
restlaufzeit_vis_sek
info_endzeit_aktive_ventile
vars_gesamtfortschritt
vars_ventil_2_restzeit
ventil_3_dauer
ventil_4_dauer
startzeit_fix_2_stunde
vars_ventil_1_name
info_text
startzeit_fix_2_minunte
vars_ventil_2_name
info_betreff
vars_ventil_1_status
vars_feste_startzeit_2_uhrzeit_start
vars_ventil_3_restzeit
vars_ventil_3_name
restzeit
vars_abends_uhrzeit_start
vars_feste_startzeit_1_aktiv
fix_2
vars_ventil_4_name
vars_ventil_2_status
vars_sonoff_ip
vars_ventil_1_aktor_ontime
vars_ventil_3_status
restzeit_gesamt_min
startzeit_fix_3_stunde
vars_ventil_4_restzeit
restzeit_gesamt_sek
startzeit_fix_3_minute
vars_ventil_4_status
ventil_1_rest
vars_feste_startzeit_3_uhrzeit_start
vars_ventil_2_aktor_ontime
vars_feste_startzeit_2_aktiv
fix_3
ventil_2_rest
fortschritt_zw
vars_ventil_3_aktor_ontime
restzeit_ventil_min
ventil_3_rest
vars_ventil_1_fortschritt
vars_ventil_4_aktor_ontime
restzeit_ventil_sek
ventil_4_rest
vars_ventil_2_fortschritt
vars_feste_startzeit_3_aktiv
vars_ventil_3_fortschritt
vars_ventil_4_fortschritt
Datenpunkte_erstellen
LyoqDQogKiBDcmVhdGUgc3RhdGVzIHVuZGVyIDBfdXNlcmRhdGEuMCBvciBqYXZhc2NyaXB0LngNCiAqIEN1cnJlbnQgVmVyc2lvbjogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzDQogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8NCiAqIEF1dG9yOiAgICAgICAgICAgICAgIE1pYyAoaW9Ccm9rZXIpIHwgTWljLU0gKGdpdGh1YikNCiAqIFZlcnNpb246ICAgICAgICAgICAgIDEuMSAoMjYgSmFudWFyeSAyMDIwKQ0KICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogUExFQVNFIE5PVEU6IFBlciBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc0LCB0aGUgdXNlZCBmdW5jdGlvbiBzZXRPYmplY3QoKSANCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICogQHBhcmFtIHtzdHJpbmd9IHdoZXJlICAgICAgICAgIFdoZXJlIHRvIGNyZWF0ZSB0aGUgc3RhdGU6ICcwX3VzZXJkYXRhLjAnIG9yICdqYXZhc2NyaXB0LngnLg0KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4NCiAqIEBwYXJhbSB7YXJyYXl9IHN0YXRlc1RvQ3JlYXRlICBTdGF0ZShzKSB0byBjcmVhdGUuIHNpbmdsZSBhcnJheSBvciBhcnJheSBvZiBhcnJheXMNCiAqIEBwYXJhbSB7b2JqZWN0fSBbY2FsbGJhY2tdICAgICBPcHRpb25hbDogYSBjYWxsYmFjayBmdW5jdGlvbiAtLSBUaGlzIHByb3ZpZGVkIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHN0YXRlcyBhcmUgY3JlYXRlZC4NCiAqLw0KDQovKioNCiogSGllciBiaXR0ZSBkZW4gU3BlaWNoZXJvcnQsZGVuIFBmYWQgZWludHJhZ2VuIHVuZCBkZW4gTmFtZW4gZGVyIEtyZWlzZSBlaW5nZWJlbg0KKiBCZWlzcGllbGU6IA0KDQoJc3BlaWNoZXJvcnQgPSAnMF91c2VyZGF0YS4wLicNCglzcGVpY2hlcm9ydCA9ICdqYXZhc2NyaXB0LjAnDQoJDQoJcGZhZCA9ICdiZXdhc3NlcnVuZy4nDQoJcGZhZCA9ICdHYXJkZW5hLkJld2Flc3NlcnVuZy4nDQogICAgDQogICAga3JlaXMxID0gJ0hlY2tlJw0KICAgIGtyZWlzMiA9ICdSYXNlbicNCg0KKi8NCnNwZWljaGVyb3J0ID0gJ2phdmFzY3JpcHQuMCcNCnBmYWQgPSAnYmV3YWVzc2VydW5nLicNCmtyZWlzMSA9ICdIZWNrZScNCmtyZWlzMiA9ICdSYXNlbicNCmtyZWlzMyA9ICdCZWV0Jw0Ka3JlaXM0ID0gJ2tsLiBSYXNlbicNCg0KDQpmdW5jdGlvbiBjcmVhdGVVc2VyU3RhdGVzKHdoZXJlLCBmb3JjZSwgc3RhdGVzVG9DcmVhdGUsIGNhbGxiYWNrID0gdW5kZWZpbmVkKSB7DQogICAgDQogICAgY29uc3QgV0FSTiA9IGZhbHNlOyAvLyBPbmx5IGZvciAwX3VzZXJkYXRhLjA6IFRocm93cyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgZm9yY2U9ZmFsc2UuIERlZmF1bHQgaXMgZmFsc2UsIHNvIG5vIHdhcm5pbmcgaW4gbG9nLCBpZiBzdGF0ZSBleGlzdHMuDQogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlDQogICAgLy8gUGVyIGlzc3VlICM0NzQgKGh0dHBzOi8vZ2l0aHViLmNvbS9pb0Jyb2tlci9pb0Jyb2tlci5qYXZhc2NyaXB0L2lzc3Vlcy80NzQpLCB0aGUgdXNlZCBmdW5jdGlvbiBzZXRPYmplY3QoKSBleGVjdXRlcyB0aGUgY2FsbGJhY2sgDQogICAgLy8gYmVmb3JlIHRoZSBzdGF0ZSBpcyBhY3R1YWwgY3JlYXRlZC4gVGhlcmVmb3JlLCB3ZSB1c2UgYSBzZXRUaW1lb3V0IGFuZCBjb3VudGVyIGFzIGEgd29ya2Fyb3VuZC4NCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKS4gSW5jcmVhc2UgdGhpcyB0byAxMDAsIGlmIGl0IGlzIG5vdCB3b3JraW5nLg0KDQogICAgLy8gVmFsaWRhdGUgIndoZXJlIg0KICAgIGlmICh3aGVyZS5lbmRzV2l0aCgnLicpKSB3aGVyZSA9IHdoZXJlLnNsaWNlKDAsIC0xKTsgLy8gUmVtb3ZlIHRyYWlsaW5nIGRvdA0KICAgIGlmICggKHdoZXJlLm1hdGNoKC9eKChqYXZhc2NyaXB0XC4oWzEtOV1bMC05XXxbMC05XSkpJHwwX3VzZXJkYXRhXC4wJCkvKSA9PSBudWxsKSApIHsNCiAgICAgICAgbG9nKCdUaGlzIHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHRvIGNyZWF0ZSBzdGF0ZXMgdW5kZXIgWycgKyB3aGVyZSArICddJywgJ2Vycm9yJyk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUNCiAgICBpZighQXJyYXkuaXNBcnJheShzdGF0ZXNUb0NyZWF0ZVswXSkpIHN0YXRlc1RvQ3JlYXRlID0gW3N0YXRlc1RvQ3JlYXRlXTsgLy8gd3JhcCBpbnRvIGFycmF5LCBpZiBqdXN0IG9uZSBhcnJheSBhbmQgbm90IGluc2lkZSBhbiBhcnJheQ0KDQogICAgLy8gQWRkICJ3aGVyZSIgdG8gU1RBVEVTX1RPX0NSRUFURQ0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVzVG9DcmVhdGUubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgbGV0IGxwUGF0aCA9IHN0YXRlc1RvQ3JlYXRlW2ldWzBdLnJlcGxhY2UoL1wuKlwuL2csICcuJyk7IC8vIHJlcGxhY2UgYWxsIG11bHRpcGxlIGRvdHMgbGlrZSAnLi4nLCAnLi4uJyB3aXRoIGEgc2luZ2xlICcuJw0KICAgICAgICBscFBhdGggPSBscFBhdGgucmVwbGFjZSgvXigoamF2YXNjcmlwdFwuKFsxLTldWzAtOV18WzAtOV0pXC4pfDBfdXNlcmRhdGFcLjBcLikvLCcnKSAvLyByZW1vdmUgYW55IGphdmFzY3JpcHQueC4gLyAwX3VzZXJkYXRhLjAuIGZyb20gYmVnaW5uaW5nDQogICAgICAgIGxwUGF0aCA9IHdoZXJlICsgJy4nICsgbHBQYXRoOyAvLyBhZGQgd2hlcmUgdG8gYmVnaW5uaW5nIG9mIHN0cmluZw0KICAgICAgICBzdGF0ZXNUb0NyZWF0ZVtpXVswXSA9IGxwUGF0aDsNCiAgICB9DQoNCiAgICBpZiAod2hlcmUgIT0gJzBfdXNlcmRhdGEuMCcpIHsNCiAgICAgICAgLy8gQ3JlYXRlIFN0YXRlcyB1bmRlciBqYXZhc2NyaXB0LngNCiAgICAgICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsNCiAgICAgICAgc3RhdGVzVG9DcmVhdGUuZm9yRWFjaChmdW5jdGlvbihsb29wUGFyYW0pIHsNCiAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBOb3cgd2UgYXJlIGNyZWF0aW5nIG5ldyBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddJyk7DQogICAgICAgICAgICBsZXQgbG9vcEluaXQgPSAobG9vcFBhcmFtWzFdWydkZWYnXSA9PSB1bmRlZmluZWQpID8gbnVsbCA6IGxvb3BQYXJhbVsxXVsnZGVmJ107IC8vIG1pbWljIHNhbWUgYmVoYXZpb3IgYXMgY3JlYXRlU3RhdGUgaWYgbm8gaW5pdCB2YWx1ZSBpcyBwcm92aWRlZA0KICAgICAgICAgICAgY3JlYXRlU3RhdGUobG9vcFBhcmFtWzBdLCBsb29wSW5pdCwgZm9yY2UsIGxvb3BQYXJhbVsxXSwgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07DQogICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQWxsIHN0YXRlcyBwcm9jZXNzZWQuJyk7DQogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvLyBDcmVhdGUgU3RhdGVzIHVuZGVyIDBfdXNlcmRhdGEuMA0KICAgICAgICBsZXQgbnVtU3RhdGVzID0gc3RhdGVzVG9DcmVhdGUubGVuZ3RoOw0KICAgICAgICBsZXQgY291bnRlciA9IC0xOw0KICAgICAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGxvb3BQYXJhbSkgew0KICAgICAgICAgICAgY291bnRlciArPSAxOw0KICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nICgnW0RlYnVnXSBDdXJyZW50bHkgcHJvY2Vzc2luZyBmb2xsb3dpbmcgc3RhdGU6IFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKTsNCiAgICAgICAgICAgIGlmKCAoJChsb29wUGFyYW1bMF0pLmxlbmd0aCA+IDApICYmIChleGlzdHNTdGF0ZShsb29wUGFyYW1bMF0pKSApIHsgLy8gV29ya2Fyb3VuZCBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3OA0KICAgICAgICAgICAgICAgIC8vIFN0YXRlIGlzIGV4aXN0aW5nLg0KICAgICAgICAgICAgICAgIGlmIChXQVJOICYmICFmb3JjZSkgbG9nKCdTdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIGNyZWF0ZWQuJywgJ3dhcm4nKTsNCiAgICAgICAgICAgICAgICBpZiAoIVdBUk4gJiYgTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gU3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXSBpcyBhbHJlYWR5IGV4aXN0aW5nLiBPcHRpb24gZm9yY2UgKD1vdmVyd3JpdGUpIGlzIHNldCB0byBbJyArIGZvcmNlICsgJ10uJyk7DQogICAgICAgICAgICAgICAgaWYoIWZvcmNlKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFN0YXRlIGV4aXN0cyBhbmQgc2hhbGwgbm90IGJlIG92ZXJ3cml0dGVuIHNpbmNlIGZvcmNlPWZhbHNlDQogICAgICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBkbyBub3QgcHJvY2VlZC4NCiAgICAgICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07DQogICAgICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQhJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFuIG9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCwgd2hpY2ggd2UgYXJlIGdvaW5nIHRvIGV4ZWN1dGUgbm93LicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBvdXQgYW5kIGNvbnRpbnVlIHdpdGggbmV4dCBlbGVtZW50IGluIGxvb3AuDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDUyOTIwL2NvbnRpbnVlLWluLWN1cnNvci1mb3JlYWNoDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IC8vIGlmKCFmb3JjZSkNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gU3RhdGUgaXMgbm90IGV4aXN0aW5nIG9yIGZvcmNlID0gdHJ1ZSwgc28gd2UgYXJlIGNvbnRpbnVpbmcgdG8gY3JlYXRlIHRoZSBzdGF0ZSB0aHJvdWdoIHNldE9iamVjdCgpLg0KICAgICAgICAgICAgbGV0IG9iaiA9IHt9Ow0KICAgICAgICAgICAgb2JqLnR5cGUgPSAnc3RhdGUnOw0KICAgICAgICAgICAgb2JqLm5hdGl2ZSA9IHt9Ow0KICAgICAgICAgICAgb2JqLmNvbW1vbiA9IGxvb3BQYXJhbVsxXTsNCiAgICAgICAgICAgIHNldE9iamVjdChsb29wUGFyYW1bMF0sIG9iaiwgZnVuY3Rpb24gKGVycikgew0KICAgICAgICAgICAgICAgIGlmIChlcnIpIHsNCiAgICAgICAgICAgICAgICAgICAgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0IGZvciBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddOiAnICsgZXJyKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gTm93IHdlIGFyZSBjcmVhdGluZyBuZXcgc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXScpDQogICAgICAgICAgICAgICAgICAgIGxldCBpbml0ID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLmRlZiA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJyc7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbml0ID0gbG9vcFBhcmFtWzFdLmRlZjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUobG9vcFBhcmFtWzBdLCBpbml0LCB0cnVlLCBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gc2V0U3RhdGUgZHVyY2hnZWbDvGhydDogJyArIGxvb3BQYXJhbVswXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQWxsIHN0YXRlcyBwcm9jZXNzZWQuJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9LCBERUxBWSArICgyMCAqIGNvdW50ZXIpICk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH0NCn0NCg0KbGV0IHN0YXRlc1RvQ3JlYXRlID0gWw0KDQogICAvL0Jld8Okc3NlcnVuZw0KICAgW3BmYWQrJ2Jld2Flc3NlcnVuZ19ha3RpdicsIHsnbmFtZSc6J2Jld2Flc3NlcnVuZ19ha3RpdicsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICBbcGZhZCsnYmV3YWVzc2VydW5nX2F1dG9tYXRpaycsIHsnbmFtZSc6J2Jld2Flc3NlcnVuZ19hdXRvbWF0aWsnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLA0KICAgW3BmYWQrJ2Jld2Flc3NlcnVuZ19wYXVzZScsIHsnbmFtZSc6J2Jld2Flc3NlcnVuZ19wYXVzZScsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQoNCiAgIC8vVGltZXINCiAgIFtwZmFkKydsYXV0emVpdF9nZXNhbXRfaW5fc2VrJywgeyduYW1lJzonbGF1dHplaXRfZ2VzYW10X2luX3NlaycsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLA0KICAgW3BmYWQrJ2xhdXR6ZWl0X2VuZGVfdWhyemVpdCcsIHsnbmFtZSc6J2xhdXR6ZWl0X2VuZGVfdWhyemVpdCcsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6ICcwMDowMCcsJ3VuaXQnOiAnVWhyJ31dLA0KICAgW3BmYWQrJ3Jlc3RsYXV0emVpdCcsIHsnbmFtZSc6J3Jlc3RsYXV0emVpdCcsJ3R5cGUnOiAnc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjB9XSwNCiAgIFtwZmFkKydyZXN0bGF1dHplaXRfaW5fc2VrJywgeyduYW1lJzoncmVzdGxhdXR6ZWl0X2luX3NlaycsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLA0KICAgW3BmYWQrJ2dlc2FtdGZvcnRzY2hyaXR0JywgeyduYW1lJzonZ2VzYW10Zm9ydHNjaHJpdHQnLCd0eXBlJzonbnVtYmVyJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidudW1iZXInLCdkZWYnOjAsJ3VuaXQnOiclJywnbWluJzowLCdtYXgnOjEwMH1dLA0KICAgICAgDQogICAvL1NjaHdlbGx3ZXJ0ZQ0KICAgW3BmYWQrJ3NjaHdlbGx3ZXJ0ZS5zY2h3ZWxsd2VydF9yZWdlbicsIHsnbmFtZSc6J3NjaHdlbGx3ZXJ0X3JlZ2VuJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonbW0nfV0sDQogICBbcGZhZCsnc2Nod2VsbHdlcnRlLnNjaHdlbGx3ZXJ0X3RlbXBlcmF0dXInLCB7J25hbWUnOidzY2h3ZWxsd2VydF90ZW1wZXJhdHVyJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonwrBDJ31dLA0KICAgDQogICAvL1ZlbnRpbGUNCiAgIFtwZmFkKyd2ZW50aWxlLmFuemFobF9ha3RpdmVfdmVudGlsZScsIHsnbmFtZSc6J2FuemFobF9ha3RpdmVfdmVudGlsZScsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwnbWluJzowLCAnbWF4Jzo0fSBdLA0KDQogICAvL1ZlbnRpbCAxDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMScsIHsnbmFtZSc6J3ZlbnRpbF8xJywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX2RhdWVyJywgeyduYW1lJzogJ3ZlbnRpbF8xX2RhdWVyJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9lbmRlJywgeyduYW1lJzondmVudGlsXzFfZW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX2ZvcnRzY2hyaXR0JywgeyduYW1lJzondmVudGlsXzFfZm9ydHNjaHJpdHQnLCd0eXBlJzonbnVtYmVyJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidudW1iZXInLCdkZWYnOjAsJ3VuaXQnOiclJywnbWluJzowLCdtYXgnOjEwMH1dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfbmFtZScsIHsnbmFtZSc6J3ZlbnRpbF8xX25hbWUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOmtyZWlzMX1dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfcGFyYWxsZWwnLCB7J25hbWUnOid2ZW50aWxfMV9wYXJhbGxlbCcsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9yZXN0emVpdCcsIHsnbmFtZSc6J3ZlbnRpbF8xX3Jlc3R6ZWl0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzA6MDAnLCd1bml0JzonTWludXRlbid9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX3Jlc3R6ZWl0X2luX3NlaycsIHsnbmFtZSc6J3ZlbnRpbF8xX3Jlc3R6ZWl0X2luX3NlaycsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfc3RhdHVzJywgeyduYW1lJzondmVudGlsXzFfc3RhdHVzJywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwNCiAgIA0KDQogICAvL1ZlbnRpbCAyDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMicsIHsnbmFtZSc6J3ZlbnRpbF8yJywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX2RhdWVyJywgeyduYW1lJzogJ3ZlbnRpbF8yX2RhdWVyJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9lbmRlJywgeyduYW1lJzondmVudGlsXzJfZW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX2ZvcnRzY2hyaXR0JywgeyduYW1lJzondmVudGlsXzJfZm9ydHNjaHJpdHQnLCd0eXBlJzonbnVtYmVyJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidudW1iZXInLCdkZWYnOjAsJ3VuaXQnOiclJywnbWluJzowLCdtYXgnOjEwMH1dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfbmFtZScsIHsnbmFtZSc6J3ZlbnRpbF8yX25hbWUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOmtyZWlzMn1dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfcmVzdHplaXQnLCB7J25hbWUnOid2ZW50aWxfMl9yZXN0emVpdCcsJ3R5cGUnOiAnc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwOjAwJywndW5pdCc6J01pbnV0ZW4nfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9yZXN0emVpdF9pbl9zZWsnLCB7J25hbWUnOid2ZW50aWxfMl9yZXN0emVpdF9pbl9zZWsnLCd0eXBlJzonbnVtYmVyJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidudW1iZXInLCdkZWYnOjAsJ3VuaXQnOidTZWt1bmRlbid9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX3N0YXR1cycsIHsnbmFtZSc6J3ZlbnRpbF8yX3N0YXR1cycsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICANCg0KICAgLy9WZW50aWwgMw0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzMnLCB7J25hbWUnOid2ZW50aWxfMycsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19kYXVlcicsIHsnbmFtZSc6ICd2ZW50aWxfM19kYXVlcicsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfZW5kZScsIHsnbmFtZSc6J3ZlbnRpbF8zX2VuZGUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19mb3J0c2Nocml0dCcsIHsnbmFtZSc6J3ZlbnRpbF8zX2ZvcnRzY2hyaXR0JywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonJScsJ21pbic6MCwnbWF4JzoxMDB9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zX25hbWUnLCB7J25hbWUnOid2ZW50aWxfM19uYW1lJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzprcmVpczN9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zX3Jlc3R6ZWl0JywgeyduYW1lJzondmVudGlsXzNfcmVzdHplaXQnLCd0eXBlJzogJ3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMDowMCcsJ3VuaXQnOidNaW51dGVuJ31dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfcmVzdHplaXRfaW5fc2VrJywgeyduYW1lJzondmVudGlsXzNfcmVzdHplaXRfaW5fc2VrJywndHlwZSc6J251bWJlcicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonbnVtYmVyJywnZGVmJzowLCd1bml0JzonU2VrdW5kZW4nfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19zdGF0dXMnLCB7J25hbWUnOid2ZW50aWxfMl9zdGF0dXMnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLA0KICAgDQoNCiAgIC8vVmVudGlsIDQNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80JywgeyduYW1lJzondmVudGlsXzQnLCd0eXBlJzonYm9vbGVhbicsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3dpdGNoJywnZGVmJzpmYWxzZX1dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfZGF1ZXInLCB7J25hbWUnOiAndmVudGlsXzRfZGF1ZXInLCd0eXBlJzonbnVtYmVyJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidudW1iZXInLCdkZWYnOjAsJ3VuaXQnOidTZWt1bmRlbid9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80X2VuZGUnLCB7J25hbWUnOid2ZW50aWxfNF9lbmRlJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMDA6MDAnLCd1bml0JzonVWhyJ31dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfZm9ydHNjaHJpdHQnLCB7J25hbWUnOid2ZW50aWxfNF9mb3J0c2Nocml0dCcsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6JyUnLCdtaW4nOjAsJ21heCc6MTAwfV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9uYW1lJywgeyduYW1lJzondmVudGlsXzRfbmFtZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6a3JlaXM0fV0sDQogICBbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9yZXN0emVpdCcsIHsnbmFtZSc6J3ZlbnRpbF80X3Jlc3R6ZWl0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzA6MDAnLCd1bml0JzonTWludXRlbid9XSwNCiAgIFtwZmFkKyd2ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80X3Jlc3R6ZWl0X2luX3NlaycsIHsnbmFtZSc6J3ZlbnRpbF80X3Jlc3R6ZWl0X2luX3NlaycsJ3R5cGUnOidudW1iZXInLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J251bWJlcicsJ2RlZic6MCwndW5pdCc6J1Nla3VuZGVuJ31dLA0KICAgW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfc3RhdHVzJywgeyduYW1lJzondmVudGlsXzJfc3RhdHVzJywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwNCiAgIA0KDQogICAvL1plaXRwbGFuDQogICBbcGZhZCsnemVpdHBsYW4uY3Jvbl9yZXN0YXJ0JywgeyduYW1lJzonY3Jvbl9yZXN0YXJ0JywndHlwZSc6ICdzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MCwndW5pdCc6J1Vocid9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5zb25uZW5hdWZnYW5nJywgeyduYW1lJzonc29ubmVuYXVmZ2FuZycsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5zb25uZW51bnRlcmdhbmcnLCB7J25hbWUnOidzb25uZW51bnRlcmdhbmcnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sDQogICANCiAgIC8vTW9yZ2Vucw0KICAgW3BmYWQrJ3plaXRwbGFuLm1vcmdlbnNfYWt0aXYnLCB7J25hbWUnOidtb3JnZW5zX2FrdGl2JywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3VocnplaXRfc3RhcnQnLCB7J25hbWUnOidtb3JnZW5zX3VocnplaXRfc3RhcnQnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sDQogICBbcGZhZCsnemVpdHBsYW4ubW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsIHsnbmFtZSc6J21vcmdlbnNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwJ31dLA0KICAgW3BmYWQrJ3plaXRwbGFuLm1vcmdlbnNfdWhyemVpdF9zdGFydF9taW51dGUnLCB7J25hbWUnOidtb3JnZW5zX3VocnplaXRfc3RhcnRfbWludXRlJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzonMCd9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3ZlcnpvZWdlcnVuZ19zb25uZW5hdWZnYW5nJywgeyduYW1lJzonbW9yZ2Vuc192ZXJ6b2VnZXJ1bmdfc29ubmVuYXVmZ2FuZycsJ3R5cGUnOiAnc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjAsJ3VuaXQnOidNaW51dGVuJ31dLA0KDQogICAvL0FiZW5kcw0KICAgW3BmYWQrJ3plaXRwbGFuLmFiZW5kc19ha3RpdicsIHsnbmFtZSc6J2FiZW5kc19ha3RpdicsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICBbcGZhZCsnemVpdHBsYW4uYWJlbmRzX3VocnplaXRfc3RhcnQnLCB7J25hbWUnOidhYmVuZHNfdWhyemVpdF9zdGFydCcsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5hYmVuZHNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J25hbWUnOidhYmVuZHNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwJ31dLA0KICAgW3BmYWQrJ3plaXRwbGFuLmFiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsIHsnbmFtZSc6J2FiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAnfV0sDQogICBbcGZhZCsnemVpdHBsYW4uYWJlbmRzX3ZlcnpvZWdlcnVuZ19zb25uZW51bnRlcmdhbmcnLCB7J25hbWUnOidhYmVuZHNfdmVyem9lZ2VydW5nX3Nvbm5lbnVudGVyZ2FuZycsJ3R5cGUnOiAnc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjAsJ3VuaXQnOidNaW51dGVuJ31dLA0KDQogICAvL0Zlc3RlIFN0YXJ0emVpdCAxDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzFfYWt0aXYnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfMV9ha3RpdicsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzFfdWhyemVpdF9zdGFydCcsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8xX3VocnplaXRfc3RhcnQnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzFfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfMV91aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLA0KICAgW3BmYWQrJ3plaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF8xX3VocnplaXRfc3RhcnRfbWludXRlJywgeyduYW1lJzonZmVzdGVfc3RhcnR6ZWl0XzFfdWhyemVpdF9zdGFydF9taW51dGUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjB9XSwJDQogICANCiAgIC8vRmVzdGUgU3RhcnR6ZWl0IDINCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfMl9ha3RpdicsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8yX2FrdGl2JywndHlwZSc6J2Jvb2xlYW4nLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N3aXRjaCcsJ2RlZic6ZmFsc2V9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfMl91aHJ6ZWl0X3N0YXJ0JywgeyduYW1lJzonZmVzdGVfc3RhcnR6ZWl0XzJfdWhyemVpdF9zdGFydCcsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6JzAwOjAwJywndW5pdCc6J1Vocid9XSwNCiAgIFtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfMl91aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8yX3VocnplaXRfc3RhcnRfc3R1bmRlJywndHlwZSc6J3N0cmluZycsJ3JlYWQnOnRydWUsJ3dyaXRlJzp0cnVlLCdyb2xlJzonc3RyaW5nJywnZGVmJzowfV0sDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzJfdWhyemVpdF9zdGFydF9taW51dGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfMl91aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLA0KICAgDQogICAvL0Zlc3RlIFN0YXJ0emVpdCAzDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzNfYWt0aXYnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfM19ha3RpdicsJ3R5cGUnOidib29sZWFuJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzd2l0Y2gnLCdkZWYnOmZhbHNlfV0sDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzNfdWhyemVpdF9zdGFydCcsIHsnbmFtZSc6J2Zlc3RlX3N0YXJ0emVpdF8zX3VocnplaXRfc3RhcnQnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOicwMDowMCcsJ3VuaXQnOidVaHInfV0sDQogICBbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0XzNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J25hbWUnOidmZXN0ZV9zdGFydHplaXRfM191aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsJ3R5cGUnOidzdHJpbmcnLCdyZWFkJzp0cnVlLCd3cml0ZSc6dHJ1ZSwncm9sZSc6J3N0cmluZycsJ2RlZic6MH1dLA0KICAgW3BmYWQrJ3plaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF8zX3VocnplaXRfc3RhcnRfbWludXRlJywgeyduYW1lJzonZmVzdGVfc3RhcnR6ZWl0XzNfdWhyemVpdF9zdGFydF9taW51dGUnLCd0eXBlJzonc3RyaW5nJywncmVhZCc6dHJ1ZSwnd3JpdGUnOnRydWUsJ3JvbGUnOidzdHJpbmcnLCdkZWYnOjB9XSwNCl07ICAgDQogICAgY3JlYXRlVXNlclN0YXRlcyhzcGVpY2hlcm9ydCwgZmFsc2UsIHN0YXRlc1RvQ3JlYXRlKTs=
Datenpunkte erstellen.Einmalig ausführen!
Datenpunkte erstellen.Einmalig ausführen!
Cron Restart
true
FALSE
Object ID
vars_cron_restart
TRUE
custom
TT.MM.JJJJ SS:mm:ss
5000
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
any
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
default
vars_sonnenuntergang
default
vars_cron_restart
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
FALSE
AND
OR
GTE
val
vars_wetter_max_temp
val
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
val
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
FALSE
AND
OR
GTE
val
vars_wetter_max_temp
val
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
val
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
val
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
val
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
val
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
val
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
val
vars_schwellwert_temperatur
EQ
vars_wetter_max_temp
false
OR
LTE
val
vars_wetter_regen
val
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
EQ
val
vars_bewaesserung_aktiv
FALSE
true
FALSE
Object ID
vars_lautzeit_ende_uhrzeit
TRUE
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
Umschaltdauer berechnen
EQ
val
vars_ventil_1_parallel
FALSE
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_verzoegerung
1
EQ
val
vars_ventil_1_parallel
FALSE
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
EQ
val
vars_ventil_1_parallel
TRUE
ventil_enduhrzeit_raw
ADD
1
sid
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
Umschaltdauer berechnen
EQ
val
vars_ventil_1_parallel
FALSE
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_verzoegerung
1
EQ
val
vars_ventil_1_parallel
FALSE
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
EQ
val
vars_ventil_1_parallel
TRUE
ventil_enduhrzeit_raw
ADD
1
ADD
1
sid
1
val
vars_ventil_2_restzeit_in_sek
1
ADD
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
Umschaltdauer berechnen
EQ
val
vars_ventil_1_parallel
FALSE
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_verzoegerung
1
EQ
val
vars_ventil_1_parallel
FALSE
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
EQ
val
vars_ventil_1_parallel
TRUE
ventil_enduhrzeit_raw
ADD
1
ADD
1
sid
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