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
    913

  • 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.
  • 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 Nicht stören
    T Nicht stören
    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 Nicht stören
        T Nicht stören
        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 Nicht stören
                    T Nicht stören
                    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

                        529

                        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