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

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • 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 @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
                                      • 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

                                        825
                                        Online

                                        32.0k
                                        Users

                                        80.4k
                                        Topics

                                        1.3m
                                        Posts

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