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.
    • 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
                                    • paul53
                                      paul53 @Nordischerjung last edited by

                                      @nordischerjung sagte: Die DPs sind lediglich in der VIS im Widget "jqui-Input". Was kann das sein?

                                      Mit Vis kenne ich mich nicht aus, habe solch ein Verhalten aber noch nicht beobachtet.

                                      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

                                      957
                                      Online

                                      31.9k
                                      Users

                                      80.2k
                                      Topics

                                      1.3m
                                      Posts

                                      datenpunkte speichern
                                      3
                                      23
                                      1148
                                      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