Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Raum und Funktion unter 0_userdata anpassen

    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

    Raum und Funktion unter 0_userdata anpassen

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

      Hallo zusammen,

      ich versuche gerade ein JavaScript zu bauen, dass mir automatisch alle Fensterkontakte unter 0_userdata.0.FensterOffenDelayed anlegt und die Zustände dort bei jedem öffnen oder schließen eines Kontakts aktualisiert.
      Soweit so gut....

      Aktuell hänge ich an dem Punkt, den Datenpunkten den korrekten Raum und die Funktion "FensterOffenState" zuzuweisen.
      Manuell über die GUI geht das ohne Probleme. Nur im JS bekomme ich das nicht hin.

      iobroker_2.png iobroker_1.png

      Auslesen klappt mit folgendem Befehl:

      const dataPointPath_Buero = "0_userdata.0.FensterOffenDelayed.DachfensterBüro";
      const dataPoint = getObject(dataPointPath_Buero, 'functions').enumNames[0]
      

      Aber wie kann ich an diese Stelle schreiben?

      Ich hoffe mal es kann mir jemand einen Tipp geben 🙂

      Grüße,
      Stefan

      T 1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer @slubitz last edited by ticaki

        @slubitz

        bitte alles was text ist in Codetags packen, auch object Definition 🙂 Falls es keiner beantwortet, bin in 30min zu hause, dann suche ich dir code raus. Falls ich welchen habe, weiß gerade nicht ob ich Funktionen zuweise 😄

        1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer last edited by ticaki

          async function addToEnum(enumName, newStateId) {
              if (!await existsObjectAsync(newStateId)) {
                  log(newStateId + ' not exist!', 'warn')
                  return;
              }
              let myEnum = await getObjectAsync(enumName);
              if (myEnum) {
                  let pos = myEnum.common.members.indexOf(newStateId);
                  if (pos === -1) {
                      try {
                          myEnum.common.members.push(newStateId);
                          myEnum.from = "system.adapter." + "0";
                          myEnum.ts = new Date().getTime();
                          //@ts-ignore
                          await setObjectAsync(enumName, myEnum);           
                      } catch (e) {log(e + ' add id: ' + newStateId,'error')}
                  }
              }
          }
          

          so wirds benutzt:

          const enumFunctions = 'online' 
          
          ...
          
                 for (const idPart of watchingDevice.states) {
                      let s = Array.prototype.slice.apply($('state(id='+idPart+')'))
                      for (const id of s) {
                          await addToEnum('enum.functions.'+enumFunctions,id)
                      }
                  }
          

          Ich füge dort States die ich raus gefiltert habe, der Gruppe überwachung hinzu. Ist auch 2 Jahre alt, heute geht ja selector.toArray()

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

          Support us

          ioBroker
          Community Adapters
          Donate

          866
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

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