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. ioBroker Allgemein
  4. Möglicher Bug im javascript Adapter bei createState()

NEWS

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Möglicher Bug im javascript Adapter bei createState()

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
javascript bug
12 Beiträge 5 Kommentatoren 1.2k Aufrufe 7 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.
  • B Offline
    B Offline
    BoehserWolf
    schrieb am zuletzt editiert von
    #1

    Wenn ich es richtig verstanden habe sollte sich createState() so verhalten, dass ein State nicht neu angelegt wird, wenn dieser schon existiert. Eine Außnahme ist wenn forceCreate=true verwendet wird.

    Bei mir habe ich festgestellt, dass in jedem Fall der ein State neu angelegt wird.
    Kann das jemand bestätigen?

    Hierzu ein kleines Testscript:

    createState(
        '0_userdata.0.test.state1', 
        {name: 'test state1'}, 
        function() { log('created'); });
    
    createState(
        '0_userdata.0.test.state2', 
        0,
        false,  // force
        {name: 'test state2'}, 
        function() { log('created (force:false)'); });
    

    Beide createState() Aufrufe sollten m.E. den State nicht neu anlegen - tun sie aber.

    @apollon77 Was meinst du dazu?

    paul53P 1 Antwort Letzte Antwort
    0
    • B BoehserWolf

      Wenn ich es richtig verstanden habe sollte sich createState() so verhalten, dass ein State nicht neu angelegt wird, wenn dieser schon existiert. Eine Außnahme ist wenn forceCreate=true verwendet wird.

      Bei mir habe ich festgestellt, dass in jedem Fall der ein State neu angelegt wird.
      Kann das jemand bestätigen?

      Hierzu ein kleines Testscript:

      createState(
          '0_userdata.0.test.state1', 
          {name: 'test state1'}, 
          function() { log('created'); });
      
      createState(
          '0_userdata.0.test.state2', 
          0,
          false,  // force
          {name: 'test state2'}, 
          function() { log('created (force:false)'); });
      

      Beide createState() Aufrufe sollten m.E. den State nicht neu anlegen - tun sie aber.

      @apollon77 Was meinst du dazu?

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

      @BoehserWolf
      Das sind zwei unterschiedliche Datenpunkte '0_userdata.0.test.state1' und '0_userdata.0.test.state2'. Man kann mit createState() beliebig viele unterschiedliche Datenpunkte erzeugen.
      createState() verhindert nur das Überschreiben eines bereits existierenden Datenpunktes. Wenn innerhalb eines Scripts createState() mit der gleichen ID unmittelbar hintereinander aufgerufen wird, werden wohl die Eigenschaften des zweiten Aufrufs erzeugt, da die Prüfung auf "existiert bereits" negativ ist, denn der erste Aufruf ist noch nicht abgeschlossen (asynchrone Ausführung).

      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

      B 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @BoehserWolf
        Das sind zwei unterschiedliche Datenpunkte '0_userdata.0.test.state1' und '0_userdata.0.test.state2'. Man kann mit createState() beliebig viele unterschiedliche Datenpunkte erzeugen.
        createState() verhindert nur das Überschreiben eines bereits existierenden Datenpunktes. Wenn innerhalb eines Scripts createState() mit der gleichen ID unmittelbar hintereinander aufgerufen wird, werden wohl die Eigenschaften des zweiten Aufrufs erzeugt, da die Prüfung auf "existiert bereits" negativ ist, denn der erste Aufruf ist noch nicht abgeschlossen (asynchrone Ausführung).

        B Offline
        B Offline
        BoehserWolf
        schrieb am zuletzt editiert von
        #3

        @paul53 said in Möglicher Bug im javascript Adapter bei createState():

        @BoehserWolf
        Das sind zwei unterschiedliche Datenpunkte '0_userdata.0.test.state1' und '0_userdata.0.test.state2'. Man kann mit createState() beliebig viele unterschiedliche Datenpunkte erzeugen.

        Ja das ist soweit klar.

        createState() verhindert nur das Überschreiben eines bereits existierenden Datenpunktes. Wenn innerhalb eines Scripts createState() mit der gleichen ID unmittelbar hintereinander aufgerufen wird, werden wohl die Eigenschaften des zweiten Aufrufs erzeugt, da die Prüfung auf "existiert bereits" negativ ist, denn der erste Aufruf ist noch nicht abgeschlossen (asynchrone Ausführung).

        Ok auch klar.

        Denke ich habe mich wohl nicht eindeutig ausgedrückt.

        Also, ich habe ein selbst erstelltes Script, das beim Start ohne jegliche Abfrage createState() Aufrufe ohne forceCreate enthält. Nachfolgend reagiere ich in dem Script auf HM States mit on(...) und setze vorher erzeugte States entsprechend. Soweit so gut und funktioniert.
        Beim Neustart des Scripts bzw. der JS Instanz bzw. des iobrokers ist mir aufgefallen, dass die von mir erzeugten States nicht korrekt gesetzt werden obwohl alle HM states passen und die vorher korrekt gesetzten eigenen States richtig standen.
        Dann habe ich angefangen zu suchen und festgestellt, dass die createState() Aufrufe beim Neustart des Scripts die vorhandenen States überschreiben obwohl sie das nicht sollten.

        Daher habe ich obiges Beispiel zusammen gezimmert um das vermeintliche Problem zu reproduzieren. Das heißt, wird obiges Script 1x ausgeführt, werden beide States erzeugt. Der 1. State ist implizit ohne forceCreate, der 2. State ist explizit ohne forceCreate. Von beiden States erwarte ich, dass die States beim 2. Script NICHT neu gesetzt werden. Das passiert jedoch und sollte nach meinem Verständnis so nicht sein - oder doch?

        paul53P 1 Antwort Letzte Antwort
        0
        • B BoehserWolf

          @paul53 said in Möglicher Bug im javascript Adapter bei createState():

          @BoehserWolf
          Das sind zwei unterschiedliche Datenpunkte '0_userdata.0.test.state1' und '0_userdata.0.test.state2'. Man kann mit createState() beliebig viele unterschiedliche Datenpunkte erzeugen.

          Ja das ist soweit klar.

          createState() verhindert nur das Überschreiben eines bereits existierenden Datenpunktes. Wenn innerhalb eines Scripts createState() mit der gleichen ID unmittelbar hintereinander aufgerufen wird, werden wohl die Eigenschaften des zweiten Aufrufs erzeugt, da die Prüfung auf "existiert bereits" negativ ist, denn der erste Aufruf ist noch nicht abgeschlossen (asynchrone Ausführung).

          Ok auch klar.

          Denke ich habe mich wohl nicht eindeutig ausgedrückt.

          Also, ich habe ein selbst erstelltes Script, das beim Start ohne jegliche Abfrage createState() Aufrufe ohne forceCreate enthält. Nachfolgend reagiere ich in dem Script auf HM States mit on(...) und setze vorher erzeugte States entsprechend. Soweit so gut und funktioniert.
          Beim Neustart des Scripts bzw. der JS Instanz bzw. des iobrokers ist mir aufgefallen, dass die von mir erzeugten States nicht korrekt gesetzt werden obwohl alle HM states passen und die vorher korrekt gesetzten eigenen States richtig standen.
          Dann habe ich angefangen zu suchen und festgestellt, dass die createState() Aufrufe beim Neustart des Scripts die vorhandenen States überschreiben obwohl sie das nicht sollten.

          Daher habe ich obiges Beispiel zusammen gezimmert um das vermeintliche Problem zu reproduzieren. Das heißt, wird obiges Script 1x ausgeführt, werden beide States erzeugt. Der 1. State ist implizit ohne forceCreate, der 2. State ist explizit ohne forceCreate. Von beiden States erwarte ich, dass die States beim 2. Script NICHT neu gesetzt werden. Das passiert jedoch und sollte nach meinem Verständnis so nicht sein - oder doch?

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

          @BoehserWolf sagte:

          dass die createState() Aufrufe beim Neustart des Scripts die vorhandenen States überschreiben

          Das kann ich nicht nachvollziehen, denn bei mir (JS 4.6.17) verändert createState() an einem existierenden Datenpunkt nichts (gerade getestet).

          EDIT: Nochmal mit einem Datenpunkt unter "0_userdata.0" getestet: createState() überschreibt den existierenden Datenpunkt.
          Erstelle bitte Issue auf Github.

          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

          B 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @BoehserWolf sagte:

            dass die createState() Aufrufe beim Neustart des Scripts die vorhandenen States überschreiben

            Das kann ich nicht nachvollziehen, denn bei mir (JS 4.6.17) verändert createState() an einem existierenden Datenpunkt nichts (gerade getestet).

            EDIT: Nochmal mit einem Datenpunkt unter "0_userdata.0" getestet: createState() überschreibt den existierenden Datenpunkt.
            Erstelle bitte Issue auf Github.

            B Offline
            B Offline
            BoehserWolf
            schrieb am zuletzt editiert von BoehserWolf
            #5

            @paul53 Vielen Dank fürs Bestätigen.
            Issue: https://github.com/ioBroker/ioBroker.javascript/issues/597#issue-632406070

            Bei mir läuft übrigens derzeit noch JS 2.2.9

            1 Antwort Letzte Antwort
            1
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #6

              So, wir haben mal ein bissl an den socket.io ping/pong timeouts rumgespielt ... Dazu checkt bitte mal Admin 4.1.6 ... Also: Admin installieren, Javascript am besten so lassen wie es probleme machte. Dann Auf jeden Fall mal im browser reloaden (hart) ode rbrwoser zu und auf und so ... ... Besser?

              Die 4.1.6 NICHT auf GitHub installieren, das geht nicht so simpel ... also kurz warten bis es im Latest Repo auftaucht bitte! Repo Update ist angestossen ... kann aber 1-2h dauern

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              sigi234S paul53P 2 Antworten Letzte Antwort
              0
              • apollon77A apollon77

                So, wir haben mal ein bissl an den socket.io ping/pong timeouts rumgespielt ... Dazu checkt bitte mal Admin 4.1.6 ... Also: Admin installieren, Javascript am besten so lassen wie es probleme machte. Dann Auf jeden Fall mal im browser reloaden (hart) ode rbrwoser zu und auf und so ... ... Besser?

                Die 4.1.6 NICHT auf GitHub installieren, das geht nicht so simpel ... also kurz warten bis es im Latest Repo auftaucht bitte! Repo Update ist angestossen ... kann aber 1-2h dauern

                sigi234S Offline
                sigi234S Offline
                sigi234
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                @apollon77 sagte in Möglicher Bug im javascript Adapter bei createState():

                Die 4.1.6 NICHT auf GitHub installieren, das geht nicht so simpel ... also kurz warten bis es im Latest Repo auftaucht bitte! Repo Update ist angestossen ... kann aber 1-2h dauern

                Schon da.

                Screenshot (292).png

                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Immer Daten sichern!

                1 Antwort Letzte Antwort
                0
                • apollon77A apollon77

                  So, wir haben mal ein bissl an den socket.io ping/pong timeouts rumgespielt ... Dazu checkt bitte mal Admin 4.1.6 ... Also: Admin installieren, Javascript am besten so lassen wie es probleme machte. Dann Auf jeden Fall mal im browser reloaden (hart) ode rbrwoser zu und auf und so ... ... Besser?

                  Die 4.1.6 NICHT auf GitHub installieren, das geht nicht so simpel ... also kurz warten bis es im Latest Repo auftaucht bitte! Repo Update ist angestossen ... kann aber 1-2h dauern

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

                  @apollon77 sagte:

                  wir haben mal ein bissl an den socket.io ping/pong timeouts rumgespielt

                  Was hat das damit zu tun, dass createState('0_userdata.0.xyz', init, common) einen bestehenden Datenpunkt überschreibt ?

                  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

                  apollon77A 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @apollon77 sagte:

                    wir haben mal ein bissl an den socket.io ping/pong timeouts rumgespielt

                    Was hat das damit zu tun, dass createState('0_userdata.0.xyz', init, common) einen bestehenden Datenpunkt überschreibt ?

                    apollon77A Offline
                    apollon77A Offline
                    apollon77
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 Hab mich im thread vertan :-( Sorry

                    Aber dazu bitte nochmal mit Javascript 4.6.19 versuchen :-)

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    1 Antwort Letzte Antwort
                    0
                    • apollon77A Offline
                      apollon77A Offline
                      apollon77
                      schrieb am zuletzt editiert von
                      #10

                      Ok, nächster Versuoch 4.6.20 ...

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      paul53P 1 Antwort Letzte Antwort
                      0
                      • apollon77A apollon77

                        Ok, nächster Versuoch 4.6.20 ...

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

                        @apollon77
                        4.6.20: createState('0_userdata.0.xyz', init, common) überschreibt bestehenden Datenpunkt nicht mehr.

                        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

                        1 Antwort Letzte Antwort
                        1
                        • maeb3M Offline
                          maeb3M Offline
                          maeb3
                          schrieb am zuletzt editiert von
                          #12

                          hatte den Fehler auch. ist bei mir mit Version 4.6.20 jetzt auch behoben.

                          Danke,
                          Matthias

                          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
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          322

                          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