Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Remanente Speicherung von User Datenpunkte

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Remanente Speicherung von User Datenpunkte

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      Nordischerjung @paul53 last edited by

      @paul53 Moin,

      erstellt mit dem Script von dir https://forum.iobroker.net/topic/26839/ bzw das von Mic mit den belibig viele DP

      createUserDataState('vis.Stundenplan.Toni.Montag.Stunde1', {'name':'Montag Stunde1', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'1'});
      

      So sieht die Struktur aus, sind noch zwei Ordner drüber

      8070c762-69e2-4b08-8981-86a3c860ba4a-grafik.png

      Nach Neustart waren diese definitiv leer.

      paul53 dslraser 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Nordischerjung last edited by

        @nordischerjung sagte: Nach Neustart waren diese definitiv leer.

        Das kann ich nicht nachvollziehen, denn gerade getestet:

        • Datenpunkt unter "0_userdata.0" per Skript erstellt
        • "Sport" eingetragen
        • ioBroker neu gestartet
        • Browser-Refresh
        • Ergebnis:

        Bild_2021-08-31_155123.png

        1 Reply Last reply Reply Quote 0
        • dslraser
          dslraser Forum Testing Most Active @Nordischerjung last edited by dslraser

          @nordischerjung sagte in Remanente Speicherung von User Datenpunkte:

          bzw das von Mic mit den belibig viele DP

          Bei diesem Script gibt es eine Option (true/false) die genau das macht. Auf true werden die Datenpunkte gnadenlos überschrieben/neu geschrieben.

          Wenn es das Script von Mic ist (das habe ich auch mal genutzt). Dann ist es diese Funktion

          Bildschirmfoto 2021-08-31 um 16.34.57.png

          (anlegen_in ist bei mir eine Variable wo die Datenpunkte erstellt werden sollen)
          Bildschirmfoto 2021-08-31 um 16.55.44.png
          Um das false oder eben true, was daneben steht, um das geht es. true überschreibt, false nicht

          Bildschirmfoto 2021-08-31 um 16.35.15.png

          Das war mal ein Beispiel, was ich mal verwendet habe

          /**
          * Create states under 0_userdata.0 or javascript.x
          * Current Version:     https://github.com/Mic-M/iobroker.createUserStates
          * Support:             https://forum.iobroker.net/topic/26839/
          * Autor:               Mic (ioBroker) | Mic-M (github)
          * Version:             1.2 (20 October 2020)
          * Example:             see https://github.com/Mic-M/iobroker.createUserStates#beispiel
          * -----------------------------------------------
          * PLEASE NOTE: Per https://github.com/ioBroker/ioBroker.javascript/issues/474, the used function setObject() 
          *              executes the callback PRIOR to completing the state creation. Therefore, we use a setTimeout and counter. 
          * -----------------------------------------------
          * @param {string} where          Where to create the state: '0_userdata.0' or 'javascript.x'.
          * @param {boolean} force         Force state creation (overwrite), if state is existing.
          * @param {array} statesToCreate  State(s) to create. single array or array of arrays
          * @param {object} [callback]     Optional: a callback function -- This provided function will be executed after all states are created.
          */
          function createUserStates(where, force, statesToCreate, callback = undefined) {
          
             const WARN = false; // Only for 0_userdata.0: Throws warning in log, if state is already existing and force=false. Default is false, so no warning in log, if state exists.
             const LOG_DEBUG = false; // To debug this function, set to true
             // Per issue #474 (https://github.com/ioBroker/ioBroker.javascript/issues/474), the used function setObject() executes the callback 
             // before the state is actual created. Therefore, we use a setTimeout and counter as a workaround.
             const DELAY = 50; // Delay in milliseconds (ms). Increase this to 100, if it is not working.
          
             // Validate "where"
             if (where.endsWith('.')) where = where.slice(0, -1); // Remove trailing dot
             if ( (where.match(/^((javascript\.([1-9][0-9]|[0-9]))$|0_userdata\.0$)/) == null) ) {
                 log('This script does not support to create states under [' + where + ']', 'error');
                 return;
             }
          
             // Prepare "statesToCreate" since we also allow a single state to create
             if(!Array.isArray(statesToCreate[0])) statesToCreate = [statesToCreate]; // wrap into array, if just one array and not inside an array
          
             // Add "where" to STATES_TO_CREATE
             for (let i = 0; i < statesToCreate.length; i++) {
                 let lpPath = statesToCreate[i][0].replace(/\.*\./g, '.'); // replace all multiple dots like '..', '...' with a single '.'
                 lpPath = lpPath.replace(/^((javascript\.([1-9][0-9]|[0-9])\.)|0_userdata\.0\.)/,'') // remove any javascript.x. / 0_userdata.0. from beginning
                 lpPath = where + '.' + lpPath; // add where to beginning of string
                 statesToCreate[i][0] = lpPath;
             }
          
             if (where != '0_userdata.0') {
                 // Create States under javascript.x
                 let numStates = statesToCreate.length;
                 statesToCreate.forEach(function(loopParam) {
                     if (LOG_DEBUG) log('[Debug] Now we are creating new state [' + loopParam[0] + ']');
                     let loopInit = (loopParam[1]['def'] == undefined) ? null : loopParam[1]['def']; // mimic same behavior as createState if no init value is provided
                     createState(loopParam[0], loopInit, force, loopParam[1], function() {
                         numStates--;
                         if (numStates === 0) {
                             if (LOG_DEBUG) log('[Debug] All states processed.');
                             if (typeof callback === 'function') { // execute if a function was provided to parameter callback
                                 if (LOG_DEBUG) log('[Debug] Function to callback parameter was provided');
                                 return callback();
                             } else {
                                 return;
                             }
                         }
                     });
                 });
             } else {
                 // Create States under 0_userdata.0
                 let numStates = statesToCreate.length;
                 let counter = -1;
                 statesToCreate.forEach(function(loopParam) {
                     counter += 1;
                     if (LOG_DEBUG) log ('[Debug] Currently processing following state: [' + loopParam[0] + ']');
                     if( ($(loopParam[0]).length > 0) && (existsState(loopParam[0])) ) { // Workaround due to https://github.com/ioBroker/ioBroker.javascript/issues/478
                         // State is existing.
                         if (WARN && !force) log('State [' + loopParam[0] + '] is already existing and will no longer be created.', 'warn');
                         if (!WARN && LOG_DEBUG) log('[Debug] State [' + loopParam[0] + '] is already existing. Option force (=overwrite) is set to [' + force + '].');
                         if(!force) {
                             // State exists and shall not be overwritten since force=false
                             // So, we do not proceed.
                             numStates--;
                             if (numStates === 0) {
                                 if (LOG_DEBUG) log('[Debug] All states successfully processed!');
                                 if (typeof callback === 'function') { // execute if a function was provided to parameter callback
                                     if (LOG_DEBUG) log('[Debug] An optional callback function was provided, which we are going to execute now.');
                                     return callback();
                                 } else {  // no callback, return anyway
                                     return;
                                 }
                             } else {
                                 // We need to go out and continue with next element in loop.
                                 return; // https://stackoverflow.com/questions/18452920/continue-in-cursor-foreach
                             }
                         } // if(!force)
                     }
          
                     // State is not existing or force = true, so we are continuing to create the state through setObject().
                     let obj = {};
                     obj.type = 'state';
                     obj.native = {};
                     obj.common = loopParam[1];
                     setObject(loopParam[0], obj, function (err) {
                         if (err) {
                             log('Cannot write object for state [' + loopParam[0] + ']: ' + err);
                         } else {
                             if (LOG_DEBUG) log('[Debug] Now we are creating new state [' + loopParam[0] + ']')
                             let init = null;
                             if(loopParam[1].def === undefined) {
                                 if(loopParam[1].type === 'number') init = 0;
                                 if(loopParam[1].type === 'boolean') init = false;
                                 if(loopParam[1].type === 'string') init = '';
                             } else {
                                 init = loopParam[1].def;
                             }
                             setTimeout(function() {
                                 setState(loopParam[0], init, true, function() {
                                     if (LOG_DEBUG) log('[Debug] setState durchgeführt: ' + loopParam[0]);
                                     numStates--;
                                     if (numStates === 0) {
                                         if (LOG_DEBUG) log('[Debug] All states processed.');
                                         if (typeof callback === 'function') { // execute if a function was provided to parameter callback
                                             if (LOG_DEBUG) log('[Debug] Function to callback parameter was provided');
                                             return callback();
                                         }
                                     }
                                 });
                             }, DELAY + (20 * counter) );
                         }
                     });
                 });
             }
          }
          
          //####################################################################################
          
          let statesToCreate = [     
             ['Heizungen.Anzahl_Heizungen_aktiv', {'name':'Anzahl Heizungen aktiv', 'type':'number', 'read':true, 'write':true, 'role':'number'}],
          ];
          createUserStates(anlegen_in,false, statesToCreate)
          
          //Funktion main mit Verzögerung aufrufen
          timeout = setTimeout(function () {
          main();   
          }, 1000);
          

          aktuell verwende ich sowas hier

          async function createUserStates(where, statesToCreate) {
            let dp, idKey;
            for(let key of statesToCreate){
            	idKey = where + '.' + key[0];
                dp = key[1];
            	if (!(await existsStateAsync(idKey))) {
            		await createStateAsync(idKey, dp);
            	}
            }
          }
          
          //Telegram Nachrichtenversand
          let statesToCreate = [
             ['Telegram_Anruferversand.01_Telegram_Versand_komplett', {'name':'Telegram Versand komplett', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':true, "states": {"false": "aus","true": "an"}}],    
             ['Telegram_Anruferversand.02_Telegram_Versand_MSN_Privat', {'name':'Telegram Versand MSN Privat', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':true, "states": {"false": "aus","true": "an"}}],  
             ['Telegram_Anruferversand.03_Telegram_Versand_MSN_Beruf', {'name':'Telegram Versand MSN Beruf', 'type':'boolean', 'read':true, 'write':true, 'role':'switch', 'def':true, "states": {"false": "aus","true": "an"}}],  
          ];
          await createUserStates(anlegen_in, statesToCreate);
          
          main()
          

          Edit: die angezeigten issue sind Links aus dem Script von Mic

          Mic-M created this issue in ioBroker/ioBroker.javascript

          closed setObject() function: callback not working as intended. #474

          Mic-M created this issue in ioBroker/ioBroker.javascript

          closed setObject() function: callback not working as intended. #474

          Mic-M created this issue in ioBroker/ioBroker.javascript

          closed 0_userdata.0: existsState() vs. $-Selector $().length after state deletion #478

          N paul53 2 Replies Last reply Reply Quote 1
          • N
            Nordischerjung @dslraser last edited by

            @dslraser danke für die ausführliche Antwort, kann ich das nachträglich am DP ändern?

            dslraser 1 Reply Last reply Reply Quote 0
            • dslraser
              dslraser Forum Testing Most Active @Nordischerjung last edited by

              @nordischerjung sagte in Remanente Speicherung von User Datenpunkte:

              @dslraser danke für die ausführliche Antwort, kann ich das nachträglich am DP ändern?

              Zeig mal welches Script zum Datenpunkte erstellen Du verwendest.

              N 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @dslraser last edited by paul53

                @dslraser sagte: Auf true werden die Datenpunkte gnadenlos überschrieben/neu geschrieben.

                Wenn das Skript noch aktiv ist, sollte es deaktiviert werden.

                1 Reply Last reply Reply Quote 0
                • N
                  Nordischerjung @dslraser last edited by

                  @dslraser Moin, das hier ist es, bei Bedarf aktiviere ich die oberen Zeilen demnestprechend mit neune Namen etc.

                  //####################---Number---####################
                  //createUserDataState('Grill.Fleischtemperatur1', {'name':'Fleischtemperatur1', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0});
                  //createUserDataState('Grill.Fleischtemperatur2', {'name':'Fleischtemperatur2', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0});
                  //createUserDataState('Grill.Grilltemperatur', {'name':'Grilltemperatur', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0});
                  
                  //####################---String---####################
                  //createUserDataState('vis.Stundenplan.Toni.Montag.Stunde1', {'name':'Montag Stunde1', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'1'});
                  //createUserDataState('vis.AdapterStatus.restartTrigger', {'name':'Adapter_restartTrigger', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'noch leer'});
                  
                  //####################---Bool---####################
                  //createUserDataState('Test.State1', {'name':'State1', 'type':'boolean', 'read':true, 'write':true, 'role':'state', 'def':false, "smartName": {"de": "State","smartType": "state"}});
                  
                   log(new Date());
                  
                  /**
                  
                   * Creates a state under 0_userdata.0
                   * Source: https://forum.iobroker.net/topic/26839/
                   * Thanks to ioBroker forum user "paul53" for the basis of this function.
                   * Version: 0.1 - Mic
                   * @param {string} stateId        State ID to be created under '0_userdata.0', like 'LivingRoom.Lights.Sideboard.Brightness'
                   * @param {object} param          Object with state details. Template: {'name':'NAME', 'type':'number', 'unit':'UNIT', 'min':MIN, 'max':MAX, 'read':true, 'write':true, 'role':'ROLE', 'def':DEFAULT }
                   * @param {boolean} [warn=false]  Optional. Throws warning in log, if state is already existing. Default is false, so no warning in log, if state exists
                   */
                  
                  function createUserDataState(stateId, param, warn) {
                  
                      if (warn === undefined) warn = false;
                      const WHERE = '0_userdata.0';
                      stateId = (stateId.startsWith(WHERE)) ? stateId.substring(WHERE.length) : stateId; // remove WHERE from beginning of string
                      stateId = (stateId.startsWith('.')) ? stateId.substring(1) : stateId; // remove first "."
                      const FULL_STATE_ID = (WHERE.endsWith('.') ? WHERE : WHERE + '.') + stateId; // Final state
                  
                      if($(FULL_STATE_ID).length) {
                  
                          if(warn) log('State [' + FULL_STATE_ID + '] is already existing and will no longer be created.', 'warn');
                          return;
                      }
                  
                  
                      let obj = {};
                      obj.type = 'state';
                      obj.common = param;
                      setObject(FULL_STATE_ID, obj, function (err) {
                      
                        if (err) {
                              log('Cannot write object: ' + err);
                          } else {
                              let init = null;
                  
                              if(param.def === undefined) {
                  
                                  if(param.type === 'number') init = 0;
                  
                                  if(param.type === 'boolean') init = false;
                  
                                  if(param.type === 'string') init = 'noch leer';
                  
                              } else {
                  
                                  init = param.def;
                  
                              }
                  
                              setTimeout(function() { setState(FULL_STATE_ID, init, true); }, 1000); // see https://forum.iobroker.net/post/334331
                  
                          }
                      });
                  }
                  
                  paul53 dslraser 3 Replies Last reply Reply Quote 0
                  • paul53
                    paul53 @Nordischerjung last edited by paul53

                    @nordischerjung
                    Du verwendest falsche Rollen, was allerdings nicht der Grund für fehlende Werte nach Neustart ist.

                    1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @Nordischerjung last edited by dslraser

                      @nordischerjung sagte in Remanente Speicherung von User Datenpunkte:

                      @dslraser Moin, das hier ist es, bei Bedarf aktiviere ich die oberen Zeilen demnestprechend mit neune Namen etc.

                      //####################---Number---####################
                      //createUserDataState('Grill.Fleischtemperatur1', {'name':'Fleischtemperatur1', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0});
                      //createUserDataState('Grill.Fleischtemperatur2', {'name':'Fleischtemperatur2', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0});
                      //createUserDataState('Grill.Grilltemperatur', {'name':'Grilltemperatur', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0});
                      
                      //####################---String---####################
                      //createUserDataState('vis.Stundenplan.Toni.Montag.Stunde1', {'name':'Montag Stunde1', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'1'});
                      //createUserDataState('vis.AdapterStatus.restartTrigger', {'name':'Adapter_restartTrigger', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'noch leer'});
                      
                      //####################---Bool---####################
                      //createUserDataState('Test.State1', {'name':'State1', 'type':'boolean', 'read':true, 'write':true, 'role':'state', 'def':false, "smartName": {"de": "State","smartType": "state"}});
                      
                       log(new Date());
                      
                      /**
                      
                       * Creates a state under 0_userdata.0
                       * Source: https://forum.iobroker.net/topic/26839/
                       * Thanks to ioBroker forum user "paul53" for the basis of this function.
                       * Version: 0.1 - Mic
                       * @param {string} stateId        State ID to be created under '0_userdata.0', like 'LivingRoom.Lights.Sideboard.Brightness'
                       * @param {object} param          Object with state details. Template: {'name':'NAME', 'type':'number', 'unit':'UNIT', 'min':MIN, 'max':MAX, 'read':true, 'write':true, 'role':'ROLE', 'def':DEFAULT }
                       * @param {boolean} [warn=false]  Optional. Throws warning in log, if state is already existing. Default is false, so no warning in log, if state exists
                       */
                      
                      function createUserDataState(stateId, param, warn) {
                      
                          if (warn === undefined) warn = false;
                          const WHERE = '0_userdata.0';
                          stateId = (stateId.startsWith(WHERE)) ? stateId.substring(WHERE.length) : stateId; // remove WHERE from beginning of string
                          stateId = (stateId.startsWith('.')) ? stateId.substring(1) : stateId; // remove first "."
                          const FULL_STATE_ID = (WHERE.endsWith('.') ? WHERE : WHERE + '.') + stateId; // Final state
                      
                          if($(FULL_STATE_ID).length) {
                      
                              if(warn) log('State [' + FULL_STATE_ID + '] is already existing and will no longer be created.', 'warn');
                              return;
                          }
                      
                      
                          let obj = {};
                          obj.type = 'state';
                          obj.common = param;
                          setObject(FULL_STATE_ID, obj, function (err) {
                          
                            if (err) {
                                  log('Cannot write object: ' + err);
                              } else {
                                  let init = null;
                      
                                  if(param.def === undefined) {
                      
                                      if(param.type === 'number') init = 0;
                      
                                      if(param.type === 'boolean') init = false;
                      
                                      if(param.type === 'string') init = 'noch leer';
                      
                                  } else {
                      
                                      init = param.def;
                      
                                  }
                      
                                  setTimeout(function() { setState(FULL_STATE_ID, init, true); }, 1000); // see https://forum.iobroker.net/post/334331
                      
                              }
                          });
                      }
                      

                      Wie @paul53 schon geschrieben hat, deaktiviere das Script wenn es noch irgendwo bei Dir läuft. Die Rollen der DP kannst Du auch nachträglich korrigieren.
                      Und diese Version von dem Script von Mic ist eine der ersten....Nimm das nicht mehr.

                      * Version: 0.1 - Mic
                      

                      Edit: Hier ist das letzte Script von Mic, wenn Du es weiter verwenden willst. Da steht übrigens unter 2.:

                      Screenshot_20210901-123800_Chrome.jpg

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

                      1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active @Nordischerjung last edited by dslraser

                        @nordischerjung
                        Hier ein Vorschlag/Beispiel, welches ich aktuell verwende. (Blockly mit JS Funktion)

                        Bildschirmfoto 2021-09-01 um 14.15.41.png

                        in der Funktion stehen diese Beispiele

                        Bildschirmfoto 2021-09-01 um 14.16.10.png

                        Daraus wird dann das

                        Bildschirmfoto 2021-09-01 um 14.16.39.png

                        Kannst Du beliebig erweitern und immer mit laufen lassen. Die Datenpunkte werden durch diese Funktion nicht neu initialisiert oder überschrieben.

                        EDIT:

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="?]t#NblY,7nezpH^U@A%">anlegen_in</variable>
                         </variables>
                         <block type="procedures_defcustomnoreturn" id="Q6*2#9#;FNeNnQsQ=FO*" x="13" y="13">
                           <mutation statements="false"></mutation>
                           <field name="NAME">Datenpunkte_anlegen</field>
                           <field name="SCRIPT">YXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclN0YXRlcyh3aGVyZSwgc3RhdGVzVG9DcmVhdGUpIHsKICAgbGV0IGRwLCBpZEtleTsKICAgZm9yKGxldCBrZXkgb2Ygc3RhdGVzVG9DcmVhdGUpewogICAJaWRLZXkgPSB3aGVyZSArICcuJyArIGtleVswXTsKICAgICAgIGRwID0ga2V5WzFdOwogICAJaWYgKCEoYXdhaXQgZXhpc3RzU3RhdGVBc3luYyhpZEtleSkpKSB7CiAgIAkJYXdhaXQgY3JlYXRlU3RhdGVBc3luYyhpZEtleSwgZHApOwogICAJfQogICB9Cn0KLy9EYXRlbnB1bmt0ZSBhbmxlZ2VuCgpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbCiAgICBbJ1Rlc3QuRGF0ZW5wdW5rdGUuMDFfWmFobCcsIHsnbmFtZSc6J0RQIGFscyBaYWhsLWluaXRpYWxpc2llcnQgbWl0IDAnLCAndHlwZSc6J251bWJlcicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdtaW4nOjAsICdtYXgnOjEwMCwgJ3JvbGUnOid2YWx1ZScsICdkZWYnOjB9XSwgICAgCiAgICBbJ1Rlc3QuRGF0ZW5wdW5rdGUuMDJfVGV4dCcsIHsnbmFtZSc6J0RQIGFscyBUZXh0LWluaXRpYWxpc2llcnQgbWl0IG5vY2ggbGVlcicsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOid0ZXh0JywgJ2RlZic6J25vY2ggbGVlcid9XSwgICAgCiAgICBbJ1Rlc3QuRGF0ZW5wdW5rdGUuMDNfQnV0dG9uJywgeyduYW1lJzonRFAgYWxzIEJ1dHRvbi1pbml0aWFsaXNpZXJ0IG1pdCB0cnVlJywgJ3R5cGUnOidib29sZWFuJywgJ3JlYWQnOmZhbHNlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonYnV0dG9uJywgJ2RlZic6dHJ1ZX1dLCAgICAKICAgIFsnVGVzdC5EYXRlbnB1bmt0ZS4wNF9Td2l0Y2gnLCB7J25hbWUnOidEUCBhbHMgU3dpdGNoLWluaXRpYWxpc2llcnQgbWl0IGF1cycsICd0eXBlJzonYm9vbGVhbicsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3dpdGNoJywgJ2RlZic6IGZhbHNlLCAnc3RhdGVzJyA6IHt0cnVlOiAnYW4nLGZhbHNlOiAnYXVzJ319XSwKCl07CmF3YWl0IGNyZWF0ZVVzZXJTdGF0ZXMoYW5sZWdlbl9pbiwgc3RhdGVzVG9DcmVhdGUpOwoKbWFpbigp</field>
                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                         </block>
                         <block type="comment" id="Zyfx~f!lZJKccy0M/1%/" x="13" y="63">
                           <field name="COMMENT">0_userdata.0 oder javascript.x (x=Instanznummer)</field>
                           <next>
                             <block type="variables_set" id="~JE=DBL)b%5zA!oAD.H2">
                               <field name="VAR" id="?]t#NblY,7nezpH^U@A%">anlegen_in</field>
                               <value name="VALUE">
                                 <block type="text" id="(DT98%_mBJ0f}/3*=`Fk">
                                   <field name="TEXT">javascript.0</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="procedures_callcustomnoreturn" id="[?`_=t?ye79~x$(-ASft">
                                   <mutation name="Datenpunkte_anlegen"></mutation>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                         <block type="procedures_defnoreturn" id="jVn7@(nxUAdLkS^LJ|If" x="13" y="163">
                           <field name="NAME">main</field>
                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                           <statement name="STACK">
                             <block type="debug" id="i0Upf2]MA=^5z*@wA+1~">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="d^63CE7[0vse5f=*X9dG">
                                   <field name="TEXT">test</field>
                                 </shadow>
                                 <block type="text_join" id="]_j.+ICT$YFJ/k?.7;)V">
                                   <mutation items="3"></mutation>
                                   <value name="ADD0">
                                     <block type="text" id="=3|mwnPzP:|nfv=jLHUB">
                                       <field name="TEXT">Ich bin jetzt in der Funktion main.</field>
                                     </block>
                                   </value>
                                   <value name="ADD1">
                                     <block type="text" id="(q;@gX5FQ*4Z;(f?!Z0N">
                                       <field name="TEXT"> Alle Datenpunkte wurden erstellt.</field>
                                     </block>
                                   </value>
                                   <value name="ADD2">
                                     <block type="text" id="zsA#`lkTk.;3,{P~H?CR">
                                       <field name="TEXT">Ab hier kommt dann Dein eigentliches Blockly.</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </statement>
                         </block>
                        </xml>
                        

                        Dieser Haken muß im Javascript Adapter drinn sein

                        Bildschirmfoto 2021-09-01 um 14.35.20.png

                        paul53 N 2 Replies Last reply Reply Quote 0
                        • paul53
                          paul53 @dslraser last edited by

                          @dslraser sagte: in der Funktion stehen diese Beispiele

                          Dann sollte man gleich in Javascript programmieren und nicht mit Blockly.

                          dslraser 1 Reply Last reply Reply Quote 0
                          • dslraser
                            dslraser Forum Testing Most Active @paul53 last edited by

                            @paul53 sagte in Remanente Speicherung von User Datenpunkte:

                            @dslraser sagte: in der Funktion stehen diese Beispiele

                            Dann sollte man gleich in Javascript programmieren und nicht mit Blockly.

                            Ja, hast ja Recht, wenn man es kann...Ich kann nur etwas Blockly und wenig Javascript, deshalb mache ich es so. Es war/ist ja auch nur ein Vorschlag.

                            paul53 1 Reply Last reply Reply Quote 0
                            • N
                              Nordischerjung @dslraser last edited by Nordischerjung

                              @dslraser Ja super danke, das nehme ich dann. Jetzt hab ich auch verstanden was du meinst. Das Script, das ich benutze bis dato, ist immer inaktiv. Es sei denn ich benötige einen D,.dDann habe ich das Script einmal gestartet und wieder gestoppt, nachdem ich den entsprechenden DP oben eingetragen hatte.

                              Achso, hast du die Funktion auch als Text für mich?

                              dslraser 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @dslraser last edited by

                                @dslraser sagte: Ich kann nur etwas Blockly und wenig Javascript, deshalb mache ich es so.

                                Was ich sagen wollte: Für eine Javscript-Funktion innerhalb von Blockly ist diese Funktion zu komplex.

                                dslraser 1 Reply Last reply Reply Quote 0
                                • dslraser
                                  dslraser Forum Testing Most Active @Nordischerjung last edited by

                                  @nordischerjung sagte in Remanente Speicherung von User Datenpunkte:

                                  Achso, hast du die Funktion auch als Text für mich?

                                  ich habe den Export hier eingefügt. Hatte ich vergessen.

                                  1 Reply Last reply Reply Quote 0
                                  • dslraser
                                    dslraser Forum Testing Most Active @paul53 last edited by

                                    @paul53 sagte in Remanente Speicherung von User Datenpunkte:

                                    Was ich sagen wollte: Für eine Javscript-Funktion innerhalb von Blockly ist diese Funktion zu komplex.

                                    Diese Funktion habe ich auch nicht selbst geschrieben, die stammt von hier

                                    Grundsätzlich geht ja auch der Blockly Baustein, aber was mich daran eben bisher stört, das die erstellten Datenpunkte (wenn es neue sind) erst beim zweiten Blocklystart verwendet werden können, wenn denn alles in einem Blockly passieren soll.

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @dslraser last edited by

                                      @dslraser
                                      Ich würde nur eine allgemein gehaltene Javascript-Funktion verwenden, denn den Rest darum kann man in Blockly realisieren.

                                      Bild_2021-09-01_160535.png

                                      N 1 Reply Last reply Reply Quote 0
                                      • N
                                        Nordischerjung @paul53 last edited by

                                        @paul53 @dslraser ich benutze das Script eigentlich nur händisch, name etc eintragen, start, stop. Fertig. Kann ich die anderen damit überschreiben damit die gespeichert bleiben nach einem neustart?

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Nordischerjung last edited by

                                          @nordischerjung sagte: Kann ich die anderen damit überschreiben damit die gespeichert bleiben nach einem neustart?

                                          Werte von Datenpunkten, die nicht in einem Skript überschrieben werden, bleiben bei einem Neustart erhalten.

                                          N 1 Reply Last reply Reply Quote 0
                                          • N
                                            Nordischerjung @paul53 last edited by

                                            @paul53 Moin,

                                            so aus dem nichts ist es wieder passiert, alle DPs für die beiden Stundenpläne haben "null" stehen. Kein Update, keine Änderung an irgend etwas. Dies DPs werden nirgens in einem Script oder so benutzt. Die DPs sind lediglich in der VIS im Widget "jqui-Input". Was kann das sein?

                                            f3429cc8-d328-4741-b4a2-8e3d6c3b21f3-grafik.png

                                            paul53 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            626
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            datenpunkte speichern
                                            3
                                            23
                                            1145
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo