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. Wann ist ein nach der Erzeugung dp verfügbar?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    916

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Wann ist ein nach der Erzeugung dp verfügbar?

Geplant Angeheftet Gesperrt Verschoben JavaScript
16 Beiträge 5 Kommentatoren 818 Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T ticaki

    @ben1983
    Ist mir auch aufgefallen bei extendObject(). Ich nutze ein await sleep(10) bevor ich was damit mache.

    Ben1983B Offline
    Ben1983B Offline
    Ben1983
    schrieb am zuletzt editiert von
    #3

    @ticaki OK, gibts dazu schon ein issue?

    T 1 Antwort Letzte Antwort
    0
    • Ben1983B Ben1983

      @ticaki OK, gibts dazu schon ein issue?

      T Offline
      T Offline
      ticaki
      schrieb am zuletzt editiert von
      #4

      @ben1983
      Hab nicht nachgesehen.

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      1 Antwort Letzte Antwort
      0
      • Ben1983B Ben1983

        Hallo, ich habe folgende Logik:

        on(TrigerId,async(dp)=>{
            await extendObject(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
            // Aktuellen Zustand auslesen
            const actState= getState(DestinationId).val;
        }
        

        nun verursacht dies aber ein actState = null

        Erzeuge ich den state mit extendObject beim Scriptstart (nur zum Testen), so funktioniert es.
        Ich dachte, dass das await dafür sorgt, dass entsprechend lange gewartet wird.

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von Asgothian
        #5

        @ben1983 sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

        Hallo, ich habe folgende Logik:

        on(TrigerId,async(dp)=>{
            await extendObject(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
            // Aktuellen Zustand auslesen
            const actState= getState(DestinationId).val;
        }
        

        nun verursacht dies aber ein actState = null

        Erzeuge ich den state mit extendObject beim Scriptstart (nur zum Testen), so funktioniert es.
        Ich dachte, dass das await dafür sorgt, dass entsprechend lange gewartet wird.

        Natürlich tut es das. Du hast zwar den State angelegt, aber der Wert des State wurde nicht gesetzt. Den holst Du dir aber. Zusätzlich rufst du die 'callback' Variante der Funktion extendObject auf, ohne eine callback Funktion beizulegen. Die dafür vorgesehene Funktion ist (meines Wissens nach) aber extendObjectAsync.

        Prüfe mal bitte den folgenden Code:

        on(TrigerId,async(dp)=>{
             await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
             // Aktuellen Zustand auslesen
             const actState= getState(DestinationId);
         }
        

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        T 1 Antwort Letzte Antwort
        0
        • AsgothianA Asgothian

          @ben1983 sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

          Hallo, ich habe folgende Logik:

          on(TrigerId,async(dp)=>{
              await extendObject(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
              // Aktuellen Zustand auslesen
              const actState= getState(DestinationId).val;
          }
          

          nun verursacht dies aber ein actState = null

          Erzeuge ich den state mit extendObject beim Scriptstart (nur zum Testen), so funktioniert es.
          Ich dachte, dass das await dafür sorgt, dass entsprechend lange gewartet wird.

          Natürlich tut es das. Du hast zwar den State angelegt, aber der Wert des State wurde nicht gesetzt. Den holst Du dir aber. Zusätzlich rufst du die 'callback' Variante der Funktion extendObject auf, ohne eine callback Funktion beizulegen. Die dafür vorgesehene Funktion ist (meines Wissens nach) aber extendObjectAsync.

          Prüfe mal bitte den folgenden Code:

          on(TrigerId,async(dp)=>{
               await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
               // Aktuellen Zustand auslesen
               const actState= getState(DestinationId);
           }
          
          T Offline
          T Offline
          ticaki
          schrieb am zuletzt editiert von
          #6

          @asgothian sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

          await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
          // Aktuellen Zustand auslesen
          const actState= getState(DestinationId);

          Ändert nix, der state existiert noch nicht im Javascript-Adapter, wenn getState() ausgeführt wird. Aber das async fehlt natürlich trotzdem.

          Mit const actState= await getStateAsync(DestinationId);geht auch die abfrage auf den State.

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          AsgothianA Ben1983B 2 Antworten Letzte Antwort
          0
          • T ticaki

            @asgothian sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

            await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
            // Aktuellen Zustand auslesen
            const actState= getState(DestinationId);

            Ändert nix, der state existiert noch nicht im Javascript-Adapter, wenn getState() ausgeführt wird. Aber das async fehlt natürlich trotzdem.

            Mit const actState= await getStateAsync(DestinationId);geht auch die abfrage auf den State.

            AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb am zuletzt editiert von
            #7

            @ticaki sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

            @asgothian sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

            await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
            // Aktuellen Zustand auslesen
            const actState= getState(DestinationId);

            Ändert nix, der state existiert noch nicht im Javascript-Adapter, wenn getState() ausgeführt wird. Aber das async fehlt natürlich trotzdem.

            Mit const actState= await getStateAsync(DestinationId);geht auch die abfrage auf den State.

            Interessant. Mein System scheint da schneller zu sein - der Code den ich gepostet hab geht bei mir direkt durch - ohne Probleme :)

            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

            T 1 Antwort Letzte Antwort
            0
            • AsgothianA Asgothian

              @ticaki sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

              @asgothian sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

              await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
              // Aktuellen Zustand auslesen
              const actState= getState(DestinationId);

              Ändert nix, der state existiert noch nicht im Javascript-Adapter, wenn getState() ausgeführt wird. Aber das async fehlt natürlich trotzdem.

              Mit const actState= await getStateAsync(DestinationId);geht auch die abfrage auf den State.

              Interessant. Mein System scheint da schneller zu sein - der Code den ich gepostet hab geht bei mir direkt durch - ohne Probleme :)

              T Offline
              T Offline
              ticaki
              schrieb am zuletzt editiert von
              #8

              @asgothian
              Eh ich habe gerade geupgraded.. also nix da :D

              Kann halt nur schreiben was passiert ist. Aber ein sleep hinter einem extend macht das ganze eh viel entspannter.

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              1 Antwort Letzte Antwort
              0
              • T ticaki

                @asgothian sagte in Wann ist ein nach der Erzeugung dp verfügbar?:

                await extendObjectAsync(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
                // Aktuellen Zustand auslesen
                const actState= getState(DestinationId);

                Ändert nix, der state existiert noch nicht im Javascript-Adapter, wenn getState() ausgeführt wird. Aber das async fehlt natürlich trotzdem.

                Mit const actState= await getStateAsync(DestinationId);geht auch die abfrage auf den State.

                Ben1983B Offline
                Ben1983B Offline
                Ben1983
                schrieb am zuletzt editiert von
                #9

                @ticaki bei mir geht es auch damit nicht (Hatte ich schon vor erstellen dieses Threads gecheckt.)
                Und extendObjectAsync sollte soweit mit bekannt in extendObject drin sein, wenn dies nicht als Callback benutzt wird.

                mcm1957M 1 Antwort Letzte Antwort
                0
                • Ben1983B Ben1983

                  @ticaki bei mir geht es auch damit nicht (Hatte ich schon vor erstellen dieses Threads gecheckt.)
                  Und extendObjectAsync sollte soweit mit bekannt in extendObject drin sein, wenn dies nicht als Callback benutzt wird.

                  mcm1957M Offline
                  mcm1957M Offline
                  mcm1957
                  schrieb am zuletzt editiert von
                  #10

                  @ben1983 said in Wann ist ein nach der Erzeugung dp verfügbar?:

                  @ticaki bei mir geht es auch damit nicht (Hatte ich schon vor erstellen dieses Threads gecheckt.)
                  Und extendObjectAsync sollte soweit mit bekannt in extendObject drin sein, wenn dies nicht als Callback benutzt wird.

                  Nur wenn du aktuellen js-controlelr einsetzt.
                  https://github.com/ioBroker/ioBroker.js-controller/blob/master/CHANGELOG.md#704-2024-12-04---lucy
                  Kann gut sein, dass setObject zu extendObject durchschlägt

                  Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                  Support Repositoryverwaltung.

                  Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                  LESEN - gute Forenbeitrage

                  Ben1983B 1 Antwort Letzte Antwort
                  0
                  • Ben1983B Ben1983

                    Hallo, ich habe folgende Logik:

                    on(TrigerId,async(dp)=>{
                        await extendObject(DestinationId, {type:'state', common:{name:'Gerät ist zu Hause', type:'boolean', def: false}});
                        // Aktuellen Zustand auslesen
                        const actState= getState(DestinationId).val;
                    }
                    

                    nun verursacht dies aber ein actState = null

                    Erzeuge ich den state mit extendObject beim Scriptstart (nur zum Testen), so funktioniert es.
                    Ich dachte, dass das await dafür sorgt, dass entsprechend lange gewartet wird.

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #11

                    @ben1983
                    Und wo wird der State geschrieben oder der default Wert des Objekts gesetzt?
                    Welcher Wert würde erwartet werden?

                    Bin mir zwar nicht sicher, aber ein Objekt muss nicht zwangsläufig auch gleich einen State haben

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • mcm1957M mcm1957

                      @ben1983 said in Wann ist ein nach der Erzeugung dp verfügbar?:

                      @ticaki bei mir geht es auch damit nicht (Hatte ich schon vor erstellen dieses Threads gecheckt.)
                      Und extendObjectAsync sollte soweit mit bekannt in extendObject drin sein, wenn dies nicht als Callback benutzt wird.

                      Nur wenn du aktuellen js-controlelr einsetzt.
                      https://github.com/ioBroker/ioBroker.js-controller/blob/master/CHANGELOG.md#704-2024-12-04---lucy
                      Kann gut sein, dass setObject zu extendObject durchschlägt

                      Ben1983B Offline
                      Ben1983B Offline
                      Ben1983
                      schrieb am zuletzt editiert von
                      #12

                      @mcm1957 setze 7.0.6 ein ;-)

                      mcm1957M T 2 Antworten Letzte Antwort
                      0
                      • Ben1983B Ben1983

                        @mcm1957 setze 7.0.6 ein ;-)

                        mcm1957M Offline
                        mcm1957M Offline
                        mcm1957
                        schrieb am zuletzt editiert von
                        #13

                        @ben1983
                        Hoffe deine User auch :-)
                        Ansonsten solltest du ggF die dependencies des js-controllers checken / anpassen.

                        Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                        Support Repositoryverwaltung.

                        Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                        LESEN - gute Forenbeitrage

                        Ben1983B 1 Antwort Letzte Antwort
                        0
                        • Ben1983B Ben1983

                          @mcm1957 setze 7.0.6 ein ;-)

                          T Offline
                          T Offline
                          ticaki
                          schrieb am zuletzt editiert von ticaki
                          #14

                          @ben1983
                          @mcm1957

                          Ich glaube das ist leichter zu begründen, will jetzt aber nicht den Eindruck erwecken als wenn ich den Javascript-Adapter-Code durchschaut hätte. :)

                          create/set/extendWasauchimmerAsyncerzeugt im js-controller einen State/Object und wartet bis er angelegt ist. Jedoch hat der Javascript-Adapter einen Cache. Ein darauf folgenden getState() wird aus dem Cache gezogen und wenn der subscriber noch nicht durch ist, gibts ihn halt noch nicht.

                          Dazu kommt dann noch das die ...Async sich anders verhält als im Adapter - ohne Async wird nicht gewartet. https://github.com/ioBroker/ioBroker.javascript/blob/7778007eb9304658aed10f4a975de91864ad26bc/lib/sandbox.js#L4403

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          1 Antwort Letzte Antwort
                          0
                          • mcm1957M mcm1957

                            @ben1983
                            Hoffe deine User auch :-)
                            Ansonsten solltest du ggF die dependencies des js-controllers checken / anpassen.

                            Ben1983B Offline
                            Ben1983B Offline
                            Ben1983
                            schrieb am zuletzt editiert von
                            #15

                            @mcm1957 Das hier ist ein eigenes Skript im Javascript Adapter, kein Eigener Adapter

                            mcm1957M 1 Antwort Letzte Antwort
                            0
                            • Ben1983B Ben1983

                              @mcm1957 Das hier ist ein eigenes Skript im Javascript Adapter, kein Eigener Adapter

                              mcm1957M Offline
                              mcm1957M Offline
                              mcm1957
                              schrieb am zuletzt editiert von mcm1957
                              #16

                              @ben1983

                              OK - Für Javascript im Javascript Adapter gelten tw. andere Regeln.

                              Wenn Unetrscheide allerdings eher verwirrend sind und aufwärtskompatibel anpassbar scheinen dann macht es ev. durchaus Sinn ein Issue zu erstellen. Bluefox migriert den Javascritp adapter meines Wissens nach z,Z zu Typescript. Da kann man ggF kompatible (!) Anpassungen durchaus vornehmen.

                              Aber das müssen die Maintainer entscheiden.

                              Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                              Support Repositoryverwaltung.

                              Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                              LESEN - gute Forenbeitrage

                              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

                              375

                              Online

                              32.6k

                              Benutzer

                              82.2k

                              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