Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. getState() in Callback von createState() gibt not found

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    481

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

getState() in Callback von createState() gibt not found

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 4 Kommentatoren 737 Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    drefree
    schrieb am zuletzt editiert von
    #1

    Hallo allerseits,

    ich hab eine kurze Frage zu callbacks: Nach meinem Verständnis wird alles in der callback-Funktion erst aufgerufen nachdem der auslösende Befehl vollständig durchgelaufen ist. Beim Testen mit createState() hab ich aber das Problem dass ein getState() immer den Fehler "... not found" zurückgibt. Hier ein einfaches Testskript:

    createState('javascript.0.variables.test', 'test init', {name: 'test Variable'}, function(){
        console.log(getState('javascript.0.variables.test').val)
    })
    

    Hier die dazugehörige Fehlermeldung:

    javascript.0
    	2021-12-15 14:12:23.429	info	script.js.common.Hilfsskripte.test: null
    javascript.0
    	2021-12-15 14:12:23.429	warn	at processImmediate (internal/timers.js:466:21)
    javascript.0
    	2021-12-15 14:12:23.428	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:342:38)
    javascript.0
    	2021-12-15 14:12:23.428	warn	at Object.<anonymous> (script.js.common.Hilfsskripte.test:6:17)
    javascript.0
    	2021-12-15 14:12:23.426	warn	getState "javascript.0.variables.test" not found (3)
    javascript.0
    	2021-12-15 14:12:23.356	info	script.js.common.Hilfsskripte.test: registered 0 subscriptions and 0 schedules
    

    Benutze ich hingegen ein setState im callback gibt es keinen Fehler beim setzen des neues Werts (und der Wert wird auch korrekt geschrieben), die getState-Funktion ist aber immer noch "zu schnell" und kann den State nicht finden. Mache ich etwas falsch oder funktionieren callbacks doch anders als ich dachte? Hoffe jemand kann mir helfen.

    AcguaA 1 Antwort Letzte Antwort
    0
    • D drefree

      Hallo allerseits,

      ich hab eine kurze Frage zu callbacks: Nach meinem Verständnis wird alles in der callback-Funktion erst aufgerufen nachdem der auslösende Befehl vollständig durchgelaufen ist. Beim Testen mit createState() hab ich aber das Problem dass ein getState() immer den Fehler "... not found" zurückgibt. Hier ein einfaches Testskript:

      createState('javascript.0.variables.test', 'test init', {name: 'test Variable'}, function(){
          console.log(getState('javascript.0.variables.test').val)
      })
      

      Hier die dazugehörige Fehlermeldung:

      javascript.0
      	2021-12-15 14:12:23.429	info	script.js.common.Hilfsskripte.test: null
      javascript.0
      	2021-12-15 14:12:23.429	warn	at processImmediate (internal/timers.js:466:21)
      javascript.0
      	2021-12-15 14:12:23.428	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:342:38)
      javascript.0
      	2021-12-15 14:12:23.428	warn	at Object.<anonymous> (script.js.common.Hilfsskripte.test:6:17)
      javascript.0
      	2021-12-15 14:12:23.426	warn	getState "javascript.0.variables.test" not found (3)
      javascript.0
      	2021-12-15 14:12:23.356	info	script.js.common.Hilfsskripte.test: registered 0 subscriptions and 0 schedules
      

      Benutze ich hingegen ein setState im callback gibt es keinen Fehler beim setzen des neues Werts (und der Wert wird auch korrekt geschrieben), die getState-Funktion ist aber immer noch "zu schnell" und kann den State nicht finden. Mache ich etwas falsch oder funktionieren callbacks doch anders als ich dachte? Hoffe jemand kann mir helfen.

      AcguaA Offline
      AcguaA Offline
      Acgua
      schrieb am zuletzt editiert von Acgua
      #2

      Hi,

      Fehlermeldung kommt bei mir auch (JS-Adapter v5.2.16, node.js 14.17.1).

      Dein Aufbau steht ja so in der Doku als "short type":

      createState('myVariable', 1, {name: 'My own variable', unit: '°C'}) - create variable if does not exist with specific name and units

      Was geht ist, wenn du initialValue im "Common"-Teil in def (=Default) übergibst.
      Hier ein Beispiel mit Callback, und ein zweites mit async/await.

      const state123 = '0_userdata.0.test123';
      createState(state123, {name:'test variable', def:'test init', type:'string', read:true, write:true, role:'state' }, (obj) => {
          log(`Value of ${state123}: '${getState(state123).val}'`);
      })
      
      // Und noch Test per async/await
      test();
      async function test() {
      
          try {
      
              const state456 = '0_userdata.0.test456';
              await createStateAsync(state456, {name:'test variable', type:'string', read:true, write:true, role:'state', def:'test init' });
              const r = await getStateAsync(state456);
              log(`Value of ${state456}: '${r.val}'`);
      
          } catch(error) {
              log(error.stack, 'warn');
          }
      
      }
      

      Fazit soweit:
      createState() / createStateAsync() mag wohl initialValue als zweiten Parameter nicht, wenn als dritter Parameter das common-Objekt folgt.
      Bin mir nicht sicher ob ein das an unklarer Doku ist, oder tatsächlich ein Bug.

      paul53P 1 Antwort Letzte Antwort
      0
      • AcguaA Acgua

        Hi,

        Fehlermeldung kommt bei mir auch (JS-Adapter v5.2.16, node.js 14.17.1).

        Dein Aufbau steht ja so in der Doku als "short type":

        createState('myVariable', 1, {name: 'My own variable', unit: '°C'}) - create variable if does not exist with specific name and units

        Was geht ist, wenn du initialValue im "Common"-Teil in def (=Default) übergibst.
        Hier ein Beispiel mit Callback, und ein zweites mit async/await.

        const state123 = '0_userdata.0.test123';
        createState(state123, {name:'test variable', def:'test init', type:'string', read:true, write:true, role:'state' }, (obj) => {
            log(`Value of ${state123}: '${getState(state123).val}'`);
        })
        
        // Und noch Test per async/await
        test();
        async function test() {
        
            try {
        
                const state456 = '0_userdata.0.test456';
                await createStateAsync(state456, {name:'test variable', type:'string', read:true, write:true, role:'state', def:'test init' });
                const r = await getStateAsync(state456);
                log(`Value of ${state456}: '${r.val}'`);
        
            } catch(error) {
                log(error.stack, 'warn');
            }
        
        }
        

        Fazit soweit:
        createState() / createStateAsync() mag wohl initialValue als zweiten Parameter nicht, wenn als dritter Parameter das common-Objekt folgt.
        Bin mir nicht sicher ob ein das an unklarer Doku ist, oder tatsächlich ein Bug.

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @acgua sagte: unklarer Doku ist, oder tatsächlich ein Bug.

        Das ist ein Bug.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        AcguaA F 2 Antworten Letzte Antwort
        0
        • paul53P paul53

          @acgua sagte: unklarer Doku ist, oder tatsächlich ein Bug.

          Das ist ein Bug.

          AcguaA Offline
          AcguaA Offline
          Acgua
          schrieb am zuletzt editiert von Acgua
          #4

          @paul53 said in getState() in Callback von createState() gibt not found:

          Das ist ein Bug.

          Hab Issue aufgemacht: Github: ioBroker.javascript issue #924

          1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @acgua sagte: unklarer Doku ist, oder tatsächlich ein Bug.

            Das ist ein Bug.

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von fastfoot
            #5

            @paul53 sagte in getState() in Callback von createState() gibt not found:

            Das ist ein Bug.

            sehr seltsam, ich kann das nicht nachvollziehen, weder in javascript.0.variables(wo eig. kein eigener DP hingehört), noch in 0_userdata.0. Getestet mit dem script aus dem ersten Post und der heute erschienenen JS 5.2.18

            18:10:24.893	info	javascript.1 (21510) Start javascript script.js.Forum.test1234
            18:10:24.899	info	javascript.1 (21510) script.js.Forum.test1234: registered 0 subscriptions and 0 schedules
            18:10:24.912	info	javascript.1 (21510) script.js.Forum.test1234: setForeignState(id=javascript.0.variables.test1234, state={"val":"test init","ack":true,"c":"script.js.Forum.test1234"})
            18:10:24.962	info	javascript.1 (21510) script.js.Forum.test1234: getState(id=javascript.0.variables.test1234, timerId=undefined) => {"val":"test init","ack":true,"ts":1639588224920,"q":0,"c":"script.js.Forum.test1234","from":"system.adapter.javascript.1","user":"system.user.admin","lc":1639588224920}
            18:10:24.963	info	javascript.1 (21510) script.js.Forum.test1234: test init
            

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            paul53P 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @paul53 sagte in getState() in Callback von createState() gibt not found:

              Das ist ein Bug.

              sehr seltsam, ich kann das nicht nachvollziehen, weder in javascript.0.variables(wo eig. kein eigener DP hingehört), noch in 0_userdata.0. Getestet mit dem script aus dem ersten Post und der heute erschienenen JS 5.2.18

              18:10:24.893	info	javascript.1 (21510) Start javascript script.js.Forum.test1234
              18:10:24.899	info	javascript.1 (21510) script.js.Forum.test1234: registered 0 subscriptions and 0 schedules
              18:10:24.912	info	javascript.1 (21510) script.js.Forum.test1234: setForeignState(id=javascript.0.variables.test1234, state={"val":"test init","ack":true,"c":"script.js.Forum.test1234"})
              18:10:24.962	info	javascript.1 (21510) script.js.Forum.test1234: getState(id=javascript.0.variables.test1234, timerId=undefined) => {"val":"test init","ack":true,"ts":1639588224920,"q":0,"c":"script.js.Forum.test1234","from":"system.adapter.javascript.1","user":"system.user.admin","lc":1639588224920}
              18:10:24.963	info	javascript.1 (21510) script.js.Forum.test1234: test init
              
              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @fastfoot sagte: ich kann das nicht nachvollziehen

              Stimmt, ich auch nicht:

              Bild_2021-12-15_185523.png

              Javascript v5.2.13.
              Man sollte doch erst testen, bevor man eine Aussage trifft.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              F 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @fastfoot sagte: ich kann das nicht nachvollziehen

                Stimmt, ich auch nicht:

                Bild_2021-12-15_185523.png

                Javascript v5.2.13.
                Man sollte doch erst testen, bevor man eine Aussage trifft.

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #7

                @paul53 sagte in getState() in Callback von createState() gibt not found:

                Stimmt, ich auch nicht:

                @apollon77 hat es mittlerweile im issue erklärt, scheint ein timing problem zu sein, welches wir dann wohl nicht haben

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                1 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  drefree
                  schrieb am zuletzt editiert von drefree
                  #8

                  Das mit dem Timing-Problem macht sehr viel Sinn, ist ein Raspberry Pi 3 mit relativ wenig freiem Arbeitsspeicher und vielen anderen Skripten die im Hintergrund laufen. Habe vor kurzem die States auch auf Redis umgestellt, was evtl. auch eine zusätzliche Verzögerung bedeuten kann (?). Werde mal probieren den Initialwert mit def zu übergeben sobald ich wieder Zeit habe, danke für eure Hilfe.

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  337

                  Online

                  32.5k

                  Benutzer

                  81.8k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe