Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Fehler bei per script angelegten Datenpunkten (gelöst)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Fehler bei per script angelegten Datenpunkten (gelöst)

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

      Hi zusammen,

      ich möchte regelmäßig eine Reihe (28) Datenpunkte in einer Struktur anlegen.
      Klappt insoweit, dass die DP im ObjectBrowser dargestellt werden, aber ich kann weder per Script noch manuell hier Werte setzen.

      Prozess:
      Ich fange von hinten an:
      In einer Funktion ist ein JScript hinterlegt. Ich hab das hier gefunden, es umgeht schonmal einige "Risiken":

      Script Anlage Datenpunkte

      async function _createObject(id, typ, name='', desc='') {
         try {
             if(existsObject(id)) log('Objekt: ' + id + ' existiert bereits!', 'warn');
             else {
                 const obj = {
                     type: typ,
                     common: {
                         name: name,
                         desc: desc
                     },
                     native: {}
                 }
                 if (!id || typeof id !== 'string') {
                     throw new Error('Fehler in _createObject Parameter 1 ist kein string')
                 }
                 if (!(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt'))) {
                     throw new Error('Fehler in _createObject Parameter 1: ' + id.split('.').slice(0,2).join('.') + ' nicht erlaubt')
                 } 
                 await setObjectAsync(id, obj);
             }
             return Promise.resolve(true);
         } catch (error) {
             log(error + '!', 'error')
         }
         return Promise.resolve(false);
      

      In einem Blockly berechne ich verschiedene Dinge und habe in einer weiteren Funktion den Aufruf des o.g. Scrips abgelegt:

      let v_Pfad_p = "0_userdata.0.Calendar.Aufgaben.PENDING"
      var v_Pfad_s
      v_Pfad_s = v_ID
      v_Pfad = v_Pfad_p + "." + v_Pfad_s
      
      _createObject(v_Pfad, v_Type, name=v_Name, desc=v_Desc)
      

      ich lege mir im Blockly eine Liste der DP an und arbeite die mittels Schleife (auch in einer Funktion) ab.
      In der Funktion bereite ich die zu übergebenden Parameter auf:


      23-10-2024_14-15-57.jpg

      So schauen die DP aus:


      23-10-2024_14-18-52.jpg

      und so im Detail:

       {
        "type": "",
        "common": {
          "name": "AKTIV",
          "desc": "Daten-Punkt für Aufgabe #22"
        },
        "native": {},
        "from": "system.adapter.javascript.0",
        "user": "system.user.admin",
        "ts": 1729638974887,
        "_id": "0_userdata.0.Calendar.Aufgaben.PENDING.LORENZ.A22_LORENZ_23_10_24.AKTIV",
        "acl": {
          "object": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      

      Was mir auffällt:
      Wenn ich den Punkt manuell anlege, sieht er so aus:

      {
       "common": {
         "name": "AKTIV",
         "desc": "Manuell erzeugt",
         "role": "state",
         "type": "boolean",
         "read": true,
         "write": true,
         "def": false
       },
       "type": "state",
       "native": {},
       "from": "system.adapter.admin.0",
       "user": "system.user.admin",
       "ts": 1729535227931,
       "_id": "0_userdata.0.Calendar.Aufgaben.STEUERUNG.VIS.INPUTMASK.AKTIV",
       "acl": {
         "object": 1636,
         "state": 1636,
         "owner": "system.user.admin",
         "ownerGroup": "system.group.administrator"
       }
      

      Was fehlt ? Wo liegt denn das Problem? Mehr Parameter für die Funktion, welche in der Vorlage nicht waren?

      Viele Grüße
      und Danke vorab!

      Michael

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

        @mottimuc sagte: Wo liegt denn das Problem?

        Du musst "type" und "common.type" unterscheiden. Ein Datenpunkt ist immer vom Typ "state" und "common.type" enthält den Datenpunkt-Typ ("string", "number", "boolean", ...).
        Weshalb verwendest du nicht createState() zur Erstellung der Datenpunkte?

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

          @paul53

          D A N K E!!! Das war es!!

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

          Support us

          ioBroker
          Community Adapters
          Donate

          936
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          2
          3
          155
          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