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. JavaScript
  5. Datenpunkt erstellen und im Anschluss sofort nutzen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.0k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Datenpunkt erstellen und im Anschluss sofort nutzen

Geplant Angeheftet Gesperrt Verschoben JavaScript
12 Beiträge 4 Kommentatoren 2.0k 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.
  • BananaJoeB BananaJoe

    In praktisch jedem meiner Skripte erstelle ich am Anfang ggf. benötigte Datenpunkte.
    Danach kommt in der Regel eine "Erst-Befüllung" der Datenpunkte und dann ggf. Subscriptions.

    Wenn der Datenpunkt gerade erstellt wurde kann ich diesen aber 2 Zeilen später noch nicht nutzen:

    // Datenpunkt erstellen
    createState("javascript.0.Testumgebung.Test1", "Eins", {
      type: 'string',
      read: true, 
      write: true
    });
    
    // Datenpunkt ändern
    setState("javascript.0.Testumgebung.Test1", "Zwei");
    

    7a8a787e-2382-4754-812b-3eb176814092-image.png

    Ich drücke dann immer einmal auf Neustart und dann geht es.
    Wie bekomme ich es hin das erst weitermacht wenn der Datenpunkt erstellt ist?

    Das ich natürlich die Erstbefüllung mit dem Erstellen der Datenpunkte verbinden könnte ist mir klar, aber ich hatte das Problem auch schon in anderen Konstellationen, z.B. wenn sich 2 getrennte Skripte über einen Datenpunkt abstimmen sollten (Ich laufe gerade, mach du nichts), das hat auch nicht geklappt weil für das andere Skript der Wert noch gar nicht geschrieben war.

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

    @bananajoe nutze await/async. Ich such dir mal was raus wie ich das mache.

    hier mal ein Fragment wie ich es in fast allen meinen Skripts mittlerweile nutze

    const idBase = '0_userdata.0.Corona.RLP';
    
    async function main(){
    
        let firstRun = await createDatapoints();
        //dein Code
    }
    
    // create data points if not existing
    async function createDatapoints() {
        let dp,
            idKey,
            firstRun = false;
        
        const stateAttributes = {
            "json":{"name":"Daten","type":"string","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":""},
            "Refresh":{"name":"Refresh","type":"boolean","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":false},
            "Excel":{"name":"Hole Exceldatei","type":"boolean","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":false},
        }
    
        for(let key in stateAttributes) {
    
            idKey = idBase + '.' + key;
    
            if (!(await existsStateAsync(idKey))) {
                dp = stateAttributes[key];
                firstRun = true;
                await createStateAsync(idKey, dp);
            }
        }
    
        return firstRun;
    
    }
    
    main();
    

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

    BananaJoeB 1 Antwort Letzte Antwort
    2
    • dslraserD dslraser

      @bananajoe
      mit einem timeout probiert ?

      Bildschirmfoto 2021-04-14 um 20.57.18.png

      Aus der JS Ansicht

      var timeout;
      
      
      createState("jsState", 'eins', JSON.parse('{ "role" : "string" , "type" : "string" , "name" : "A" }'), async function () {
      });
      (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})();
      timeout = setTimeout(async function () {
        setStateDelayed('javascript.0.jsState', 'zwei', true, parseInt(0, 10), false);
      }, 1000);
      
      BananaJoeB Online
      BananaJoeB Online
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von
      #4

      @dslraser hatte ich schon probiert, funktioniert nicht

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

      dslraserD 2 Antworten Letzte Antwort
      0
      • F fastfoot

        @bananajoe nutze await/async. Ich such dir mal was raus wie ich das mache.

        hier mal ein Fragment wie ich es in fast allen meinen Skripts mittlerweile nutze

        const idBase = '0_userdata.0.Corona.RLP';
        
        async function main(){
        
            let firstRun = await createDatapoints();
            //dein Code
        }
        
        // create data points if not existing
        async function createDatapoints() {
            let dp,
                idKey,
                firstRun = false;
            
            const stateAttributes = {
                "json":{"name":"Daten","type":"string","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":""},
                "Refresh":{"name":"Refresh","type":"boolean","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":false},
                "Excel":{"name":"Hole Exceldatei","type":"boolean","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":false},
            }
        
            for(let key in stateAttributes) {
        
                idKey = idBase + '.' + key;
        
                if (!(await existsStateAsync(idKey))) {
                    dp = stateAttributes[key];
                    firstRun = true;
                    await createStateAsync(idKey, dp);
                }
            }
        
            return firstRun;
        
        }
        
        main();
        

        BananaJoeB Online
        BananaJoeB Online
        BananaJoe
        Most Active
        schrieb am zuletzt editiert von
        #5

        @fastfoot sieht gut aus, teste ich und melde mich dann wieder

        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        1 Antwort Letzte Antwort
        0
        • BananaJoeB BananaJoe

          @dslraser hatte ich schon probiert, funktioniert nicht

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

          @bananajoe sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

          @dslraser hatte ich schon probiert, funktioniert nicht

          Ich habe es auch probiert und es hat funktioniert.
          Besser ist aber sicher die Variante von @fastfoot

          F 1 Antwort Letzte Antwort
          0
          • BananaJoeB BananaJoe

            @dslraser hatte ich schon probiert, funktioniert nicht

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

            @bananajoe sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

            @dslraser hatte ich schon probiert, funktioniert nicht

            Bildschirmfoto 2021-04-14 um 22.31.03.png

            14.4.2021, 22:30:53.699	[info ]: javascript.0 (11217) Stop script script.js.99_Test.DP
            14.4.2021, 22:30:53.714	[info ]: javascript.0 (11217) Start javascript script.js.99_Test.DP
            14.4.2021, 22:30:53.719	[info ]: javascript.0 (11217) script.js.99_Test.DP: registered 0 subscriptions and 0 schedules
            14.4.2021, 22:30:53.719	[info ]: javascript.0 (11217) script.js.99_Test.DP: State existiert nicht !
            14.4.2021, 22:30:54.720	[info ]: javascript.0 (11217) script.js.99_Test.DP: Init Wert: eins
            14.4.2021, 22:30:56.726	[info ]: javascript.0 (11217) script.js.99_Test.DP: neuer Wert: zwei
            

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="[axQ$oH/ZZy.k67+iBx/">id</variable>
               <variable id="Qs_%`%)=dTI}Bs8Bed4{">Test_DP</variable>
               <variable type="timeout" id="start">start</variable>
               <variable type="timeout" id="timeout">timeout</variable>
               <variable type="timeout" id="timeout2">timeout2</variable>
             </variables>
             <block type="procedures_defcustomreturn" id="7R:L*9?)7Wl^RqVg+G`q" x="13" y="13">
               <mutation statements="false">
                 <arg name="id" varid="[axQ$oH/ZZy.k67+iBx/"></arg>
               </mutation>
               <field name="NAME">existiert_State</field>
               <field name="SCRIPT">aWYoZXhpc3RzU3RhdGUoaWQpKXJldHVybiB0cnVlOw==</field>
               <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
             </block>
             <block type="variables_set" id=";XB7Ok*88;t28inG4lUb" x="13" y="63">
               <field name="VAR" id="Qs_%`%)=dTI}Bs8Bed4{">Test_DP</field>
               <value name="VALUE">
                 <block type="text" id="g_F5IjXtZsF/PuOv2JC@">
                   <field name="TEXT"></field>
                 </block>
               </value>
               <next>
                 <block type="variables_set" id="uek3a!SO(r8$hw@O~Jmk">
                   <field name="VAR" id="Qs_%`%)=dTI}Bs8Bed4{">Test_DP</field>
                   <value name="VALUE">
                     <block type="field_oid" id="X(V59#cpR+Y+~bvQ@i|6">
                       <field name="oid">javascript.0.jsState</field>
                     </block>
                   </value>
                   <next>
                     <block type="create" id="HHlmtV`-A_7.m9zR85D$">
                       <field name="NAME">jsState</field>
                       <value name="VALUE">
                         <block type="text" id="K[|K_Qfm2(TDG0Y?k*IS">
                           <field name="TEXT">eins</field>
                         </block>
                       </value>
                       <value name="COMMON">
                         <block type="text" id="s,QEs/JoRn:|wD~*,1/-">
                           <field name="TEXT">{ "role" : "string" , "type" : "string" , "name" : "A" }</field>
                         </block>
                       </value>
                       <next>
                         <block type="controls_if" id="_{}vOCCEYp^bA_$yLjRQ">
                           <mutation else="1"></mutation>
                           <value name="IF0">
                             <block type="procedures_callcustomreturn" id="NAI$cx_]gw]ScNlY8sHv">
                               <mutation name="existiert_State">
                                 <arg name="id"></arg>
                               </mutation>
                               <value name="ARG0">
                                 <block type="variables_get" id="!quqAfEJA-(COD^#(^}!">
                                   <field name="VAR" id="Qs_%`%)=dTI}Bs8Bed4{">Test_DP</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <statement name="DO0">
                             <block type="debug" id="ex84XR81#x^{i;u$9tL4">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="FcUwAVUCPp9c!,OSBi#i">
                                   <field name="TEXT">State existiert</field>
                                 </shadow>
                               </value>
                             </block>
                           </statement>
                           <statement name="ELSE">
                             <block type="debug" id=")Je::,`YVl$ajVfV{T|z">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="uL9YI2CjEl/%O2h1^^9W">
                                   <field name="TEXT">State existiert nicht !</field>
                                 </shadow>
                               </value>
                             </block>
                           </statement>
                           <next>
                             <block type="timeouts_cleartimeout" id="Q0LjqdL7H{!bg4-!59xY">
                               <field name="NAME">start</field>
                               <next>
                                 <block type="timeouts_settimeout" id="SDTJ`3Zfu,,kyDzZdkW=">
                                   <field name="NAME">start</field>
                                   <field name="DELAY">1000</field>
                                   <field name="UNIT">ms</field>
                                   <statement name="STATEMENT">
                                     <block type="debug" id=".ib`nDWC_CW+BWX(bWDf">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="text_join" id="G+6-C_G}iF{a3MknWJ#$">
                                           <mutation items="2"></mutation>
                                           <value name="ADD0">
                                             <block type="text" id="@yU`(/.UlIQ@#6)Hnljv">
                                               <field name="TEXT">Init Wert: </field>
                                             </block>
                                           </value>
                                           <value name="ADD1">
                                             <block type="get_value" id="U^wowRz}Hb)m)CD1kVzs">
                                               <field name="ATTR">val</field>
                                               <field name="OID">javascript.0.jsState</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </statement>
                                   <next>
                                     <block type="timeouts_cleartimeout" id="~jy7A|=)c+Gual-U23@E">
                                       <field name="NAME">timeout</field>
                                       <next>
                                         <block type="timeouts_settimeout" id="?HBGpk^/~g~Yei?H`H.P">
                                           <field name="NAME">timeout</field>
                                           <field name="DELAY">2000</field>
                                           <field name="UNIT">ms</field>
                                           <statement name="STATEMENT">
                                             <block type="control_ex" id="kFMZS@qF.mQq@SKi?BRa" inline="true">
                                               <field name="TYPE">true</field>
                                               <field name="CLEAR_RUNNING">FALSE</field>
                                               <value name="OID">
                                                 <shadow type="field_oid" id="o63hWk+tRd)eW?[LG`ic">
                                                   <field name="oid">javascript.0.jsState</field>
                                                 </shadow>
                                               </value>
                                               <value name="VALUE">
                                                 <shadow type="logic_boolean" id="YWLv`cI;MnL$:ROj/+go">
                                                   <field name="BOOL">TRUE</field>
                                                 </shadow>
                                                 <block type="text" id="Pqzi@{ywJhPhb1v-e5=D">
                                                   <field name="TEXT">zwei</field>
                                                 </block>
                                               </value>
                                               <value name="DELAY_MS">
                                                 <shadow type="math_number" id="%;SkD6-ulX==N)$=%Rn:">
                                                   <field name="NUM">0</field>
                                                 </shadow>
                                               </value>
                                             </block>
                                           </statement>
                                           <next>
                                             <block type="timeouts_cleartimeout" id="y(^O#,e:*4$}%mfIEDmw">
                                               <field name="NAME">timeout2</field>
                                               <next>
                                                 <block type="timeouts_settimeout" id="9x}cpSoW-a)uSCUe!.$M">
                                                   <field name="NAME">timeout2</field>
                                                   <field name="DELAY">3000</field>
                                                   <field name="UNIT">ms</field>
                                                   <statement name="STATEMENT">
                                                     <block type="debug" id=")loTA?exp*K-#=)ujNhu">
                                                       <field name="Severity">log</field>
                                                       <value name="TEXT">
                                                         <shadow type="text" id="RMbHk^2Y)g|dimF[evPk">
                                                           <field name="TEXT">test</field>
                                                         </shadow>
                                                         <block type="text_join" id="W-TClT~P;89/qj@QW`qh">
                                                           <mutation items="2"></mutation>
                                                           <value name="ADD0">
                                                             <block type="text" id="HVC{,(].e0X6]}_}^FxV">
                                                               <field name="TEXT">neuer Wert: </field>
                                                             </block>
                                                           </value>
                                                           <value name="ADD1">
                                                             <block type="get_value" id="Wi%ull^FE?3+X+Ay6_Z(">
                                                               <field name="ATTR">val</field>
                                                               <field name="OID">javascript.0.jsState</field>
                                                             </block>
                                                           </value>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </statement>
                                                 </block>
                                               </next>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
            </xml>
            

            EDIT: Test Blockly nochmal erweitert...

            1 Antwort Letzte Antwort
            0
            • dslraserD dslraser

              @bananajoe sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

              @dslraser hatte ich schon probiert, funktioniert nicht

              Ich habe es auch probiert und es hat funktioniert.
              Besser ist aber sicher die Variante von @fastfoot

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

              @dslraser sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

              @bananajoe sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

              @dslraser hatte ich schon probiert, funktioniert nicht

              Ich habe es auch probiert und es hat funktioniert.
              Besser ist aber sicher die Variante von @fastfoot

              die xxxStateAsync() Funktionen sind relativ neu im JS-Controller. Sie ermöglichen in Verbindung mit await auf das Ende der Ausführung zu warten, gleichzeitig blockiert dieses Warten aber nicht das gesamte restliche System, d.h. jegliche Events werden trotzdem abgearbeitet. Natürlich müsste man das nicht so aufblähen wie im Beispiel, es ist speziell als 'Vorspann' für Skripte gedacht, so dass sichergestellt ist dass benötigte Datenpunkte verfügbar sind. Zu beachten ist dass await nur in einer Funktion aufgerufen werden darf die mit async definiert wurde. Meines Wissens nach bietet Blockly (noch?) kein createStateAsync(), man müsste das dann dort mit einer JS-Function machen. Ein Timeout birgt immer die Gefahr dass er zu kurz ist, wählt man ihn zu groß dann ärgert man sich :-) Mit await/async spart man sich dieses Ärgernis...

              Hier noch ne Minimalversion:

              let idKey = "0_userdata.0.test.MyDP";
              let dp = {"name":"Daten","type":"string","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":""};
              async function test(){
                  await createStateAsync(idKey, dp);
                  setState(idKey, 'Mein Wert');
              }
              

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

              dslraserD 1 Antwort Letzte Antwort
              2
              • F fastfoot

                @dslraser sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

                @bananajoe sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

                @dslraser hatte ich schon probiert, funktioniert nicht

                Ich habe es auch probiert und es hat funktioniert.
                Besser ist aber sicher die Variante von @fastfoot

                die xxxStateAsync() Funktionen sind relativ neu im JS-Controller. Sie ermöglichen in Verbindung mit await auf das Ende der Ausführung zu warten, gleichzeitig blockiert dieses Warten aber nicht das gesamte restliche System, d.h. jegliche Events werden trotzdem abgearbeitet. Natürlich müsste man das nicht so aufblähen wie im Beispiel, es ist speziell als 'Vorspann' für Skripte gedacht, so dass sichergestellt ist dass benötigte Datenpunkte verfügbar sind. Zu beachten ist dass await nur in einer Funktion aufgerufen werden darf die mit async definiert wurde. Meines Wissens nach bietet Blockly (noch?) kein createStateAsync(), man müsste das dann dort mit einer JS-Function machen. Ein Timeout birgt immer die Gefahr dass er zu kurz ist, wählt man ihn zu groß dann ärgert man sich :-) Mit await/async spart man sich dieses Ärgernis...

                Hier noch ne Minimalversion:

                let idKey = "0_userdata.0.test.MyDP";
                let dp = {"name":"Daten","type":"string","role":"","read":true,"write":true,"desc":"von Skript erstellt","def":""};
                async function test(){
                    await createStateAsync(idKey, dp);
                    setState(idKey, 'Mein Wert');
                }
                
                dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                schrieb am zuletzt editiert von dslraser
                #9

                @fastfoot
                vielen Dank für Deine Beispiele.
                Bisher habe ich das Script benutzt

                https://github.com/Mic-M/iobroker-createUserStates

                bzw.

                https://github.com/Mic-M/iobroker-createUserStates/blob/master/createUserStates.js

                F 1 Antwort Letzte Antwort
                0
                • dslraserD dslraser

                  @fastfoot
                  vielen Dank für Deine Beispiele.
                  Bisher habe ich das Script benutzt

                  https://github.com/Mic-M/iobroker-createUserStates

                  bzw.

                  https://github.com/Mic-M/iobroker-createUserStates/blob/master/createUserStates.js

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

                  @dslraser sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

                  Bisher habe ich das Script benutzt
                  https://github.com/Mic-M/iobroker-createUserStates

                  Ich kenne das Skript kaum, denke aber der Hauptfokus lag seinerzeit auf der Erstellung in 0_userdata.0, was nicht vom JS Adapter unterstützt wurde. Das Skript arbeitet auch noch mit Timeout. Schön zu sehen wie sehr sich iobroker weiterentwickelt hat, wenn man es vergleicht mit den paar Zeilen meines ersten Beispiels. Wäre sehr interessant zu erfahren was der Autor dazu zu sagen hat, evtl. hat es auch heute noch seine Berechtigung, das kann ich nicht beurteilen. Für meine Anwendungen reicht aber das was ich gepostet habe vollkommen aus

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

                  1 Antwort Letzte Antwort
                  0
                  • BananaJoeB BananaJoe

                    In praktisch jedem meiner Skripte erstelle ich am Anfang ggf. benötigte Datenpunkte.
                    Danach kommt in der Regel eine "Erst-Befüllung" der Datenpunkte und dann ggf. Subscriptions.

                    Wenn der Datenpunkt gerade erstellt wurde kann ich diesen aber 2 Zeilen später noch nicht nutzen:

                    // Datenpunkt erstellen
                    createState("javascript.0.Testumgebung.Test1", "Eins", {
                      type: 'string',
                      read: true, 
                      write: true
                    });
                    
                    // Datenpunkt ändern
                    setState("javascript.0.Testumgebung.Test1", "Zwei");
                    

                    7a8a787e-2382-4754-812b-3eb176814092-image.png

                    Ich drücke dann immer einmal auf Neustart und dann geht es.
                    Wie bekomme ich es hin das erst weitermacht wenn der Datenpunkt erstellt ist?

                    Das ich natürlich die Erstbefüllung mit dem Erstellen der Datenpunkte verbinden könnte ist mir klar, aber ich hatte das Problem auch schon in anderen Konstellationen, z.B. wenn sich 2 getrennte Skripte über einen Datenpunkt abstimmen sollten (Ich laufe gerade, mach du nichts), das hat auch nicht geklappt weil für das andere Skript der Wert noch gar nicht geschrieben war.

                    grrfieldG Offline
                    grrfieldG Offline
                    grrfield
                    schrieb am zuletzt editiert von
                    #11

                    @bananajoe Hallo, ich gehe da einen pragmatischen Weg: nach dem Erstellen der States frage ich ab, ob der letzte State bereits existiert und starte das Skript neu, bis er erstellt wurde:

                    createState("javascript.0.Testumgebung.Test1", "Eins", {
                      type: 'string',
                      read: true, 
                      write: true
                    });
                    createState("javascript.0.Testumgebung.Test2", "Zwei", {
                      type: 'string',
                      read: true, 
                      write: true
                    });
                    
                    // Restart, wenn letzter State noch nicht geschrieben
                    if(!existsState("javascript.0.Testumgebung.Test2")) runScript();
                    

                    Da das Neustarten nur beim ersten Anlegen der Datenpunkte passiert, stört es nicht weiter.

                    BananaJoeB 1 Antwort Letzte Antwort
                    0
                    • grrfieldG grrfield

                      @bananajoe Hallo, ich gehe da einen pragmatischen Weg: nach dem Erstellen der States frage ich ab, ob der letzte State bereits existiert und starte das Skript neu, bis er erstellt wurde:

                      createState("javascript.0.Testumgebung.Test1", "Eins", {
                        type: 'string',
                        read: true, 
                        write: true
                      });
                      createState("javascript.0.Testumgebung.Test2", "Zwei", {
                        type: 'string',
                        read: true, 
                        write: true
                      });
                      
                      // Restart, wenn letzter State noch nicht geschrieben
                      if(!existsState("javascript.0.Testumgebung.Test2")) runScript();
                      

                      Da das Neustarten nur beim ersten Anlegen der Datenpunkte passiert, stört es nicht weiter.

                      BananaJoeB Online
                      BananaJoeB Online
                      BananaJoe
                      Most Active
                      schrieb am zuletzt editiert von
                      #12

                      @grrfield sagte in Datenpunkt erstellen und im Anschluss sofort nutzen:

                      if(!existsState("javascript.0.Testumgebung.Test2")) runScript();
                      

                      Da das Neustarten nur beim ersten Anlegen der Datenpunkte passiert, stört es nicht weiter.

                      Cool, Skripte können sich selbst neu starten. Wieder was gelernt.

                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

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


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      770

                      Online

                      32.5k

                      Benutzer

                      81.6k

                      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