Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. setStateAsync in externem js-file evtl mit require??

    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

    setStateAsync in externem js-file evtl mit require??

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

      Hallo zusammen!
      Ich habe eine JS-Funktion, die eine ausgelagerte Funktion aufruft:

      // Beschreibe diese Funktion …
      async function mywrite(cmd) {
          my = require('../../../iobroker-data/modules/mod1.js');
          result = await my.mywrite(cmd);
      // weiteres
          return result;
      }
      

      die Datei mod1.js lautet

      async function mywrite(cmd) { 
      // do some stuff
      // hier soll der iobroker-State 0_userdata.0.errstate auf true gesetzt werden, nur wie geht das????
        return myresult; 
      }
      
      

      Wie setzt man in dieser augelagerten Datei einen iobroker-state 0_userdata.0.errstate??
      Die Funktionen setState und setStateAsync sind in der ausgelagerten Datei nicht verfügbar!
      Ich vermute, man muss am Anfang der ausgelagerten Datei ein require einfügen. Nur welches Module und wie genau mache ich das?
      Ich habe im Netz mir einen Wolf gesucht, daher wäre ich dankbar über

      1. Eine Lösung
      2. Einen Hinweis nach welchen Stichworten ich hätte suchen müssen, um die Lösung selbst herauszufinden.

      Danke!

      Warum die ausgelagerte Datei? Weil die Funktion dort sehr lange ist und immer mal wieder geändert werden muss und in vielen Skripten Verwendung findet. Mir ist bekannt, dass ich den javascript-Adapter nach jeder Änderung dieser ausgelagerten Datei neu starten muss. Und bisher möchte ich mich nicht in die Adapter-Entwicklung einarbeiten, außer es geht nicht anders.

      Asgothian OliverIO 2 Replies Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @Axel21 last edited by Asgothian

        @axel21 ich würde das so lösen:

        async function mywrite(cmd, setStateFunc) { 
        // do some stuff
          if (typeof setStateFunc === "function") await setStateFunc('0_userdata.0.errstate', true)
        // hier soll der iobroker-State 0_userdata.0.errstate auf true gesetzt werden, nur wie geht das????
          return myresult; 
        }
        

        Aufruf mit

        await mywrite(cmd, setStateAsync);
        

        A.

        1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @Axel21 last edited by

          @axel21

          wenn man globalThis mit übergibt, bekommt man einen zeiger auf den aktuellen kontext in dem dann alle befehle verfübar sind

          function test(iob) {
              console.log(iob);
              iob.setStateAsync(......
          }
          test(globalThis);
          
          T 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @OliverIO last edited by

            @oliverio
            ist das neue? letztes oder vorletztes Jahr ging das noch mit this

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @ticaki last edited by

              @ticaki
              Habe jetzt erst danach geschaut.
              Weiß nicht wann das eingeführt wurde.

              this könnte schwierig sein, wenn du dich in einem objekt kontext befindest. da ist dann this uU nicht identisch.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              470
              Online

              31.9k
              Users

              80.1k
              Topics

              1.3m
              Posts

              javascript
              4
              5
              29
              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