Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Daten persistieren als Datenpunkt

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Daten persistieren als Datenpunkt

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      warhammer73 last edited by

      Hallo,

      ich benötige ein Script das aus diversen Unterobjekten Daten zusammensammelt. Das werde ich wohl hinbekommen.
      Diese konsolidierten Daten und einen Wiederaufsetzpunkt würde ich gern sicher in ein Objekt schreiben.
      Die Frage die sich nun stellt: Wie bekomme ich mit Blockly ein neues Objekt im iobroker erzeugt (Inkl. entsprechender Struktur, also Ordner und zwei enthaltene Objekte)?

      liv-in-sky BananaJoe 2 Replies Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @warhammer73 last edited by

        @warhammer73 bin mir nicht sicher, ob ich dich richtig verstanden habe

        aber als beispiel mal, wie du ein json (object) bekommst von einer datenstruktur:

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable id="(mbM.}pb*o)hnP%n?KpO">myResult</variable>
           <variable id="uNrmRi0)?Yzo7?:aoRR{">obj1</variable>
           <variable id="8LreGt2Rb,6#/T{HBSDH">aState</variable>
           <variable id="O2gOJpw3.*t]LA@xz|75">aObject</variable>
           <variable id="-H5Gkjb11!0lD-#vTf`y">i</variable>
         </variables>
         <block type="procedures_defcustomreturn" id="_7aF-!Dbk9i)y^3/_G?t" x="737" y="162">
           <mutation statements="false">
             <arg name="obj1" varid="uNrmRi0)?Yzo7?:aoRR{"></arg>
           </mutation>
           <field name="NAME">myState</field>
           <field name="SCRIPT">cmV0dXJuIGdldFN0YXRlQXN5bmMob2JqMSk7</field>
           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         </block>
         <block type="variables_set" id="QX#+$||Ay4kFW=08]+z$" x="38" y="212">
           <field name="VAR" id="(mbM.}pb*o)hnP%n?KpO">myResult</field>
           <value name="VALUE">
             <block type="lists_create_with" id="j:gf00*=ep#g%Y-DcMi~">
               <mutation items="0"></mutation>
             </block>
           </value>
           <next>
             <block type="controls_forEach" id="ASvuYrF.8zuD8i4Qd9;K">
               <field name="VAR" id="-H5Gkjb11!0lD-#vTf`y">i</field>
               <value name="LIST">
                 <block type="selector" id="U}5VE0mWT-ryXhIV%1tO">
                   <field name="TEXT">0_userdata.0.KOR-DatenPunkte.*</field>
                 </block>
               </value>
               <statement name="DO">
                 <block type="lists_setIndex" id="q7!2_^C|iLQTmI2cU|Bh">
                   <mutation at="false"></mutation>
                   <field name="MODE">INSERT</field>
                   <field name="WHERE">LAST</field>
                   <value name="LIST">
                     <block type="variables_get" id="j5c(W`Nz0oT7dCCM}=f]">
                       <field name="VAR" id="(mbM.}pb*o)hnP%n?KpO">myResult</field>
                     </block>
                   </value>
                   <value name="TO">
                     <block type="procedures_callcustomreturn" id="1u)ZIj%,i]@RXGC@kL2s">
                       <mutation name="addObjects">
                         <arg name="aState"></arg>
                         <arg name="aObject"></arg>
                       </mutation>
                       <value name="ARG0">
                         <block type="procedures_callcustomreturn" id="+|xg23d8Br6-|d#=MM,)">
                           <mutation name="myObject">
                             <arg name="obj1"></arg>
                           </mutation>
                           <value name="ARG0">
                             <block type="variables_get" id="1O,$Ab7koM{BEei-}aW0">
                               <field name="VAR" id="-H5Gkjb11!0lD-#vTf`y">i</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <value name="ARG1">
                         <block type="procedures_callcustomreturn" id="}8V7,O6+NvdS)JRdy]fK">
                           <mutation name="myState">
                             <arg name="obj1"></arg>
                           </mutation>
                           <value name="ARG0">
                             <block type="variables_get" id="bu~G%c7XH;xri~N?bP}g">
                               <field name="VAR" id="-H5Gkjb11!0lD-#vTf`y">i</field>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="debug" id="[-Wn/wQ*OSwn)/f95PKX" disabled="true">
                       <field name="Severity">log</field>
                       <value name="TEXT">
                         <shadow type="text" id="a:[0d^^i2P$uWD$iBQ/P">
                           <field name="TEXT">test</field>
                         </shadow>
                         <block type="procedures_callcustomreturn" id="W*oh?GN3h^Jpk]qra5M-">
                           <mutation name="addObjects">
                             <arg name="aState"></arg>
                             <arg name="aObject"></arg>
                           </mutation>
                           <value name="ARG0">
                             <block type="procedures_callcustomreturn" id="bAYAWohIa=N-f:dBg`/E">
                               <mutation name="myObject">
                                 <arg name="obj1"></arg>
                               </mutation>
                               <value name="ARG0">
                                 <block type="variables_get" id="%MIMVZ8Qp^MQd-Y?,UUm">
                                   <field name="VAR" id="-H5Gkjb11!0lD-#vTf`y">i</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <value name="ARG1">
                             <block type="procedures_callcustomreturn" id="8p6L(:lCw9bz[@~BE:4#">
                               <mutation name="myState">
                                 <arg name="obj1"></arg>
                               </mutation>
                               <value name="ARG0">
                                 <block type="variables_get" id="mfyPY@hjr2s])qSC1xh1">
                                   <field name="VAR" id="-H5Gkjb11!0lD-#vTf`y">i</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </next>
                 </block>
               </statement>
               <next>
                 <block type="debug" id="MpTC=A6b7}SG3;{Q6S/y">
                   <field name="Severity">log</field>
                   <value name="TEXT">
                     <shadow type="text" id="+j%zw#BF(h51`p{Mk=)X">
                       <field name="TEXT">test</field>
                     </shadow>
                     <block type="convert_object2json" id="W|a!-w]2n|^z@f7aXION">
                       <field name="PRETTIFY">FALSE</field>
                       <value name="VALUE">
                         <block type="variables_get" id="*,t//]c1(sO+1b@3m5FP">
                           <field name="VAR" id="(mbM.}pb*o)hnP%n?KpO">myResult</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
               </next>
             </block>
           </next>
         </block>
         <block type="procedures_defcustomreturn" id="-j04hnD:N:~/4[Jt1Yo," x="738" y="187">
           <mutation statements="false">
             <arg name="obj1" varid="uNrmRi0)?Yzo7?:aoRR{"></arg>
           </mutation>
           <field name="NAME">myObject</field>
           <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdEFzeW5jKG9iajEpOw==</field>
           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         </block>
         <block type="procedures_defcustomreturn" id="ub+Rlu_Vho9F],gt!Uxp" x="738" y="212">
           <mutation statements="false">
             <arg name="aState" varid="8LreGt2Rb,6#/T{HBSDH"></arg>
             <arg name="aObject" varid="O2gOJpw3.*t]LA@xz|75"></arg>
           </mutation>
           <field name="NAME">addObjects</field>
           <field name="SCRIPT">DQoNCmxldCB0b2dldGhlck9iaj0oew0KICAgICJPYmplY3QiOmFPYmplY3QsDQogICAgICJTdGF0ZSI6YVN0YXRlDQogICAgIA0KDQp9KQ0KDQpyZXR1cm4gdG9nZXRoZXJPYmo7</field>
           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         </block>
        </xml>
        

        Image 227.png

        schaut dann so aus und kann wiederum in einen dp gespeichert werden:

        [
           {
           	"Object": {
           		"val": "sss",
           		"ack": false,
           		"ts": 1667979959538,
           		"q": 0,
           		"from": "system.adapter.admin.1",
           		"user": "system.user.admin",
           		"lc": 1667979959538
           	},
           	"State": {
           		"_id": "0_userdata.0.KOR-DatenPunkte.Test-Ordner.Gas-Verbrauch_JSON",
           		"type": "state",
           		"common": {
           			"name": "0_userdata.0.KOR-DatenPunkte.Test-Ordner.Gas-Verbrauch_JSON",
           			"role": "",
           			"type": "string",
           			"read": true,
           			"write": true,
           			"desc": "Manuell erzeugt",
           			"def": ""
           		},
           		"native": {},
           		"from": "system.adapter.admin.1",
           		"user": "system.user.admin",
           		"ts": 1637504808415,
           		"acl": {
           			"object": 1636,
           			"state": 1636,
           			"owner": "system.user.admin",
           			"ownerGroup": "system.group.administrator"
           		}
           	}
           },
           {
           	"Object": {
           		"val": 0,
           		"ack": true,
           		"ts": 1667979019478,
           		"q": 32,
           		"from": "system.adapter.admin.1",
           		"user": "system.user.admin",
           		"lc": 1667979019478
           	},
           	"State": {
           		"common": {
           			"name": "number",
           			"desc": "Manuell erzeugt",
           			"role": "state",
           			"type": "number",
           			"read": true,
           			"write": true,
           			"def": 0
           		},
           		"type": "state",
           		"native": {},
           		"from": "system.adapter.admin.1",
           		"user": "system.user.admin",
           		"ts": 1667979019468,
           		"_id": "0_userdata.0.KOR-DatenPunkte.Test-Ordner2.number",
           		"acl": {
           			"object": 1636,
           			"state": 1636,
           			"owner": "system.user.admin",
           			"ownerGroup": "system.group.administrator"
           		}
           	}
           }
        ]
        

        Image 228.png

        W 1 Reply Last reply Reply Quote 0
        • W
          warhammer73 @liv-in-sky last edited by

          @liv-in-sky
          Mh, mein Problem ist ja: Ich habe noch keinen Datenpunkt und muss den erst erzeugen.

          In Javascript sollte das mit createstate gehen. Nun ist die Frage ob das auch mit blockly OOTB geht oder ob ich einfach ein Stück in Javascript schreiben muss.

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @warhammer73 last edited by liv-in-sky

            @warhammer73

            am einfachsten legst du einen dp (zeichenkette) irgendwo, wo es paßt, unter 0_userdata.0 .... an - im admin unter object-tab

            datenpunkte im script anlegen, passiert meistens, wenn man ein script weitergeben will - das vereinfacht das ganze

            aber wenn es sein muss - ja, du kannst einen datenpunkt mit blockly erstellen - es gibt einen block dafür im menu, wo auch steuere dp drin liegt

            1 Reply Last reply Reply Quote 0
            • BananaJoe
              BananaJoe Most Active @warhammer73 last edited by

              @warhammer73

              5dfe2875-b579-4605-8d46-911d90e7789a-image.png

              Oben kommt der Pfad des neuen Datenpunkt rein, bei Common was für ein Typ

              // Boolean
              {"type":"boolean","read":"true","write":"true","name":"Switch"}
              // String
              {"type":"string","read":"true","write":"true","name":"Mode (auto/cont)"}
              // Nummer
              {"type":"number","unit":"%","read":"true","write":"false","name":"HumidityCurrent"}
              

              Was bei name steht erscheint auch in der Spalte Name. Weitere Felder kannst du hinzufügen, z.B. unit - bei Nummer ist da ein Beispiel für drin

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

              Support us

              ioBroker
              Community Adapters
              Donate

              818
              Online

              32.0k
              Users

              80.5k
              Topics

              1.3m
              Posts

              3
              5
              174
              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