textAusgabe anlegen_in arry trenner id val anzahl_fenster_gekippt datenpruefung alexa_instanz_0 alexa_instanz_1 anzahl_fenster_offen ansage speicherort anzahl_fenster_geschlossen nachricht_ausgabe angesprochener_echo_instanz_0 angesprochener_echo_instanz_1 anzahl_fenster_gesamt speak_volume_instanz_0 objekt_id_fensteransage_eDP speak_volume_instanz_1 selektor liste_fenster_offen_gekippt ansage_einleitungssatz objekt_id_01alexa_eDP angesprochener_echo_instanz_0_neu angesprochener_echo_instanz_1_neu liste_fenster_gesamt objekt_id_02_anzahl_fenster_offen_eDP objekt_id_01_anzahl_fenster_gekippt_eDP objekt_id_05_offene_gekippte_fenster_liste_eDP objekt_id_05alexa_ssml_eDP objekt_id_09ende_ssml_eDP objekt_id_02hans_eDP speak_volume_instanz_0_neu ansagelautstaerke speak_volume_instanz_1_neu liste_fenster_html objekt_id_06hans_ssml_eDP objekt_id_03vicki_eDP html_text objekt_id_07vicki_ssml_eDP objekt_id_04conchita_eDP telegram_benutzer fenster_offen objekt_id_08conchita_ssml_eDP fenster_gekippt e_mail_empfaenger wert fenster_geschlossen logmeldung objekt_id_03_anzahl_fenster_geschlossen_eDP blockly_start_geraete_zaehlen_einlesen objekt_id_04_anzahl_fenster_gesamt_eDP objekt_id_04_1_anzahl_fenster_geoeffnet_gekippt_gesamt_eDP objekt_id_06_gesamte_fenster_liste_eDP objekt_id_07_html_fenster_liste_eDP 01_Anzahl_Fenster_gekippt_pfad 02_Anzahl_Fenster_offen_pfad 03_Anzahl_Fenster_geschlossen_pfad 04_Anzahl_Fenster_gesamt_pfad 04_1_anzahl_fenster_geoeffnet_und_gekippt_gesamt_pfad 05_offene_gekippte_Fenster_Liste_pfad 06_gesamt_Fenster_Liste_pfad 07_html_Fenster_Liste_pfad pfad_ansage_starten pfad_01alexa pfad_02hans pfad_03vicki pfad_04conchita pfad_05Alexa_ssml pfad_06Hans_ssml pfad_07Vicki_ssml pfad_08Conchita_ssml pfad_09_ssml_ende pfad_telegram_versand_an_aus objekt_id_telegram_versand_an_aus pfad_telegram_senden objekt_id_telegram_versenden pfad_email_versand_an_aus objekt_id_email_versand_an_aus pfad_email_senden objekt_id_email_versenden iQontrol iQontrol_File_schreiben ICBjb25zdCBwYXRoID0gIi9odG1sZmVuc3Rlci5odG1sIjsNCiAgDQogIHdyaXRlRmlsZSgnaXFvbnRyb2wubWV0YScsIHBhdGggLHRleHRBdXNnYWJlLCBmdW5jdGlvbiAoZXJyb3IpIHsNCiAgICBsb2coJ2lRb250cm9sIEZlbnN0ZXIgRGF0ZWkgZ2VzY2hyaWViZW4nKTsNCn0pOw== Funktion zum schreiben einer html Datei für iQontrol zaehlen Beschreibe diese Funktion … anzahl_fenster_gekippt 0 anzahl_fenster_offen 0 anzahl_fenster_geschlossen 0 anzahl_fenster_gesamt 0 liste_fenster_offen_gekippt liste_fenster_gesamt liste_fenster_html html_text <!DOCTYPE html><html lang="de"><head><title>Fenster</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body> <p style="color:#0000FF; font-family:Helvetica; font-weight: bold">Fensterstatus</p> <p style="color:#ff0000; font-family:Helvetica; font-weight: bold">letze Änderung: custom TT.MM.JJJJ SS:mm:ss </p> <table border="8" cellspacing="10" cellpadding="20" style="color:black; font-family:Helvetica;background-image: linear-gradient(42deg,transparent,lightblue);"> <tr style="color:#0000FF"; font-weight: bold"><td>Fenster-Türen&ensp;&ensp;&ensp;</td><td>Status</td></tr> <tr><td> fenster_offen selektor anzahl_fenster_gesamt 1 wert val fenster_offen OR EQ fenster_offen wert OPEN EQ fenster_offen wert TRUE anzahl_fenster_offen 1 INSERT LAST liste_fenster_offen_gekippt fenster_offen geöffnet INSERT LAST liste_fenster_gesamt fenster_offen :geöffnet INSERT LAST liste_fenster_html fenster_offen <td><span style="color:#FF0000"> geöffnet </span> fenster_gekippt selektor wert val fenster_gekippt EQ fenster_gekippt wert TILTED anzahl_fenster_gekippt 1 INSERT LAST liste_fenster_offen_gekippt fenster_gekippt gekippt INSERT LAST liste_fenster_gesamt fenster_gekippt :gekippt INSERT LAST liste_fenster_html fenster_gekippt <td><span style="color:#0000FF"> gekippt </span> fenster_geschlossen selektor wert val fenster_geschlossen OR EQ fenster_geschlossen wert CLOSED EQ fenster_geschlossen wert FALSE anzahl_fenster_geschlossen 1 INSERT LAST liste_fenster_gesamt fenster_geschlossen :geschlossen INSERT LAST liste_fenster_html fenster_geschlossen <td>geschlossen true FALSE Object ID objekt_id_01_anzahl_fenster_gekippt_eDP TRUE anzahl_fenster_gekippt 0 true FALSE Object ID objekt_id_02_anzahl_fenster_offen_eDP TRUE anzahl_fenster_offen 0 true FALSE Object ID objekt_id_03_anzahl_fenster_geschlossen_eDP TRUE anzahl_fenster_geschlossen 0 true FALSE Object ID objekt_id_04_anzahl_fenster_gesamt_eDP TRUE anzahl_fenster_gesamt 0 true FALSE Object ID objekt_id_04_1_anzahl_fenster_geoeffnet_gekippt_gesamt_eDP TRUE ADD 1 anzahl_fenster_gekippt 1 anzahl_fenster_offen 0 EQ liste_fenster_offen_gekippt true FALSE Object ID objekt_id_05_offene_gekippte_fenster_liste_eDP TRUE Alle Fenster oder Türen sind geschlossen. 0 true FALSE Object ID objekt_id_05_offene_gekippte_fenster_liste_eDP TRUE TEXT 1 liste_fenster_offen_gekippt , 0 true FALSE Object ID objekt_id_06_gesamte_fenster_liste_eDP TRUE TEXT 1 liste_fenster_gesamt , 0 true FALSE Object ID objekt_id_07_html_fenster_liste_eDP TRUE html_text liste_fenster_html <tr><td> </table></body> 0 Datenpunkte_anlegen LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjEgKDI2IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiAnMF91c2VyZGF0YS4wJyBvciAnamF2YXNjcmlwdC54Jy4KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4KICogQHBhcmFtIHthcnJheX0gc3RhdGVzVG9DcmVhdGUgIFN0YXRlKHMpIHRvIGNyZWF0ZS4gc2luZ2xlIGFycmF5IG9yIGFycmF5IG9mIGFycmF5cwogKiBAcGFyYW0ge29iamVjdH0gW2NhbGxiYWNrXSAgICAgT3B0aW9uYWw6IGEgY2FsbGJhY2sgZnVuY3Rpb24gLS0gVGhpcyBwcm92aWRlZCBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCBzdGF0ZXMgYXJlIGNyZWF0ZWQuCiAqLwoKZnVuY3Rpb24gY3JlYXRlVXNlclN0YXRlcyh3aGVyZSwgZm9yY2UsIHN0YXRlc1RvQ3JlYXRlLCBjYWxsYmFjayA9IHVuZGVmaW5lZCkgewogCiAgICBjb25zdCBXQVJOID0gZmFsc2U7IC8vIE9ubHkgZm9yIDBfdXNlcmRhdGEuMDogVGhyb3dzIHdhcm5pbmcgaW4gbG9nLCBpZiBzdGF0ZSBpcyBhbHJlYWR5IGV4aXN0aW5nIGFuZCBmb3JjZT1mYWxzZS4gRGVmYXVsdCBpcyBmYWxzZSwgc28gbm8gd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGV4aXN0cy4KICAgIGNvbnN0IExPR19ERUJVRyA9IGZhbHNlOyAvLyBUbyBkZWJ1ZyB0aGlzIGZ1bmN0aW9uLCBzZXQgdG8gdHJ1ZQogICAgLy8gUGVyIGlzc3VlICM0NzQgKGh0dHBzOi8vZ2l0aHViLmNvbS9pb0Jyb2tlci9pb0Jyb2tlci5qYXZhc2NyaXB0L2lzc3Vlcy80NzQpLCB0aGUgdXNlZCBmdW5jdGlvbiBzZXRPYmplY3QoKSBleGVjdXRlcyB0aGUgY2FsbGJhY2sgCiAgICAvLyBiZWZvcmUgdGhlIHN0YXRlIGlzIGFjdHVhbCBjcmVhdGVkLiBUaGVyZWZvcmUsIHdlIHVzZSBhIHNldFRpbWVvdXQgYW5kIGNvdW50ZXIgYXMgYSB3b3JrYXJvdW5kLgogICAgY29uc3QgREVMQVkgPSA1MDsgLy8gRGVsYXkgaW4gbWlsbGlzZWNvbmRzIChtcykuIEluY3JlYXNlIHRoaXMgdG8gMTAwLCBpZiBpdCBpcyBub3Qgd29ya2luZy4KCiAgICAvLyBWYWxpZGF0ZSAid2hlcmUiCiAgICBpZiAod2hlcmUuZW5kc1dpdGgoJy4nKSkgd2hlcmUgPSB3aGVyZS5zbGljZSgwLCAtMSk7IC8vIFJlbW92ZSB0cmFpbGluZyBkb3QKICAgIGlmICggKHdoZXJlLm1hdGNoKC9eKChqYXZhc2NyaXB0XC4oWzEtOV1bMC05XXxbMC05XSkpJHwwX3VzZXJkYXRhXC4wJCkvKSA9PSBudWxsKSApIHsKICAgICAgICBsb2coJ1RoaXMgc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgdG8gY3JlYXRlIHN0YXRlcyB1bmRlciBbJyArIHdoZXJlICsgJ10nLCAnZXJyb3InKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUHJlcGFyZSAic3RhdGVzVG9DcmVhdGUiIHNpbmNlIHdlIGFsc28gYWxsb3cgYSBzaW5nbGUgc3RhdGUgdG8gY3JlYXRlCiAgICBpZighQXJyYXkuaXNBcnJheShzdGF0ZXNUb0NyZWF0ZVswXSkpIHN0YXRlc1RvQ3JlYXRlID0gW3N0YXRlc1RvQ3JlYXRlXTsgLy8gd3JhcCBpbnRvIGFycmF5LCBpZiBqdXN0IG9uZSBhcnJheSBhbmQgbm90IGluc2lkZSBhbiBhcnJheQoKICAgIC8vIEFkZCAid2hlcmUiIHRvIFNUQVRFU19UT19DUkVBVEUKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVzVG9DcmVhdGUubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZXQgbHBQYXRoID0gc3RhdGVzVG9DcmVhdGVbaV1bMF0ucmVwbGFjZSgvXC4qXC4vZywgJy4nKTsgLy8gcmVwbGFjZSBhbGwgbXVsdGlwbGUgZG90cyBsaWtlICcuLicsICcuLi4nIHdpdGggYSBzaW5nbGUgJy4nCiAgICAgICAgbHBQYXRoID0gbHBQYXRoLnJlcGxhY2UoL14oKGphdmFzY3JpcHRcLihbMS05XVswLTldfFswLTldKVwuKXwwX3VzZXJkYXRhXC4wXC4pLywnJykgLy8gcmVtb3ZlIGFueSBqYXZhc2NyaXB0LnguIC8gMF91c2VyZGF0YS4wLiBmcm9tIGJlZ2lubmluZwogICAgICAgIGxwUGF0aCA9IHdoZXJlICsgJy4nICsgbHBQYXRoOyAvLyBhZGQgd2hlcmUgdG8gYmVnaW5uaW5nIG9mIHN0cmluZwogICAgICAgIHN0YXRlc1RvQ3JlYXRlW2ldWzBdID0gbHBQYXRoOwogICAgfQoKICAgIGlmICh3aGVyZSAhPSAnMF91c2VyZGF0YS4wJykgewogICAgICAgIC8vIENyZWF0ZSBTdGF0ZXMgdW5kZXIgamF2YXNjcmlwdC54CiAgICAgICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgICAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGxvb3BQYXJhbSkgewogICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gTm93IHdlIGFyZSBjcmVhdGluZyBuZXcgc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXScpOwogICAgICAgICAgICBsZXQgbG9vcEluaXQgPSAobG9vcFBhcmFtWzFdWydkZWYnXSA9PSB1bmRlZmluZWQpID8gbnVsbCA6IGxvb3BQYXJhbVsxXVsnZGVmJ107IC8vIG1pbWljIHNhbWUgYmVoYXZpb3IgYXMgY3JlYXRlU3RhdGUgaWYgbm8gaW5pdCB2YWx1ZSBpcyBwcm92aWRlZAogICAgICAgICAgICBjcmVhdGVTdGF0ZShsb29wUGFyYW1bMF0sIGxvb3BJbml0LCBmb3JjZSwgbG9vcFBhcmFtWzFdLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG51bVN0YXRlcy0tOwogICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHByb2Nlc3NlZC4nKTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBDcmVhdGUgU3RhdGVzIHVuZGVyIDBfdXNlcmRhdGEuMAogICAgICAgIGxldCBudW1TdGF0ZXMgPSBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7CiAgICAgICAgbGV0IGNvdW50ZXIgPSAtMTsKICAgICAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGxvb3BQYXJhbSkgewogICAgICAgICAgICBjb3VudGVyICs9IDE7CiAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZyAoJ1tEZWJ1Z10gQ3VycmVudGx5IHByb2Nlc3NpbmcgZm9sbG93aW5nIHN0YXRlOiBbJyArIGxvb3BQYXJhbVswXSArICddJyk7CiAgICAgICAgICAgIGlmKCAoJChsb29wUGFyYW1bMF0pLmxlbmd0aCA+IDApICYmIChleGlzdHNTdGF0ZShsb29wUGFyYW1bMF0pKSApIHsgLy8gV29ya2Fyb3VuZCBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3OAogICAgICAgICAgICAgICAgLy8gU3RhdGUgaXMgZXhpc3RpbmcuCiAgICAgICAgICAgICAgICBpZiAoV0FSTiAmJiAhZm9yY2UpIGxvZygnU3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXSBpcyBhbHJlYWR5IGV4aXN0aW5nIGFuZCB3aWxsIG5vIGxvbmdlciBiZSBjcmVhdGVkLicsICd3YXJuJyk7CiAgICAgICAgICAgICAgICBpZiAoIVdBUk4gJiYgTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gU3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXSBpcyBhbHJlYWR5IGV4aXN0aW5nLiBPcHRpb24gZm9yY2UgKD1vdmVyd3JpdGUpIGlzIHNldCB0byBbJyArIGZvcmNlICsgJ10uJyk7CiAgICAgICAgICAgICAgICBpZighZm9yY2UpIHsKICAgICAgICAgICAgICAgICAgICAvLyBTdGF0ZSBleGlzdHMgYW5kIHNoYWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBzaW5jZSBmb3JjZT1mYWxzZQogICAgICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBkbyBub3QgcHJvY2VlZC4KICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQhJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB3YXMgcHJvdmlkZWQsIHdoaWNoIHdlIGFyZSBnb2luZyB0byBleGVjdXRlIG5vdy4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBvdXQgYW5kIGNvbnRpbnVlIHdpdGggbmV4dCBlbGVtZW50IGluIGxvb3AuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTg0NTI5MjAvY29udGludWUtaW4tY3Vyc29yLWZvcmVhY2gKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IC8vIGlmKCFmb3JjZSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3RhdGUgaXMgbm90IGV4aXN0aW5nIG9yIGZvcmNlID0gdHJ1ZSwgc28gd2UgYXJlIGNvbnRpbnVpbmcgdG8gY3JlYXRlIHRoZSBzdGF0ZSB0aHJvdWdoIHNldE9iamVjdCgpLgogICAgICAgICAgICBsZXQgb2JqID0ge307CiAgICAgICAgICAgIG9iai50eXBlID0gJ3N0YXRlJzsKICAgICAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgICAgICBvYmouY29tbW9uID0gbG9vcFBhcmFtWzFdOwogICAgICAgICAgICBzZXRPYmplY3QobG9vcFBhcmFtWzBdLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3QgZm9yIHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ106ICcgKyBlcnIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gTm93IHdlIGFyZSBjcmVhdGluZyBuZXcgc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXScpCiAgICAgICAgICAgICAgICAgICAgbGV0IGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSBsb29wUGFyYW1bMV0uZGVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShsb29wUGFyYW1bMF0sIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIHNldFN0YXRlIGR1cmNoZ2Vmw7xocnQ6ICcgKyBsb29wUGFyYW1bMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9LCBERUxBWSArICgyMCAqIGNvdW50ZXIpICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQp9CgpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbCiAgICAvL1N0aW1tZW4KICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uQWxleGFfU3RpbW1lbi4wMUFsZXhhJywgeyduYW1lJzonMDFBbGV4YScsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6dHJ1ZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAiQWxleGEiLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sCiAgICBbJ0dlcmFldGVfemFlaGxlbl9vcHRpb25hbF9BbnNhZ2VuLkFsZXhhX1N0aW1tZW4uMDJIYW5zJywgeyduYW1lJzonMDJIYW5zJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAiSGFucyIsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uQWxleGFfU3RpbW1lbi4wM1ZpY2tpJywgeyduYW1lJzonMDNWaWNraScsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIlZpY2tpIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5BbGV4YV9TdGltbWVuLjA0Q29uY2hpdGEnLCB7J25hbWUnOicwNENvbmNoaXRhJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzd2l0Y2gnLCAnZGVmJzpmYWxzZSwgInNtYXJ0TmFtZSI6IHsiZGUiOiAiQ29uY2hpdGEiLCJzbWFydFR5cGUiOiAiU1dJVENIIn0gfV0sCiAgICBbJ0dlcmFldGVfemFlaGxlbl9vcHRpb25hbF9BbnNhZ2VuLkFsZXhhX1N0aW1tZW4uMDVBbGV4YV9zc21sJywgeyduYW1lJzonMDVBbGV4YV9zc21sJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonPHNwZWFrPjx2b2ljZSBuYW1lPSJBbGV4YSI+JyB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uQWxleGFfU3RpbW1lbi4wNkhhbnNfc3NtbCcsIHsnbmFtZSc6JzA2SGFuc19zc21sJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonPHNwZWFrPjx2b2ljZSBuYW1lPSJIYW5zIj4nIH1dLAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5BbGV4YV9TdGltbWVuLjA3Vmlja2lfc3NtbCcsIHsnbmFtZSc6JzA3Vmlja2lfc3NtbCcsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6JzxzcGVhaz48dm9pY2UgbmFtZT0iVmlja2kiPicgfV0sCiAgICBbJ0dlcmFldGVfemFlaGxlbl9vcHRpb25hbF9BbnNhZ2VuLkFsZXhhX1N0aW1tZW4uMDhDb25jaGl0YV9zc21sJywgeyduYW1lJzonMDhDb25jaGl0YV9zc21sJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonPHNwZWFrPjx2b2ljZSBuYW1lPSJDb25jaGl0YSI+JyB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uQWxleGFfU3RpbW1lbi4wOXNzbWxfZW5kZScsIHsnbmFtZSc6JzA5c3NtbF9lbmRlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonPC92b2ljZT48L3NwZWFrPicgfV0sCiAgICAvL0Fuc2FnZSBCdXR0b24KICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uQWxleGFfQW5zYWdlbi4wOUZlbnN0ZXJhbnNhZ2UnLCB7J25hbWUnOiAnMDlGZW5zdGVyYW5zYWdlJywndHlwZSc6ICdib29sZWFuJywgJ3JlYWQnOiB0cnVlLCAnd3JpdGUnOiB0cnVlLCAncm9sZSc6ICdidXR0b24nLCdkZWYnOnRydWUsICJzbWFydE5hbWUiOiB7ImRlIjogIjA5RmVuc3RlcmFuc2FnZSIsInNtYXJ0VHlwZSI6ICJTV0lUQ0gifSB9XSwgCiAgICAvL0dlcmFldGUgemFlaGxlbgogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5HZXJhZXRlX3phZWhsZW4uRmVuc3Rlcl96YWVobGVuLjAxX0FuemFobF9GZW5zdGVyX2dla2lwcHQnLCB7J25hbWUnOicwMV9BbnphaGxfRmVuc3Rlcl9nZWtpcHB0JywgJ3R5cGUnOidudW1iZXInLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidudW1iZXInLCd1bml0JzonRmVuc3RlcicsICdkZWYnOjAgfV0sCiAgICBbJ0dlcmFldGVfemFlaGxlbl9vcHRpb25hbF9BbnNhZ2VuLkdlcmFldGVfemFlaGxlbi5GZW5zdGVyX3phZWhsZW4uMDJfQW56YWhsX0ZlbnN0ZXJfb2ZmZW4nLCB7J25hbWUnOicwMl9BbnphaGxfRmVuc3Rlcl9vZmZlbicsICd0eXBlJzonbnVtYmVyJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonbnVtYmVyJywndW5pdCc6J0ZlbnN0ZXInLCAnZGVmJzowIH1dLAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5HZXJhZXRlX3phZWhsZW4uRmVuc3Rlcl96YWVobGVuLjAzX0FuemFobF9GZW5zdGVyX2dlc2NobG9zc2VuJywgeyduYW1lJzonMDNfQW56YWhsX0ZlbnN0ZXJfZ2VzY2hsb3NzZW4nLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOidGZW5zdGVyJywgJ2RlZic6MCB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uR2VyYWV0ZV96YWVobGVuLkZlbnN0ZXJfemFlaGxlbi4wNF9BbnphaGxfRmVuc3Rlcl9nZXNhbXQnLCB7J25hbWUnOicwNF9BbnphaGxfRmVuc3Rlcl9nZXNhbXQnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOidGZW5zdGVyJywgJ2RlZic6MCB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uR2VyYWV0ZV96YWVobGVuLkZlbnN0ZXJfemFlaGxlbi4wNF8xX0FuemFobF9GZW5zdGVyX2dlb2VmZm5ldF91bmRfZ2VraXBwdF9nZXNhbXQnLCB7J25hbWUnOicwNF8xX0FuemFobF9GZW5zdGVyX2dlb2VmZm5ldF91bmRfZ2VraXBwdF9nZXNhbXQnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J251bWJlcicsJ3VuaXQnOidGZW5zdGVyJywgJ2RlZic6MCB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uR2VyYWV0ZV96YWVobGVuLkZlbnN0ZXJfemFlaGxlbi4wNV9vZmZlbmVfZ2VraXBwdGVfRmVuc3Rlcl9MaXN0ZScsIHsnbmFtZSc6JzA1X29mZmVuZV9nZWtpcHB0ZV9GZW5zdGVyX0xpc3RlJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzpmYWxzZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwKICAgIFsnR2VyYWV0ZV96YWVobGVuX29wdGlvbmFsX0Fuc2FnZW4uR2VyYWV0ZV96YWVobGVuLkZlbnN0ZXJfemFlaGxlbi4wNl9nZXNhbXRlX0ZlbnN0ZXJfTGlzdGUnLCB7J25hbWUnOicwNl9nZXNhbXRlX0ZlbnN0ZXJfTGlzdGUnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOmZhbHNlLCAncm9sZSc6J3N0cmluZycsICdkZWYnOidub2NoIGxlZXInIH1dLAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5HZXJhZXRlX3phZWhsZW4uRmVuc3Rlcl96YWVobGVuLjA3X2h0bWxfRmVuc3Rlcl9MaXN0ZScsIHsnbmFtZSc6JzA3X2h0bWxfRmVuc3Rlcl9MaXN0ZScsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6ZmFsc2UsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sCiAgICAvL1RlbGVncmFtIE5hY2hyaWNodGVudmVyc2FuZAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5UZWxlZ3JhbS4wMVRlbGVncmFtX0ZlbnN0ZXJfVmVyc2FuZF9hbl9hdXMnLCB7J25hbWUnOicwMVRlbGVncmFtX0ZlbnN0ZXJfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5UZWxlZ3JhbS4wMlRlbGVncmFtX0ZlbnN0ZXJzdGF0dXNfc2VuZGVuJywgeyduYW1lJzonMDJUZWxlZ3JhbV9GZW5zdGVyc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIlRlbGVncmFtX0ZlbnN0ZXJzdGF0dXNfc2VuZGVuIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCAKICAgIC8vRS1NYWlsIE5hY2hyaWNodGVudmVyc2FuZAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5FTUFJTC4wMUVNYWlsX0ZlbnN0ZXJfVmVyc2FuZF9hbl9hdXMnLCB7J25hbWUnOicwMUVNYWlsX0ZlbnN0ZXJfVmVyc2FuZF9hbl9hdXMnLCAndHlwZSc6J2Jvb2xlYW4nLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J3N3aXRjaCcsICdkZWYnOmZhbHNlIH1dLAogICAgWydHZXJhZXRlX3phZWhsZW5fb3B0aW9uYWxfQW5zYWdlbi5FTUFJTC4wMkVNYWlsX0ZlbnN0ZXJzdGF0dXNfc2VuZGVuJywgeyduYW1lJzonMDJFTWFpbF9GZW5zdGVyc3RhdHVzX3NlbmRlbicsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVNQUlMX0ZlbnN0ZXJzdGF0dXNfc2VuZGVuIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCAKICAgIApdOwoKY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLCBmYWxzZSwgc3RhdGVzVG9DcmVhdGUsIGZ1bmN0aW9uKCl7OwogICAgbWFpbigpOwp9KTsKCgo= Datenpunkte erstellen telegram_senden Beschreibe diese Funktion … ab hier Ausgabe AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 nachricht_ausgabe Es ist ein Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 0 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es ist ein Fenster gekippt 👈 \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es ist ein Fenster gekippt 👈 \n Es ist ein Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 0 GT val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es sind val objekt_id_01_anzahl_fenster_gekippt_eDP Fenster gekippt 👈 \n \n TEXT 1 liste_fenster_offen_gekippt \n AND GT val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 nachricht_ausgabe Es sind val objekt_id_02_anzahl_fenster_offen_eDP Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND GT val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es ist ein Fenster gekippt 👈 \n Es sind val objekt_id_02_anzahl_fenster_offen_eDP Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 1 GT val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es sind val objekt_id_01_anzahl_fenster_gekippt_eDP Fenster gekippt 👈 \n Es ist ein Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND GT val objekt_id_02_anzahl_fenster_offen_eDP 1 GT val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es sind val objekt_id_01_anzahl_fenster_gekippt_eDP Fenster gekippt 👈 \n Es sind val objekt_id_02_anzahl_fenster_offen_eDP Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 0 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 nachricht_ausgabe ✅ Alle Fenster und Türen sind zu ✅ FALSE default text nachricht_ausgabe telegram_benutzer arry, trenner cmV0dXJuIGFycnkuam9pbih0cmVubmVyKTs= Beschreibe diese Funktion … email_senden Beschreibe diese Funktion … ab hier Ausgabe AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 nachricht_ausgabe Es ist ein Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 0 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es ist ein Fenster gekippt 👈 \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es ist ein Fenster gekippt 👈 \n Es ist ein Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 0 GT val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es sind val objekt_id_01_anzahl_fenster_gekippt_eDP Fenster gekippt 👈 \n \n TEXT 1 liste_fenster_offen_gekippt \n AND GT val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 nachricht_ausgabe Es sind val objekt_id_02_anzahl_fenster_offen_eDP Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND GT val objekt_id_02_anzahl_fenster_offen_eDP 1 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es ist ein Fenster gekippt 👈 \n Es sind val objekt_id_02_anzahl_fenster_offen_eDP Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 1 GT val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es sind val objekt_id_01_anzahl_fenster_gekippt_eDP Fenster gekippt 👈 \n Es ist ein Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND GT val objekt_id_02_anzahl_fenster_offen_eDP 1 GT val objekt_id_01_anzahl_fenster_gekippt_eDP 1 nachricht_ausgabe Es sind val objekt_id_01_anzahl_fenster_gekippt_eDP Fenster gekippt 👈 \n Es sind val objekt_id_02_anzahl_fenster_offen_eDP Fenster geöffnet ☝️ \n \n TEXT 1 liste_fenster_offen_gekippt \n AND EQ val objekt_id_02_anzahl_fenster_offen_eDP 0 EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 nachricht_ausgabe ✅ Alle Fenster und Türen sind zu ✅ FALSE e_mail_empfaenger nachricht_ausgabe Fensterstatus getParentName dmFyIG5hbWUgPSBnZXRPYmplY3QoaWQpLmNvbW1vbi5uYW1lOw0KDQppZiAobmFtZS5zdWJzdHIoIC03KSA9PSAoJ0lzIG9wZW4nKSkgcmV0dXJuIG5hbWUuc2xpY2UoMCwgLTcpOw0KaWYgKG5hbWUuc3Vic3RyKCAtNikgPT0gKCcuU1RBVEUnKSkgcmV0dXJuIG5hbWUuc2xpY2UoMCwgLTYpOw0KaWYgKG5hbWUuc3Vic3RyKCAtNikgPT0gKCcuc3RhdGUnKSkgcmV0dXJuIG5hbWUuc2xpY2UoMCwgLTYpOw0KaWYgKG5hbWUuc3Vic3RyKCAtNSkgPT0gKCcub3BlbicpKSByZXR1cm4gbmFtZS5zbGljZSgwLCAtNSk7DQoNCmlkID0gaWQuc3Vic3RyaW5nKDAsIGlkLmxhc3RJbmRleE9mKCcuJykpOw0KaWYoZXhpc3RzT2JqZWN0KGlkKSAmJiBnZXRPYmplY3QoaWQpLnR5cGUgPT0gJ2NoYW5uZWwnKSByZXR1cm4gZ2V0T2JqZWN0KGlkKS5jb21tb24ubmFtZTsNCmlkID0gaWQuc3Vic3RyaW5nKDAsIGlkLmxhc3RJbmRleE9mKCcuJykpOw0KaWYoZXhpc3RzT2JqZWN0KGlkKSAmJiBnZXRPYmplY3QoaWQpLnR5cGUgPT0gJ2NoYW5uZWwnKSByZXR1cm4gZ2V0T2JqZWN0KGlkKS5jb21tb24ubmFtZTsNCg0KZWxzZSByZXR1cm4gJ1NlbnNvciB1bmJla2FubnQnOw0KDQoNCg0KDQoNCiAgICANCg0KDQo= Beschreibe diese Funktion … ansage_wiedergabe Beschreibe diese Funktion … datenpruefung EQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 ansage_einleitungssatz val objekt_id_05_offene_gekippte_fenster_liste_eDP NEQ val objekt_id_01_anzahl_fenster_gekippt_eDP 0 ansage_einleitungssatz val objekt_id_05_offene_gekippte_fenster_liste_eDP ansage val objekt_id_01alexa_eDP val objekt_id_05alexa_ssml_eDP datenpruefung val objekt_id_09ende_ssml_eDP val objekt_id_02hans_eDP val objekt_id_06hans_ssml_eDP datenpruefung val objekt_id_09ende_ssml_eDP val objekt_id_03vicki_eDP val objekt_id_07vicki_ssml_eDP datenpruefung val objekt_id_09ende_ssml_eDP val objekt_id_04conchita_eDP val objekt_id_08conchita_ssml_eDP datenpruefung val objekt_id_09ende_ssml_eDP stateText Ly9pZihnZXRPYmplY3QoaWQpLmNvbW1vbi5zdGF0ZXMpIHJldHVybiBnZXRPYmplY3QoaWQpLmNvbW1vbi5zdGF0ZXNbdmFsXTsKLy9yZXR1cm4gaWQgKyAnIGhhdCBrZWluZW4gWnVzdGFuZHN0ZXh0JzsKaWYoZ2V0T2JqZWN0KGlkKS5jb21tb24uc3RhdGVzKSByZXR1cm4gKGdldE9iamVjdChpZCkuY29tbW9uLnN0YXRlc1t2YWxdKTsKZWxzZSAKcmV0dXJuIGdldFN0YXRlKGlkKS52YWw7 Beschreibe diese Funktion … alexa2_adapter_instanz_0 Beschreibe diese Funktion … alexa_instanz_0 alexa2.0.History.serialNumber any default alexa_instanz_0 angesprochener_echo_instanz_0 AND EQ FIRST FROM_START alexa_instanz_0 8 alexa2.0 FIRST FROM_START alexa_instanz_0 8 .Echo-Devices. val alexa_instanz_0 .Commands.ssml speak_volume_instanz_0 AND EQ FIRST FROM_START alexa_instanz_0 8 alexa2.0 FIRST FROM_START alexa_instanz_0 8 .Echo-Devices. val alexa_instanz_0 .Commands.speak-volume angesprochener_echo_instanz_0_neu FIRST FROM_START alexa_instanz_0 8 .Echo-Devices. val alexa_instanz_0 .Commands.ssml speak_volume_instanz_0_neu FIRST FROM_START alexa_instanz_0 8 .Echo-Devices. val alexa_instanz_0 .Commands.speak-volume any default objekt_id_fensteransage_eDP AND EQ angesprochener_echo_instanz_0 TRUE EQ state.from system.adapter.iot.0 false FALSE Object ID speak_volume_instanz_0_neu TRUE ansagelautstaerke 0 Sprachausgabe am ECHO false FALSE Object ID angesprochener_echo_instanz_0_neu TRUE ansage 0 log logmeldung FIRST FROM_END angesprochener_echo_instanz_0_neu 15 ausgeführt ✅ echo_name aWYoZXhpc3RzT2JqZWN0KGlkKSkgcmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7 Beschreibe diese Funktion … alexa2_adapter_instanz_1 Beschreibe diese Funktion … alexa_instanz_1 alexa2.1.History.serialNumber any default alexa_instanz_1 angesprochener_echo_instanz_1 AND EQ FIRST FROM_START alexa_instanz_1 8 alexa2.1 FIRST FROM_START alexa_instanz_1 8 .Echo-Devices. val alexa_instanz_1 .Commands.ssml speak_volume_instanz_1 AND EQ FIRST FROM_START alexa_instanz_1 8 alexa2.1 FIRST FROM_START alexa_instanz_1 8 .Echo-Devices. val alexa_instanz_1 .Commands.speak-volume angesprochener_echo_instanz_1_neu FIRST FROM_START alexa_instanz_1 8 .Echo-Devices. val alexa_instanz_1 .Commands.ssml speak_volume_instanz_1_neu FIRST FROM_START alexa_instanz_1 8 .Echo-Devices. val alexa_instanz_1 .Commands.speak-volume any default objekt_id_fensteransage_eDP AND EQ angesprochener_echo_instanz_1 TRUE EQ state.from system.adapter.iot.0 false FALSE Object ID speak_volume_instanz_1_neu TRUE ansagelautstaerke 0 Sprachausgabe am ECHO false FALSE Object ID angesprochener_echo_instanz_1_neu TRUE ansage 0 log logmeldung FIRST FROM_END angesprochener_echo_instanz_1_neu 15 ausgeführt ✅ existiert_DP cmV0dXJuIGV4aXN0c1N0YXRlKGlkKTs= Beschreibe diese Funktion … 0_userdata.0 Forum Link Ansagen: https://forum.iobroker.net/post/273896 Hier 0_userdata.0 oder javascript.x eintagen .x steht fuer die Instanznummer main Hier alle geöffneten Bausteine an die eigene Installation und Wünsche anpassen, Speicherort eintragen speicherort 0_userdata.0 Selektor an die eigene Aufzählung anpassen selektor (functions='Fenster') Ansagelautstaerke bis 100 auswaehlen ansagelautstaerke 60 Telegram Nutzer aus Adapter eintragen telegram_benutzer Heiko E-Mail Empfaenger eintragen e_mail_empfaenger max.muster@gmx.de Satzanfang Log Meldung logmeldung ✅ Die Fensteransage wurde vom ECHO ansage_einleitungssatz Hier der Fensterstatus für Dich. Blockly Start Geraete zaehlen einlesen blockly_start_geraete_zaehlen_einlesen 1 sec Variablen Geraete zaehlen ne default selektor anzahl_fenster_gekippt 0 anzahl_fenster_offen 0 anzahl_fenster_geschlossen 0 anzahl_fenster_gesamt 0 liste_fenster_offen_gekippt liste_fenster_gesamt liste_fenster_html 01_Anzahl_Fenster_gekippt_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.01_Anzahl_Fenster_gekippt objekt_id_01_anzahl_fenster_gekippt_eDP speicherort 01_Anzahl_Fenster_gekippt_pfad 02_Anzahl_Fenster_offen_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.02_Anzahl_Fenster_offen objekt_id_02_anzahl_fenster_offen_eDP speicherort 02_Anzahl_Fenster_offen_pfad 03_Anzahl_Fenster_geschlossen_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.03_Anzahl_Fenster_geschlossen objekt_id_03_anzahl_fenster_geschlossen_eDP speicherort 03_Anzahl_Fenster_geschlossen_pfad 04_Anzahl_Fenster_gesamt_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.04_Anzahl_Fenster_gesamt objekt_id_04_anzahl_fenster_gesamt_eDP speicherort 04_Anzahl_Fenster_gesamt_pfad 04_1_anzahl_fenster_geoeffnet_und_gekippt_gesamt_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.04_1_Anzahl_Fenster_geoeffnet_und_gekippt_gesamt objekt_id_04_1_anzahl_fenster_geoeffnet_gekippt_gesamt_eDP speicherort 04_1_anzahl_fenster_geoeffnet_und_gekippt_gesamt_pfad 05_offene_gekippte_Fenster_Liste_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.05_offene_gekippte_Fenster_Liste objekt_id_05_offene_gekippte_fenster_liste_eDP speicherort 05_offene_gekippte_Fenster_Liste_pfad 06_gesamt_Fenster_Liste_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.06_gesamte_Fenster_Liste objekt_id_06_gesamte_fenster_liste_eDP speicherort 06_gesamt_Fenster_Liste_pfad 07_html_Fenster_Liste_pfad .Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Fenster_zaehlen.07_html_Fenster_Liste objekt_id_07_html_fenster_liste_eDP speicherort 07_html_Fenster_Liste_pfad Variablen fuer Ansage pfad_ansage_starten .Geraete_zaehlen_optional_Ansagen.Alexa_Ansagen.09Fensteransage objekt_id_fensteransage_eDP speicherort pfad_ansage_starten pfad_01alexa .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.01Alexa objekt_id_01alexa_eDP speicherort pfad_01alexa pfad_02hans .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.02Hans objekt_id_02hans_eDP speicherort pfad_02hans pfad_03vicki .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.03Vicki objekt_id_03vicki_eDP speicherort pfad_03vicki pfad_04conchita .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.04Conchita objekt_id_04conchita_eDP speicherort pfad_04conchita pfad_05Alexa_ssml .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.05Alexa_ssml objekt_id_05alexa_ssml_eDP speicherort pfad_05Alexa_ssml pfad_06Hans_ssml .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.06Hans_ssml objekt_id_06hans_ssml_eDP speicherort pfad_06Hans_ssml pfad_07Vicki_ssml .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.07Vicki_ssml objekt_id_07vicki_ssml_eDP speicherort pfad_07Vicki_ssml pfad_08Conchita_ssml .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.08Conchita_ssml objekt_id_08conchita_ssml_eDP speicherort pfad_08Conchita_ssml pfad_09_ssml_ende .Geraete_zaehlen_optional_Ansagen.Alexa_Stimmen.09ssml_ende objekt_id_09ende_ssml_eDP speicherort pfad_09_ssml_ende true default objekt_id_01alexa_eDP true FALSE Object ID objekt_id_02hans_eDP FALSE 0 true FALSE Object ID objekt_id_03vicki_eDP FALSE 0 true FALSE Object ID objekt_id_04conchita_eDP FALSE 0 true default objekt_id_02hans_eDP true FALSE Object ID objekt_id_01alexa_eDP FALSE 0 true FALSE Object ID objekt_id_03vicki_eDP FALSE 0 true FALSE Object ID objekt_id_04conchita_eDP FALSE 0 true default objekt_id_03vicki_eDP true FALSE Object ID objekt_id_01alexa_eDP FALSE 0 true FALSE Object ID objekt_id_02hans_eDP FALSE 0 true FALSE Object ID objekt_id_04conchita_eDP FALSE 0 true default objekt_id_04conchita_eDP true FALSE Object ID objekt_id_01alexa_eDP FALSE 0 true FALSE Object ID objekt_id_02hans_eDP FALSE 0 true FALSE Object ID objekt_id_03vicki_eDP FALSE 0 ne default objekt_id_01alexa_eDP default objekt_id_02hans_eDP default objekt_id_03vicki_eDP default objekt_id_04conchita_eDP AND AND val objekt_id_01alexa_eDP val objekt_id_02hans_eDP AND val objekt_id_03vicki_eDP val objekt_id_04conchita_eDP true FALSE Object ID objekt_id_01alexa_eDP TRUE 0 Telegram pfad_telegram_versand_an_aus .Geraete_zaehlen_optional_Ansagen.Telegram.01Telegram_Fenster_Versand_an_aus objekt_id_telegram_versand_an_aus speicherort pfad_telegram_versand_an_aus pfad_telegram_senden .Geraete_zaehlen_optional_Ansagen.Telegram.02Telegram_Fensterstatus_senden objekt_id_telegram_versenden speicherort pfad_telegram_senden ne default objekt_id_05_offene_gekippte_fenster_liste_eDP EQ val objekt_id_telegram_versand_an_aus TRUE ne default objekt_id_telegram_versand_an_aus EQ val objekt_id_telegram_versand_an_aus TRUE FALSE Markdown text Der Versand der Telegram Liste *Fensterstatus* wurde *eingeschaltet* . ✅ telegram_benutzer FALSE Markdown text Der Versand der Telegram Liste *Fensterstatus* wurde *ausgeschaltet* . ❌ telegram_benutzer any default objekt_id_telegram_versenden E Mail pfad_email_versand_an_aus .Geraete_zaehlen_optional_Ansagen.EMAIL.01EMail_Fenster_Versand_an_aus objekt_id_email_versand_an_aus speicherort pfad_email_versand_an_aus pfad_email_senden .Geraete_zaehlen_optional_Ansagen.EMAIL.02EMail_Fensterstatus_senden objekt_id_email_versenden speicherort pfad_email_senden ne default objekt_id_05_offene_gekippte_fenster_liste_eDP EQ val objekt_id_email_versand_an_aus TRUE ne default objekt_id_email_versand_an_aus EQ val objekt_id_email_versand_an_aus TRUE FALSE e_mail_empfaenger Der Versand der E-Mail Liste Fensterstatus wurde eingeschaltet . ✅ Fensterstatus FALSE e_mail_empfaenger Der Versand der E-Mail Liste Fensterstatus wurde ausgeschaltet . ❌ Fensterstatus any default objekt_id_email_versenden Liste in iQontrol schreiben ne default objekt_id_07_html_fenster_liste_eDP blockly_start_geraete_zaehlen_einlesen iQontrol 1000 ms val objekt_id_07_html_fenster_liste_eDP