Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] async-await

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

[gelöst] async-await

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 2 Kommentatoren 1.1k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • dslraserD Offline
    dslraserD Offline
    dslraser
    Forum Testing Most Active
    schrieb am zuletzt editiert von dslraser
    #1

    @fastfoot
    wie im Chat angefragt, hier mal ein eigener Beitrag zum Thema Datenpunkte anlegen über async/await.

    Mein Ziel ist es über das von Dir gezeigte Beispiel als Funktion (in Blockly eingebaut) Datenpunkte zu erstellen und diese auch am Anschluss direkt nutzen zu können. Ich erstelle bisher meine Datenpunkte über ein Script (in einer Funktion). Die Struktur ist immer ähnlich, aber eben "variabel", je nachdem welche Variablen im Blockly auf true gestellt werden, dann werden die passenden Datenpunkte erstellt. Bei false werden die dann auch wieder gelöscht.

    Bisherige Struktur

    Bildschirmfoto 2021-04-15 um 18.46.41.png

    Wenn in den Blockly Einstellungen alles in den Variablen auf true steht wird diese Struktuk erstellt.

    Blockly Einstellungen Beispiel

    Bildschirmfoto 2021-04-15 um 18.51.18.png

    Wenn jetzt Beispielsweise Telegram_verwenden auf falsch gestellt wird, dann werden eventuell erstellte Datenpunkte dafür gelöscht, oder eben gar nicht erst erstellt.
    Einen Anfang habe ich mal probiert, aber wie erstelle ich meine gezeigte "Struktur" mit Variablen. Diese Struktur hat auch noch Unterordner und verschiedene Datenpunkte sowieso.
    Wie Du schon geschrieben hast, werden timeouts in meiner bisherigen Variante verwendet, davon möchte ich weg.

    Bildschirmfoto 2021-04-15 um 18.53.39.png

    <xml xmlns="https://developers.google.com/blockly/xml">
     <variables>
       <variable id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</variable>
       <variable id="xHz3Sa?;(*/32eT%pB_i">Test_DP</variable>
     </variables>
     <block type="procedures_defcustomnoreturn" id="=lwe#KBAhO-D.Yr~J/b2" x="13" y="13">
       <mutation statements="false"></mutation>
       <field name="NAME">Datenpunkte_anlegen</field>
       <field name="SCRIPT">Y29uc3QgaWRCYXNlID0gYW5sZWdlbl9pbjsKIAphc3luYyBmdW5jdGlvbiBtYWluKCl7CiAKICAgIGxldCBmaXJzdFJ1biA9IGF3YWl0IGNyZWF0ZURhdGFwb2ludHMoKTsKICAgIHdvcmsoKTsKfQogCi8vIGNyZWF0ZSBkYXRhIHBvaW50cyBpZiBub3QgZXhpc3RpbmcKYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGF0YXBvaW50cygpIHsKICAgIGxldCBkcCwKICAgICAgICBpZEtleSwKICAgICAgICBmaXJzdFJ1biA9IGZhbHNlOwogICAgCiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZXMgPSB7CiAgICAgICAgIlRlc3QuUkxQLmpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiVGVzdC5STFAuUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJUZXN0LlJMUC5FeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sCiAgICB9CiAKICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmlidXRlcykgewogCiAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyAnLicgKyBrZXk7CiAKICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgZmlyc3RSdW4gPSB0cnVlOwogICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgfQogICAgfQogCiAgICByZXR1cm4gZmlyc3RSdW47CiAKfQogCm1haW4oKTsK</field>
       <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
     </block>
     <block type="variables_set" id="]R?O8fEB0/9Mimg{5G+n" x="13" y="63">
       <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
       <value name="VALUE">
         <block type="text" id="WeFb$m8,;lV1p#(K4/CW">
           <field name="TEXT">0_userdata.0</field>
         </block>
       </value>
       <next>
         <block type="procedures_callcustomnoreturn" id="pG##/69xE{Rypf9~TW5y">
           <mutation name="Datenpunkte_anlegen"></mutation>
         </block>
       </next>
     </block>
     <block type="procedures_defnoreturn" id="%i[E#v,(^3AyFd%1iKbI" x="13" y="138">
       <field name="NAME">work</field>
       <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       <statement name="STACK">
         <block type="variables_set" id="ZHDKh0L$;5=bVn@#qa/3">
           <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
           <value name="VALUE">
             <block type="text_join" id="9Fc^^u/Dv.!|Qcf~[_Ip">
               <mutation items="2"></mutation>
               <value name="ADD0">
                 <block type="variables_get" id="~linCS?uDU:Y#:cZPDcL">
                   <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                 </block>
               </value>
               <value name="ADD1">
                 <block type="text" id="){)~AA/Gqi6n`mS!/${Q">
                   <field name="TEXT">.Test.RLP.Excel</field>
                 </block>
               </value>
             </block>
           </value>
           <next>
             <block type="debug" id="umnxNUW]NKC_JAJR`a7z">
               <field name="Severity">log</field>
               <value name="TEXT">
                 <shadow type="text" id="0A9s:5Um/Um!)w^~v156">
                   <field name="TEXT">mach irgendwas</field>
                 </shadow>
               </value>
               <next>
                 <block type="control_ex" id="x2Ui-/Pto*06r$s{aL-I" inline="true">
                   <field name="TYPE">true</field>
                   <field name="CLEAR_RUNNING">FALSE</field>
                   <value name="OID">
                     <shadow type="field_oid" id="MiS7$HdUIS52r#KlxMP+">
                       <field name="oid">Object ID</field>
                     </shadow>
                     <block type="variables_get" id="Ra);[JC@~t2pIf/G,C76">
                       <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                     </block>
                   </value>
                   <value name="VALUE">
                     <shadow type="logic_boolean" id="-jNfpz4K^`IXOgPZ:XZy">
                       <field name="BOOL">TRUE</field>
                     </shadow>
                   </value>
                   <value name="DELAY_MS">
                     <shadow type="math_number" id="qt09Y!I/zfa6H!F*T]W-">
                       <field name="NUM">60000</field>
                     </shadow>
                   </value>
                 </block>
               </next>
             </block>
           </next>
         </block>
       </statement>
     </block>
    </xml>
    

    Benutzen möchte ich das in diesen Blocklys, dort sind im ersten Beitrag auch alle Datenpunkte die erstellt / gelöscht werden könnten zu sehen.
    https://forum.iobroker.net/topic/40424/alexa-ansagen-i-telegram-i-email-i-alias-i-visu-i-html
    Dort baue ich gerade ohnehin einiges um...

    F 1 Antwort Letzte Antwort
    0
    • dslraserD dslraser

      @fastfoot
      wie im Chat angefragt, hier mal ein eigener Beitrag zum Thema Datenpunkte anlegen über async/await.

      Mein Ziel ist es über das von Dir gezeigte Beispiel als Funktion (in Blockly eingebaut) Datenpunkte zu erstellen und diese auch am Anschluss direkt nutzen zu können. Ich erstelle bisher meine Datenpunkte über ein Script (in einer Funktion). Die Struktur ist immer ähnlich, aber eben "variabel", je nachdem welche Variablen im Blockly auf true gestellt werden, dann werden die passenden Datenpunkte erstellt. Bei false werden die dann auch wieder gelöscht.

      Bisherige Struktur

      Bildschirmfoto 2021-04-15 um 18.46.41.png

      Wenn in den Blockly Einstellungen alles in den Variablen auf true steht wird diese Struktuk erstellt.

      Blockly Einstellungen Beispiel

      Bildschirmfoto 2021-04-15 um 18.51.18.png

      Wenn jetzt Beispielsweise Telegram_verwenden auf falsch gestellt wird, dann werden eventuell erstellte Datenpunkte dafür gelöscht, oder eben gar nicht erst erstellt.
      Einen Anfang habe ich mal probiert, aber wie erstelle ich meine gezeigte "Struktur" mit Variablen. Diese Struktur hat auch noch Unterordner und verschiedene Datenpunkte sowieso.
      Wie Du schon geschrieben hast, werden timeouts in meiner bisherigen Variante verwendet, davon möchte ich weg.

      Bildschirmfoto 2021-04-15 um 18.53.39.png

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</variable>
         <variable id="xHz3Sa?;(*/32eT%pB_i">Test_DP</variable>
       </variables>
       <block type="procedures_defcustomnoreturn" id="=lwe#KBAhO-D.Yr~J/b2" x="13" y="13">
         <mutation statements="false"></mutation>
         <field name="NAME">Datenpunkte_anlegen</field>
         <field name="SCRIPT">Y29uc3QgaWRCYXNlID0gYW5sZWdlbl9pbjsKIAphc3luYyBmdW5jdGlvbiBtYWluKCl7CiAKICAgIGxldCBmaXJzdFJ1biA9IGF3YWl0IGNyZWF0ZURhdGFwb2ludHMoKTsKICAgIHdvcmsoKTsKfQogCi8vIGNyZWF0ZSBkYXRhIHBvaW50cyBpZiBub3QgZXhpc3RpbmcKYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGF0YXBvaW50cygpIHsKICAgIGxldCBkcCwKICAgICAgICBpZEtleSwKICAgICAgICBmaXJzdFJ1biA9IGZhbHNlOwogICAgCiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZXMgPSB7CiAgICAgICAgIlRlc3QuUkxQLmpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiVGVzdC5STFAuUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJUZXN0LlJMUC5FeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sCiAgICB9CiAKICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmlidXRlcykgewogCiAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyAnLicgKyBrZXk7CiAKICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgZmlyc3RSdW4gPSB0cnVlOwogICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgfQogICAgfQogCiAgICByZXR1cm4gZmlyc3RSdW47CiAKfQogCm1haW4oKTsK</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       </block>
       <block type="variables_set" id="]R?O8fEB0/9Mimg{5G+n" x="13" y="63">
         <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
         <value name="VALUE">
           <block type="text" id="WeFb$m8,;lV1p#(K4/CW">
             <field name="TEXT">0_userdata.0</field>
           </block>
         </value>
         <next>
           <block type="procedures_callcustomnoreturn" id="pG##/69xE{Rypf9~TW5y">
             <mutation name="Datenpunkte_anlegen"></mutation>
           </block>
         </next>
       </block>
       <block type="procedures_defnoreturn" id="%i[E#v,(^3AyFd%1iKbI" x="13" y="138">
         <field name="NAME">work</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         <statement name="STACK">
           <block type="variables_set" id="ZHDKh0L$;5=bVn@#qa/3">
             <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
             <value name="VALUE">
               <block type="text_join" id="9Fc^^u/Dv.!|Qcf~[_Ip">
                 <mutation items="2"></mutation>
                 <value name="ADD0">
                   <block type="variables_get" id="~linCS?uDU:Y#:cZPDcL">
                     <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                   </block>
                 </value>
                 <value name="ADD1">
                   <block type="text" id="){)~AA/Gqi6n`mS!/${Q">
                     <field name="TEXT">.Test.RLP.Excel</field>
                   </block>
                 </value>
               </block>
             </value>
             <next>
               <block type="debug" id="umnxNUW]NKC_JAJR`a7z">
                 <field name="Severity">log</field>
                 <value name="TEXT">
                   <shadow type="text" id="0A9s:5Um/Um!)w^~v156">
                     <field name="TEXT">mach irgendwas</field>
                   </shadow>
                 </value>
                 <next>
                   <block type="control_ex" id="x2Ui-/Pto*06r$s{aL-I" inline="true">
                     <field name="TYPE">true</field>
                     <field name="CLEAR_RUNNING">FALSE</field>
                     <value name="OID">
                       <shadow type="field_oid" id="MiS7$HdUIS52r#KlxMP+">
                         <field name="oid">Object ID</field>
                       </shadow>
                       <block type="variables_get" id="Ra);[JC@~t2pIf/G,C76">
                         <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                       </block>
                     </value>
                     <value name="VALUE">
                       <shadow type="logic_boolean" id="-jNfpz4K^`IXOgPZ:XZy">
                         <field name="BOOL">TRUE</field>
                       </shadow>
                     </value>
                     <value name="DELAY_MS">
                       <shadow type="math_number" id="qt09Y!I/zfa6H!F*T]W-">
                         <field name="NUM">60000</field>
                       </shadow>
                     </value>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </statement>
       </block>
      </xml>
      

      Benutzen möchte ich das in diesen Blocklys, dort sind im ersten Beitrag auch alle Datenpunkte die erstellt / gelöscht werden könnten zu sehen.
      https://forum.iobroker.net/topic/40424/alexa-ansagen-i-telegram-i-email-i-alias-i-visu-i-html
      Dort baue ich gerade ohnehin einiges um...

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @dslraser Boah :-) Die Schwierigkeit besteht hier eher darin Ordnung zu schaffen. Ich würde es so machen:

      • eine Funktion für alles, innerhalb dieser dann die Struktur einbauen.
      • zu Beginn alle DP anlegen die unabhängig von irgendwelchen Einstellungen sowieso gebraucht werden. mit dem Objekt statesAttributes kannst Du für jeden DP die Werte festlegen und hast eine gute Übersicht.
      • für die per Variable gesteuerten DP würde ich dann ein Objekt statesAttribTG, statesAttribEmail usw. haben. Je nachdem ob wahr oder falsch in der Schleife anlegen oder löschen. Wobei ich mir über das Löschen nicht im Klaren bin, bei mir bleibt immer alles in den Objekten und wird bei Bedarf manuell gelöscht

      Meine Variable firstRun war dazu gedacht, in bestimmte DP Daten aus dem WEB abzulegen, aber nur wenn der DP neu ist, ansonsten arbeiten die Skripte dann mit den in den DP abgelegten Werten, z.B. um zu filtern, sortieren etc. Evtl. brauchst du das gar nicht

      Was funktioniert denn im Moment nicht? Vielleicht könnte man mit was ganz Konkretem beginnen, mich verwirrt noch die Struktur des Ganzen.

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      dslraserD 1 Antwort Letzte Antwort
      0
      • F fastfoot

        @dslraser Boah :-) Die Schwierigkeit besteht hier eher darin Ordnung zu schaffen. Ich würde es so machen:

        • eine Funktion für alles, innerhalb dieser dann die Struktur einbauen.
        • zu Beginn alle DP anlegen die unabhängig von irgendwelchen Einstellungen sowieso gebraucht werden. mit dem Objekt statesAttributes kannst Du für jeden DP die Werte festlegen und hast eine gute Übersicht.
        • für die per Variable gesteuerten DP würde ich dann ein Objekt statesAttribTG, statesAttribEmail usw. haben. Je nachdem ob wahr oder falsch in der Schleife anlegen oder löschen. Wobei ich mir über das Löschen nicht im Klaren bin, bei mir bleibt immer alles in den Objekten und wird bei Bedarf manuell gelöscht

        Meine Variable firstRun war dazu gedacht, in bestimmte DP Daten aus dem WEB abzulegen, aber nur wenn der DP neu ist, ansonsten arbeiten die Skripte dann mit den in den DP abgelegten Werten, z.B. um zu filtern, sortieren etc. Evtl. brauchst du das gar nicht

        Was funktioniert denn im Moment nicht? Vielleicht könnte man mit was ganz Konkretem beginnen, mich verwirrt noch die Struktur des Ganzen.

        dslraserD Offline
        dslraserD Offline
        dslraser
        Forum Testing Most Active
        schrieb am zuletzt editiert von dslraser
        #3

        @fastfoot

        alles fing mal damit an Geräte zu zählen (z.B. Fenster). Dann die Auswertung ob offen/gekippt/geöffnet wieviel Fenster gibt es gesamt usw... Dann sollte Alexa dazu auch was sagen können. Dann kam noch der Wunsch nach Email und Telegram. Diese Ausgaben sollten auch anders formatiert sein, z.B. mit Smileys. Dann sollte es noch eine Liste geben als Text mit geöffneten/gekippten Fenstern und extra eine mit allen Fenstern und allen Zuständen. Dann kamen noch html Ausgaben dazu, einmal mit festen Einstellungen und dann noch eigene, frei einstellbare html Ausgaben (Farbe/ mit/ohne Rahmen/Schrift usw. usw...)
        Jetzt ist es möglich z.B. Steckdosen oder Licht direkt aus der html Ansicht in iQontrol schalten zu können. Ach ja, iot Adapter ist auch noch mit im Spiel, wenn der verwendet wird können/werden gleich passende Smartgeräte über die Datenpunkte dafür erstellt.

        Ist halt so gewachsen. Es ist nicht so das es nicht funktioniert, nur geht das sicherlich eleganter.
        Ich stelle gerade die ganzen html Ausgaben (die Textblöcke), die immer wieder gleich sind in Variablen, damit werden die Blocklys schon wieder deutlich kleiner.

        Was funktioniert denn im Moment nicht?

        EDIT: Es funktioniert ja, mir ist nur nicht klar wie ich mit Deinem Beispiel eben alle meine Datenpunkte erstellen kann (löschen ist erstmal unwichtig)

        F 1 Antwort Letzte Antwort
        0
        • dslraserD dslraser

          @fastfoot

          alles fing mal damit an Geräte zu zählen (z.B. Fenster). Dann die Auswertung ob offen/gekippt/geöffnet wieviel Fenster gibt es gesamt usw... Dann sollte Alexa dazu auch was sagen können. Dann kam noch der Wunsch nach Email und Telegram. Diese Ausgaben sollten auch anders formatiert sein, z.B. mit Smileys. Dann sollte es noch eine Liste geben als Text mit geöffneten/gekippten Fenstern und extra eine mit allen Fenstern und allen Zuständen. Dann kamen noch html Ausgaben dazu, einmal mit festen Einstellungen und dann noch eigene, frei einstellbare html Ausgaben (Farbe/ mit/ohne Rahmen/Schrift usw. usw...)
          Jetzt ist es möglich z.B. Steckdosen oder Licht direkt aus der html Ansicht in iQontrol schalten zu können. Ach ja, iot Adapter ist auch noch mit im Spiel, wenn der verwendet wird können/werden gleich passende Smartgeräte über die Datenpunkte dafür erstellt.

          Ist halt so gewachsen. Es ist nicht so das es nicht funktioniert, nur geht das sicherlich eleganter.
          Ich stelle gerade die ganzen html Ausgaben (die Textblöcke), die immer wieder gleich sind in Variablen, damit werden die Blocklys schon wieder deutlich kleiner.

          Was funktioniert denn im Moment nicht?

          EDIT: Es funktioniert ja, mir ist nur nicht klar wie ich mit Deinem Beispiel eben alle meine Datenpunkte erstellen kann (löschen ist erstmal unwichtig)

          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #4

          @dslraser sagte in async-await:

          EDIT: Es funktioniert ja, mir ist nur nicht klar wie ich mit Deinem Beispiel eben alle meine Datenpunkte erstellen kann (löschen ist erstmal unwichtig)

          Nun, zu Telegram wird es ja immer diesselben DP geben, deshalb eine eigene statesAttribTG. Schau mal, so habe ich mir das gedacht.

          • in die idBase kommt der Grundpfad, also hier z.B. 0_userdata.0.TestApp. Mit einem subKey kann man jetzt noch eine zusätzliche Ebene wählen. Die Unterebenen dort ergeben sich durch die Variablen. Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id="(m7C_|Q2cbal%.{Hr9aN">subKey</variable>
             <variable id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</variable>
             <variable id=":{}_qJr.-Nf?Gw0G]ih|">Email_verwenden</variable>
             <variable id=".g|S5B178Z0hi(5zzlg*">Telegram_verwenden</variable>
             <variable id="xHz3Sa?;(*/32eT%pB_i">Test_DP</variable>
           </variables>
           <block type="procedures_defcustomnoreturn" id="=lwe#KBAhO-D.Yr~J/b2" x="13" y="13">
             <mutation statements="false">
               <arg name="subKey" varid="(m7C_|Q2cbal%.{Hr9aN"></arg>
             </mutation>
             <field name="NAME">Datenpunkte_anlegen</field>
             <field name="SCRIPT">Y29uc3QgaWRCYXNlID0gYW5sZWdlbl9pbjsKYXN5bmMgZnVuY3Rpb24gaW5pdCgpewogICAgZmlyc3RSdW4gPSBhd2FpdCBjcmVhdGVEYXRhcG9pbnRzKCk7CiAgICAvL3dvcmsoKTsKfQoKLy8gY3JlYXRlIGRhdGEgcG9pbnRzIGlmIG5vdCBleGlzdGluZwphc3luYyBmdW5jdGlvbiBjcmVhdGVEYXRhcG9pbnRzKCkgewogICAgbGV0IGRwLAogICAgICAgIGlkS2V5LAogICAgICAgIGZpcnN0UnVuID0gZmFsc2U7CiAgICAKICAgIGNvbnN0IHN0YXRlQXR0cmlidXRlcyA9IHsKICAgICAgICAianNvbiI6eyJuYW1lIjoiRGF0ZW4iLCJ0eXBlIjoic3RyaW5nIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6IiJ9LAogICAgICAgICJSZWZyZXNoIjp7Im5hbWUiOiJSZWZyZXNoIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sCiAgICAgICAgIkV4Y2VsIjp7Im5hbWUiOiJIb2xlIEV4Y2VsZGF0ZWkiLCJ0eXBlIjoiYm9vbGVhbiIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOmZhbHNlfSwKICAgIH0KICAgIGNvbnN0IHN0YXRlQXR0cmliVEcgPSB7CiAgICAgICAgImpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJFeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sICAgICAgICAKICAgIH0KICAgIGNvbnN0IHN0YXRlQXR0cmliRW1haWwgPSB7CiAgICAgICAgImpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJFeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sICAgICAgICAKICAgIH0KICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmlidXRlcykgewogCiAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyBzdWJLZXkgKyBrZXk7CiAKICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgZmlyc3RSdW4gPSB0cnVlOwogICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoVGVsZWdyYW1fdmVyd2VuZGVuKXsKICAgICAgICBmb3IobGV0IGtleSBpbiBzdGF0ZUF0dHJpYlRHKSB7CiAgICAKICAgICAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyBzdWJLZXkgKyAnVGVsZWdyYW0uJyArIGtleTsKICAgIAogICAgICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgICAgIGRwID0gc3RhdGVBdHRyaWJ1dGVzW2tleV07CiAgICAgICAgICAgICAgICBmaXJzdFJ1biA9IHRydWU7CiAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmIChFbWFpbF92ZXJ3ZW5kZW4pewogICAgICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmliRW1haWwpIHsKICAgIAogICAgICAgICAgICBpZEtleSA9IGlkQmFzZSArIHN1YktleSArICdFbWFpbC4nICsga2V5OwogICAgCiAgICAgICAgICAgIGlmICghKGF3YWl0IGV4aXN0c1N0YXRlQXN5bmMoaWRLZXkpKSkgewogICAgICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgICAgIGZpcnN0UnVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVN0YXRlQXN5bmMoaWRLZXksIGRwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaXJzdFJ1bjsKfQoKaW5pdCgpOwo=</field>
             <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
           </block>
           <block type="variables_set" id="f^BE]x{MbV+}S:P4.D_i" x="13" y="38">
             <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
             <value name="VALUE">
               <block type="text" id="1r2EpbBX6=t+lr==u|f9">
                 <field name="TEXT">.Haus.</field>
               </block>
             </value>
             <next>
               <block type="variables_set" id="]R?O8fEB0/9Mimg{5G+n">
                 <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                 <value name="VALUE">
                   <block type="text" id="WeFb$m8,;lV1p#(K4/CW">
                     <field name="TEXT">0_userdata.0.TestApp</field>
                   </block>
                 </value>
                 <next>
                   <block type="variables_set" id="6$b/v%pAHs[+4Dp?Yk.;">
                     <field name="VAR" id=":{}_qJr.-Nf?Gw0G]ih|">Email_verwenden</field>
                     <value name="VALUE">
                       <block type="logic_boolean" id="9MC7}^?^TJXm%{0%W{uP">
                         <field name="BOOL">TRUE</field>
                       </block>
                     </value>
                     <next>
                       <block type="variables_set" id="FGW2v!1.^I2vkrF]tf.7">
                         <field name="VAR" id=".g|S5B178Z0hi(5zzlg*">Telegram_verwenden</field>
                         <value name="VALUE">
                           <block type="logic_boolean" id="(WNV$q0jI,pA[C4`^F0%">
                             <field name="BOOL">TRUE</field>
                           </block>
                         </value>
                         <next>
                           <block type="procedures_callcustomnoreturn" id="pG##/69xE{Rypf9~TW5y">
                             <mutation name="Datenpunkte_anlegen">
                               <arg name="subKey"></arg>
                             </mutation>
                             <value name="ARG0">
                               <block type="variables_get" id="4Xk@]uExnB92Ql88-#8c">
                                 <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                               </block>
                             </value>
                             <next>
                               <block type="variables_set" id="ZHDKh0L$;5=bVn@#qa/3">
                                 <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                                 <value name="VALUE">
                                   <block type="text_join" id="9Fc^^u/Dv.!|Qcf~[_Ip">
                                     <mutation items="3"></mutation>
                                     <value name="ADD0">
                                       <block type="variables_get" id="~linCS?uDU:Y#:cZPDcL">
                                         <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                                       </block>
                                     </value>
                                     <value name="ADD1">
                                       <block type="variables_get" id="/QXPxU{dTHQdp]:^QL#b">
                                         <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                                       </block>
                                     </value>
                                     <value name="ADD2">
                                       <block type="text" id="){)~AA/Gqi6n`mS!/${Q">
                                         <field name="TEXT">Excel</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="debug" id="umnxNUW]NKC_JAJR`a7z">
                                     <field name="Severity">log</field>
                                     <value name="TEXT">
                                       <shadow type="text" id="0A9s:5Um/Um!)w^~v156">
                                         <field name="TEXT">mach irgendwas</field>
                                       </shadow>
                                     </value>
                                     <next>
                                       <block type="control_ex" id="x2Ui-/Pto*06r$s{aL-I" inline="true">
                                         <field name="TYPE">true</field>
                                         <field name="CLEAR_RUNNING">FALSE</field>
                                         <value name="OID">
                                           <shadow type="field_oid" id="MiS7$HdUIS52r#KlxMP+">
                                             <field name="oid">Object ID</field>
                                           </shadow>
                                           <block type="variables_get" id="Ra);[JC@~t2pIf/G,C76">
                                             <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                                           </block>
                                         </value>
                                         <value name="VALUE">
                                           <shadow type="logic_boolean" id="-jNfpz4K^`IXOgPZ:XZy">
                                             <field name="BOOL">TRUE</field>
                                           </shadow>
                                         </value>
                                         <value name="DELAY_MS">
                                           <shadow type="math_number" id="qt09Y!I/zfa6H!F*T]W-">
                                             <field name="NUM">60000</field>
                                           </shadow>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
             </next>
           </block>
          </xml>
          

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          dslraserD F 2 Antworten Letzte Antwort
          0
          • F fastfoot

            @dslraser sagte in async-await:

            EDIT: Es funktioniert ja, mir ist nur nicht klar wie ich mit Deinem Beispiel eben alle meine Datenpunkte erstellen kann (löschen ist erstmal unwichtig)

            Nun, zu Telegram wird es ja immer diesselben DP geben, deshalb eine eigene statesAttribTG. Schau mal, so habe ich mir das gedacht.

            • in die idBase kommt der Grundpfad, also hier z.B. 0_userdata.0.TestApp. Mit einem subKey kann man jetzt noch eine zusätzliche Ebene wählen. Die Unterebenen dort ergeben sich durch die Variablen. Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="(m7C_|Q2cbal%.{Hr9aN">subKey</variable>
               <variable id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</variable>
               <variable id=":{}_qJr.-Nf?Gw0G]ih|">Email_verwenden</variable>
               <variable id=".g|S5B178Z0hi(5zzlg*">Telegram_verwenden</variable>
               <variable id="xHz3Sa?;(*/32eT%pB_i">Test_DP</variable>
             </variables>
             <block type="procedures_defcustomnoreturn" id="=lwe#KBAhO-D.Yr~J/b2" x="13" y="13">
               <mutation statements="false">
                 <arg name="subKey" varid="(m7C_|Q2cbal%.{Hr9aN"></arg>
               </mutation>
               <field name="NAME">Datenpunkte_anlegen</field>
               <field name="SCRIPT">Y29uc3QgaWRCYXNlID0gYW5sZWdlbl9pbjsKYXN5bmMgZnVuY3Rpb24gaW5pdCgpewogICAgZmlyc3RSdW4gPSBhd2FpdCBjcmVhdGVEYXRhcG9pbnRzKCk7CiAgICAvL3dvcmsoKTsKfQoKLy8gY3JlYXRlIGRhdGEgcG9pbnRzIGlmIG5vdCBleGlzdGluZwphc3luYyBmdW5jdGlvbiBjcmVhdGVEYXRhcG9pbnRzKCkgewogICAgbGV0IGRwLAogICAgICAgIGlkS2V5LAogICAgICAgIGZpcnN0UnVuID0gZmFsc2U7CiAgICAKICAgIGNvbnN0IHN0YXRlQXR0cmlidXRlcyA9IHsKICAgICAgICAianNvbiI6eyJuYW1lIjoiRGF0ZW4iLCJ0eXBlIjoic3RyaW5nIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6IiJ9LAogICAgICAgICJSZWZyZXNoIjp7Im5hbWUiOiJSZWZyZXNoIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sCiAgICAgICAgIkV4Y2VsIjp7Im5hbWUiOiJIb2xlIEV4Y2VsZGF0ZWkiLCJ0eXBlIjoiYm9vbGVhbiIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOmZhbHNlfSwKICAgIH0KICAgIGNvbnN0IHN0YXRlQXR0cmliVEcgPSB7CiAgICAgICAgImpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJFeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sICAgICAgICAKICAgIH0KICAgIGNvbnN0IHN0YXRlQXR0cmliRW1haWwgPSB7CiAgICAgICAgImpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJFeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sICAgICAgICAKICAgIH0KICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmlidXRlcykgewogCiAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyBzdWJLZXkgKyBrZXk7CiAKICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgZmlyc3RSdW4gPSB0cnVlOwogICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoVGVsZWdyYW1fdmVyd2VuZGVuKXsKICAgICAgICBmb3IobGV0IGtleSBpbiBzdGF0ZUF0dHJpYlRHKSB7CiAgICAKICAgICAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyBzdWJLZXkgKyAnVGVsZWdyYW0uJyArIGtleTsKICAgIAogICAgICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgICAgIGRwID0gc3RhdGVBdHRyaWJ1dGVzW2tleV07CiAgICAgICAgICAgICAgICBmaXJzdFJ1biA9IHRydWU7CiAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmIChFbWFpbF92ZXJ3ZW5kZW4pewogICAgICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmliRW1haWwpIHsKICAgIAogICAgICAgICAgICBpZEtleSA9IGlkQmFzZSArIHN1YktleSArICdFbWFpbC4nICsga2V5OwogICAgCiAgICAgICAgICAgIGlmICghKGF3YWl0IGV4aXN0c1N0YXRlQXN5bmMoaWRLZXkpKSkgewogICAgICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgICAgIGZpcnN0UnVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVN0YXRlQXN5bmMoaWRLZXksIGRwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaXJzdFJ1bjsKfQoKaW5pdCgpOwo=</field>
               <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
             </block>
             <block type="variables_set" id="f^BE]x{MbV+}S:P4.D_i" x="13" y="38">
               <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
               <value name="VALUE">
                 <block type="text" id="1r2EpbBX6=t+lr==u|f9">
                   <field name="TEXT">.Haus.</field>
                 </block>
               </value>
               <next>
                 <block type="variables_set" id="]R?O8fEB0/9Mimg{5G+n">
                   <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                   <value name="VALUE">
                     <block type="text" id="WeFb$m8,;lV1p#(K4/CW">
                       <field name="TEXT">0_userdata.0.TestApp</field>
                     </block>
                   </value>
                   <next>
                     <block type="variables_set" id="6$b/v%pAHs[+4Dp?Yk.;">
                       <field name="VAR" id=":{}_qJr.-Nf?Gw0G]ih|">Email_verwenden</field>
                       <value name="VALUE">
                         <block type="logic_boolean" id="9MC7}^?^TJXm%{0%W{uP">
                           <field name="BOOL">TRUE</field>
                         </block>
                       </value>
                       <next>
                         <block type="variables_set" id="FGW2v!1.^I2vkrF]tf.7">
                           <field name="VAR" id=".g|S5B178Z0hi(5zzlg*">Telegram_verwenden</field>
                           <value name="VALUE">
                             <block type="logic_boolean" id="(WNV$q0jI,pA[C4`^F0%">
                               <field name="BOOL">TRUE</field>
                             </block>
                           </value>
                           <next>
                             <block type="procedures_callcustomnoreturn" id="pG##/69xE{Rypf9~TW5y">
                               <mutation name="Datenpunkte_anlegen">
                                 <arg name="subKey"></arg>
                               </mutation>
                               <value name="ARG0">
                                 <block type="variables_get" id="4Xk@]uExnB92Ql88-#8c">
                                   <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="variables_set" id="ZHDKh0L$;5=bVn@#qa/3">
                                   <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                                   <value name="VALUE">
                                     <block type="text_join" id="9Fc^^u/Dv.!|Qcf~[_Ip">
                                       <mutation items="3"></mutation>
                                       <value name="ADD0">
                                         <block type="variables_get" id="~linCS?uDU:Y#:cZPDcL">
                                           <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                                         </block>
                                       </value>
                                       <value name="ADD1">
                                         <block type="variables_get" id="/QXPxU{dTHQdp]:^QL#b">
                                           <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                                         </block>
                                       </value>
                                       <value name="ADD2">
                                         <block type="text" id="){)~AA/Gqi6n`mS!/${Q">
                                           <field name="TEXT">Excel</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="umnxNUW]NKC_JAJR`a7z">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text" id="0A9s:5Um/Um!)w^~v156">
                                           <field name="TEXT">mach irgendwas</field>
                                         </shadow>
                                       </value>
                                       <next>
                                         <block type="control_ex" id="x2Ui-/Pto*06r$s{aL-I" inline="true">
                                           <field name="TYPE">true</field>
                                           <field name="CLEAR_RUNNING">FALSE</field>
                                           <value name="OID">
                                             <shadow type="field_oid" id="MiS7$HdUIS52r#KlxMP+">
                                               <field name="oid">Object ID</field>
                                             </shadow>
                                             <block type="variables_get" id="Ra);[JC@~t2pIf/G,C76">
                                               <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                                             </block>
                                           </value>
                                           <value name="VALUE">
                                             <shadow type="logic_boolean" id="-jNfpz4K^`IXOgPZ:XZy">
                                               <field name="BOOL">TRUE</field>
                                             </shadow>
                                           </value>
                                           <value name="DELAY_MS">
                                             <shadow type="math_number" id="qt09Y!I/zfa6H!F*T]W-">
                                               <field name="NUM">60000</field>
                                             </shadow>
                                           </value>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
            </xml>
            

            dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #5

            @fastfoot sagte in async-await:

            Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

            Ich glaube damit komme ich weiter und fange an es zu verstehen (ich bin sonst Blockly Mensch)
            Bei weiteren Fragen melde ich mich wieder.
            Und Danke für Deine Hilfe.

            F 2 Antworten Letzte Antwort
            0
            • F fastfoot

              @dslraser sagte in async-await:

              EDIT: Es funktioniert ja, mir ist nur nicht klar wie ich mit Deinem Beispiel eben alle meine Datenpunkte erstellen kann (löschen ist erstmal unwichtig)

              Nun, zu Telegram wird es ja immer diesselben DP geben, deshalb eine eigene statesAttribTG. Schau mal, so habe ich mir das gedacht.

              • in die idBase kommt der Grundpfad, also hier z.B. 0_userdata.0.TestApp. Mit einem subKey kann man jetzt noch eine zusätzliche Ebene wählen. Die Unterebenen dort ergeben sich durch die Variablen. Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="(m7C_|Q2cbal%.{Hr9aN">subKey</variable>
                 <variable id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</variable>
                 <variable id=":{}_qJr.-Nf?Gw0G]ih|">Email_verwenden</variable>
                 <variable id=".g|S5B178Z0hi(5zzlg*">Telegram_verwenden</variable>
                 <variable id="xHz3Sa?;(*/32eT%pB_i">Test_DP</variable>
               </variables>
               <block type="procedures_defcustomnoreturn" id="=lwe#KBAhO-D.Yr~J/b2" x="13" y="13">
                 <mutation statements="false">
                   <arg name="subKey" varid="(m7C_|Q2cbal%.{Hr9aN"></arg>
                 </mutation>
                 <field name="NAME">Datenpunkte_anlegen</field>
                 <field name="SCRIPT">Y29uc3QgaWRCYXNlID0gYW5sZWdlbl9pbjsKYXN5bmMgZnVuY3Rpb24gaW5pdCgpewogICAgZmlyc3RSdW4gPSBhd2FpdCBjcmVhdGVEYXRhcG9pbnRzKCk7CiAgICAvL3dvcmsoKTsKfQoKLy8gY3JlYXRlIGRhdGEgcG9pbnRzIGlmIG5vdCBleGlzdGluZwphc3luYyBmdW5jdGlvbiBjcmVhdGVEYXRhcG9pbnRzKCkgewogICAgbGV0IGRwLAogICAgICAgIGlkS2V5LAogICAgICAgIGZpcnN0UnVuID0gZmFsc2U7CiAgICAKICAgIGNvbnN0IHN0YXRlQXR0cmlidXRlcyA9IHsKICAgICAgICAianNvbiI6eyJuYW1lIjoiRGF0ZW4iLCJ0eXBlIjoic3RyaW5nIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6IiJ9LAogICAgICAgICJSZWZyZXNoIjp7Im5hbWUiOiJSZWZyZXNoIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sCiAgICAgICAgIkV4Y2VsIjp7Im5hbWUiOiJIb2xlIEV4Y2VsZGF0ZWkiLCJ0eXBlIjoiYm9vbGVhbiIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOmZhbHNlfSwKICAgIH0KICAgIGNvbnN0IHN0YXRlQXR0cmliVEcgPSB7CiAgICAgICAgImpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJFeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sICAgICAgICAKICAgIH0KICAgIGNvbnN0IHN0YXRlQXR0cmliRW1haWwgPSB7CiAgICAgICAgImpzb24iOnsibmFtZSI6IkRhdGVuIiwidHlwZSI6InN0cmluZyIsInJvbGUiOiIiLCJyZWFkIjp0cnVlLCJ3cml0ZSI6dHJ1ZSwiZGVzYyI6InZvbiBTa3JpcHQgZXJzdGVsbHQiLCJkZWYiOiIifSwKICAgICAgICAiUmVmcmVzaCI6eyJuYW1lIjoiUmVmcmVzaCIsInR5cGUiOiJib29sZWFuIiwicm9sZSI6IiIsInJlYWQiOnRydWUsIndyaXRlIjp0cnVlLCJkZXNjIjoidm9uIFNrcmlwdCBlcnN0ZWxsdCIsImRlZiI6ZmFsc2V9LAogICAgICAgICJFeGNlbCI6eyJuYW1lIjoiSG9sZSBFeGNlbGRhdGVpIiwidHlwZSI6ImJvb2xlYW4iLCJyb2xlIjoiIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImRlc2MiOiJ2b24gU2tyaXB0IGVyc3RlbGx0IiwiZGVmIjpmYWxzZX0sICAgICAgICAKICAgIH0KICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmlidXRlcykgewogCiAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyBzdWJLZXkgKyBrZXk7CiAKICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgZmlyc3RSdW4gPSB0cnVlOwogICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoVGVsZWdyYW1fdmVyd2VuZGVuKXsKICAgICAgICBmb3IobGV0IGtleSBpbiBzdGF0ZUF0dHJpYlRHKSB7CiAgICAKICAgICAgICAgICAgaWRLZXkgPSBpZEJhc2UgKyBzdWJLZXkgKyAnVGVsZWdyYW0uJyArIGtleTsKICAgIAogICAgICAgICAgICBpZiAoIShhd2FpdCBleGlzdHNTdGF0ZUFzeW5jKGlkS2V5KSkpIHsKICAgICAgICAgICAgICAgIGRwID0gc3RhdGVBdHRyaWJ1dGVzW2tleV07CiAgICAgICAgICAgICAgICBmaXJzdFJ1biA9IHRydWU7CiAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVTdGF0ZUFzeW5jKGlkS2V5LCBkcCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmIChFbWFpbF92ZXJ3ZW5kZW4pewogICAgICAgIGZvcihsZXQga2V5IGluIHN0YXRlQXR0cmliRW1haWwpIHsKICAgIAogICAgICAgICAgICBpZEtleSA9IGlkQmFzZSArIHN1YktleSArICdFbWFpbC4nICsga2V5OwogICAgCiAgICAgICAgICAgIGlmICghKGF3YWl0IGV4aXN0c1N0YXRlQXN5bmMoaWRLZXkpKSkgewogICAgICAgICAgICAgICAgZHAgPSBzdGF0ZUF0dHJpYnV0ZXNba2V5XTsKICAgICAgICAgICAgICAgIGZpcnN0UnVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGF3YWl0IGNyZWF0ZVN0YXRlQXN5bmMoaWRLZXksIGRwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaXJzdFJ1bjsKfQoKaW5pdCgpOwo=</field>
                 <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
               </block>
               <block type="variables_set" id="f^BE]x{MbV+}S:P4.D_i" x="13" y="38">
                 <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                 <value name="VALUE">
                   <block type="text" id="1r2EpbBX6=t+lr==u|f9">
                     <field name="TEXT">.Haus.</field>
                   </block>
                 </value>
                 <next>
                   <block type="variables_set" id="]R?O8fEB0/9Mimg{5G+n">
                     <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                     <value name="VALUE">
                       <block type="text" id="WeFb$m8,;lV1p#(K4/CW">
                         <field name="TEXT">0_userdata.0.TestApp</field>
                       </block>
                     </value>
                     <next>
                       <block type="variables_set" id="6$b/v%pAHs[+4Dp?Yk.;">
                         <field name="VAR" id=":{}_qJr.-Nf?Gw0G]ih|">Email_verwenden</field>
                         <value name="VALUE">
                           <block type="logic_boolean" id="9MC7}^?^TJXm%{0%W{uP">
                             <field name="BOOL">TRUE</field>
                           </block>
                         </value>
                         <next>
                           <block type="variables_set" id="FGW2v!1.^I2vkrF]tf.7">
                             <field name="VAR" id=".g|S5B178Z0hi(5zzlg*">Telegram_verwenden</field>
                             <value name="VALUE">
                               <block type="logic_boolean" id="(WNV$q0jI,pA[C4`^F0%">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                             <next>
                               <block type="procedures_callcustomnoreturn" id="pG##/69xE{Rypf9~TW5y">
                                 <mutation name="Datenpunkte_anlegen">
                                   <arg name="subKey"></arg>
                                 </mutation>
                                 <value name="ARG0">
                                   <block type="variables_get" id="4Xk@]uExnB92Ql88-#8c">
                                     <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="variables_set" id="ZHDKh0L$;5=bVn@#qa/3">
                                     <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                                     <value name="VALUE">
                                       <block type="text_join" id="9Fc^^u/Dv.!|Qcf~[_Ip">
                                         <mutation items="3"></mutation>
                                         <value name="ADD0">
                                           <block type="variables_get" id="~linCS?uDU:Y#:cZPDcL">
                                             <field name="VAR" id="50Z)2$?Be=m.c4!*vx+k">anlegen_in</field>
                                           </block>
                                         </value>
                                         <value name="ADD1">
                                           <block type="variables_get" id="/QXPxU{dTHQdp]:^QL#b">
                                             <field name="VAR" id="(m7C_|Q2cbal%.{Hr9aN">subKey</field>
                                           </block>
                                         </value>
                                         <value name="ADD2">
                                           <block type="text" id="){)~AA/Gqi6n`mS!/${Q">
                                             <field name="TEXT">Excel</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="debug" id="umnxNUW]NKC_JAJR`a7z">
                                         <field name="Severity">log</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="0A9s:5Um/Um!)w^~v156">
                                             <field name="TEXT">mach irgendwas</field>
                                           </shadow>
                                         </value>
                                         <next>
                                           <block type="control_ex" id="x2Ui-/Pto*06r$s{aL-I" inline="true">
                                             <field name="TYPE">true</field>
                                             <field name="CLEAR_RUNNING">FALSE</field>
                                             <value name="OID">
                                               <shadow type="field_oid" id="MiS7$HdUIS52r#KlxMP+">
                                                 <field name="oid">Object ID</field>
                                               </shadow>
                                               <block type="variables_get" id="Ra);[JC@~t2pIf/G,C76">
                                                 <field name="VAR" id="xHz3Sa?;(*/32eT%pB_i">Test_DP</field>
                                               </block>
                                             </value>
                                             <value name="VALUE">
                                               <shadow type="logic_boolean" id="-jNfpz4K^`IXOgPZ:XZy">
                                                 <field name="BOOL">TRUE</field>
                                               </shadow>
                                             </value>
                                             <value name="DELAY_MS">
                                               <shadow type="math_number" id="qt09Y!I/zfa6H!F*T]W-">
                                                 <field name="NUM">60000</field>
                                               </shadow>
                                             </value>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
              </xml>
              

              F Offline
              F Offline
              fastfoot
              schrieb am zuletzt editiert von
              #6

              @dslraser der Aufruf von work() in der Funktion wird nicht gebraucht, ich könnte mich da aber auch irren da man die Funktion nicht mit await aufrufen kann, so wie in Javascript gezeigt. Evtl. wieder einbauen :-)

              iobroker läuft unter Docker auf QNAP TS-451+
              SkriptRecovery: https://forum.iobroker.net/post/930558

              1 Antwort Letzte Antwort
              0
              • dslraserD dslraser

                @fastfoot sagte in async-await:

                Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

                Ich glaube damit komme ich weiter und fange an es zu verstehen (ich bin sonst Blockly Mensch)
                Bei weiteren Fragen melde ich mich wieder.
                Und Danke für Deine Hilfe.

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #7

                @dslraser sagte in async-await:

                @fastfoot sagte in async-await:

                Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

                Ich glaube damit komme ich weiter und fange an es zu verstehen (ich bin sonst Blockly Mensch)
                Bei weiteren Fragen melde ich mich wieder.
                Und Danke für Deine Hilfe.

                sehr gerne, ich bin mittlerweile kmpl. weg von Blockly, mir ist mein Bildschirm zu klein für die großen Blöcke. Aber letztlich war Blockly mein Einstieg in JS.

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                1 Antwort Letzte Antwort
                1
                • dslraserD dslraser

                  @fastfoot sagte in async-await:

                  Ich hoffe das macht für dich Sinn und passt grob, sonst verfeinern wir das

                  Ich glaube damit komme ich weiter und fange an es zu verstehen (ich bin sonst Blockly Mensch)
                  Bei weiteren Fragen melde ich mich wieder.
                  Und Danke für Deine Hilfe.

                  F Offline
                  F Offline
                  fastfoot
                  schrieb am zuletzt editiert von
                  #8

                  @dslraser ich habe mir gerade mal angesehen wie du das jetzt konkret machst. Eigentlich hast du ja schon 'Alles' und willst nur einen Ersatz für function createUserStates(where, force, statesToCreate, callback = undefined) {} innerhalb deiner Funktion Datenpunkte_anlegen, verstehe ich das richtig? Dann könnte man ja erstmal die Funktion createDatapoints() so umschreiben dass sie die alte Version ersetzen kann. Du hast ja schon so etwas wie statesAttribxxx in Verwendung.

                  iobroker läuft unter Docker auf QNAP TS-451+
                  SkriptRecovery: https://forum.iobroker.net/post/930558

                  dslraserD 1 Antwort Letzte Antwort
                  0
                  • F fastfoot

                    @dslraser ich habe mir gerade mal angesehen wie du das jetzt konkret machst. Eigentlich hast du ja schon 'Alles' und willst nur einen Ersatz für function createUserStates(where, force, statesToCreate, callback = undefined) {} innerhalb deiner Funktion Datenpunkte_anlegen, verstehe ich das richtig? Dann könnte man ja erstmal die Funktion createDatapoints() so umschreiben dass sie die alte Version ersetzen kann. Du hast ja schon so etwas wie statesAttribxxx in Verwendung.

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @fastfoot sagte in async-await:

                    @dslraser ich habe mir gerade mal angesehen wie du das jetzt konkret machst. Eigentlich hast du ja schon 'Alles' und willst nur einen Ersatz für function createUserStates(where, force, statesToCreate, callback = undefined) {} innerhalb deiner Funktion Datenpunkte_anlegen, verstehe ich das richtig? Dann könnte man ja erstmal die Funktion createDatapoints() so umschreiben dass sie die alte Version ersetzen kann. Du hast ja schon so etwas wie statesAttribxxx in Verwendung.

                    verstehe ich das richtig?

                    genau, die Funktion Datenpunkte_anlegen möchte ich quasi "updaten"

                    F 1 Antwort Letzte Antwort
                    0
                    • dslraserD dslraser

                      @fastfoot sagte in async-await:

                      @dslraser ich habe mir gerade mal angesehen wie du das jetzt konkret machst. Eigentlich hast du ja schon 'Alles' und willst nur einen Ersatz für function createUserStates(where, force, statesToCreate, callback = undefined) {} innerhalb deiner Funktion Datenpunkte_anlegen, verstehe ich das richtig? Dann könnte man ja erstmal die Funktion createDatapoints() so umschreiben dass sie die alte Version ersetzen kann. Du hast ja schon so etwas wie statesAttribxxx in Verwendung.

                      verstehe ich das richtig?

                      genau, die Funktion Datenpunkte_anlegen möchte ich quasi "updaten"

                      F Offline
                      F Offline
                      fastfoot
                      schrieb am zuletzt editiert von
                      #10

                      @dslraser sagte in async-await:

                      genau, die Funktion Datenpunkte_anlegen möchte ich quasi "updaten"

                      das macht es relativ einfach und meine dargelegte Logik erstmal obsolete. Bin nicht sicher ob ich das heute schaffe aber bis morgen kann ich dir das gerne umschreiben

                      iobroker läuft unter Docker auf QNAP TS-451+
                      SkriptRecovery: https://forum.iobroker.net/post/930558

                      dslraserD 1 Antwort Letzte Antwort
                      0
                      • F fastfoot

                        @dslraser sagte in async-await:

                        genau, die Funktion Datenpunkte_anlegen möchte ich quasi "updaten"

                        das macht es relativ einfach und meine dargelegte Logik erstmal obsolete. Bin nicht sicher ob ich das heute schaffe aber bis morgen kann ich dir das gerne umschreiben

                        dslraserD Offline
                        dslraserD Offline
                        dslraser
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von
                        #11

                        @fastfoot sagte in async-await:

                        das macht es relativ einfach und meine dargelegte Logik erstmal obsolete. Bin nicht sicher ob ich das heute schaffe aber bis morgen kann ich dir das gerne umschreiben

                        das wäre prima. es eilt nicht, lasse Dir gern die Zeit die Du brauchst. Es dauert so lange wie es dauert.

                        F 1 Antwort Letzte Antwort
                        0
                        • dslraserD dslraser

                          @fastfoot sagte in async-await:

                          das macht es relativ einfach und meine dargelegte Logik erstmal obsolete. Bin nicht sicher ob ich das heute schaffe aber bis morgen kann ich dir das gerne umschreiben

                          das wäre prima. es eilt nicht, lasse Dir gern die Zeit die Du brauchst. Es dauert so lange wie es dauert.

                          F Offline
                          F Offline
                          fastfoot
                          schrieb am zuletzt editiert von
                          #12

                          @dslraser sagte in async-await:

                          @fastfoot sagte in async-await:

                          das macht es relativ einfach und meine dargelegte Logik erstmal obsolete. Bin nicht sicher ob ich das heute schaffe aber bis morgen kann ich dir das gerne umschreiben

                          das wäre prima. es eilt nicht, lasse Dir gern die Zeit die Du brauchst. Es dauert so lange wie es dauert.

                          ist fertig. Die Hauptarbeit bestand leider darin, deine Datenstruktur von einem Array in ein Objekt abzuändern. Es ist mir nicht gelungen die DP in einer Array.forEach-Schleife anzulegen. Scheinbar gibt es dann Timingprobleme oder sonstwas, iobroker meldet keinen Fehler, aber die DP werden nicht angelegt bzw. nur der letzte Eintrag. Da ich nur fortgeschrittener blutiger Anfänger(tm) bin, liegt es evtl. auch an einer falschen Umsetzung meinerseits. Mit einer Schleife über die keys eines Objektes gibt es dagegen keine Probleme.

                          Schau mal ob du damit leben kannst/willst, ich bin nicht ganz zufrieden damit, das liegt aber teilweise daran dass ich an deiner Struktur nichts abändern wollte. Getestet habe ich es mit der Lichter Version, aber nur DP anlegen da ich das passende Setup nicht habe

                          let Pfad = '', statesToCreate = {}, dpId = '';
                          const geraetePfad = '.Geraete_zaehlen.Lichter.';
                          
                          async function createUserStates(where, statesToCreate) {
                             let dp,
                             	idKey;
                             for(let key in statesToCreate) {
                             	idKey = where + '.' + key;
                             	if (!(await existsStateAsync(idKey))) {
                             		dp = statesToCreate[key];
                             		await createStateAsync(idKey, dp);
                             	}
                             }
                          }
                          
                          //let iqontrol_vorhanden =  'system.adapter.iqontrol'; //prüfen ob iqontol installiert ist
                          //let iot_vorhanden =  'system.adapter.iot'; //prüfen ob iot installiert ist
                          
                          //#####################################################################################################################################################################################################################################################################################################################################################################################
                          
                          //Ansage Button Lichteransage anlegen
                          if (Alexa_Ansage_verwenden == true && Lichter_verwenden == true){
                             statesToCreate = {
                             	'01_Alexa_Routinebutton': { 'name': '01_Alexa_Routinebutton', 'type': 'boolean', 'read': false, 'write': true, 'role': 'button', 'def': true, "smartName": { "de": 'Lichteransage ' + [etage], "smartType": "SWITCH" } }
                             }
                             Pfad = anlegen_in + geraetePfad + etage + '.04_Alexa';
                             await createUserStates(Pfad, statesToCreate)
                          };
                          
                          //Lichter  Datenpunkte anlegen
                          if (Lichter_verwenden == true) {
                             statesToCreate = {
                             	'01_Lichter_Anzahl_gesamt': { "name": '01_Lichter_Anzahl_gesamt', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'unit': 'Lichter', 'def': 0 },
                             	'02_Lichter_Anzahl_eingeschaltet': { "name": '02_Lichter_Anzahl_eingeschaltet', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'unit': 'Lichter', 'def': 0 },
                             	'03_Lichter_Anzahl_ausgeschaltet': { "name": '03_Lichter_Anzahl_ausgeschaltet', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'unit': 'Lichter', 'def': 0 },
                             	'04_eingeschaltete_Lichter_Liste': { "name": '04_eingeschaltete_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'noch leer' },
                             	'05_gesamte_Lichter_Liste': { "name": '05_gesamte_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'noch leer' },
                             	'06_html_Lichter_Liste': { "name": '06_html_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'html', 'def': 'noch leer' },
                             	'07_Lichter_Liste_mit_Emojis': { "name": '07_Lichter_Liste_mit_Emojis', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'noch leer' },
                             	'08_Lichter_Emoji_eingeschaltet': { "name": '08_Lichter_Emoji_eingeschaltet', 'type': 'mixed', 'read': true, 'write': true, 'role': 'mixed' },
                             	'09_Lichter_Emoji_ausgeschaltet': { "name": '09_Lichter_Emoji_ausgeschaltet', 'type': 'mixed', 'read': true, 'write': true, 'role': 'mixed' },
                             	'10_html_nur_eingeschaltete_Lichter_Liste': { "name": '10_html_nur_eingeschaltete_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'html', 'def': 'noch leer' },
                             }
                             Pfad = anlegen_in + geraetePfad + etage + '.01_Anzeigen_und_Listen';
                             await createUserStates(Pfad, statesToCreate)
                          
                             ///////////////////////////////////
                             // iQontrol Trigger und Schalter //
                             /////////////////////////////////// 
                             statesToCreate = {
                             	'01_Thema_hell_Lichter_Liste': { "name": '01_Thema_hell_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': true },
                             	'02_Thema_dunkel_Lichter_Liste': { "name": '02_Thema_dunkel_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false },
                             	'03_Thema_eigenes_Lichter_Liste': { "name": '03_Thema_eigenes_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false },
                             	'04_Trigger_Tabelle_iQontrol_Lichter_Liste': { "name": '04_Trigger_Tabelle_iQontrol_Lichter_Liste', 'type': 'boolean', 'read': false, 'write': true, 'role': 'button', 'def': true },
                             	'05_Schalter_fuer_Button_Tabelle_Lichter_Liste': { "name": '05_Schalter_fuer_Button_Tabelle_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false },
                             	'06_Trigger_Farbe_iQontrol_Lichter_Liste': { "name": '06_Trigger_Farbe_iQontrol_Lichter_Liste', 'type': 'boolean', 'read': false, 'write': true, 'role': 'button', 'def': true },
                             	'07_Umschalter_Farbe_Lichter_Liste': { "name": '07_Umschalter_Farbe_Lichter_Liste', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'def': 0 },
                             	'08_Geraetestatus_in_Ueberschrift_an_aus': { "name": '08_Geraetestatus_in_Ueberschrift_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': true },
                             	'09_Geraete_in_HTML_Liste_schaltbar': { "name": '09_Geraete_in_HTML_Liste_schaltbar', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': true },
                             }
                             Pfad = anlegen_in + geraetePfad + etage + '.02_Trigger_und_Schalter';
                             await createUserStates(Pfad, statesToCreate)
                             ///////////////////////////////////////////////
                             // HTML Daten Hell-Dunkel nicht beschreibbar //
                             ///////////////////////////////////////////////
                             statesToCreate = {
                             	'01_Hintergrundfarbe_Lichter_Liste': { "name": '01_Hintergrundfarbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'white' },
                             	//Rahmen Kopf
                             	'02_Rahmenbreite_Kopf_Lichter_Liste': { "name": '02_Rahmenbreite_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'03_Rahmenstyle_Kopf_Lichter_Liste': { "name": '03_Rahmenstyle_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'solid' },
                             	'04_Rahmenfarbe_Kopf_Lichter_Liste': { "name": '04_Rahmenfarbe_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	//Rahmen Überschrift
                             	'05_Rahmenbreite_Ueberschrift_Lichter_Liste': { "name": '05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'06_Rahmenstyle_Ueberschrift_Lichter_Liste': { "name": '06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'solid' },
                             	'07_Rahmenfarbe_Ueberschrift_Lichter_Liste': { "name": '07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	//Rahmen Tabelle aussen
                             	'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste': { "name": '08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '5' },
                             	'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste': { "name": '09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'solid' },
                             	'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste': { "name": '10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	//Ueberschrift
                             	'11_Ueberschrift_Schriftgroesse_Lichter_Liste': { "name": '11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '4' },
                             	'12_Ueberschrift_Farbe_Lichter_Liste': { "name": '12_Ueberschrift_Farbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	'13_Ueberschrift_Schriftart_Lichter_Liste': { "name": '13_Ueberschrift_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'apple' },
                             	//Bild links
                             	'14_Bild_links_Lichter_Liste': { "name": '14_Bild_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': ' data:image/png;base64,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' },
                             	'15_Bild_links_Hoehe_Lichter_Liste': { "name": '15_Bild_links_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                             	'16_Bild_links_Breite_Lichter_Liste': { "name": '16_Bild_links_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                             	'17_Bild_links_Abstand_links_Lichter_Liste': { "name": '17_Bild_links_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'18_Bild_links_Abstand_oben_Lichter_Liste': { "name": '18_Bild_links_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'19_Bild_links_Abstand_unten_Lichter_Liste': { "name": '19_Bild_links_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'20_Bild_links_Abstand_rechts_Lichter_Liste': { "name": '20_Bild_links_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	//Bild rechts
                             	'21_Bild_rechts_Lichter_Liste': { "name": '21_Bild_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': ' data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAUVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcqRVCAAAAGnRSTlMAECAwP0BQYG9wf4CPkJ+gr7C/wM/Q3+Dv8DtSRt8AAAMESURBVGje7ZndkqMgEEbBhIzEmfgvet7/QfdCM7uKBlBi1Val79JWOEIj/XUjxMc+dobJtOqIYl2VynXGvSei9fe1aRREtsKeTHQGFEtGBmB0Eie6iTYA2WKxeqCVETdRC/TzATVgZNStOgB65qotz2HTQDnzdEASF5IA3cwDEPvbtsb8QP5TyPX+GI/prnrcr2+AyLRaHk2bx/lOiNo4PgsVDaKq7ZO2UlEg8vEc0ORaJUIIkSidm6f3IY9DblO+bJdpINHtlANvRyHf40D16qqoenz6fQgy5eR2c+FVu71knhDZgCsHaAAauRcyMszl9Td3MRsUP0iBV06WLcBjH+QHz7w/Un72QG54a4uRcguHyD5AW0hjaxMfSA5w8T3WLwB5KEQRpl80gAqEVEAbkqJaoAqDKPvFHGb/wwkpgTos29ZLMeeCyOCJTFORARAdGhEhhDDAVwBklzTWiyV2QdgjjZOVQV5AFGDChZaZB9IByezP18fyeXHlgOT7qhU9fzcHpJ7POym6rlgJ0dKv5pF3QOYlUdID9BbF8i/KHgdk/qscJUm5hNj+V6M4Hk/Cq1tCbP8ByDDpxyXE9h+AvGm5zDzwA8BgB37pT17Ny7mFS2PKtS288Idt4VM+xlOOFbW2Y93WBR2Qpxz15yQtDTR7Visk/Z4iJERpSTWnVaGS6BxxJ+rQqDSWHIwvuLM9gntP6fATXgQNQOdbBHXAEF4EjeVc41fONWv7xL8w9aGMjGxfiZ37UUZGvrdZ0AJ0rmZBt1Em+7Y9xs5J+oqRslWKezdwRrHQbDdwxu5LfqCB84z+VoPu2dLLDjfVJnnVpcumWjpdgA0qQnsw/70Oe6TXsT14TR+/V2x5hPbgPw26NavjNDqFEEKV64gyXstWCCHklzWd+itu83maT5bXBsDUeebOaJ+rjQ/kb2n2hitAYymgt19m6gDV4Kkteuu95eCtGjwZzYp+yQD6NNZVedqv5pky/qV/uZVpYzLWVj8bYiKGbCNYujRxCKbUUnzsY2fYH0Cu0ke796XoAAAAAElFTkSuQmCC' },
                             	'22_Bild_rechts_Hoehe_Lichter_Liste': { "name": '22_Bild_rechts_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                             	'23_Bild_rechts_Breite_Lichter_Liste': { "name": '23_Bild_rechts_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                             	'24_Bild_rechts_Abstand_links_Lichter_Liste': { "name": '24_Bild_rechts_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'25_Bild_rechts_Abstand_oben_Lichter_Liste': { "name": '25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'26_Bild_rechts_Abstand_unten_Lichter_Liste': { "name": '26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	'27_Bild_rechts_Abstand_rechts_Lichter_Liste': { "name": '27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                             	//Abstand Kopf zur Tabelle
                             	'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste': { "name": '28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '4' },
                             	//Rahmen Tabelle
                             	'29_Rahmenbreite_Tabelle_innen_Lichter_Liste': { "name": '29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '1' },
                             	'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste': { "name": '30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	//Schrift in der Tabelle aktive Geräte
                             	'31_Tabelle_Schriftart_Lichter_Liste': { "name": '31_Tabelle_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'apple' },
                             	'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste': { "name": '32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'red' },
                             	'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste': { "name": '33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                             	'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste': { "name": '34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'red' },
                             	'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste': { "name": '35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                             	//Schrift in der Tabelle inaktive Geräte
                             	'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste': { "name": '36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste': { "name": '37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                             	'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste': { "name": '38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                             	'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste': { "name": '39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                             	//Schriftgroesse Status Geräte Ueberschrift
                             	'40_Ueberschrift_Schriftgroesse_aktive_Geraete': { "name": '40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': '3' },
                             	//Groesse Schaltfeld    
                             	'41_Schaltfeld_Groesse_Lichter_Liste': { "name": '41_Schaltfeld_Groesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': '4' },
                             }
                             Pfad = anlegen_in + geraetePfad + etage + '.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung';
                             await createUserStates(Pfad, statesToCreate)
                             //////////////////////////////////////////////////
                             // HTML Daten eigene Einstellungen beschreibbar // 
                             //////////////////////////////////////////////////
                             statesToCreate = {
                             	'01_Hintergrundfarbe_Lichter_Liste': { "name": '01_Hintergrundfarbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Rahmen Kopf
                             	'02_Rahmenbreite_Kopf_Lichter_Liste': { "name": '02_Rahmenbreite_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'03_Rahmenstyle_Kopf_Lichter_Liste': { "name": '03_Rahmenstyle_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'04_Rahmenfarbe_Kopf_Lichter_Liste': { "name": '04_Rahmenfarbe_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Rahmen Überschrift
                             	'05_Rahmenbreite_Ueberschrift_Lichter_Liste': { "name": '05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'06_Rahmenstyle_Ueberschrift_Lichter_Liste': { "name": '06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'07_Rahmenfarbe_Ueberschrift_Lichter_Liste': { "name": '07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Rahmen Tabelle aussen
                             	'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste': { "name": '08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste': { "name": '09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste': { "name": '10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Ueberschrift
                             	'11_Ueberschrift_Schriftgroesse_Lichter_Liste': { "name": '11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'12_Ueberschrift_Farbe_Lichter_Liste': { "name": '12_Ueberschrift_Farbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'13_Ueberschrift_Schriftart_Lichter_Liste': { "name": '13_Ueberschrift_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Bild links
                             	'14_Bild_links_Lichter_Liste': { "name": '14_Bild_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'15_Bild_links_Hoehe_Lichter_Liste': { "name": '15_Bild_links_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'16_Bild_links_Breite_Lichter_Liste': { "name": '16_Bild_links_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'17_Bild_links_Abstand_links_Lichter_Liste': { "name": '17_Bild_links_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'18_Bild_links_Abstand_oben_Lichter_Liste': { "name": '18_Bild_links_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'19_Bild_links_Abstand_unten_Lichter_Liste': { "name": '19_Bild_links_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'20_Bild_links_Abstand_rechts_Lichter_Liste': { "name": '20_Bild_links_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Bild rechts
                             	'21_Bild_rechts_Lichter_Liste': { "name": '21_Bild_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'22_Bild_rechts_Hoehe_Lichter_Liste': { "name": '22_Bild_rechts_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'23_Bild_rechts_Breite_Lichter_Liste': { "name": '23_Bild_rechts_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'24_Bild_rechts_Abstand_links_Lichter_Liste': { "name": '24_Bild_rechts_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'25_Bild_rechts_Abstand_oben_Lichter_Liste': { "name": '25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'26_Bild_rechts_Abstand_unten_Lichter_Liste': { "name": '26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'27_Bild_rechts_Abstand_rechts_Lichter_Liste': { "name": '27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Abstand Kopf zur Tabelle
                             	'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste': { "name": '28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Rahmen Tabelle
                             	'29_Rahmenbreite_Tabelle_innen_Lichter_Liste': { "name": '29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste': { "name": '30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Schrift in der Tabelle aktive Gerätte
                             	'31_Tabelle_Schriftart_Lichter_Liste': { "name": '31_Tabelle_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste': { "name": '32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste': { "name": '33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste': { "name": '34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste': { "name": '35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Schrift in der Tabelle inaktive Gerätte
                             	'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste': { "name": '36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste': { "name": '37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste': { "name": '38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste': { "name": '39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Schriftgroesse Status Geräte Ueberschrift
                             	'40_Ueberschrift_Schriftgroesse_aktive_Geraete': { "name": '40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             	//Groesse Schaltfeld    
                             	'41_Schaltfeld_Groesse_Lichter_Liste': { "name": '41_Schaltfeld_Groesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.03_HTML_Daten.02_HTML_Eigene_Einstellungen';
                             await createUserStates(Pfad, statesToCreate)
                          };
                          
                          //Telegram Lichter  Nachrichtenversand anlegen mit SmartNamen
                          if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == true) {
                             dpId = 'Telegram_Lichter_' + [etage] + '_Versand_an_aus';
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'Telegram_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                             await createUserStates(Pfad, statesToCreate)
                          
                             dpId = 'Telegram_Lichterstatus_' + [etage] + '_senden'
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'Telegram_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": { "de": 'Telegram Lichterstatus ' + [etage] + ' senden', "smartType": "SWITCH" }
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                             await createUserStates(Pfad, statesToCreate)
                          };
                          
                          //Telegram Lichter  Nachrichtenversand anlegen ohne SmartNamen
                          if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == false) {
                             dpId = 'Telegram_Lichter_' + [etage] + '_Versand_an_aus';
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'Telegram_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                             await createUserStates(Pfad, statesToCreate)
                          
                             dpId = 'Telegram_Lichterstatus_' + [etage] + '_senden'
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'Telegram_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": false
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                             await createUserStates(Pfad, statesToCreate);
                          };
                          
                          //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                          if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == true){
                          
                             dpId = 'EMAIL_Lichter_'+[etage] + '_Versand_an_aus'
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'EMAIL_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                             await createUserStates(Pfad, statesToCreate)
                          
                             dpId = 'EMAIL_Lichterstatus_'+[etage]+'_senden'
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'EMAIL_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": { "de": 'EMAIL Lichterstatus ' + [etage] + ' senden', "smartType": "SWITCH" }
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                             await createUserStates(Pfad, statesToCreate)
                          };
                          
                          //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                          if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == false){
                             dpId = 'EMAIL_Lichter_'+[etage] + '_Versand_an_aus'
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'EMAIL_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                             await createUserStates(Pfad, statesToCreate)
                          
                             dpId = 'EMAIL_Lichterstatus_'+[etage]+'_senden'
                             statesToCreate = {};
                             statesToCreate[dpId] = {
                             	"name": 'EMAIL_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": false
                             };
                             Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                             await createUserStates(Pfad, statesToCreate)
                          };
                          
                          //#####################################################################################################################################################################################################################################################################################################################################################################################
                          
                          //Ab hier Datenpunkte löschen
                          //###############################################################################
                          
                          if (!Lichter_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                          const idsjs = $('javascript.*.Geraete_zaehlen.Lichter*');
                          idsjs.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          if (!Lichter_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                          const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter*');
                          idsud.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          //###############################################################################
                          
                          if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                          const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                          idsjs.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                          const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                          idsud.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          //###############################################################################
                          
                          if (!Telegram_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                          const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                          idsjs.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          if (!Telegram_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                          const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                          idsud.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          //###############################################################################
                          
                          if (!Email_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                          const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                          idsjs.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          if (!Email_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                          const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                          idsud.each(function(id, i) {
                            if(existsState(id)) deleteState(id);
                          })};
                          
                          //###############################################################################
                          main();
                          

                          iobroker läuft unter Docker auf QNAP TS-451+
                          SkriptRecovery: https://forum.iobroker.net/post/930558

                          dslraserD 1 Antwort Letzte Antwort
                          1
                          • F fastfoot

                            @dslraser sagte in async-await:

                            @fastfoot sagte in async-await:

                            das macht es relativ einfach und meine dargelegte Logik erstmal obsolete. Bin nicht sicher ob ich das heute schaffe aber bis morgen kann ich dir das gerne umschreiben

                            das wäre prima. es eilt nicht, lasse Dir gern die Zeit die Du brauchst. Es dauert so lange wie es dauert.

                            ist fertig. Die Hauptarbeit bestand leider darin, deine Datenstruktur von einem Array in ein Objekt abzuändern. Es ist mir nicht gelungen die DP in einer Array.forEach-Schleife anzulegen. Scheinbar gibt es dann Timingprobleme oder sonstwas, iobroker meldet keinen Fehler, aber die DP werden nicht angelegt bzw. nur der letzte Eintrag. Da ich nur fortgeschrittener blutiger Anfänger(tm) bin, liegt es evtl. auch an einer falschen Umsetzung meinerseits. Mit einer Schleife über die keys eines Objektes gibt es dagegen keine Probleme.

                            Schau mal ob du damit leben kannst/willst, ich bin nicht ganz zufrieden damit, das liegt aber teilweise daran dass ich an deiner Struktur nichts abändern wollte. Getestet habe ich es mit der Lichter Version, aber nur DP anlegen da ich das passende Setup nicht habe

                            let Pfad = '', statesToCreate = {}, dpId = '';
                            const geraetePfad = '.Geraete_zaehlen.Lichter.';
                            
                            async function createUserStates(where, statesToCreate) {
                               let dp,
                               	idKey;
                               for(let key in statesToCreate) {
                               	idKey = where + '.' + key;
                               	if (!(await existsStateAsync(idKey))) {
                               		dp = statesToCreate[key];
                               		await createStateAsync(idKey, dp);
                               	}
                               }
                            }
                            
                            //let iqontrol_vorhanden =  'system.adapter.iqontrol'; //prüfen ob iqontol installiert ist
                            //let iot_vorhanden =  'system.adapter.iot'; //prüfen ob iot installiert ist
                            
                            //#####################################################################################################################################################################################################################################################################################################################################################################################
                            
                            //Ansage Button Lichteransage anlegen
                            if (Alexa_Ansage_verwenden == true && Lichter_verwenden == true){
                               statesToCreate = {
                               	'01_Alexa_Routinebutton': { 'name': '01_Alexa_Routinebutton', 'type': 'boolean', 'read': false, 'write': true, 'role': 'button', 'def': true, "smartName": { "de": 'Lichteransage ' + [etage], "smartType": "SWITCH" } }
                               }
                               Pfad = anlegen_in + geraetePfad + etage + '.04_Alexa';
                               await createUserStates(Pfad, statesToCreate)
                            };
                            
                            //Lichter  Datenpunkte anlegen
                            if (Lichter_verwenden == true) {
                               statesToCreate = {
                               	'01_Lichter_Anzahl_gesamt': { "name": '01_Lichter_Anzahl_gesamt', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'unit': 'Lichter', 'def': 0 },
                               	'02_Lichter_Anzahl_eingeschaltet': { "name": '02_Lichter_Anzahl_eingeschaltet', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'unit': 'Lichter', 'def': 0 },
                               	'03_Lichter_Anzahl_ausgeschaltet': { "name": '03_Lichter_Anzahl_ausgeschaltet', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'unit': 'Lichter', 'def': 0 },
                               	'04_eingeschaltete_Lichter_Liste': { "name": '04_eingeschaltete_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'noch leer' },
                               	'05_gesamte_Lichter_Liste': { "name": '05_gesamte_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'noch leer' },
                               	'06_html_Lichter_Liste': { "name": '06_html_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'html', 'def': 'noch leer' },
                               	'07_Lichter_Liste_mit_Emojis': { "name": '07_Lichter_Liste_mit_Emojis', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'noch leer' },
                               	'08_Lichter_Emoji_eingeschaltet': { "name": '08_Lichter_Emoji_eingeschaltet', 'type': 'mixed', 'read': true, 'write': true, 'role': 'mixed' },
                               	'09_Lichter_Emoji_ausgeschaltet': { "name": '09_Lichter_Emoji_ausgeschaltet', 'type': 'mixed', 'read': true, 'write': true, 'role': 'mixed' },
                               	'10_html_nur_eingeschaltete_Lichter_Liste': { "name": '10_html_nur_eingeschaltete_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'html', 'def': 'noch leer' },
                               }
                               Pfad = anlegen_in + geraetePfad + etage + '.01_Anzeigen_und_Listen';
                               await createUserStates(Pfad, statesToCreate)
                            
                               ///////////////////////////////////
                               // iQontrol Trigger und Schalter //
                               /////////////////////////////////// 
                               statesToCreate = {
                               	'01_Thema_hell_Lichter_Liste': { "name": '01_Thema_hell_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': true },
                               	'02_Thema_dunkel_Lichter_Liste': { "name": '02_Thema_dunkel_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false },
                               	'03_Thema_eigenes_Lichter_Liste': { "name": '03_Thema_eigenes_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false },
                               	'04_Trigger_Tabelle_iQontrol_Lichter_Liste': { "name": '04_Trigger_Tabelle_iQontrol_Lichter_Liste', 'type': 'boolean', 'read': false, 'write': true, 'role': 'button', 'def': true },
                               	'05_Schalter_fuer_Button_Tabelle_Lichter_Liste': { "name": '05_Schalter_fuer_Button_Tabelle_Lichter_Liste', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false },
                               	'06_Trigger_Farbe_iQontrol_Lichter_Liste': { "name": '06_Trigger_Farbe_iQontrol_Lichter_Liste', 'type': 'boolean', 'read': false, 'write': true, 'role': 'button', 'def': true },
                               	'07_Umschalter_Farbe_Lichter_Liste': { "name": '07_Umschalter_Farbe_Lichter_Liste', 'type': 'number', 'read': true, 'write': false, 'role': 'number', 'def': 0 },
                               	'08_Geraetestatus_in_Ueberschrift_an_aus': { "name": '08_Geraetestatus_in_Ueberschrift_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': true },
                               	'09_Geraete_in_HTML_Liste_schaltbar': { "name": '09_Geraete_in_HTML_Liste_schaltbar', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': true },
                               }
                               Pfad = anlegen_in + geraetePfad + etage + '.02_Trigger_und_Schalter';
                               await createUserStates(Pfad, statesToCreate)
                               ///////////////////////////////////////////////
                               // HTML Daten Hell-Dunkel nicht beschreibbar //
                               ///////////////////////////////////////////////
                               statesToCreate = {
                               	'01_Hintergrundfarbe_Lichter_Liste': { "name": '01_Hintergrundfarbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'white' },
                               	//Rahmen Kopf
                               	'02_Rahmenbreite_Kopf_Lichter_Liste': { "name": '02_Rahmenbreite_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'03_Rahmenstyle_Kopf_Lichter_Liste': { "name": '03_Rahmenstyle_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'solid' },
                               	'04_Rahmenfarbe_Kopf_Lichter_Liste': { "name": '04_Rahmenfarbe_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	//Rahmen Überschrift
                               	'05_Rahmenbreite_Ueberschrift_Lichter_Liste': { "name": '05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'06_Rahmenstyle_Ueberschrift_Lichter_Liste': { "name": '06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'solid' },
                               	'07_Rahmenfarbe_Ueberschrift_Lichter_Liste': { "name": '07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	//Rahmen Tabelle aussen
                               	'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste': { "name": '08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '5' },
                               	'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste': { "name": '09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'solid' },
                               	'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste': { "name": '10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	//Ueberschrift
                               	'11_Ueberschrift_Schriftgroesse_Lichter_Liste': { "name": '11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '4' },
                               	'12_Ueberschrift_Farbe_Lichter_Liste': { "name": '12_Ueberschrift_Farbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	'13_Ueberschrift_Schriftart_Lichter_Liste': { "name": '13_Ueberschrift_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'apple' },
                               	//Bild links
                               	'14_Bild_links_Lichter_Liste': { "name": '14_Bild_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': ' data:image/png;base64,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' },
                               	'15_Bild_links_Hoehe_Lichter_Liste': { "name": '15_Bild_links_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                               	'16_Bild_links_Breite_Lichter_Liste': { "name": '16_Bild_links_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                               	'17_Bild_links_Abstand_links_Lichter_Liste': { "name": '17_Bild_links_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'18_Bild_links_Abstand_oben_Lichter_Liste': { "name": '18_Bild_links_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'19_Bild_links_Abstand_unten_Lichter_Liste': { "name": '19_Bild_links_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'20_Bild_links_Abstand_rechts_Lichter_Liste': { "name": '20_Bild_links_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	//Bild rechts
                               	'21_Bild_rechts_Lichter_Liste': { "name": '21_Bild_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': ' data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAUVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcqRVCAAAAGnRSTlMAECAwP0BQYG9wf4CPkJ+gr7C/wM/Q3+Dv8DtSRt8AAAMESURBVGje7ZndkqMgEEbBhIzEmfgvet7/QfdCM7uKBlBi1Val79JWOEIj/XUjxMc+dobJtOqIYl2VynXGvSei9fe1aRREtsKeTHQGFEtGBmB0Eie6iTYA2WKxeqCVETdRC/TzATVgZNStOgB65qotz2HTQDnzdEASF5IA3cwDEPvbtsb8QP5TyPX+GI/prnrcr2+AyLRaHk2bx/lOiNo4PgsVDaKq7ZO2UlEg8vEc0ORaJUIIkSidm6f3IY9DblO+bJdpINHtlANvRyHf40D16qqoenz6fQgy5eR2c+FVu71knhDZgCsHaAAauRcyMszl9Td3MRsUP0iBV06WLcBjH+QHz7w/Un72QG54a4uRcguHyD5AW0hjaxMfSA5w8T3WLwB5KEQRpl80gAqEVEAbkqJaoAqDKPvFHGb/wwkpgTos29ZLMeeCyOCJTFORARAdGhEhhDDAVwBklzTWiyV2QdgjjZOVQV5AFGDChZaZB9IByezP18fyeXHlgOT7qhU9fzcHpJ7POym6rlgJ0dKv5pF3QOYlUdID9BbF8i/KHgdk/qscJUm5hNj+V6M4Hk/Cq1tCbP8ByDDpxyXE9h+AvGm5zDzwA8BgB37pT17Ny7mFS2PKtS288Idt4VM+xlOOFbW2Y93WBR2Qpxz15yQtDTR7Visk/Z4iJERpSTWnVaGS6BxxJ+rQqDSWHIwvuLM9gntP6fATXgQNQOdbBHXAEF4EjeVc41fONWv7xL8w9aGMjGxfiZ37UUZGvrdZ0AJ0rmZBt1Em+7Y9xs5J+oqRslWKezdwRrHQbDdwxu5LfqCB84z+VoPu2dLLDjfVJnnVpcumWjpdgA0qQnsw/70Oe6TXsT14TR+/V2x5hPbgPw26NavjNDqFEEKV64gyXstWCCHklzWd+itu83maT5bXBsDUeebOaJ+rjQ/kb2n2hitAYymgt19m6gDV4Kkteuu95eCtGjwZzYp+yQD6NNZVedqv5pky/qV/uZVpYzLWVj8bYiKGbCNYujRxCKbUUnzsY2fYH0Cu0ke796XoAAAAAElFTkSuQmCC' },
                               	'22_Bild_rechts_Hoehe_Lichter_Liste': { "name": '22_Bild_rechts_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                               	'23_Bild_rechts_Breite_Lichter_Liste': { "name": '23_Bild_rechts_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '8' },
                               	'24_Bild_rechts_Abstand_links_Lichter_Liste': { "name": '24_Bild_rechts_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'25_Bild_rechts_Abstand_oben_Lichter_Liste': { "name": '25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'26_Bild_rechts_Abstand_unten_Lichter_Liste': { "name": '26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	'27_Bild_rechts_Abstand_rechts_Lichter_Liste': { "name": '27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '0' },
                               	//Abstand Kopf zur Tabelle
                               	'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste': { "name": '28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '4' },
                               	//Rahmen Tabelle
                               	'29_Rahmenbreite_Tabelle_innen_Lichter_Liste': { "name": '29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '1' },
                               	'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste': { "name": '30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	//Schrift in der Tabelle aktive Geräte
                               	'31_Tabelle_Schriftart_Lichter_Liste': { "name": '31_Tabelle_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'apple' },
                               	'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste': { "name": '32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'red' },
                               	'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste': { "name": '33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                               	'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste': { "name": '34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'red' },
                               	'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste': { "name": '35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                               	//Schrift in der Tabelle inaktive Geräte
                               	'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste': { "name": '36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste': { "name": '37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                               	'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste': { "name": '38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': 'black' },
                               	'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste': { "name": '39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': false, 'role': 'string', 'def': '3.5' },
                               	//Schriftgroesse Status Geräte Ueberschrift
                               	'40_Ueberschrift_Schriftgroesse_aktive_Geraete': { "name": '40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': '3' },
                               	//Groesse Schaltfeld    
                               	'41_Schaltfeld_Groesse_Lichter_Liste': { "name": '41_Schaltfeld_Groesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': '4' },
                               }
                               Pfad = anlegen_in + geraetePfad + etage + '.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung';
                               await createUserStates(Pfad, statesToCreate)
                               //////////////////////////////////////////////////
                               // HTML Daten eigene Einstellungen beschreibbar // 
                               //////////////////////////////////////////////////
                               statesToCreate = {
                               	'01_Hintergrundfarbe_Lichter_Liste': { "name": '01_Hintergrundfarbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Rahmen Kopf
                               	'02_Rahmenbreite_Kopf_Lichter_Liste': { "name": '02_Rahmenbreite_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'03_Rahmenstyle_Kopf_Lichter_Liste': { "name": '03_Rahmenstyle_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'04_Rahmenfarbe_Kopf_Lichter_Liste': { "name": '04_Rahmenfarbe_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Rahmen Überschrift
                               	'05_Rahmenbreite_Ueberschrift_Lichter_Liste': { "name": '05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'06_Rahmenstyle_Ueberschrift_Lichter_Liste': { "name": '06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'07_Rahmenfarbe_Ueberschrift_Lichter_Liste': { "name": '07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Rahmen Tabelle aussen
                               	'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste': { "name": '08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste': { "name": '09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste': { "name": '10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Ueberschrift
                               	'11_Ueberschrift_Schriftgroesse_Lichter_Liste': { "name": '11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'12_Ueberschrift_Farbe_Lichter_Liste': { "name": '12_Ueberschrift_Farbe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'13_Ueberschrift_Schriftart_Lichter_Liste': { "name": '13_Ueberschrift_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Bild links
                               	'14_Bild_links_Lichter_Liste': { "name": '14_Bild_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'15_Bild_links_Hoehe_Lichter_Liste': { "name": '15_Bild_links_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'16_Bild_links_Breite_Lichter_Liste': { "name": '16_Bild_links_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'17_Bild_links_Abstand_links_Lichter_Liste': { "name": '17_Bild_links_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'18_Bild_links_Abstand_oben_Lichter_Liste': { "name": '18_Bild_links_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'19_Bild_links_Abstand_unten_Lichter_Liste': { "name": '19_Bild_links_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'20_Bild_links_Abstand_rechts_Lichter_Liste': { "name": '20_Bild_links_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Bild rechts
                               	'21_Bild_rechts_Lichter_Liste': { "name": '21_Bild_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'22_Bild_rechts_Hoehe_Lichter_Liste': { "name": '22_Bild_rechts_Hoehe_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'23_Bild_rechts_Breite_Lichter_Liste': { "name": '23_Bild_rechts_Breite_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'24_Bild_rechts_Abstand_links_Lichter_Liste': { "name": '24_Bild_rechts_Abstand_links_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'25_Bild_rechts_Abstand_oben_Lichter_Liste': { "name": '25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'26_Bild_rechts_Abstand_unten_Lichter_Liste': { "name": '26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'27_Bild_rechts_Abstand_rechts_Lichter_Liste': { "name": '27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Abstand Kopf zur Tabelle
                               	'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste': { "name": '28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Rahmen Tabelle
                               	'29_Rahmenbreite_Tabelle_innen_Lichter_Liste': { "name": '29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste': { "name": '30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Schrift in der Tabelle aktive Gerätte
                               	'31_Tabelle_Schriftart_Lichter_Liste': { "name": '31_Tabelle_Schriftart_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste': { "name": '32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste': { "name": '33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste': { "name": '34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste': { "name": '35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Schrift in der Tabelle inaktive Gerätte
                               	'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste': { "name": '36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste': { "name": '37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste': { "name": '38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste': { "name": '39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Schriftgroesse Status Geräte Ueberschrift
                               	'40_Ueberschrift_Schriftgroesse_aktive_Geraete': { "name": '40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               	//Groesse Schaltfeld    
                               	'41_Schaltfeld_Groesse_Lichter_Liste': { "name": '41_Schaltfeld_Groesse_Lichter_Liste', 'type': 'string', 'read': true, 'write': true, 'role': 'string', 'def': ' ' },
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.03_HTML_Daten.02_HTML_Eigene_Einstellungen';
                               await createUserStates(Pfad, statesToCreate)
                            };
                            
                            //Telegram Lichter  Nachrichtenversand anlegen mit SmartNamen
                            if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == true) {
                               dpId = 'Telegram_Lichter_' + [etage] + '_Versand_an_aus';
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'Telegram_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                               await createUserStates(Pfad, statesToCreate)
                            
                               dpId = 'Telegram_Lichterstatus_' + [etage] + '_senden'
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'Telegram_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": { "de": 'Telegram Lichterstatus ' + [etage] + ' senden', "smartType": "SWITCH" }
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                               await createUserStates(Pfad, statesToCreate)
                            };
                            
                            //Telegram Lichter  Nachrichtenversand anlegen ohne SmartNamen
                            if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == false) {
                               dpId = 'Telegram_Lichter_' + [etage] + '_Versand_an_aus';
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'Telegram_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                               await createUserStates(Pfad, statesToCreate)
                            
                               dpId = 'Telegram_Lichterstatus_' + [etage] + '_senden'
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'Telegram_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": false
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.05_Telegram';
                               await createUserStates(Pfad, statesToCreate);
                            };
                            
                            //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                            if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == true){
                            
                               dpId = 'EMAIL_Lichter_'+[etage] + '_Versand_an_aus'
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'EMAIL_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                               await createUserStates(Pfad, statesToCreate)
                            
                               dpId = 'EMAIL_Lichterstatus_'+[etage]+'_senden'
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'EMAIL_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": { "de": 'EMAIL Lichterstatus ' + [etage] + ' senden', "smartType": "SWITCH" }
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                               await createUserStates(Pfad, statesToCreate)
                            };
                            
                            //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                            if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == false){
                               dpId = 'EMAIL_Lichter_'+[etage] + '_Versand_an_aus'
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'EMAIL_Lichter_' + [etage] + '_Versand_an_aus', 'type': 'boolean', 'read': true, 'write': true, 'role': 'switch', 'def': false
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                               await createUserStates(Pfad, statesToCreate)
                            
                               dpId = 'EMAIL_Lichterstatus_'+[etage]+'_senden'
                               statesToCreate = {};
                               statesToCreate[dpId] = {
                               	"name": 'EMAIL_Lichterstatus_' + [etage] + '_senden', 'type': 'boolean', 'read': true, 'write': true, 'role': 'button', 'def': true, "smartName": false
                               };
                               Pfad = anlegen_in + geraetePfad + etage + '.06_E-Mail';
                               await createUserStates(Pfad, statesToCreate)
                            };
                            
                            //#####################################################################################################################################################################################################################################################################################################################################################################################
                            
                            //Ab hier Datenpunkte löschen
                            //###############################################################################
                            
                            if (!Lichter_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                            const idsjs = $('javascript.*.Geraete_zaehlen.Lichter*');
                            idsjs.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            if (!Lichter_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                            const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter*');
                            idsud.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            //###############################################################################
                            
                            if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                            const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                            idsjs.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                            const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                            idsud.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            //###############################################################################
                            
                            if (!Telegram_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                            const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                            idsjs.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            if (!Telegram_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                            const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                            idsud.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            //###############################################################################
                            
                            if (!Email_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                            const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                            idsjs.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            if (!Email_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                            const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                            idsud.each(function(id, i) {
                              if(existsState(id)) deleteState(id);
                            })};
                            
                            //###############################################################################
                            main();
                            

                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #13

                            @fastfoot
                            Danke Dir. Heute werde ich leider nicht mehr dazu kommen, aber ich gebe auf jeden Fall eine Rückmeldung.

                            F 1 Antwort Letzte Antwort
                            0
                            • dslraserD dslraser

                              @fastfoot
                              Danke Dir. Heute werde ich leider nicht mehr dazu kommen, aber ich gebe auf jeden Fall eine Rückmeldung.

                              F Offline
                              F Offline
                              fastfoot
                              schrieb am zuletzt editiert von
                              #14

                              @dslraser sagte in async-await:

                              @fastfoot
                              Danke Dir. Heute werde ich leider nicht mehr dazu kommen, aber ich gebe auf jeden Fall eine Rückmeldung.

                              Hier dann doch noch eine Version, welche deine Struktur unangetastet lässt. Du kannst also in deinen anderen Blocklys

                              • einfach die alte createUserStates() durch diese hier ersetzen.
                              • Zusätzlich musst du die Funktion immer mit await aufrufen, also
                                await createUserStates(anlegen_in,false, statesToCreate)};
                              • Das ist alles, der timeout für main() kann dann weg.
                              • der zweite Parameter(ursprünglich forceCreate) wird nicht ausgewertet, er ist nur da damit du nicht soviel im Aufruf ändern musst. In der Funktion heisst er dummy

                              Du solltest deine DP-Definitionen trotzdem mal überarbeiten, da ist sehr viel Gleiches hard-gecodet, z.B. Geraete_zaehlen.Licht, siehe dazu meinen ersten Versuch im Post zuvor, da habe ich das eliminiert und durch Variablen am Anfang ersetzt

                              async function createUserStates(where, dummy, statesToCreate) {
                                 let dp, idKey;
                                 for(let key of statesToCreate){
                                 	idKey = where + '.' + key[0];
                                     dp = key[1];
                                 	if (!(await existsStateAsync(idKey))) {
                                 		await createStateAsync(idKey, dp);
                                 	}
                                 }
                              }
                              
                              
                              //let iqontrol_vorhanden =  'system.adapter.iqontrol'; //prüfen ob iqontol installiert ist
                              //let iot_vorhanden =  'system.adapter.iot'; //prüfen ob iot installiert ist
                              
                              //#####################################################################################################################################################################################################################################################################################################################################################################################
                              
                              //Ansage Button Lichteransage anlegen
                              if (Alexa_Ansage_verwenden == true && Lichter_verwenden == true){
                              let statesToCreate = [
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.04_Alexa.01_Alexa_Routinebutton', {'name': '01_Alexa_Routinebutton','type': 'boolean', 'read': false, 'write': true, 'role': 'button','def':true, "smartName": {"de": 'Lichteransage '+[etage],"smartType": "SWITCH"} }], 
                              ];
                              await createUserStates(anlegen_in,false, statesToCreate)};
                              
                              //Lichter  Datenpunkte anlegen
                              if (Lichter_verwenden == true){
                              let statesToCreate = [
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.01_Lichter_Anzahl_gesamt', {'name':'01_Lichter_Anzahl_gesamt', 'type':'number', 'read':true, 'write':false, 'role':'number', 'unit': 'Lichter', 'def':0 }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.02_Lichter_Anzahl_eingeschaltet', {'name':'02_Lichter_Anzahl_eingeschaltet', 'type':'number', 'read':true, 'write':false, 'role':'number', 'unit': 'Lichter', 'def':0 }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.03_Lichter_Anzahl_ausgeschaltet', {'name':'03_Lichter_Anzahl_ausgeschaltet', 'type':'number', 'read':true, 'write':false, 'role':'number', 'unit': 'Lichter', 'def':0 }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.04_eingeschaltete_Lichter_Liste', {'name': '04_eingeschaltete_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'noch leer' }],    
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.05_gesamte_Lichter_Liste', {'name': '05_gesamte_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'noch leer' }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.06_html_Lichter_Liste', {'name':'06_html_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'html', 'def':'noch leer' }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.07_Lichter_Liste_mit_Emojis', {'name':'07_Lichter_Liste_mit_Emojis', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'noch leer' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.08_Lichter_Emoji_eingeschaltet', {'name':'08_Lichter_Emoji_eingeschaltet', 'type':'mixed', 'read':true, 'write':true, 'role':'mixed' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.09_Lichter_Emoji_ausgeschaltet', {'name':'09_Lichter_Emoji_ausgeschaltet', 'type':'mixed', 'read':true, 'write':true, 'role':'mixed' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.10_html_nur_eingeschaltete_Lichter_Liste', {'name':'10_html_nur_eingeschaltete_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'html', 'def':'noch leer' }],
                                 ///////////////////////////////////
                                 // iQontrol Trigger und Schalter //
                                 /////////////////////////////////// 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.01_Thema_hell_Lichter_Liste', {'name':'01_Thema_hell_Lichter_Liste', 'type':'boolean', 'read':true, 'write':true, 'role':'switch','def':true}],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.02_Thema_dunkel_Lichter_Liste', {'name':'02_Thema_dunkel_Lichter_Liste', 'type':'boolean', 'read':true, 'write':true, 'role':'switch','def':false}],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.03_Thema_eigenes_Lichter_Liste', {'name':'03_Thema_eigenes_Lichter_Liste', 'type':'boolean', 'read':true, 'write':true, 'role':'switch','def':false}],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.04_Trigger_Tabelle_iQontrol_Lichter_Liste', {'name': '04_Trigger_Tabelle_iQontrol_Lichter_Liste','type': 'boolean', 'read': false, 'write': true, 'role': 'button','def':true}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.05_Schalter_fuer_Button_Tabelle_Lichter_Liste', {'name': '05_Schalter_fuer_Button_Tabelle_Lichter_Liste','type': 'boolean', 'read': true, 'write': true, 'role': 'switch','def':false}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.06_Trigger_Farbe_iQontrol_Lichter_Liste', {'name': '06_Trigger_Farbe_iQontrol_Lichter_Liste','type': 'boolean', 'read': false, 'write': true, 'role': 'button','def':true}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.07_Umschalter_Farbe_Lichter_Liste', {'name': '07_Umschalter_Farbe_Lichter_Liste','type': 'number', 'read': true, 'write': false, 'role': 'number','def':0}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.08_Geraetestatus_in_Ueberschrift_an_aus', {'name': '08_Geraetestatus_in_Ueberschrift_an_aus','type': 'boolean', 'read': true, 'write': true, 'role': 'switch','def':true}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.09_Geraete_in_HTML_Liste_schaltbar', {'name': '09_Geraete_in_HTML_Liste_schaltbar','type': 'boolean', 'read': true, 'write': true, 'role': 'switch','def':true}], 
                                 ///////////////////////////////////////////////
                                 // HTML Daten Hell-Dunkel nicht beschreibbar //
                                 ///////////////////////////////////////////////
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.01_Hintergrundfarbe_Lichter_Liste', {'name':'01_Hintergrundfarbe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'white' }],       
                                 //Rahmen Kopf
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.02_Rahmenbreite_Kopf_Lichter_Liste', {'name':'02_Rahmenbreite_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.03_Rahmenstyle_Kopf_Lichter_Liste', {'name':'03_Rahmenstyle_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'solid' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.04_Rahmenfarbe_Kopf_Lichter_Liste', {'name':'04_Rahmenfarbe_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                 //Rahmen Überschrift
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.05_Rahmenbreite_Ueberschrift_Lichter_Liste', {'name':'05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.06_Rahmenstyle_Ueberschrift_Lichter_Liste', {'name':'06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'solid' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.07_Rahmenfarbe_Ueberschrift_Lichter_Liste', {'name':'07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                 //Rahmen Tabelle aussen
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', {'name':'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'5' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', {'name':'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'solid' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', {'name':'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                 //Ueberschrift
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.11_Ueberschrift_Schriftgroesse_Lichter_Liste', {'name':'11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'4' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.12_Ueberschrift_Farbe_Lichter_Liste', {'name':'12_Ueberschrift_Farbe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],       
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.13_Ueberschrift_Schriftart_Lichter_Liste', {'name':'13_Ueberschrift_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'apple' }],           
                                 //Bild links
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.14_Bild_links_Lichter_Liste', {'name':'14_Bild_links_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':' data:image/png;base64,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'}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.15_Bild_links_Hoehe_Lichter_Liste', {'name':'15_Bild_links_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.16_Bild_links_Breite_Lichter_Liste', {'name':'16_Bild_links_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.17_Bild_links_Abstand_links_Lichter_Liste', {'name':'17_Bild_links_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.18_Bild_links_Abstand_oben_Lichter_Liste', {'name':'18_Bild_links_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.19_Bild_links_Abstand_unten_Lichter_Liste', {'name':'19_Bild_links_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.20_Bild_links_Abstand_rechts_Lichter_Liste', {'name':'20_Bild_links_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 //Bild rechts
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.21_Bild_rechts_Lichter_Liste', {'name':'21_Bild_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':' data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAUVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcqRVCAAAAGnRSTlMAECAwP0BQYG9wf4CPkJ+gr7C/wM/Q3+Dv8DtSRt8AAAMESURBVGje7ZndkqMgEEbBhIzEmfgvet7/QfdCM7uKBlBi1Val79JWOEIj/XUjxMc+dobJtOqIYl2VynXGvSei9fe1aRREtsKeTHQGFEtGBmB0Eie6iTYA2WKxeqCVETdRC/TzATVgZNStOgB65qotz2HTQDnzdEASF5IA3cwDEPvbtsb8QP5TyPX+GI/prnrcr2+AyLRaHk2bx/lOiNo4PgsVDaKq7ZO2UlEg8vEc0ORaJUIIkSidm6f3IY9DblO+bJdpINHtlANvRyHf40D16qqoenz6fQgy5eR2c+FVu71knhDZgCsHaAAauRcyMszl9Td3MRsUP0iBV06WLcBjH+QHz7w/Un72QG54a4uRcguHyD5AW0hjaxMfSA5w8T3WLwB5KEQRpl80gAqEVEAbkqJaoAqDKPvFHGb/wwkpgTos29ZLMeeCyOCJTFORARAdGhEhhDDAVwBklzTWiyV2QdgjjZOVQV5AFGDChZaZB9IByezP18fyeXHlgOT7qhU9fzcHpJ7POym6rlgJ0dKv5pF3QOYlUdID9BbF8i/KHgdk/qscJUm5hNj+V6M4Hk/Cq1tCbP8ByDDpxyXE9h+AvGm5zDzwA8BgB37pT17Ny7mFS2PKtS288Idt4VM+xlOOFbW2Y93WBR2Qpxz15yQtDTR7Visk/Z4iJERpSTWnVaGS6BxxJ+rQqDSWHIwvuLM9gntP6fATXgQNQOdbBHXAEF4EjeVc41fONWv7xL8w9aGMjGxfiZ37UUZGvrdZ0AJ0rmZBt1Em+7Y9xs5J+oqRslWKezdwRrHQbDdwxu5LfqCB84z+VoPu2dLLDjfVJnnVpcumWjpdgA0qQnsw/70Oe6TXsT14TR+/V2x5hPbgPw26NavjNDqFEEKV64gyXstWCCHklzWd+itu83maT5bXBsDUeebOaJ+rjQ/kb2n2hitAYymgt19m6gDV4Kkteuu95eCtGjwZzYp+yQD6NNZVedqv5pky/qV/uZVpYzLWVj8bYiKGbCNYujRxCKbUUnzsY2fYH0Cu0ke796XoAAAAAElFTkSuQmCC'}], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.22_Bild_rechts_Hoehe_Lichter_Liste', {'name':'22_Bild_rechts_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.23_Bild_rechts_Breite_Lichter_Liste', {'name':'23_Bild_rechts_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.24_Bild_rechts_Abstand_links_Lichter_Liste', {'name':'24_Bild_rechts_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.25_Bild_rechts_Abstand_oben_Lichter_Liste', {'name':'25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.26_Bild_rechts_Abstand_unten_Lichter_Liste', {'name':'26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.27_Bild_rechts_Abstand_rechts_Lichter_Liste', {'name':'27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                 //Abstand Kopf zur Tabelle
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', {'name':'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'4' }],   
                                 //Rahmen Tabelle
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.29_Rahmenbreite_Tabelle_innen_Lichter_Liste', {'name':'29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'1' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', {'name':'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],           
                                 //Schrift in der Tabelle aktive Geräte
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.31_Tabelle_Schriftart_Lichter_Liste', {'name':'31_Tabelle_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'apple' }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', {'name':'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'red' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', {'name':'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', {'name':'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'red' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', {'name':'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],        
                                 //Schrift in der Tabelle inaktive Geräte
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', {'name':'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', {'name':'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', {'name':'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', {'name':'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],        
                                 //Schriftgroesse Status Geräte Ueberschrift
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.40_Ueberschrift_Schriftgroesse_aktive_Geraete', {'name':'40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'3' }],        
                                 //Groesse Schaltfeld    
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.41_Schaltfeld_Groesse_Lichter_Liste', {'name':'41_Schaltfeld_Groesse_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'4' }],        
                                 //////////////////////////////////////////////////
                                 // HTML Daten eigene Einstellungen beschreibbar // 
                                 //////////////////////////////////////////////////
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.01_Hintergrundfarbe_Lichter_Liste', {'name':'01_Hintergrundfarbe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],      
                                 //Rahmen Kopf
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.02_Rahmenbreite_Kopf_Lichter_Liste', {'name':'02_Rahmenbreite_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.03_Rahmenstyle_Kopf_Lichter_Liste', {'name':'03_Rahmenstyle_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.04_Rahmenfarbe_Kopf_Lichter_Liste', {'name':'04_Rahmenfarbe_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 //Rahmen Überschrift
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.05_Rahmenbreite_Ueberschrift_Lichter_Liste', {'name':'05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.06_Rahmenstyle_Ueberschrift_Lichter_Liste', {'name':'06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.07_Rahmenfarbe_Ueberschrift_Lichter_Liste', {'name':'07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 //Rahmen Tabelle aussen
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', {'name':'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', {'name':'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', {'name':'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 //Ueberschrift
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.11_Ueberschrift_Schriftgroesse_Lichter_Liste', {'name':'11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.12_Ueberschrift_Farbe_Lichter_Liste', {'name':'12_Ueberschrift_Farbe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],       
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.13_Ueberschrift_Schriftart_Lichter_Liste', {'name':'13_Ueberschrift_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],           
                                 //Bild links
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.14_Bild_links_Lichter_Liste', {'name':'14_Bild_links_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.15_Bild_links_Hoehe_Lichter_Liste', {'name':'15_Bild_links_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.16_Bild_links_Breite_Lichter_Liste', {'name':'16_Bild_links_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.17_Bild_links_Abstand_links_Lichter_Liste', {'name':'17_Bild_links_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.18_Bild_links_Abstand_oben_Lichter_Liste', {'name':'18_Bild_links_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.19_Bild_links_Abstand_unten_Lichter_Liste', {'name':'19_Bild_links_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.20_Bild_links_Abstand_rechts_Lichter_Liste', {'name':'20_Bild_links_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 //Bild rechts
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.21_Bild_rechts_Lichter_Liste', {'name':'21_Bild_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }], 
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.22_Bild_rechts_Hoehe_Lichter_Liste', {'name':'22_Bild_rechts_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.23_Bild_rechts_Breite_Lichter_Liste', {'name':'23_Bild_rechts_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.24_Bild_rechts_Abstand_links_Lichter_Liste', {'name':'24_Bild_rechts_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.25_Bild_rechts_Abstand_oben_Lichter_Liste', {'name':'25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.26_Bild_rechts_Abstand_unten_Lichter_Liste', {'name':'26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.27_Bild_rechts_Abstand_rechts_Lichter_Liste', {'name':'27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 //Abstand Kopf zur Tabelle
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', {'name':'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 //Rahmen Tabelle
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.29_Rahmenbreite_Tabelle_innen_Lichter_Liste', {'name':'29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', {'name':'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],           
                                 //Schrift in der Tabelle aktive Gerätte
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.31_Tabelle_Schriftart_Lichter_Liste', {'name':'31_Tabelle_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', {'name':'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', {'name':'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', {'name':'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', {'name':'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],        
                                 //Schrift in der Tabelle inaktive Gerätte
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', {'name':'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', {'name':'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', {'name':'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', {'name':'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],        
                                 //Schriftgroesse Status Geräte Ueberschrift
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.40_Ueberschrift_Schriftgroesse_aktive_Geraete', {'name':'40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],        
                                 //Groesse Schaltfeld    
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.41_Schaltfeld_Groesse_Lichter_Liste', {'name':'41_Schaltfeld_Groesse_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],            
                              ];
                              await createUserStates(anlegen_in,false, statesToCreate)};
                              
                              //Telegram Lichter  Nachrichtenversand anlegen mit SmartNamen
                              if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == true){
                              let statesToCreate = [
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichter_'+[etage]+'_Versand_an_aus', {'name':'Telegram_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichterstatus_'+[etage]+'_senden', {'name':'Telegram_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": {"de": 'Telegram Lichterstatus '+[etage]+' senden',"smartType": "SWITCH"} }],   
                              ];
                              await createUserStates(anlegen_in,true, statesToCreate)};
                              
                              //Telegram Lichter  Nachrichtenversand anlegen ohne SmartNamen
                              if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == false){
                              let statesToCreate = [
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichter_'+[etage]+'_Versand_an_aus', {'name':'Telegram_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichterstatus_'+[etage]+'_senden', {'name':'Telegram_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": false }],   
                              ];
                              await createUserStates(anlegen_in,true, statesToCreate)};
                              
                              //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                              if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == true){
                              let statesToCreate = [
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichter_'+[etage]+'_Versand_an_aus', {'name':'EMAIL_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichterstatus_'+[etage]+'_senden', {'name':'EMAIL_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": {"de": 'EMAIL Lichterstatus '+[etage]+' senden',"smartType": "SWITCH"} }],   
                              ];
                              await createUserStates(anlegen_in,true, statesToCreate)};
                              
                              //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                              if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == false){
                              let statesToCreate = [
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichter_'+[etage]+'_Versand_an_aus', {'name':'EMAIL_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                 ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichterstatus_'+[etage]+'_senden', {'name':'EMAIL_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": false }],   
                              ];
                              await createUserStates(anlegen_in,true, statesToCreate)};
                              
                              //#####################################################################################################################################################################################################################################################################################################################################################################################
                              
                              //Ab hier Datenpunkte löschen
                              //###############################################################################
                              
                              if (!Lichter_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                              const idsjs = $('javascript.*.Geraete_zaehlen.Lichter*');
                              idsjs.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              if (!Lichter_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                              const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter*');
                              idsud.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              //###############################################################################
                              
                              if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                              const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                              idsjs.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                              const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                              idsud.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              //###############################################################################
                              
                              if (!Telegram_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                              const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                              idsjs.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              if (!Telegram_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                              const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                              idsud.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              //###############################################################################
                              
                              if (!Email_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                              const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                              idsjs.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              if (!Email_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                              const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                              idsud.each(function(id, i) {
                                if(existsState(id)) deleteState(id);
                              })};
                              
                              //###############################################################################
                              main();
                              

                              iobroker läuft unter Docker auf QNAP TS-451+
                              SkriptRecovery: https://forum.iobroker.net/post/930558

                              dslraserD 1 Antwort Letzte Antwort
                              0
                              • F fastfoot

                                @dslraser sagte in async-await:

                                @fastfoot
                                Danke Dir. Heute werde ich leider nicht mehr dazu kommen, aber ich gebe auf jeden Fall eine Rückmeldung.

                                Hier dann doch noch eine Version, welche deine Struktur unangetastet lässt. Du kannst also in deinen anderen Blocklys

                                • einfach die alte createUserStates() durch diese hier ersetzen.
                                • Zusätzlich musst du die Funktion immer mit await aufrufen, also
                                  await createUserStates(anlegen_in,false, statesToCreate)};
                                • Das ist alles, der timeout für main() kann dann weg.
                                • der zweite Parameter(ursprünglich forceCreate) wird nicht ausgewertet, er ist nur da damit du nicht soviel im Aufruf ändern musst. In der Funktion heisst er dummy

                                Du solltest deine DP-Definitionen trotzdem mal überarbeiten, da ist sehr viel Gleiches hard-gecodet, z.B. Geraete_zaehlen.Licht, siehe dazu meinen ersten Versuch im Post zuvor, da habe ich das eliminiert und durch Variablen am Anfang ersetzt

                                async function createUserStates(where, dummy, statesToCreate) {
                                   let dp, idKey;
                                   for(let key of statesToCreate){
                                   	idKey = where + '.' + key[0];
                                       dp = key[1];
                                   	if (!(await existsStateAsync(idKey))) {
                                   		await createStateAsync(idKey, dp);
                                   	}
                                   }
                                }
                                
                                
                                //let iqontrol_vorhanden =  'system.adapter.iqontrol'; //prüfen ob iqontol installiert ist
                                //let iot_vorhanden =  'system.adapter.iot'; //prüfen ob iot installiert ist
                                
                                //#####################################################################################################################################################################################################################################################################################################################################################################################
                                
                                //Ansage Button Lichteransage anlegen
                                if (Alexa_Ansage_verwenden == true && Lichter_verwenden == true){
                                let statesToCreate = [
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.04_Alexa.01_Alexa_Routinebutton', {'name': '01_Alexa_Routinebutton','type': 'boolean', 'read': false, 'write': true, 'role': 'button','def':true, "smartName": {"de": 'Lichteransage '+[etage],"smartType": "SWITCH"} }], 
                                ];
                                await createUserStates(anlegen_in,false, statesToCreate)};
                                
                                //Lichter  Datenpunkte anlegen
                                if (Lichter_verwenden == true){
                                let statesToCreate = [
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.01_Lichter_Anzahl_gesamt', {'name':'01_Lichter_Anzahl_gesamt', 'type':'number', 'read':true, 'write':false, 'role':'number', 'unit': 'Lichter', 'def':0 }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.02_Lichter_Anzahl_eingeschaltet', {'name':'02_Lichter_Anzahl_eingeschaltet', 'type':'number', 'read':true, 'write':false, 'role':'number', 'unit': 'Lichter', 'def':0 }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.03_Lichter_Anzahl_ausgeschaltet', {'name':'03_Lichter_Anzahl_ausgeschaltet', 'type':'number', 'read':true, 'write':false, 'role':'number', 'unit': 'Lichter', 'def':0 }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.04_eingeschaltete_Lichter_Liste', {'name': '04_eingeschaltete_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'noch leer' }],    
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.05_gesamte_Lichter_Liste', {'name': '05_gesamte_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'noch leer' }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.06_html_Lichter_Liste', {'name':'06_html_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'html', 'def':'noch leer' }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.07_Lichter_Liste_mit_Emojis', {'name':'07_Lichter_Liste_mit_Emojis', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'noch leer' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.08_Lichter_Emoji_eingeschaltet', {'name':'08_Lichter_Emoji_eingeschaltet', 'type':'mixed', 'read':true, 'write':true, 'role':'mixed' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.09_Lichter_Emoji_ausgeschaltet', {'name':'09_Lichter_Emoji_ausgeschaltet', 'type':'mixed', 'read':true, 'write':true, 'role':'mixed' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.01_Anzeigen_und_Listen.10_html_nur_eingeschaltete_Lichter_Liste', {'name':'10_html_nur_eingeschaltete_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'html', 'def':'noch leer' }],
                                   ///////////////////////////////////
                                   // iQontrol Trigger und Schalter //
                                   /////////////////////////////////// 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.01_Thema_hell_Lichter_Liste', {'name':'01_Thema_hell_Lichter_Liste', 'type':'boolean', 'read':true, 'write':true, 'role':'switch','def':true}],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.02_Thema_dunkel_Lichter_Liste', {'name':'02_Thema_dunkel_Lichter_Liste', 'type':'boolean', 'read':true, 'write':true, 'role':'switch','def':false}],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.03_Thema_eigenes_Lichter_Liste', {'name':'03_Thema_eigenes_Lichter_Liste', 'type':'boolean', 'read':true, 'write':true, 'role':'switch','def':false}],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.04_Trigger_Tabelle_iQontrol_Lichter_Liste', {'name': '04_Trigger_Tabelle_iQontrol_Lichter_Liste','type': 'boolean', 'read': false, 'write': true, 'role': 'button','def':true}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.05_Schalter_fuer_Button_Tabelle_Lichter_Liste', {'name': '05_Schalter_fuer_Button_Tabelle_Lichter_Liste','type': 'boolean', 'read': true, 'write': true, 'role': 'switch','def':false}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.06_Trigger_Farbe_iQontrol_Lichter_Liste', {'name': '06_Trigger_Farbe_iQontrol_Lichter_Liste','type': 'boolean', 'read': false, 'write': true, 'role': 'button','def':true}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.07_Umschalter_Farbe_Lichter_Liste', {'name': '07_Umschalter_Farbe_Lichter_Liste','type': 'number', 'read': true, 'write': false, 'role': 'number','def':0}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.08_Geraetestatus_in_Ueberschrift_an_aus', {'name': '08_Geraetestatus_in_Ueberschrift_an_aus','type': 'boolean', 'read': true, 'write': true, 'role': 'switch','def':true}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.02_Trigger_und_Schalter.09_Geraete_in_HTML_Liste_schaltbar', {'name': '09_Geraete_in_HTML_Liste_schaltbar','type': 'boolean', 'read': true, 'write': true, 'role': 'switch','def':true}], 
                                   ///////////////////////////////////////////////
                                   // HTML Daten Hell-Dunkel nicht beschreibbar //
                                   ///////////////////////////////////////////////
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.01_Hintergrundfarbe_Lichter_Liste', {'name':'01_Hintergrundfarbe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'white' }],       
                                   //Rahmen Kopf
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.02_Rahmenbreite_Kopf_Lichter_Liste', {'name':'02_Rahmenbreite_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.03_Rahmenstyle_Kopf_Lichter_Liste', {'name':'03_Rahmenstyle_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'solid' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.04_Rahmenfarbe_Kopf_Lichter_Liste', {'name':'04_Rahmenfarbe_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                   //Rahmen Überschrift
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.05_Rahmenbreite_Ueberschrift_Lichter_Liste', {'name':'05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.06_Rahmenstyle_Ueberschrift_Lichter_Liste', {'name':'06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'solid' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.07_Rahmenfarbe_Ueberschrift_Lichter_Liste', {'name':'07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                   //Rahmen Tabelle aussen
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', {'name':'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'5' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', {'name':'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'solid' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', {'name':'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                   //Ueberschrift
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.11_Ueberschrift_Schriftgroesse_Lichter_Liste', {'name':'11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'4' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.12_Ueberschrift_Farbe_Lichter_Liste', {'name':'12_Ueberschrift_Farbe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],       
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.13_Ueberschrift_Schriftart_Lichter_Liste', {'name':'13_Ueberschrift_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'apple' }],           
                                   //Bild links
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.14_Bild_links_Lichter_Liste', {'name':'14_Bild_links_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':' data:image/png;base64,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'}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.15_Bild_links_Hoehe_Lichter_Liste', {'name':'15_Bild_links_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.16_Bild_links_Breite_Lichter_Liste', {'name':'16_Bild_links_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.17_Bild_links_Abstand_links_Lichter_Liste', {'name':'17_Bild_links_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.18_Bild_links_Abstand_oben_Lichter_Liste', {'name':'18_Bild_links_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.19_Bild_links_Abstand_unten_Lichter_Liste', {'name':'19_Bild_links_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.20_Bild_links_Abstand_rechts_Lichter_Liste', {'name':'20_Bild_links_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   //Bild rechts
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.21_Bild_rechts_Lichter_Liste', {'name':'21_Bild_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':' data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAUVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcqRVCAAAAGnRSTlMAECAwP0BQYG9wf4CPkJ+gr7C/wM/Q3+Dv8DtSRt8AAAMESURBVGje7ZndkqMgEEbBhIzEmfgvet7/QfdCM7uKBlBi1Val79JWOEIj/XUjxMc+dobJtOqIYl2VynXGvSei9fe1aRREtsKeTHQGFEtGBmB0Eie6iTYA2WKxeqCVETdRC/TzATVgZNStOgB65qotz2HTQDnzdEASF5IA3cwDEPvbtsb8QP5TyPX+GI/prnrcr2+AyLRaHk2bx/lOiNo4PgsVDaKq7ZO2UlEg8vEc0ORaJUIIkSidm6f3IY9DblO+bJdpINHtlANvRyHf40D16qqoenz6fQgy5eR2c+FVu71knhDZgCsHaAAauRcyMszl9Td3MRsUP0iBV06WLcBjH+QHz7w/Un72QG54a4uRcguHyD5AW0hjaxMfSA5w8T3WLwB5KEQRpl80gAqEVEAbkqJaoAqDKPvFHGb/wwkpgTos29ZLMeeCyOCJTFORARAdGhEhhDDAVwBklzTWiyV2QdgjjZOVQV5AFGDChZaZB9IByezP18fyeXHlgOT7qhU9fzcHpJ7POym6rlgJ0dKv5pF3QOYlUdID9BbF8i/KHgdk/qscJUm5hNj+V6M4Hk/Cq1tCbP8ByDDpxyXE9h+AvGm5zDzwA8BgB37pT17Ny7mFS2PKtS288Idt4VM+xlOOFbW2Y93WBR2Qpxz15yQtDTR7Visk/Z4iJERpSTWnVaGS6BxxJ+rQqDSWHIwvuLM9gntP6fATXgQNQOdbBHXAEF4EjeVc41fONWv7xL8w9aGMjGxfiZ37UUZGvrdZ0AJ0rmZBt1Em+7Y9xs5J+oqRslWKezdwRrHQbDdwxu5LfqCB84z+VoPu2dLLDjfVJnnVpcumWjpdgA0qQnsw/70Oe6TXsT14TR+/V2x5hPbgPw26NavjNDqFEEKV64gyXstWCCHklzWd+itu83maT5bXBsDUeebOaJ+rjQ/kb2n2hitAYymgt19m6gDV4Kkteuu95eCtGjwZzYp+yQD6NNZVedqv5pky/qV/uZVpYzLWVj8bYiKGbCNYujRxCKbUUnzsY2fYH0Cu0ke796XoAAAAAElFTkSuQmCC'}], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.22_Bild_rechts_Hoehe_Lichter_Liste', {'name':'22_Bild_rechts_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.23_Bild_rechts_Breite_Lichter_Liste', {'name':'23_Bild_rechts_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'8' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.24_Bild_rechts_Abstand_links_Lichter_Liste', {'name':'24_Bild_rechts_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.25_Bild_rechts_Abstand_oben_Lichter_Liste', {'name':'25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.26_Bild_rechts_Abstand_unten_Lichter_Liste', {'name':'26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.27_Bild_rechts_Abstand_rechts_Lichter_Liste', {'name':'27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'0' }],   
                                   //Abstand Kopf zur Tabelle
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', {'name':'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'4' }],   
                                   //Rahmen Tabelle
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.29_Rahmenbreite_Tabelle_innen_Lichter_Liste', {'name':'29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'1' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', {'name':'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],           
                                   //Schrift in der Tabelle aktive Geräte
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.31_Tabelle_Schriftart_Lichter_Liste', {'name':'31_Tabelle_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'apple' }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', {'name':'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'red' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', {'name':'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', {'name':'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'red' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', {'name':'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],        
                                   //Schrift in der Tabelle inaktive Geräte
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', {'name':'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', {'name':'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', {'name':'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'black' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', {'name':'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':false, 'role':'string', 'def':'3.5' }],        
                                   //Schriftgroesse Status Geräte Ueberschrift
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.40_Ueberschrift_Schriftgroesse_aktive_Geraete', {'name':'40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'3' }],        
                                   //Groesse Schaltfeld    
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.01_HTML_Hell_Dunkel_Festeinstellung.41_Schaltfeld_Groesse_Lichter_Liste', {'name':'41_Schaltfeld_Groesse_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'4' }],        
                                   //////////////////////////////////////////////////
                                   // HTML Daten eigene Einstellungen beschreibbar // 
                                   //////////////////////////////////////////////////
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.01_Hintergrundfarbe_Lichter_Liste', {'name':'01_Hintergrundfarbe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],      
                                   //Rahmen Kopf
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.02_Rahmenbreite_Kopf_Lichter_Liste', {'name':'02_Rahmenbreite_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.03_Rahmenstyle_Kopf_Lichter_Liste', {'name':'03_Rahmenstyle_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.04_Rahmenfarbe_Kopf_Lichter_Liste', {'name':'04_Rahmenfarbe_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   //Rahmen Überschrift
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.05_Rahmenbreite_Ueberschrift_Lichter_Liste', {'name':'05_Rahmenbreite_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.06_Rahmenstyle_Ueberschrift_Lichter_Liste', {'name':'06_Rahmenstyle_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.07_Rahmenfarbe_Ueberschrift_Lichter_Liste', {'name':'07_Rahmenfarbe_Ueberschrift_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   //Rahmen Tabelle aussen
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', {'name':'08_Rahmenbreite_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', {'name':'09_Rahmenstyle_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', {'name':'10_Rahmenfarbe_Tabelle_aussen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   //Ueberschrift
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.11_Ueberschrift_Schriftgroesse_Lichter_Liste', {'name':'11_Ueberschrift_Schriftgroesse_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.12_Ueberschrift_Farbe_Lichter_Liste', {'name':'12_Ueberschrift_Farbe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],       
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.13_Ueberschrift_Schriftart_Lichter_Liste', {'name':'13_Ueberschrift_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],           
                                   //Bild links
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.14_Bild_links_Lichter_Liste', {'name':'14_Bild_links_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.15_Bild_links_Hoehe_Lichter_Liste', {'name':'15_Bild_links_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.16_Bild_links_Breite_Lichter_Liste', {'name':'16_Bild_links_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.17_Bild_links_Abstand_links_Lichter_Liste', {'name':'17_Bild_links_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.18_Bild_links_Abstand_oben_Lichter_Liste', {'name':'18_Bild_links_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.19_Bild_links_Abstand_unten_Lichter_Liste', {'name':'19_Bild_links_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.20_Bild_links_Abstand_rechts_Lichter_Liste', {'name':'20_Bild_links_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   //Bild rechts
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.21_Bild_rechts_Lichter_Liste', {'name':'21_Bild_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }], 
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.22_Bild_rechts_Hoehe_Lichter_Liste', {'name':'22_Bild_rechts_Hoehe_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.23_Bild_rechts_Breite_Lichter_Liste', {'name':'23_Bild_rechts_Breite_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.24_Bild_rechts_Abstand_links_Lichter_Liste', {'name':'24_Bild_rechts_Abstand_links_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.25_Bild_rechts_Abstand_oben_Lichter_Liste', {'name':'25_Bild_rechts_Abstand_oben_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.26_Bild_rechts_Abstand_unten_Lichter_Liste', {'name':'26_Bild_rechts_Abstand_unten_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.27_Bild_rechts_Abstand_rechts_Lichter_Liste', {'name':'27_Bild_rechts_Abstand_rechts_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   //Abstand Kopf zur Tabelle
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', {'name':'28_Abstand_Tabelle_zum_Kopf_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   //Rahmen Tabelle
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.29_Rahmenbreite_Tabelle_innen_Lichter_Liste', {'name':'29_Rahmenbreite_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', {'name':'30_Rahmenfarbe_Tabelle_innen_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],           
                                   //Schrift in der Tabelle aktive Gerätte
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.31_Tabelle_Schriftart_Lichter_Liste', {'name':'31_Tabelle_Schriftart_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', {'name':'32_Tabelle_Schriftfarbe_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', {'name':'33_Tabelle_Schriftgroesse_aktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', {'name':'34_Tabelle_Schriftfarbe_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', {'name':'35_Tabelle_Schriftgroesse_aktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],        
                                   //Schrift in der Tabelle inaktive Gerätte
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', {'name':'36_Tabelle_Schriftfarbe_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', {'name':'37_Tabelle_Schriftgroesse_inaktives_Geraet_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', {'name':'38_Tabelle_Schriftfarbe_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],   
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', {'name':'39_Tabelle_Schriftgroesse_inaktives_Geraet_Status_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],        
                                   //Schriftgroesse Status Geräte Ueberschrift
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.40_Ueberschrift_Schriftgroesse_aktive_Geraete', {'name':'40_Ueberschrift_Schriftgroesse_aktive_Geraete', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],        
                                   //Groesse Schaltfeld    
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.03_HTML_Daten.02_HTML_Eigene_Einstellungen.41_Schaltfeld_Groesse_Lichter_Liste', {'name':'41_Schaltfeld_Groesse_Lichter_Liste', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':' ' }],            
                                ];
                                await createUserStates(anlegen_in,false, statesToCreate)};
                                
                                //Telegram Lichter  Nachrichtenversand anlegen mit SmartNamen
                                if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == true){
                                let statesToCreate = [
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichter_'+[etage]+'_Versand_an_aus', {'name':'Telegram_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichterstatus_'+[etage]+'_senden', {'name':'Telegram_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": {"de": 'Telegram Lichterstatus '+[etage]+' senden',"smartType": "SWITCH"} }],   
                                ];
                                await createUserStates(anlegen_in,true, statesToCreate)};
                                
                                //Telegram Lichter  Nachrichtenversand anlegen ohne SmartNamen
                                if (Lichter_verwenden == true && Telegram_verwenden == true && Alexa_Ansage_verwenden == false){
                                let statesToCreate = [
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichter_'+[etage]+'_Versand_an_aus', {'name':'Telegram_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.05_Telegram.Telegram_Lichterstatus_'+[etage]+'_senden', {'name':'Telegram_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": false }],   
                                ];
                                await createUserStates(anlegen_in,true, statesToCreate)};
                                
                                //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                                if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == true){
                                let statesToCreate = [
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichter_'+[etage]+'_Versand_an_aus', {'name':'EMAIL_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichterstatus_'+[etage]+'_senden', {'name':'EMAIL_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": {"de": 'EMAIL Lichterstatus '+[etage]+' senden',"smartType": "SWITCH"} }],   
                                ];
                                await createUserStates(anlegen_in,true, statesToCreate)};
                                
                                //E-Mail Lichter Nachrichtenversand anlegen mit SmartNamen
                                if (Lichter_verwenden == true && Email_verwenden == true && Alexa_Ansage_verwenden == false){
                                let statesToCreate = [
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichter_'+[etage]+'_Versand_an_aus', {'name':'EMAIL_Lichter_'+[etage]+'_Versand_an_aus', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':false }],
                                   ['Geraete_zaehlen.Lichter.'+[etage]+'.06_E-Mail.EMAIL_Lichterstatus_'+[etage]+'_senden', {'name':'EMAIL_Lichterstatus_'+[etage]+'_senden', 'type':'boolean', 'read':true, 'write':true, 'role':'button', 'def':true, "smartName": false }],   
                                ];
                                await createUserStates(anlegen_in,true, statesToCreate)};
                                
                                //#####################################################################################################################################################################################################################################################################################################################################################################################
                                
                                //Ab hier Datenpunkte löschen
                                //###############################################################################
                                
                                if (!Lichter_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                                const idsjs = $('javascript.*.Geraete_zaehlen.Lichter*');
                                idsjs.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                if (!Lichter_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                                const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter*');
                                idsud.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                //###############################################################################
                                
                                if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                                const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                                idsjs.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                if (!Alexa_Ansage_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                                const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.04_Alexa.*');  
                                idsud.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                //###############################################################################
                                
                                if (!Telegram_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                                const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                                idsjs.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                if (!Telegram_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                                const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.05_Telegram.*'); 
                                idsud.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                //###############################################################################
                                
                                if (!Email_verwenden && anlegen_in.slice(0, 10) == 'javascript') {
                                const idsjs = $('javascript.*.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                                idsjs.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                if (!Email_verwenden && anlegen_in.slice(0, 10) == '0_userdata') {
                                const idsud = $('0_userdata.0.Geraete_zaehlen.Lichter.*.06_E-Mail.*'); 
                                idsud.each(function(id, i) {
                                  if(existsState(id)) deleteState(id);
                                })};
                                
                                //###############################################################################
                                main();
                                

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @fastfoot
                                ich habe Deine Variante hier mal eingebaut. Bei mir funktionierte in dieser Version alles wie es soll.

                                https://forum.iobroker.net/post/617640

                                1 Antwort Letzte Antwort
                                1
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                797

                                Online

                                32.4k

                                Benutzer

                                81.5k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe