log_debug_text debug object_id_zeit_sonnenuntergang object_id_ventil_1_state object_id_ventil_1_on_time object_id_ventil_2_state object_id_ventil_2_on_time startzeit_sonnenaufgang object_id_ventil_3_state startzeit_sonnenaufgang_stunde timeout object_id_ventil_3_on_time startzeit_sonnenaufgang_minute object_id_ventil_4_state object_id_ventil_4_on_time morgens info_enduhrzeit_raw abends info_endzeit_stunde info_endzeit_minute info_endzeit_sekunde ventil_enduhrzeit_raw ventil_1_dauer waitmail2 startzeit_fix_stunde ventil_enduhrzeit_std startzeit_sonnenuntergang startzeit_fix_minute ventil_enduhrzeit_min startzeit_sonnenuntergang_stunde ventil_enduhrzeit_sek ventil_enduhrzeit_verzoegerung info_endzeit_aktive_ventile startzeit_sonnenuntergang_minute fix ventil_2_dauer restlaufzeit_vis_min ventil_3_dauer ventil_4_dauer restlaufzeit_vis_sek info_text info_betreff restzeit restzeit_gesamt_min restzeit_gesamt_sek ventil_1_rest ventil_2_rest restzeit_ventil_min ventil_3_rest restzeit_ventil_sek ventil_4_rest erstelleDPs Ly9CZXfDpHNzZXJ1bmcNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLmJld2Flc3NlcnVuZ19ha3RpdicsIGZhbHNlLCB7dHlwZTogJ2Jvb2xlYW4nLG5hbWU6ICdiZXdhZXNzZXJ1bmdfYWt0aXYnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy5iZXdhZXNzZXJ1bmdfYXV0b21hdGlrJywgZmFsc2UsIHt0eXBlOiAnYm9vbGVhbicsbmFtZTogJ2Jld2Flc3NlcnVuZ19hdXRvbWF0aWsnfSk7DQovLyAgVGltZXINCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnRpbWVyJywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndGltZXInfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy50aW1lcl9nZXNhbXRfaW5fc2VrJywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndGltZXJfZ2VzYW10X2luX3Nlayd9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnRpbWVyX21pbnVudGVuJywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndGltZXJfbWludXRlbid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnRpbWVyX3Nla3VuZGVuJywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndGltZXJfc2VrdW5kZW4nfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy50aW1lcl9ha3R1ZWxsJywgZmFsc2UsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAndGltZXJfYWt0dWVsbCd9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnRpbWVyX2FrdHVlbGxfc2VrdW5kZW4nLCBmYWxzZSwge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICd0aW1lcl9ha3R1ZWxsX3Nla3VuZGVuJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudGltZXJfZW5kZScsIGZhbHNlLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ3RpbWVyX2VuZGUnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy5sYXV0emVpdF9nZXNhbXRfaW5fc2VrJywgMCwge3R5cGU6ICdudW1iZXInLG5hbWU6ICdsYXV0emVpdF9nZXNhbXRfaW5fc2VrJywgdW5pdDogJ1Nla3VuZGVuJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcubGF1dHplaXRfZW5kZV91aHJ6ZWl0JywgJzAwOjAwJywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdsYXV0emVpdF9lbmRlX3VocnplaXQnLCB1bml0OiAnVWhyJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcucmVzdGxhdXR6ZWl0JywgJzAwOjAwJywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdyZXN0bGF1dHplaXQnLCB1bml0OiAiTWludXRlbiJ9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnJlc3RsYXV0emVpdF9pbl9zZWsnLCAwLCB7dHlwZTogJ251bWJlcicsbmFtZTogJ3Jlc3RsYXV0emVpdF9pbl9zZWsnLCB1bml0OiAnU2VrdW5kZW4nfSk7DQovLyAgVmVudGlsZQ0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS5ha3RpdmVzX3ZlbnRpbCcsICdhdXMnLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ2FrdGl2ZXNfdmVudGlsJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS5hbnphaGxfYWt0aXZlX3ZlbnRpbGUnLCAwLCB7dHlwZTogJ251bWJlcicsbmFtZTogJ2FuemFobF9ha3RpdmVfdmVudGlsZSd9KQ0KLy8gICAgVmVudGlsIDENCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzEudmVudGlsXzEnLCBmYWxzZSwge3R5cGU6ICdib29sZWFuJyxuYW1lOiAndmVudGlsXzEnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX2t1cnonLCBmYWxzZSwge3R5cGU6ICdib29sZWFuJyxuYW1lOiAndmVudGlsXzFfa3Vyeid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfbGFuZycsIGZhbHNlLCB7dHlwZTogJ2Jvb2xlYW4nLG5hbWU6ICd2ZW50aWxfMV9sYW5nJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9kYXVlcl9rdXJ6JywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndmVudGlsXzFfZGF1ZXJfa3VyeicsdW5pdDogJ1Nla3VuZGVuJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9kYXVlcl9sYW5nJywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndmVudGlsXzFfZGF1ZXJfbGFuZycsdW5pdDogJ1Nla3VuZGVuJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9lbmRlJywgZmFsc2UsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAndmVudGlsXzFfZW5kZScsdW5pdDogJ1Vocid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfbmFtZScsICdIZWNrZScsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAndmVudGlsXzFfbmFtZSd9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfcmVzdHplaXQnLCBmYWxzZSwge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICd2ZW50aWxfMV9yZXN0emVpdCcsdW5pdDogJ01pbnV0ZW4nfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX3Jlc3R6ZWl0X2luX3NlaycsIGZhbHNlLCB7dHlwZTogJ251bWJlcicsbmFtZTogJ3ZlbnRpbF8xX3Jlc3R6ZWl0X2luX3NlaycsdW5pdDogJ1Nla3VuZGVuJ30pOw0KLy8gICAgVmVudGlsIDINCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzIudmVudGlsXzInLCBmYWxzZSwge3R5cGU6ICdib29sZWFuJyxuYW1lOiAndmVudGlsXzInfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX2RhdWVyJywgZmFsc2UsIHt0eXBlOiAnbnVtYmVyJyxuYW1lOiAndmVudGlsXzJfZGF1ZXInLHVuaXQ6ICdTZWt1bmRlbid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfZW5kZScsIGZhbHNlLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ3ZlbnRpbF8yX2VuZGUnLHVuaXQ6ICdVaHInfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX25hbWUnLCAnUmFzZW4nLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ3ZlbnRpbF8yX25hbWUnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX3Jlc3R6ZWl0JywgZmFsc2UsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAndmVudGlsXzJfcmVzdHplaXQnLHVuaXQ6ICdNaW51dGVuJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9yZXN0emVpdF9pbl9zZWsnLCBmYWxzZSwge3R5cGU6ICdudW1iZXInLG5hbWU6ICd2ZW50aWxfMl9yZXN0emVpdF9pbl9zZWsnLHVuaXQ6ICdTZWt1bmRlbid9KTsNCi8vICAgIFZlbnRpbCAzDQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zJywgZmFsc2UsIHt0eXBlOiAnYm9vbGVhbicsbmFtZTogJ3ZlbnRpbF8zJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19kYXVlcicsIGZhbHNlLCB7dHlwZTogJ251bWJlcicsbmFtZTogJ3ZlbnRpbF8zX2RhdWVyJyx1bml0OiAnU2VrdW5kZW4nfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zX2VuZGUnLCBmYWxzZSwge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICd2ZW50aWxfM19lbmRlJyx1bml0OiAnVWhyJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19uYW1lJywgJ0JlZXQnLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ3ZlbnRpbF80X25hbWUnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zX3Jlc3R6ZWl0JywgZmFsc2UsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAndmVudGlsXzNfcmVzdHplaXQnLHVuaXQ6ICdNaW51dGVuJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19yZXN0emVpdF9pbl9zZWsnLCBmYWxzZSwge3R5cGU6ICdudW1iZXInLG5hbWU6ICd2ZW50aWxfM19yZXN0emVpdF9pbl9zZWsnLHVuaXQ6ICdTZWt1bmRlbid9KTsNCi8vICAgIFZlbnRpbCA0DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80JywgZmFsc2UsIHt0eXBlOiAnYm9vbGVhbicsbmFtZTogJ3ZlbnRpbF80J30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9kYXVlcicsIGZhbHNlLCB7dHlwZTogJ251bWJlcicsbmFtZTogJ3ZlbnRpbF80X2RhdWVyJyx1bml0OiAnU2VrdW5kZW4nfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80X2VuZGUnLCBmYWxzZSwge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICd2ZW50aWxfNF9lbmRlJyx1bml0OiAnVWhyJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcudmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9uYW1lJywgJ2tsLiBSYXNlbicsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAndmVudGlsXzRfbmFtZSd9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfcmVzdHplaXQnLCBmYWxzZSwge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICd2ZW50aWxfNF9yZXN0emVpdCcsdW5pdDogJ01pbnV0ZW4nfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy52ZW50aWxlLnZlbnRpbF80LnZlbnRpbF80X3Jlc3R6ZWl0X2luX3NlaycsIGZhbHNlLCB7dHlwZTogJ251bWJlcicsbmFtZTogJ3ZlbnRpbF80X3Jlc3R6ZWl0X2luX3NlaycsdW5pdDogJ1Nla3VuZGVuJ30pOw0KLy8gIFplaXRwbGFuDQovLyAgICBNb3JnZW5zDQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy56ZWl0cGxhbi5tb3JnZW5zX2FrdGl2JywgdHJ1ZSwge3R5cGU6ICdib29sZWFuJyxuYW1lOiAnbW9yZ2Vuc19ha3Rpdid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnplaXRwbGFuLm1vcmdlbnNfdWhyemVpdF9zdGFydCcsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAnbW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0Jyx1bml0OiAnVWhyJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcuemVpdHBsYW4ubW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAnbW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0X3N0dW5kZSd9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnplaXRwbGFuLm1vcmdlbnNfdWhyemVpdF9zdGFydF9taW51dGUnLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ21vcmdlbnNfdWhyemVpdF9zdGFydF9taW51dGUnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy56ZWl0cGxhbi5tb3JnZW5zX3ZlcnpvZWdlcnVuZ19zb25uZW5hdWZnYW5nJywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdtb3JnZW5zX3ZlcnpvZWdlcnVuZ19zb25uZW5hdWZnYW5nJyx1bml0OiAnTWludXRlbid9KTsNCi8vICAgIEFiZW5kcw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcuemVpdHBsYW4uYWJlbmRzX2FrdGl2JywgdHJ1ZSwge3R5cGU6ICdib29sZWFuJyxuYW1lOiAnYWJlbmRzX2FrdGl2J30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcuemVpdHBsYW4uYWJlbmRzX3VocnplaXRfc3RhcnQnLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ2FiZW5kc191aHJ6ZWl0X3N0YXJ0Jyx1bml0OiAnVWhyJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcuemVpdHBsYW4uYWJlbmRzX3VocnplaXRfc3RhcnRfc3R1bmRlJywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdhYmVuZHNfdWhyemVpdF9zdGFydF9zdHVuZGUnfSk7DQpjcmVhdGVTdGF0ZSgnamF2YXNjcmlwdC4wLmJld2Flc3NlcnVuZy56ZWl0cGxhbi5hYmVuZHNfdWhyemVpdF9zdGFydF9taW51dGUnLCB7dHlwZTogJ3N0cmluZycsbmFtZTogJ2FiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZSd9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnplaXRwbGFuLmFiZW5kc192ZXJ6b2VnZXJ1bmdfc29ubmVudW50ZXJnYW5nJywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdhYmVuZHNfdmVyem9lZ2VydW5nX3Nvbm5lbnVudGVyZ2FuZycsdW5pdDogJ01pbnV0ZW4nfSk7DQovLyAgICBGZXN0ZSBTdGFydHplaXQNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnplaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF9ha3RpdicsIHRydWUsIHt0eXBlOiAnYm9vbGVhbicsbmFtZTogJ2Zlc3RlX3N0YXJ0emVpdF9ha3Rpdid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnplaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF91aHJ6ZWl0X3N0YXJ0Jywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdmZXN0ZV9zdGFydHplaXRfdWhyemVpdF9zdGFydCcsdW5pdDogJ1Vocid9KTsNCmNyZWF0ZVN0YXRlKCdqYXZhc2NyaXB0LjAuYmV3YWVzc2VydW5nLnplaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF91aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsIHt0eXBlOiAnc3RyaW5nJyxuYW1lOiAnZmVzdGVfc3RhcnR6ZWl0X3VocnplaXRfc3RhcnRfc3R1bmRlJ30pOw0KY3JlYXRlU3RhdGUoJ2phdmFzY3JpcHQuMC5iZXdhZXNzZXJ1bmcuemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0X3VocnplaXRfc3RhcnRfbWludXRlJywge3R5cGU6ICdzdHJpbmcnLG5hbWU6ICdmZXN0ZV9zdGFydHplaXRfdWhyemVpdF9zdGFydF9taW51dGUnfSk7DQo= Beschreibe diese Funktion … log_debug Beschreibe diese Funktion … EQ debug TRUE log test +++ log_debug_text +++ definiereObjektIDs Beschreibe diese Funktion … Objekt IDs definieren Definiere ObjektIDs debug TRUE object_id_zeit_sonnenuntergang javascript.0.Zeiten.09-Sonnenuntergang object_id_ventil_1_state hm-rpc.1.OEQ0044740.1.STATE object_id_ventil_1_on_time hm-rpc.1.OEQ0044740.1.ON_TIME object_id_ventil_2_state hm-rpc.1.OEQ0044740.2.STATE object_id_ventil_2_on_time hm-rpc.1.OEQ0044740.2.ON_TIME object_id_ventil_3_state hm-rpc.1.OEQ0044740.3.STATE object_id_ventil_3_on_time hm-rpc.1.OEQ0044740.3.ON_TIME object_id_ventil_4_state hm-rpc.1.OEQ0044740.3.STATE object_id_ventil_4_on_time hm-rpc.1.OEQ0044740.3.ON_TIME definiere Objekt IDs --> bei Skriptstart und alle 12h * */12 * * * Startzeit berechnen ne javascript.0.bewaesserung.zeitplan.morgens_verzoegerung_sonnenaufgang javascript.0.bewaesserung.zeitplan.abends_verzoegerung_sonnenuntergang javascript.0.zeiten.sonnenuntergang object_id_zeit_sonnenuntergang Startzeit berechnen Morgens startzeit_sonnenaufgang ADD 1 mid sunrise 0 1 val javascript.0.bewaesserung.zeitplan.morgens_verzoegerung_sonnenaufgang 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 für cron javascript.0.bewaesserung.zeitplan.morgens_uhrzeit_start_stunde FALSE startzeit_sonnenaufgang_stunde javascript.0.bewaesserung.zeitplan.morgens_uhrzeit_start_minute FALSE startzeit_sonnenaufgang_minute Uhrzeit für 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 javascript.0.bewaesserung.zeitplan.morgens_uhrzeit_start FALSE startzeit_sonnenaufgang_stunde : startzeit_sonnenaufgang_minute Abends startzeit_sonnenuntergang ADD 1 mid sunset 0 1 val javascript.0.bewaesserung.zeitplan.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 für cron javascript.0.bewaesserung.zeitplan.abends_uhrzeit_start_stunde FALSE startzeit_sonnenuntergang_stunde javascript.0.bewaesserung.zeitplan.morgens_uhrzeit_start_minute FALSE startzeit_sonnenuntergang_minute Uhrzeit für 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 javascript.0.bewaesserung.zeitplan.abends_uhrzeit_start FALSE startzeit_sonnenuntergang_stunde : startzeit_sonnenuntergang_minute Bewässerung autom. starten ne javascript.0.bewaesserung.zeitplan.morgens_verzoegerung_sonnenaufgang javascript.0.bewaesserung.zeitplan.abends_verzoegerung_sonnenuntergang javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_stunde javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_minute javascript.0.zeiten.sonnenuntergang object_id_zeit_sonnenuntergang Bewässerung autom. starten timeout 1 sec Morgens morgens morgens * * * * * FALSE FALSE * * * * val javascript.0.bewaesserung.zeitplan.morgens_uhrzeit_start_stunde * val javascript.0.bewaesserung.zeitplan.morgens_uhrzeit_start_minute AND AND EQ val javascript.0.bewaesserung.zeitplan.morgens_aktiv TRUE AND EQ val javascript.0.bewaesserung.bewaesserung_automatik TRUE EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE AND AND GTE M 4 LTE M 10 AND GTE val javascript.0.temperaturen.heute_max 24 LT val daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_value 0.5 javascript.0.bewaesserung.bewaesserung_aktiv FALSE TRUE Abends abends abends * * * * * FALSE FALSE * * * * val javascript.0.bewaesserung.zeitplan.abends_uhrzeit_start_stunde * val javascript.0.bewaesserung.zeitplan.abends_uhrzeit_start_minute AND AND EQ val javascript.0.bewaesserung.zeitplan.abends_aktiv TRUE AND EQ val javascript.0.bewaesserung.bewaesserung_automatik TRUE EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE AND AND GTE M 4 LTE M 10 AND GTE val javascript.0.temperaturen.heute_max 24 LT val daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_value 0.5 javascript.0.bewaesserung.bewaesserung_aktiv FALSE TRUE Feste Uhrzeit LT val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_stunde 10 startzeit_fix_stunde 0 val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_stunde startzeit_fix_stunde val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_stunde LT val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_minute 10 startzeit_fix_minute 0 val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_minute startzeit_fix_minute val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_minute javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start FALSE startzeit_fix_stunde : startzeit_fix_minute fix fix * * * * * FALSE FALSE * * * * val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_stunde * val javascript.0.bewaesserung.zeitplan.feste_startzeit_uhrzeit_start_minute AND AND EQ val javascript.0.bewaesserung.zeitplan.feste_startzeit_aktiv TRUE AND EQ val javascript.0.bewaesserung.bewaesserung_automatik TRUE EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE AND AND GTE M 4 LTE M 10 AND GTE val javascript.0.temperaturen.heute_max 24 LT val daswetter.0.NextDaysDetailed.Location_1.Day_1.rain_value 0.5 javascript.0.bewaesserung.bewaesserung_aktiv FALSE TRUE Enduhrzeiten berechnen ne javascript.0.bewaesserung.bewaesserung_aktiv Enduhrzeiten berechnen Gesamt EQ val javascript.0.bewaesserung.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 javascript.0.bewaesserung.lautzeit_gesamt_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 javascript.0.bewaesserung.lautzeit_ende_uhrzeit FALSE info_endzeit_stunde : info_endzeit_minute : info_endzeit_sekunde Uhr pro Ventil EQ val javascript.0.bewaesserung.bewaesserung_aktiv TRUE Ventil 1 End-Uhrzeit EQ val javascript.0.bewaesserung.ventile.ventil_1.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 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer 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 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_ende FALSE ventil_enduhrzeit_std : ventil_enduhrzeit_min : ventil_enduhrzeit_sek javascript.0.bewaesserung.ventile.ventil_1.ventil_1_ende FALSE deaktiviert Ventil 2 End-Uhrzeit EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE Pro aktivem Ventil kommt 1 Sekunde Verzögerung für das setzen von ON_TIME hinzu EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE ventil_enduhrzeit_verzoegerung 1 EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE ventil_enduhrzeit_verzoegerung 2 ventil_enduhrzeit_raw ADD 1 ADD 1 sid 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer 1 ADD 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_dauer 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 javascript.0.bewaesserung.ventile.ventil_2.ventil_2_ende FALSE ventil_enduhrzeit_std : ventil_enduhrzeit_min : ventil_enduhrzeit_sek javascript.0.bewaesserung.ventile.ventil_2.ventil_2_ende FALSE deaktiviert Ventil 3 End-Uhrzeit EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE Pro aktivem Ventil kommt 1 Sekunde Verzögerung für das setzen von ON_TIME hinzu EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE ventil_enduhrzeit_verzoegerung 1 OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE ventil_enduhrzeit_verzoegerung 2 AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE ventil_enduhrzeit_verzoegerung 3 ventil_enduhrzeit_raw ADD 1 ADD 1 sid 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer 1 ADD 1 ADD 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_dauer 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_dauer 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 javascript.0.bewaesserung.ventile.ventil_3.ventil_3_ende FALSE ventil_enduhrzeit_std : ventil_enduhrzeit_min : ventil_enduhrzeit_sek javascript.0.bewaesserung.ventile.ventil_3.ventil_3_ende FALSE deaktiviert Ventil 4 End-Uhrzeit EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE Pro aktivem Ventil kommt 1 Sekunde Verzögerung für das setzen von ON_TIME hinzu EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE AND AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 FALSE ventil_enduhrzeit_verzoegerung 1 OR OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE ventil_enduhrzeit_verzoegerung 2 AND AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 FALSE ventil_enduhrzeit_verzoegerung 3 AND AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE ventil_enduhrzeit_verzoegerung 3 AND AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE ventil_enduhrzeit_verzoegerung 3 AND AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE ventil_enduhrzeit_verzoegerung 4 ventil_enduhrzeit_raw ADD 1 ADD 1 sid 1 ADD 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_dauer 1 ADD 1 ADD 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_dauer 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_dauer 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 javascript.0.bewaesserung.ventile.ventil_4.ventil_4_ende FALSE ventil_enduhrzeit_std : ventil_enduhrzeit_min : ventil_enduhrzeit_sek javascript.0.bewaesserung.ventile.ventil_4.ventil_4_ende FALSE deaktiviert EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE javascript.0.bewaesserung.ventile.ventil_1.ventil_1_ende FALSE javascript.0.bewaesserung.ventile.ventil_2.ventil_2_ende FALSE javascript.0.bewaesserung.ventile.ventil_3.ventil_3_ende FALSE javascript.0.bewaesserung.ventile.ventil_4.ventil_4_ende FALSE Laufzeiten setzen ne javascript.0.bewaesserung.ventile.ventil_1.ventil_1 javascript.0.bewaesserung.ventile.ventil_2.ventil_2 javascript.0.bewaesserung.ventile.ventil_3.ventil_3 javascript.0.bewaesserung.ventile.ventil_4.ventil_4 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer javascript.0.bewaesserung.ventile.ventil_2.ventil_2_dauer javascript.0.bewaesserung.ventile.ventil_3.ventil_3_dauer javascript.0.bewaesserung.ventile.ventil_4.ventil_4_dauer javascript.0.bewaesserung.bewaesserung_aktiv Laufzeiten setzen Laufzeit Ventile EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE Ventil 1 - Laufzeit EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE ventil_1_dauer val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer ventil_1_dauer 0 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit FALSE DIVIDE 60 ventil_1_dauer 60 :00 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek FALSE ventil_1_dauer Ventil 2 - Laufzeit EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE ventil_2_dauer val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_dauer ventil_2_dauer 0 javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit FALSE DIVIDE 1 ventil_2_dauer 60 :00 javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek FALSE ventil_2_dauer Ventil 3 - Laufzeit EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE ventil_3_dauer val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_dauer ventil_3_dauer 0 javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit FALSE DIVIDE 1 ventil_3_dauer 60 :00 javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek FALSE ventil_3_dauer Ventil 4 - Laufzeit EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE ventil_4_dauer val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_dauer ventil_4_dauer 0 javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit FALSE DIVIDE 1 ventil_4_dauer 60 :00 javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek FALSE ventil_4_dauer Gesamtlaufzeit EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE Gesamtlaufzeit in Sek javascript.0.bewaesserung.lautzeit_gesamt_in_sek FALSE Pro aktives Ventil wird auf die Gesamtlaufzeit eine Sekunden drauf gerechnet für das setzen der ON_TIME 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 javascript.0.bewaesserung.ventile.ventil_1.ventil_1 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 1 ADD 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 javascript.0.bewaesserung.restlautzeit_in_sek FALSE 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 javascript.0.bewaesserung.ventile.ventil_1.ventil_1 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 1 ADD 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 Gesamtlaufzeit für die VIS restlaufzeit_vis_min ROUNDDOWN 3.1 DIVIDE 1 val javascript.0.bewaesserung.lautzeit_gesamt_in_sek 60 restlaufzeit_vis_sek MINUS 1 val javascript.0.bewaesserung.lautzeit_gesamt_in_sek 1 MULTIPLY 1 restlaufzeit_vis_min 60 LT restlaufzeit_vis_sek 10 restlaufzeit_vis_sek 0 restlaufzeit_vis_sek javascript.0.bewaesserung.restlautzeit FALSE restlaufzeit_vis_min : restlaufzeit_vis_sek Info-Mail / Ansage Bewässerung ne javascript.0.bewaesserung.bewaesserung_aktiv Start EQ val javascript.0.bewaesserung.bewaesserung_aktiv TRUE Mail Text und Betreff waitmail2 1 sec Aktive Ventile EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE info_endzeit_aktive_ventile Ventil 1 ( val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_name ): val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_ende Uhr EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE info_endzeit_aktive_ventile info_endzeit_aktive_ventile \n Ventil 2 ( val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_name ): val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_ende Uhr EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE info_endzeit_aktive_ventile info_endzeit_aktive_ventile \n Ventil 3 ( val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_name ): val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_ende Uhr EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE info_endzeit_aktive_ventile info_endzeit_aktive_ventile \n Ventil 3 ( val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_name ): val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_ende Uhr info_text Die Gartenbewässerung wurde akiviert. \n \n Bewässerungsdauer: ROUNDDOWN 3.1 DIVIDE 1 val javascript.0.bewaesserung.lautzeit_gesamt_in_sek 60 Minuten \n Start: hh:mm:ss Uhr \n Ende: val javascript.0.bewaesserung.lautzeit_ende_uhrzeit \n \n Aktive Ventile: \n info_endzeit_aktive_ventile info_betreff +++ hh:mm Uhr - Gartenbewässerung aktiviert +++ EQ val javascript.0.Anwesenheit.Daniel FALSE FALSE val javascript.0.mailadressen.mailadresse_daniel info_text info_betreff .0 0 text info_text info_betreff Sprachausgabe EQ val javascript.0.Anwesenheit.Anwesenheit TRUE NEQ info_endzeit_minute 00 javascript.0.echo.sprachausgabe_alle_geraete FALSE Gartenbewässerung gestartet. ende um info_endzeit_stunde Uhr info_endzeit_minute und info_endzeit_stunde Sekunden javascript.0.echo.sprachausgabe_alle_geraete FALSE Gartenbewässerung gestartet. ende um info_endzeit_stunde Uhr und info_endzeit_stunde Sekunden Stop EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE EQ val javascript.0.Anwesenheit.Daniel FALSE FALSE val javascript.0.mailadressen.mailadresse_daniel Gartenbewässerung beendet +++ hh:mm Uhr - Gartenbewässerung beendet +++ .0 0 +++ hh:mm Uhr - Gartenbewässerung beendet +++ EQ val javascript.0.Anwesenheit.Anwesenheit TRUE javascript.0.echo.sprachausgabe_alle_geraete FALSE Gartenbewässerung beendet. Log Einträge ne javascript.0.bewaesserung.bewaesserung_aktiv hm-rpc.0.QEQ0661312.1.STATE object_id_ventil_1_state hm-rpc.0.QEQ0661312.2.STATE object_id_ventil_2_state hm-rpc.0.QEQ0661312.3.STATE object_id_ventil_3_state hm-rpc.0.QEQ0661312.4.STATE object_id_ventil_4_state Log Eintraege +++ 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 javascript.0.bewaesserung.bewaesserung_aktiv TRUE AND EQ DD.MM.YYYY DD.MM.YYYY lc javascript.0.bewaesserung.bewaesserung_aktiv LTE MINUS 1 sid 1 sid lc javascript.0.bewaesserung.bewaesserung_aktiv 1 AND AND EQ val object_id_ventil_1_state FALSE EQ val object_id_ventil_2_state FALSE AND EQ val object_id_ventil_3_state FALSE EQ val object_id_ventil_4_state FALSE log +++ Bewässerung gestartet +++ EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE log +++ Bewässerung beendet +++ Ventil 1 AND EQ DD.MM.YYYY DD.MM.YYYY lc object_id_ventil_1_state LTE MINUS 1 sid 1 sid lc object_id_ventil_1_state 5 EQ val object_id_ventil_1_state TRUE log +++ Bewässerung: Ventil 1 - val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_name aktiv +++ Ventil 2 AND EQ DD.MM.YYYY DD.MM.YYYY lc object_id_ventil_2_state LTE MINUS 1 sid 1 sid lc object_id_ventil_2_state 5 EQ val object_id_ventil_2_state TRUE log +++ Bewässerung: Ventil 2 - val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_name aktiv +++ Ventil 3 AND EQ DD.MM.YYYY DD.MM.YYYY lc object_id_ventil_3_state LTE MINUS 1 sid 1 sid lc object_id_ventil_3_state 5 EQ val object_id_ventil_3_state TRUE log +++ Bewässerung: Ventil 3 - val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_name aktiv +++ Ventil 4 AND EQ DD.MM.YYYY DD.MM.YYYY lc object_id_ventil_4_state LTE MINUS 1 sid 1 sid lc object_id_ventil_4_state 5 EQ val object_id_ventil_4_state TRUE log +++ Bewässerung: Ventil 4 - val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_name aktiv +++ Aktive Ventile zählen ne javascript.0.bewaesserung.restlautzeit_in_sek javascript.0.bewaesserung.bewaesserung_aktiv Aktive Ventile zaehlen javascript.0.bewaesserung.ventile.anzahl_aktive_ventile FALSE ADD 1 ADD 1 val object_id_ventil_1_state 1 val object_id_ventil_2_state 1 ADD 1 val object_id_ventil_3_state 1 val object_id_ventil_4_state Ventil Steuerung ne javascript.0.bewaesserung.bewaesserung_aktiv javascript.0.bewaesserung.restlautzeit_in_sek Ventil Steuerung EQ val javascript.0.bewaesserung.bewaesserung_aktiv TRUE Ventil 1 AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 AND EQ val object_id_ventil_1_state FALSE LT val javascript.0.bewaesserung.ventile.anzahl_aktive_ventile 3 false FALSE Object ID object_id_ventil_1_on_time TRUE val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_dauer 0 false FALSE Object ID object_id_ventil_1_state TRUE TRUE 1000 1000 javascript.0.bewaesserung.ventile.aktives_ventil TRUE 1000 ms FALSE ventil_1 Ventil 2 AND OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 AND EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 AND EQ val object_id_ventil_2_state FALSE LT val javascript.0.bewaesserung.ventile.anzahl_aktive_ventile 3 false FALSE Object ID object_id_ventil_2_on_time TRUE val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_dauer 0 false FALSE Object ID object_id_ventil_2_state TRUE TRUE 1000 1000 javascript.0.bewaesserung.ventile.aktives_ventil TRUE 1000 ms FALSE ventil_2 Ventil 3 AND OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 AND OR EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 AND EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 0 AND EQ val object_id_ventil_3_state FALSE LT val javascript.0.bewaesserung.ventile.anzahl_aktive_ventile 3 false FALSE Object ID object_id_ventil_3_on_time TRUE val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_dauer 0 false FALSE Object ID object_id_ventil_3_state TRUE TRUE 1000 1000 javascript.0.bewaesserung.ventile.aktives_ventil TRUE 1000 ms FALSE ventil_3 Ventil 4 AND AND OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 OR EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 AND OR EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 0 AND EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek 0 AND EQ val object_id_ventil_4_state FALSE LT val javascript.0.bewaesserung.ventile.anzahl_aktive_ventile 3 false FALSE Object ID object_id_ventil_4_on_time TRUE val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_dauer 0 false FALSE Object ID object_id_ventil_4_state TRUE TRUE 1000 1000 javascript.0.bewaesserung.ventile.aktives_ventil TRUE 1000 ms FALSE ventil_4 EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE javascript.0.bewaesserung.ventile.aktives_ventil FALSE aus Restzeit gesamt berechnen ne javascript.0.bewaesserung.bewaesserung_aktiv Restzeit gesamt berechnen EQ val javascript.0.bewaesserung.bewaesserung_aktiv TRUE restzeit 1000 ms javascript.0.bewaesserung.restlautzeit_in_sek FALSE MINUS 1 val javascript.0.bewaesserung.restlautzeit_in_sek 1 restzeit_gesamt_min ROUNDDOWN 3.1 DIVIDE 0 val javascript.0.bewaesserung.restlautzeit_in_sek 60 restzeit_gesamt_sek MINUS 1 val javascript.0.bewaesserung.restlautzeit_in_sek 1 MULTIPLY 1 restzeit_gesamt_min 60 0 hinzufügen wenn Minuten < 10 LT restzeit_gesamt_min 10 restzeit_gesamt_min 0 restzeit_gesamt_min 0 hinzufügen wenn Sekunden < 10 LT restzeit_gesamt_sek 10 restzeit_gesamt_sek 0 restzeit_gesamt_sek javascript.0.bewaesserung.restlautzeit FALSE restzeit_gesamt_min : restzeit_gesamt_sek EQ val javascript.0.bewaesserung.restlautzeit_in_sek 0 javascript.0.bewaesserung.bewaesserung_aktiv FALSE FALSE restzeit EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE restzeit Restzeit Ventile berechnen ne javascript.0.bewaesserung.bewaesserung_aktiv Restzeit Ventile berechnen EQ val javascript.0.bewaesserung.bewaesserung_aktiv TRUE Ventil 1 EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek FALSE Umschaltverzögerung für ON_TIME ADD 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 1 ventil_1_rest 1000 ms AND EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek FALSE MINUS 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 1 VIS Anzeige setzen restzeit_ventil_min ROUNDDOWN 3.1 DIVIDE 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 60 restzeit_ventil_sek MINUS 1 val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 1 MULTIPLY 1 restzeit_ventil_min 60 LT restzeit_ventil_sek 10 javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit FALSE restzeit_ventil_min :0 restzeit_ventil_sek javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit FALSE restzeit_ventil_min : restzeit_ventil_sek EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 ventil_1_rest Ventil 2 EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek FALSE Umschaltverzögerung für ON_TIME ADD 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 1 ventil_2_rest 1000 ms AND OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 AND EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek FALSE MINUS 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 1 VIS Anzeige setzen restzeit_ventil_min ROUNDDOWN 3.1 DIVIDE 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 60 restzeit_ventil_sek MINUS 1 val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 1 MULTIPLY 1 restzeit_ventil_min 60 LT restzeit_ventil_sek 10 javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit FALSE restzeit_ventil_min :0 restzeit_ventil_sek javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit FALSE restzeit_ventil_min : restzeit_ventil_sek EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 ventil_2_rest Ventil 3 EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek FALSE Umschaltverzögerung für ON_TIME ADD 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 1 ventil_3_rest 1000 ms AND AND OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 OR EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 AND EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 0 javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek FALSE MINUS 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 1 VIS Anzeige setzen restzeit_ventil_min ROUNDDOWN 3.1 DIVIDE 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 60 restzeit_ventil_sek MINUS 1 val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 1 MULTIPLY 1 restzeit_ventil_min 60 LT restzeit_ventil_sek 10 javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit FALSE restzeit_ventil_min :0 restzeit_ventil_sek javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit FALSE restzeit_ventil_min : restzeit_ventil_sek EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 0 ventil_3_rest Ventil 4 EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek FALSE Umschaltverzögerung für ON_TIME ADD 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek 1 ventil_4_rest 1000 ms AND AND AND OR EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_1.ventil_1_restzeit_in_sek 0 OR EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_2.ventil_2_restzeit_in_sek 0 OR EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3 FALSE EQ val javascript.0.bewaesserung.ventile.ventil_3.ventil_3_restzeit_in_sek 0 AND EQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4 TRUE NEQ val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek 0 javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek FALSE MINUS 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek 1 VIS Anzeige setzen restzeit_ventil_min ROUNDDOWN 3.1 DIVIDE 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek 60 restzeit_ventil_sek MINUS 1 val javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit_in_sek 1 MULTIPLY 1 restzeit_ventil_min 60 LT restzeit_ventil_sek 10 javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit FALSE restzeit_ventil_min :0 restzeit_ventil_sek javascript.0.bewaesserung.ventile.ventil_4.ventil_4_restzeit FALSE restzeit_ventil_min : restzeit_ventil_sek EQ val javascript.0.bewaesserung.ventile.ventil_4.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 javascript.0.bewaesserung.bewaesserung_aktiv Manuelles abschalten -> alle Ventile abschalten EQ val javascript.0.bewaesserung.bewaesserung_aktiv FALSE Ventil 1 EQ val object_id_ventil_1_state TRUE false FALSE Object ID object_id_ventil_1_state TRUE FALSE 0 Ventil 2 EQ val object_id_ventil_2_state TRUE false FALSE Object ID object_id_ventil_2_state TRUE FALSE 0 Ventil 3 EQ val object_id_ventil_3_state TRUE false FALSE Object ID object_id_ventil_3_state TRUE FALSE 0 Ventil 4 EQ val object_id_ventil_4_state TRUE false FALSE Object ID object_id_ventil_4_state TRUE FALSE 0