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. [Neu] Diverse async-Funktionen im JavaScript-Adapter

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

[Neu] Diverse async-Funktionen im JavaScript-Adapter

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
39 Beiträge 12 Kommentatoren 8.1k Aufrufe 17 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.
  • P Pittini

    @AlCalzone sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

    @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

    Gibt es auch eine Lösung für einen async HTTP-Request?

    Entweder so wie mein Vorposter.
    Alternativ ginge z.b. die u.a. von mir bevorzugte Library https://github.com/axios/axios - die Beispiele dort sind mit Promises und .then geschrieben, lassen sich aber selbstverständlich auch mit await nutzen

    Ich stell mich leider mal wieder zu doof an, ich hab das Beispiel von Axios versucht umzusetzen, aber da kommt immer nurn leeres Objekt. Hat da evtl jemand nen Beispiel was läuft? Oder kann mir sagen was da verkehrt ist (ich und Objekte werden einfach keine Freunde mehr)?

    const axios = require('axios');
    
    getData();
    async function getData() {
      try {
        const response = await axios.get('https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ma4:1',{timeout : 10000});
        console.log("resp:"+JSON.stringify( response));
      } catch (error) {
        console.error(error);
      }
    }
    
    N Offline
    N Offline
    noox
    schrieb am zuletzt editiert von noox
    #21

    @Pittini
    JSON.stringify funktioniert eventuell nicht auf response, weil hier zirkuläre Referenzen drinnen sind. Siehe meinen Stackoverflow-Link von oben. Aber der Fehler müsste dann im catch() geloggt werden.

    Probier mal z.B. nur response.status, response.data, etc.

    1 Antwort Letzte Antwort
    0
    • zaunermaxZ Offline
      zaunermaxZ Offline
      zaunermax
      schrieb am zuletzt editiert von
      #22

      Mega nice, ich werde gleich alle meine synchronen calls auswechseln. Ich hab sogar vorher einen primitiven Promise wrapper gehabt, aber nativ das ganze zu haben ist sehr geil :raised_hands:

      1 Antwort Letzte Antwort
      0
      • P Pittini

        @AlCalzone sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

        @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

        Gibt es auch eine Lösung für einen async HTTP-Request?

        Entweder so wie mein Vorposter.
        Alternativ ginge z.b. die u.a. von mir bevorzugte Library https://github.com/axios/axios - die Beispiele dort sind mit Promises und .then geschrieben, lassen sich aber selbstverständlich auch mit await nutzen

        Ich stell mich leider mal wieder zu doof an, ich hab das Beispiel von Axios versucht umzusetzen, aber da kommt immer nurn leeres Objekt. Hat da evtl jemand nen Beispiel was läuft? Oder kann mir sagen was da verkehrt ist (ich und Objekte werden einfach keine Freunde mehr)?

        const axios = require('axios');
        
        getData();
        async function getData() {
          try {
            const response = await axios.get('https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ma4:1',{timeout : 10000});
            console.log("resp:"+JSON.stringify( response));
          } catch (error) {
            console.error(error);
          }
        }
        
        F Offline
        F Offline
        fastfoot
        schrieb am zuletzt editiert von
        #23

        @Pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

        Ich stell mich leider mal wieder zu doof an, ich hab das Beispiel von Axios versucht umzusetzen, aber da kommt immer nurn leeres Objekt. Hat da evtl jemand nen Beispiel was läuft? Oder kann mir sagen was da verkehrt ist (ich und Objekte werden einfach keine Freunde mehr)?

        wie schön, wenn man mal nicht der einzige 'Doofe' ist :-) Dein Beispiel läuft bereits perfekt, wenn du JSON.stringify(response.data) nimmst. Das was sonst noch so drin steht findest du mit Object.keys(response) raus, welche du dann alle mit JSON.stringify() untersuchen kannst

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

        P 1 Antwort Letzte Antwort
        2
        • F fastfoot

          @Pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

          Ich stell mich leider mal wieder zu doof an, ich hab das Beispiel von Axios versucht umzusetzen, aber da kommt immer nurn leeres Objekt. Hat da evtl jemand nen Beispiel was läuft? Oder kann mir sagen was da verkehrt ist (ich und Objekte werden einfach keine Freunde mehr)?

          wie schön, wenn man mal nicht der einzige 'Doofe' ist :-) Dein Beispiel läuft bereits perfekt, wenn du JSON.stringify(response.data) nimmst. Das was sonst noch so drin steht findest du mit Object.keys(response) raus, welche du dann alle mit JSON.stringify() untersuchen kannst

          P Offline
          P Offline
          Pittini
          Developer
          schrieb am zuletzt editiert von
          #24

          @fastfoot sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

          wie schön, wenn man mal nicht der einzige 'Doofe' ist Dein Beispiel läuft bereits perfekt, wenn du JSON.stringify(response.data) nimmst. Das was sonst noch so drin steht findest du mit Object.keys(response) raus, welche du dann alle mit JSON.stringify() untersuchen kannst

          Wow, so einfach. Danke! Ich geh jetzt in die Ecke schämen.

          N 1 Antwort Letzte Antwort
          0
          • P Pittini

            @fastfoot sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

            wie schön, wenn man mal nicht der einzige 'Doofe' ist Dein Beispiel läuft bereits perfekt, wenn du JSON.stringify(response.data) nimmst. Das was sonst noch so drin steht findest du mit Object.keys(response) raus, welche du dann alle mit JSON.stringify() untersuchen kannst

            Wow, so einfach. Danke! Ich geh jetzt in die Ecke schämen.

            N Offline
            N Offline
            noox
            schrieb am zuletzt editiert von noox
            #25

            Ich hatte zuletzt wiederholt Restarts vom Javascript-Adapter.
            Es dürfte auftreten, wenn ich setStateAsync oder getStateAsync verwende, aber zuvor vergessen habe, den State überhaupt anzulegen.

            Hier in dem Fall hatte ich den Prefix bei meinem State vergessen. Es kamen dann folgende Log-Einträge:

            host.smarthome	2020-12-19 00:28:58.620	info	Restart adapter system.adapter.javascript.0 because enabled
            host.smarthome	2020-12-19 00:28:58.619	error	instance system.adapter.javascript.0 terminated with code 6 (UNCAUGHT_EXCEPTION)
            host.smarthome	2020-12-19 00:28:58.619	error	Caught by controller[0]: State "FullyKioskErreichbar" not found
            host.smarthome	2020-12-19 00:28:58.613	error	Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected
            javascript.0	2020-12-19 00:28:58.187	info	(9941) terminating
            javascript.0	2020-12-19 00:28:58.186	info	(9941) terminating
            javascript.0	2020-12-19 00:28:57.981	warn	(9941) Terminated (UNCAUGHT_EXCEPTION): Without reason
            

            Ein try { ... } catch(error) { } hilft, aber wenn man das nicht hat ist ein Restart ja doch eher problematisch, oder?

            PS: Hab extra noch upgedatet:
            Node: 12.20.0
            JS-Adapter: 4.10.8 (also latest)
            JS-Controller: 3.1.6

            Nachtrag: Auf Github habe ich dazu noch nix gefunden.

            N 1 Antwort Letzte Antwort
            0
            • N noox

              Ich hatte zuletzt wiederholt Restarts vom Javascript-Adapter.
              Es dürfte auftreten, wenn ich setStateAsync oder getStateAsync verwende, aber zuvor vergessen habe, den State überhaupt anzulegen.

              Hier in dem Fall hatte ich den Prefix bei meinem State vergessen. Es kamen dann folgende Log-Einträge:

              host.smarthome	2020-12-19 00:28:58.620	info	Restart adapter system.adapter.javascript.0 because enabled
              host.smarthome	2020-12-19 00:28:58.619	error	instance system.adapter.javascript.0 terminated with code 6 (UNCAUGHT_EXCEPTION)
              host.smarthome	2020-12-19 00:28:58.619	error	Caught by controller[0]: State "FullyKioskErreichbar" not found
              host.smarthome	2020-12-19 00:28:58.613	error	Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected
              javascript.0	2020-12-19 00:28:58.187	info	(9941) terminating
              javascript.0	2020-12-19 00:28:58.186	info	(9941) terminating
              javascript.0	2020-12-19 00:28:57.981	warn	(9941) Terminated (UNCAUGHT_EXCEPTION): Without reason
              

              Ein try { ... } catch(error) { } hilft, aber wenn man das nicht hat ist ein Restart ja doch eher problematisch, oder?

              PS: Hab extra noch upgedatet:
              Node: 12.20.0
              JS-Adapter: 4.10.8 (also latest)
              JS-Controller: 3.1.6

              Nachtrag: Auf Github habe ich dazu noch nix gefunden.

              N Offline
              N Offline
              noox
              schrieb am zuletzt editiert von noox
              #26

              Update: Ich dürfte einen Fehler gemacht haben. Das Beispiel von unten ist zu einfach. Da dürfte es zu keinem Problem kommen. Aber Prinzipiell gibt es das Problem.

              Ist eigentlich jemand von euch schon auf "Concurrency"-Probleme gestoßen? JavaScript ist ja Singlethreaded, sodass man sich normalerweise nicht um Concurrency kümmern muss.

              Aber mit async/await kann es leicht passieren, dass derselbe Code scheinbar "gleichzeitig" ausgeführt wird.

              Aktuelles Beispiel:
              Ich hole mir mit einem HTTP-Request einige Status-Werte eines Gerätes. Ich hab das etwas abstrahiert und gecached. D.h. ich sage sowas wie: getValue('X'). Wenn der Werte vom letzten Abruf noch nicht zu alt ist, liefert mir getValue den direkt, sonst werden die Werte zuvor per HTTP-Request neu geladen.

              let x = await getValue(`X`);
              let y = await getValue(`Y`);
              

              Schaut unscheinbar aus ;)
              Aber wenn der Cache nicht mehr gültig ist, dann werden hier zwei HTTP-Requests gemacht. Während nämlich getValue('X') auf den HTTP-Response wartet, wird getValue('Y') ausgeführt und startet dann ebenfalls den HTTP-Request.

              Das Ganze würde natürlich mit Callbacks genauso passieren.

              Etwas Änliches kann auch mit set/getStateAsync passieren. Auch beim "alten" setState. Da aber das "alte" getState blockiert, stolpert man da nicht so häufig drüber.

              Leider hat JavaScript zwar async/await aber - soweit ich weiß - keinen eingebauten Locking-Mechanismus (Locks, Semaphore oder Ähnliches.)

              Es gibt ein paar NPM-Module. Hat da schon jemand Erfahrung, was da sinnvoll ist?

              AlCalzoneA 1 Antwort Letzte Antwort
              0
              • N noox

                Update: Ich dürfte einen Fehler gemacht haben. Das Beispiel von unten ist zu einfach. Da dürfte es zu keinem Problem kommen. Aber Prinzipiell gibt es das Problem.

                Ist eigentlich jemand von euch schon auf "Concurrency"-Probleme gestoßen? JavaScript ist ja Singlethreaded, sodass man sich normalerweise nicht um Concurrency kümmern muss.

                Aber mit async/await kann es leicht passieren, dass derselbe Code scheinbar "gleichzeitig" ausgeführt wird.

                Aktuelles Beispiel:
                Ich hole mir mit einem HTTP-Request einige Status-Werte eines Gerätes. Ich hab das etwas abstrahiert und gecached. D.h. ich sage sowas wie: getValue('X'). Wenn der Werte vom letzten Abruf noch nicht zu alt ist, liefert mir getValue den direkt, sonst werden die Werte zuvor per HTTP-Request neu geladen.

                let x = await getValue(`X`);
                let y = await getValue(`Y`);
                

                Schaut unscheinbar aus ;)
                Aber wenn der Cache nicht mehr gültig ist, dann werden hier zwei HTTP-Requests gemacht. Während nämlich getValue('X') auf den HTTP-Response wartet, wird getValue('Y') ausgeführt und startet dann ebenfalls den HTTP-Request.

                Das Ganze würde natürlich mit Callbacks genauso passieren.

                Etwas Änliches kann auch mit set/getStateAsync passieren. Auch beim "alten" setState. Da aber das "alte" getState blockiert, stolpert man da nicht so häufig drüber.

                Leider hat JavaScript zwar async/await aber - soweit ich weiß - keinen eingebauten Locking-Mechanismus (Locks, Semaphore oder Ähnliches.)

                Es gibt ein paar NPM-Module. Hat da schon jemand Erfahrung, was da sinnvoll ist?

                AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #27

                @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                Während nämlich getValue('X') auf den HTTP-Response wartet, wird getValue('Y') ausgeführt und startet dann ebenfalls den HTTP-Request.

                Genau das verhindert await eigentlich (wenn die Funktion entweder async ist oder einen Promise zurück gibt). Ich gehe schwer davon aus, dass deine getValue-Funktion nicht richtig implementiert ist.

                @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                Etwas Änliches kann auch mit set/getStateAsync passieren.

                Eigentlich nicht. Zeig doch bitte mal ein Beispiel, wo das nachvollziehbar ist.

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                N 1 Antwort Letzte Antwort
                0
                • AlCalzoneA AlCalzone

                  @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                  Während nämlich getValue('X') auf den HTTP-Response wartet, wird getValue('Y') ausgeführt und startet dann ebenfalls den HTTP-Request.

                  Genau das verhindert await eigentlich (wenn die Funktion entweder async ist oder einen Promise zurück gibt). Ich gehe schwer davon aus, dass deine getValue-Funktion nicht richtig implementiert ist.

                  @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                  Etwas Änliches kann auch mit set/getStateAsync passieren.

                  Eigentlich nicht. Zeig doch bitte mal ein Beispiel, wo das nachvollziehbar ist.

                  N Offline
                  N Offline
                  noox
                  schrieb am zuletzt editiert von
                  #28

                  @AlCalzone
                  Ja, ich hab mich verwirren lassen. Sorry. Das Beispiel ist zu einfach.

                  Passieren würde es aber meiner Meinung nach, wenn die Zugriffe unabhängig voneinander wären. Also z.B. einer von einer Subscription oder einem Timer (setTimeout) aus. Und in meinem Fall war es ein setTimeout.

                  Aber selbst da befürchte ich, dass ich mich verschaut habe, da ich zwei Geräte parallel abfrage.

                  Aber ich hatte früher schon mal das Problem, wo ein Script einen State schreibt, und ein anderes diesen abonniert hat. Und wo dann kurzzeitig der State öfter geändert wurde, als ihn die Subscription abarbeiten konnte. Damals habe ich es ohne Lock gelöst, aber sowas könnte ein Fall für Locks sein.
                  Aber auch deswegen war ich diesmal etwas zu vorschnell. Sorry!

                  N AlCalzoneA 2 Antworten Letzte Antwort
                  0
                  • N noox

                    @AlCalzone
                    Ja, ich hab mich verwirren lassen. Sorry. Das Beispiel ist zu einfach.

                    Passieren würde es aber meiner Meinung nach, wenn die Zugriffe unabhängig voneinander wären. Also z.B. einer von einer Subscription oder einem Timer (setTimeout) aus. Und in meinem Fall war es ein setTimeout.

                    Aber selbst da befürchte ich, dass ich mich verschaut habe, da ich zwei Geräte parallel abfrage.

                    Aber ich hatte früher schon mal das Problem, wo ein Script einen State schreibt, und ein anderes diesen abonniert hat. Und wo dann kurzzeitig der State öfter geändert wurde, als ihn die Subscription abarbeiten konnte. Damals habe ich es ohne Lock gelöst, aber sowas könnte ein Fall für Locks sein.
                    Aber auch deswegen war ich diesmal etwas zu vorschnell. Sorry!

                    N Offline
                    N Offline
                    noox
                    schrieb am zuletzt editiert von
                    #29

                    Ui ... und ich hab mehrmals das await vergessen. Ich programmiere in Visual Studio Code.

                    Bin's aber von C# und Visual Studio so gewohnt, dass man auf ein vergessenes await aufmerksam gemacht wird.

                    AlCalzoneA 1 Antwort Letzte Antwort
                    0
                    • N noox

                      Ui ... und ich hab mehrmals das await vergessen. Ich programmiere in Visual Studio Code.

                      Bin's aber von C# und Visual Studio so gewohnt, dass man auf ein vergessenes await aufmerksam gemacht wird.

                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #30

                      @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                      Bin's aber von C# und Visual Studio so gewohnt, dass man auf ein vergessenes await aufmerksam gemacht wird.

                      Das macht VSCode auch, wenn die Einstellungen entsprechend gesetzt sind (Typechecking aktiv)

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Antwort Letzte Antwort
                      0
                      • N noox

                        @AlCalzone
                        Ja, ich hab mich verwirren lassen. Sorry. Das Beispiel ist zu einfach.

                        Passieren würde es aber meiner Meinung nach, wenn die Zugriffe unabhängig voneinander wären. Also z.B. einer von einer Subscription oder einem Timer (setTimeout) aus. Und in meinem Fall war es ein setTimeout.

                        Aber selbst da befürchte ich, dass ich mich verschaut habe, da ich zwei Geräte parallel abfrage.

                        Aber ich hatte früher schon mal das Problem, wo ein Script einen State schreibt, und ein anderes diesen abonniert hat. Und wo dann kurzzeitig der State öfter geändert wurde, als ihn die Subscription abarbeiten konnte. Damals habe ich es ohne Lock gelöst, aber sowas könnte ein Fall für Locks sein.
                        Aber auch deswegen war ich diesmal etwas zu vorschnell. Sorry!

                        AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        schrieb am zuletzt editiert von
                        #31

                        @noox sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                        Passieren würde es aber meiner Meinung nach, wenn die Zugriffe unabhängig voneinander wären. Also z.B. einer von einer Subscription oder einem Timer (setTimeout) aus. Und in meinem Fall war es ein setTimeout.

                        Korrekt. Da kann dir aber kein so grundlegendes Sprachfeature helfen, das musst du selbst steuern.

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        1 Antwort Letzte Antwort
                        0
                        • Rene55R Offline
                          Rene55R Offline
                          Rene55
                          schrieb am zuletzt editiert von Rene55
                          #32

                          Hallo Zusammen,
                          ich übe mich auch gerade im Erstellen (und löschen) von Datenpunkten. Das Beispiel hier läuft ja grundsätzlich wunderbar. Da in meinem Projekt die Datenpunkte zur Laufzeit variieren, müssen die Datenpunkte auch wieder gelöscht werden. Dazu habe ich nun eine zweite Routine erstellt, mit der ich die Datenpunkte auch löschen kann. Danach sollten die Datenpunkte wieder neu erstellt werden. Öfters kommt es jedoch vor, dass der erste Datenpunkt im Admin/Objekte nicht angezeigt wird. Mir ist ja bekannt, dass manchmal im Admin die Objekte je nach Browser nicht immer direkt sauber dargestellt werden, sondern erst nach einem refresh.
                          Ich hab meinen Test so gestaltet, dass ich durch einen Datenpunkt die Abfolge Löschen/Neu setzen immer wieder ausgelöst habe. Ich hatte ja gelesen, dass es per se mit einem Datenpunkt '0' nicht geht. Habe ich noch irgend etwas übersehen oder bin ich mit meinem Vorhaben zum scheitern verurteilt.

                          //
                          test();
                          //
                          //_________________________________________________
                          async function test() {
                              try {
                                  for (let i = 1; i < 12; i++) {
                                     const id = `0_userdata.0.async-test.state_${i}`;
                                      if (await existsStateAsync(id)) {
                                          log(`State ${id} already exists`, 'warn');
                                      } else {
                                          await createStateAsync(id, {type:'number', read:true, write:true, def:i });
                                          const stateObject = await getStateAsync(id);
                                          if (stateObject && stateObject.val) {
                                              log(`State '${id}' created, value: '${stateObject.val}'`)
                                          } else {
                                              log(`Unable to get state value of '${id}'.`, 'error');
                                          }
                                      }
                                  }
                              } catch (error) {
                                  log(`Unexpected error - ${error}`, 'error');
                              }
                          }
                          //
                          //_________________________________________________
                          // Beschreibe diese Funktion: Löschen aller Datenpunkte 'Timer.'
                          function loesche_TestDP(){ 
                              for(var i = 1; i < 12; i++){  
                                  const id = `0_userdata.0.async-test.state_${i}`;
                                  if (existsState(id)) deleteState(id);
                                  log('(f) loesche_TestDP -->' + id,'info');
                              }
                          }
                          //_________________________________________________
                          // Beschreibe diese Funktion: Auslösen von Test bei Datenpunkts 'Test = 1'
                          on({id: '0_userdata.0.Test', change: "ne"}, function (obj) { 
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              if (value == 1){
                                  log('================  Next Run ================','info');
                                  loesche_TestDP();
                                  sleep(5000);
                                  test();
                              }
                              setState ('0_userdata.0.Test', 0,true);
                          });
                          //``` 
                          [/s]
                          Wie gesagt, das hier ist nur ein Test - nicht mein Projekt.
                          LG Rainer

                          Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                          ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                          Wetterstation: Froggit WH3000SE V1.6.6

                          liv-in-skyL 1 Antwort Letzte Antwort
                          0
                          • Rene55R Rene55

                            Hallo Zusammen,
                            ich übe mich auch gerade im Erstellen (und löschen) von Datenpunkten. Das Beispiel hier läuft ja grundsätzlich wunderbar. Da in meinem Projekt die Datenpunkte zur Laufzeit variieren, müssen die Datenpunkte auch wieder gelöscht werden. Dazu habe ich nun eine zweite Routine erstellt, mit der ich die Datenpunkte auch löschen kann. Danach sollten die Datenpunkte wieder neu erstellt werden. Öfters kommt es jedoch vor, dass der erste Datenpunkt im Admin/Objekte nicht angezeigt wird. Mir ist ja bekannt, dass manchmal im Admin die Objekte je nach Browser nicht immer direkt sauber dargestellt werden, sondern erst nach einem refresh.
                            Ich hab meinen Test so gestaltet, dass ich durch einen Datenpunkt die Abfolge Löschen/Neu setzen immer wieder ausgelöst habe. Ich hatte ja gelesen, dass es per se mit einem Datenpunkt '0' nicht geht. Habe ich noch irgend etwas übersehen oder bin ich mit meinem Vorhaben zum scheitern verurteilt.

                            //
                            test();
                            //
                            //_________________________________________________
                            async function test() {
                                try {
                                    for (let i = 1; i < 12; i++) {
                                       const id = `0_userdata.0.async-test.state_${i}`;
                                        if (await existsStateAsync(id)) {
                                            log(`State ${id} already exists`, 'warn');
                                        } else {
                                            await createStateAsync(id, {type:'number', read:true, write:true, def:i });
                                            const stateObject = await getStateAsync(id);
                                            if (stateObject && stateObject.val) {
                                                log(`State '${id}' created, value: '${stateObject.val}'`)
                                            } else {
                                                log(`Unable to get state value of '${id}'.`, 'error');
                                            }
                                        }
                                    }
                                } catch (error) {
                                    log(`Unexpected error - ${error}`, 'error');
                                }
                            }
                            //
                            //_________________________________________________
                            // Beschreibe diese Funktion: Löschen aller Datenpunkte 'Timer.'
                            function loesche_TestDP(){ 
                                for(var i = 1; i < 12; i++){  
                                    const id = `0_userdata.0.async-test.state_${i}`;
                                    if (existsState(id)) deleteState(id);
                                    log('(f) loesche_TestDP -->' + id,'info');
                                }
                            }
                            //_________________________________________________
                            // Beschreibe diese Funktion: Auslösen von Test bei Datenpunkts 'Test = 1'
                            on({id: '0_userdata.0.Test', change: "ne"}, function (obj) { 
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                if (value == 1){
                                    log('================  Next Run ================','info');
                                    loesche_TestDP();
                                    sleep(5000);
                                    test();
                                }
                                setState ('0_userdata.0.Test', 0,true);
                            });
                            //``` 
                            [/s]
                            Wie gesagt, das hier ist nur ein Test - nicht mein Projekt.
                            LG Rainer
                            liv-in-skyL Offline
                            liv-in-skyL Offline
                            liv-in-sky
                            schrieb am zuletzt editiert von
                            #33

                            @rene55 bitte nutze den code tag für scripte - sonst nicht gut lesbar

                            https://forum.iobroker.net/post/394912

                            kannst du auch im spoiler-tag zusätzlich zufügen

                            mit code tag
                            

                            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                            Rene55R 1 Antwort Letzte Antwort
                            0
                            • liv-in-skyL liv-in-sky

                              @rene55 bitte nutze den code tag für scripte - sonst nicht gut lesbar

                              https://forum.iobroker.net/post/394912

                              kannst du auch im spoiler-tag zusätzlich zufügen

                              mit code tag
                              

                              Rene55R Offline
                              Rene55R Offline
                              Rene55
                              schrieb am zuletzt editiert von
                              #34

                              @liv-in-sky Hab ich das so richtig in Code Tags gesetzt?

                              Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                              ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                              Wetterstation: Froggit WH3000SE V1.6.6

                              1 Antwort Letzte Antwort
                              1
                              • P Offline
                                P Offline
                                Pittini
                                Developer
                                schrieb am zuletzt editiert von Pittini
                                #35

                                Hi Leute,
                                kleines Problem. Ich hab das in meinem neuen Skript auch mal versucht mit Datenpunkt anlegen und gleich auslesen (brauch ich zwar eigentlich nicht weil die Werte beim anlegen schon bekannt sind, aber ich wollts mal ausprobieren). Leider klappt das mal und mal nicht. Der Code is nahezu identisch mit dem Beispiel, und wird aufgerufen durch nen Trigger sobald das Object "Awtrix" befüllt wurde, und sieht so aus:

                                async function CreateDps() { //Wird durch Trigger aufgerufen sobald get settings ein Ergebnis liefert
                                    log("Reaching CreateDps");
                                    try {
                                        for (let x in Awtrix) { //Alle properties durchgehen
                                            const id = praefix + ".Settings." + x;
                                
                                            if (await existsStateAsync(id)) {
                                                if (logging) log(`State ${id} already exists, nothing to do`, 'info');
                                            } else {
                                                await createStateAsync(id, { name: x, type: typeof Awtrix[x], read: true, write: true, def: Awtrix[x] });
                                                const stateObject = await getStateAsync(id);
                                                if (stateObject && stateObject.val) {
                                                    log(`State '${id}' created, value: '${stateObject.val}'`)
                                                } else {
                                                    log(`Unable to get state value of '${id}'.`, 'error');
                                                }
                                            }
                                        }
                                        InitInProgress = false;
                                    } catch (error) {
                                        log(`Unexpected error - ${error}`, 'error');
                                    }
                                
                                }
                                
                                

                                Und was passiert ist dann das:

                                12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Starting AwtrixControl V. 0.0.1
                                12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching init
                                12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching CreateTrigger
                                12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: registered 8 subscriptions and 0 schedules
                                12:25:49.953	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Response triggered
                                12:25:49.954	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching CreateDps
                                12:25:50.103	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.VerboseLog'.
                                12:25:50.115	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                12:25:50.203	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ScrollSpeed' created, value: '60'
                                12:25:50.213	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                12:25:50.300	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Brightness' created, value: '25'
                                12:25:50.447	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.YeeLightIP'.
                                12:25:50.551	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmFile' created, value: '2'
                                12:25:50.659	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.RemoveAccents'.
                                12:25:50.669	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                12:25:50.759	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmIcon' created, value: '944'
                                12:25:50.855	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.noSleepSwitch'.
                                12:25:50.955	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.BrokerPort' created, value: '1884'
                                12:25:51.051	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.YeeLightActive'.
                                12:25:51.147	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.UppercaseLetters'.
                                12:25:51.243	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.CloudActive'.
                                12:25:51.347	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepBrightness' created, value: '5'
                                12:25:51.475	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTport' created, value: '1885'
                                12:25:51.583	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ACNActive' created, value: 'true'
                                12:25:51.593	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                12:25:51.679	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.TextColor' created, value: '#bc0101'
                                12:25:51.779	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepEnd' created, value: '05:00'
                                12:25:51.879	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.PushOver'.
                                12:25:51.975	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.offlineMode'.
                                12:25:52.075	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.MinLux'.
                                12:25:52.191	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AlexaActive'.
                                12:25:52.287	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.DontUpdateLanguage' created, value: 'false'
                                12:25:52.383	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.MQTTssl'.
                                12:25:52.487	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepStart' created, value: '23:00'
                                12:25:52.595	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ACNProtocol' created, value: 'e131'
                                12:25:52.691	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTuser' created, value: 'Pittini'
                                12:25:52.787	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.TempCorrection' created, value: '10'
                                12:25:52.887	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ChatID' created, value: '0'
                                12:25:52.987	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmDuration' created, value: '30'
                                12:25:53.083	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.POPass'.
                                12:25:53.179	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.TimeZone'.
                                12:25:53.191	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                12:25:53.285	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Volume' created, value: '10'
                                12:25:53.451	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmText' created, value: 'Alarm'
                                12:25:53.547	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AlexaID'.
                                12:25:53.643	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepAtDark' created, value: 'true'
                                12:25:53.755	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.FritzCaller'.
                                12:25:53.855	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ControllerPort' created, value: '7001'
                                12:25:53.951	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.LanguageUpdated'.
                                12:25:54.051	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.RainbowText'.
                                12:25:54.151	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.WebserverPort' created, value: '7000'
                                12:25:54.255	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.USBMatrix'.
                                12:25:54.379	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AutoBrightness'.
                                12:25:54.483	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.BootAnimation' created, value: 'true'
                                12:25:54.599	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTclient' created, value: 'true'
                                12:25:54.695	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.APIkey' created, value: 'f22289217384c106cdaae7c1'
                                12:25:54.791	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Language' created, value: 'de'
                                12:25:55.215	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MaxBrightness' created, value: '75'
                                12:25:55.311	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepApp' created, value: 'Time'
                                12:25:55.411	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmTime' created, value: '07:00'
                                12:25:55.507	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.timerTicks' created, value: '20'
                                12:25:55.607	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.SleepMode'.
                                12:25:55.703	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.POMail'.
                                12:25:55.803	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MaxLux' created, value: '25'
                                12:25:55.903	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.USBPort' created, value: 'None'
                                12:25:56.007	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.MQTTBroker'.
                                12:25:56.107	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AlarmEnabled'.
                                12:25:56.207	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Resistor' created, value: '1000'
                                12:25:56.264	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MinBrightness' created, value: '10'
                                12:25:56.439	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.Telegram'.
                                12:25:56.512	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepLux' created, value: '5'
                                12:25:56.623	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.RainbowDivider' created, value: '1'
                                12:25:56.719	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.UpdateInterval' created, value: '60'
                                12:25:56.819	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.FritzBoxIP' created, value: '192.168.178.1'
                                12:25:56.919	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.Analytics'.
                                12:25:57.015	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.LastVersion' created, value: '29112'
                                12:25:57.115	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlexaPort' created, value: '80'
                                12:25:57.211	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmVolume' created, value: '25'
                                12:25:57.311	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTThost' created, value: '192.168.2.105'
                                12:25:57.415	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.TermsAccepted'.
                                12:25:57.515	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.weblogin'.
                                12:25:57.619	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTprefix' created, value: 'Awtrix1'
                                12:25:57.680	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AppDuration' created, value: '60'
                                12:25:57.819	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Animation' created, value: 'Pull (beta)'
                                12:25:57.919	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlexaName' created, value: 'AWTRIX'
                                12:25:58.023	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.PythonApps'.
                                

                                Tatsächlich angelegt wurden die States samt Inhalt aber (am Ende gekürzt):
                                2021-03-31 12_28_57-Window.png

                                Was ist, bzw. mache ich falsch?

                                F 1 Antwort Letzte Antwort
                                0
                                • P Pittini

                                  Hi Leute,
                                  kleines Problem. Ich hab das in meinem neuen Skript auch mal versucht mit Datenpunkt anlegen und gleich auslesen (brauch ich zwar eigentlich nicht weil die Werte beim anlegen schon bekannt sind, aber ich wollts mal ausprobieren). Leider klappt das mal und mal nicht. Der Code is nahezu identisch mit dem Beispiel, und wird aufgerufen durch nen Trigger sobald das Object "Awtrix" befüllt wurde, und sieht so aus:

                                  async function CreateDps() { //Wird durch Trigger aufgerufen sobald get settings ein Ergebnis liefert
                                      log("Reaching CreateDps");
                                      try {
                                          for (let x in Awtrix) { //Alle properties durchgehen
                                              const id = praefix + ".Settings." + x;
                                  
                                              if (await existsStateAsync(id)) {
                                                  if (logging) log(`State ${id} already exists, nothing to do`, 'info');
                                              } else {
                                                  await createStateAsync(id, { name: x, type: typeof Awtrix[x], read: true, write: true, def: Awtrix[x] });
                                                  const stateObject = await getStateAsync(id);
                                                  if (stateObject && stateObject.val) {
                                                      log(`State '${id}' created, value: '${stateObject.val}'`)
                                                  } else {
                                                      log(`Unable to get state value of '${id}'.`, 'error');
                                                  }
                                              }
                                          }
                                          InitInProgress = false;
                                      } catch (error) {
                                          log(`Unexpected error - ${error}`, 'error');
                                      }
                                  
                                  }
                                  
                                  

                                  Und was passiert ist dann das:

                                  12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Starting AwtrixControl V. 0.0.1
                                  12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching init
                                  12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching CreateTrigger
                                  12:25:49.939	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: registered 8 subscriptions and 0 schedules
                                  12:25:49.953	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Response triggered
                                  12:25:49.954	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching CreateDps
                                  12:25:50.103	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.VerboseLog'.
                                  12:25:50.115	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                  12:25:50.203	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ScrollSpeed' created, value: '60'
                                  12:25:50.213	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                  12:25:50.300	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Brightness' created, value: '25'
                                  12:25:50.447	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.YeeLightIP'.
                                  12:25:50.551	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmFile' created, value: '2'
                                  12:25:50.659	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.RemoveAccents'.
                                  12:25:50.669	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                  12:25:50.759	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmIcon' created, value: '944'
                                  12:25:50.855	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.noSleepSwitch'.
                                  12:25:50.955	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.BrokerPort' created, value: '1884'
                                  12:25:51.051	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.YeeLightActive'.
                                  12:25:51.147	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.UppercaseLetters'.
                                  12:25:51.243	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.CloudActive'.
                                  12:25:51.347	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepBrightness' created, value: '5'
                                  12:25:51.475	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTport' created, value: '1885'
                                  12:25:51.583	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ACNActive' created, value: 'true'
                                  12:25:51.593	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                  12:25:51.679	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.TextColor' created, value: '#bc0101'
                                  12:25:51.779	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepEnd' created, value: '05:00'
                                  12:25:51.879	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.PushOver'.
                                  12:25:51.975	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.offlineMode'.
                                  12:25:52.075	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.MinLux'.
                                  12:25:52.191	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AlexaActive'.
                                  12:25:52.287	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.DontUpdateLanguage' created, value: 'false'
                                  12:25:52.383	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.MQTTssl'.
                                  12:25:52.487	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepStart' created, value: '23:00'
                                  12:25:52.595	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ACNProtocol' created, value: 'e131'
                                  12:25:52.691	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTuser' created, value: 'Pittini'
                                  12:25:52.787	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.TempCorrection' created, value: '10'
                                  12:25:52.887	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ChatID' created, value: '0'
                                  12:25:52.987	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmDuration' created, value: '30'
                                  12:25:53.083	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.POPass'.
                                  12:25:53.179	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.TimeZone'.
                                  12:25:53.191	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Reaching RefreshAwtrix
                                  12:25:53.285	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Volume' created, value: '10'
                                  12:25:53.451	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmText' created, value: 'Alarm'
                                  12:25:53.547	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AlexaID'.
                                  12:25:53.643	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepAtDark' created, value: 'true'
                                  12:25:53.755	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.FritzCaller'.
                                  12:25:53.855	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.ControllerPort' created, value: '7001'
                                  12:25:53.951	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.LanguageUpdated'.
                                  12:25:54.051	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.RainbowText'.
                                  12:25:54.151	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.WebserverPort' created, value: '7000'
                                  12:25:54.255	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.USBMatrix'.
                                  12:25:54.379	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AutoBrightness'.
                                  12:25:54.483	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.BootAnimation' created, value: 'true'
                                  12:25:54.599	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTclient' created, value: 'true'
                                  12:25:54.695	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.APIkey' created, value: 'f22289217384c106cdaae7c1'
                                  12:25:54.791	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Language' created, value: 'de'
                                  12:25:55.215	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MaxBrightness' created, value: '75'
                                  12:25:55.311	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepApp' created, value: 'Time'
                                  12:25:55.411	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmTime' created, value: '07:00'
                                  12:25:55.507	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.timerTicks' created, value: '20'
                                  12:25:55.607	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.SleepMode'.
                                  12:25:55.703	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.POMail'.
                                  12:25:55.803	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MaxLux' created, value: '25'
                                  12:25:55.903	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.USBPort' created, value: 'None'
                                  12:25:56.007	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.MQTTBroker'.
                                  12:25:56.107	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.AlarmEnabled'.
                                  12:25:56.207	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Resistor' created, value: '1000'
                                  12:25:56.264	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MinBrightness' created, value: '10'
                                  12:25:56.439	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.Telegram'.
                                  12:25:56.512	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.SleepLux' created, value: '5'
                                  12:25:56.623	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.RainbowDivider' created, value: '1'
                                  12:25:56.719	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.UpdateInterval' created, value: '60'
                                  12:25:56.819	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.FritzBoxIP' created, value: '192.168.178.1'
                                  12:25:56.919	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.Analytics'.
                                  12:25:57.015	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.LastVersion' created, value: '29112'
                                  12:25:57.115	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlexaPort' created, value: '80'
                                  12:25:57.211	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlarmVolume' created, value: '25'
                                  12:25:57.311	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTThost' created, value: '192.168.2.105'
                                  12:25:57.415	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.TermsAccepted'.
                                  12:25:57.515	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.weblogin'.
                                  12:25:57.619	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.MQTTprefix' created, value: 'Awtrix1'
                                  12:25:57.680	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AppDuration' created, value: '60'
                                  12:25:57.819	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.Animation' created, value: 'Pull (beta)'
                                  12:25:57.919	info	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: State 'javascript.0.Awtrix1.Settings.AlexaName' created, value: 'AWTRIX'
                                  12:25:58.023	error	javascript.0 (1314) script.js.common.VirtuelleDevices.Awtrix1: Unable to get state value of 'javascript.0.Awtrix1.Settings.PythonApps'.
                                  

                                  Tatsächlich angelegt wurden die States samt Inhalt aber (am Ende gekürzt):
                                  2021-03-31 12_28_57-Window.png

                                  Was ist, bzw. mache ich falsch?

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

                                  @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                  if (stateObject && stateObject.val) {

                                  du möchtest prüfen ob ein Wert existiert, prüfst aber ob der Wert true bzw >0 bzw != "" ist

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

                                  P 1 Antwort Letzte Antwort
                                  0
                                  • F fastfoot

                                    @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                    if (stateObject && stateObject.val) {

                                    du möchtest prüfen ob ein Wert existiert, prüfst aber ob der Wert true bzw >0 bzw != "" ist

                                    P Offline
                                    P Offline
                                    Pittini
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #37

                                    @fastfoot sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                    @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                    if (stateObject && stateObject.val) {

                                    du möchtest prüfen ob ein Wert existiert, prüfst aber ob der Wert true bzw >0 bzw != "" ist

                                    Hm, ok, danke, ich ging davon aus das @Mic schon weis was er schreibt. Das ist 1:1 aus dem Beispiel. Mal guggen obs wirklich daran liegt.

                                    F 1 Antwort Letzte Antwort
                                    0
                                    • P Pittini

                                      @fastfoot sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                      @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                      if (stateObject && stateObject.val) {

                                      du möchtest prüfen ob ein Wert existiert, prüfst aber ob der Wert true bzw >0 bzw != "" ist

                                      Hm, ok, danke, ich ging davon aus das @Mic schon weis was er schreibt. Das ist 1:1 aus dem Beispiel. Mal guggen obs wirklich daran liegt.

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

                                      @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                      Hm, ok, danke, ich ging davon aus das @Mic schon weis was er schreibt.

                                      wusste er :-) Seine state values fangen im Beispiel bei 1 an

                                      oder anders ausgedrückt: Wenn du deinen Wert prüfen willst, nimm

                                      if (stateObject && stateObject.val == Awtrix[x]) {
                                      

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

                                      P 1 Antwort Letzte Antwort
                                      1
                                      • F fastfoot

                                        @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                        Hm, ok, danke, ich ging davon aus das @Mic schon weis was er schreibt.

                                        wusste er :-) Seine state values fangen im Beispiel bei 1 an

                                        oder anders ausgedrückt: Wenn du deinen Wert prüfen willst, nimm

                                        if (stateObject && stateObject.val == Awtrix[x]) {
                                        
                                        P Offline
                                        P Offline
                                        Pittini
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #39

                                        @fastfoot sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                        @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter:

                                        Hm, ok, danke, ich ging davon aus das @Mic schon weis was er schreibt.

                                        wusste er :-) Seine state values fangen im Beispiel bei 1 an

                                        oder anders ausgedrückt: Wenn du deinen Wert prüfen willst, nimm

                                        if (stateObject && stateObject.val == Awtrix[x]) {
                                        
                                        1. Du hattest recht.
                                        2. Hab ich das zum testen grad so gemacht, das klappt auch:
                                        if (stateObject && typeof stateObject.val != "undefined") {
                                                          
                                        
                                        1. Danke.
                                        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

                                        870

                                        Online

                                        32.4k

                                        Benutzer

                                        81.5k

                                        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