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

                                419
                                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