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. Länge/Breite in Javascript Adapter einbinden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Länge/Breite in Javascript Adapter einbinden

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
25 Beiträge 4 Kommentatoren 3.9k Aufrufe
  • Ä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.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #16

    Zum Thema: Ermitteln der Javascript-Instanz, unter dem das Script aktuell läuft

    Ich habe nichts gefunden, ob es da mittlerweile eine andere Alternative gibt.

    Aus den Posts oben habe ich mir eine globale Function erstellt, anhand der ich mir im Script die aktuelle Javascript-Instanz zurückgeben lasse. Danke für die Anregungen.

    // globale Funktion:    getJSInstance()
    
    // Beschreibung:        Ermittelt die aktuelle Javascript-Instanz und gibt diese als String zurück            
    
    // Übergabeparameter:   keine
    // Rückgabe:            aktuelle Javascript Instanz als String
    
    // Infos:               legt den Datenpunkt "CheckInstance" in der aktiven Javascript-Instanz an
    
    function getJSInstanceDP () {
        return getIdByName("CheckInstance").substr(0,12);
    }
    
    function getJSInstance () {
        createState("CheckInstance", getJSInstanceDP);
        setState("CheckInstance", getJSInstanceDP);
        return getJSInstanceDP();
        }
    
    

    Wenn jemand mehr als 10 Javascript Instanzen startet, habe ich das nicht berücksichtigt ;-)

    Der Aufruf der Funktion getJSInstance() gibt dann z.B. "javascript.0" zurück.

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #17

      Ich habe hier leider noch das übliche Problem.

      Beim ersten Start eines Scripts, welches die Funktion verwendet, kommt der Fehler, das der Datenpunkt CheckInstance noch nicht definiert ist.

      Ab dem zweiten Start läuft es dann sauber.

      Gibt es eine Möglichkeit, dass in der globalen Funktion abzufangen?

      Ich möchte eine globale Funktion so narrensicher wie möglich realisieren.

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        schrieb am zuletzt editiert von
        #18

        @ruhr70:

        Zum Thema: Ermitteln der Javascript-Instanz, unter dem das Script aktuell läuft

        Ich habe nichts gefunden, ob es da mittlerweile eine andere Alternative gibt.

        Aus den Posts oben habe ich mir eine globale Function erstellt, anhand der ich mir im Script die aktuelle Javascript-Instanz zurückgeben lasse. Danke für die Anregungen.

        // globale Funktion:    getJSInstance()
        
        // Beschreibung:        Ermittelt die aktuelle Javascript-Instanz und gibt diese als String zurück            
        
        // Übergabeparameter:   keine
        // Rückgabe:            aktuelle Javascript Instanz als String
        
        // Infos:               legt den Datenpunkt "CheckInstance" in der aktiven Javascript-Instanz an
        
        function getJSInstanceDP () {
            return getIdByName("CheckInstance").substr(0,12);
        }
        
        function getJSInstance () {
            createState("CheckInstance", getJSInstanceDP);
            setState("CheckInstance", getJSInstanceDP);
            return getJSInstanceDP();
            }
         
        
        

        Wenn jemand mehr als 10 Javascript Instanzen startet, habe ich das nicht berücksichtigt ;-)

        Der Aufruf der Funktion getJSInstance() gibt dann z.B. "javascript.0" zurück. `
        Und das alles nur dafür um kein Pull Request auf github zu machen. :D

        Es ist sehr einfach die Info zugreifbar zu machen . Ich muss nur wissendass es nötig ist. :D

        1 Antwort Letzte Antwort
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          schrieb am zuletzt editiert von
          #19

          @Bluefox:

          Und das alles nur dafür um kein Pull Request auf github zu machen. :D

          Es ist sehr einfach die Info zugreifbar zu machen . Ich muss nur wissendass es nötig ist. :D `

          Na ja…

          2.500 Zeilen Code...

          Dann wüsste ich nicht, wie man das sauber in dem Adapter umsetzt.

          Und github/pull Request sind auch so Themen, mit denen ich sonst nichts zu tun habe.

          Programmierung kenne ich noch als Maschinencode und Assambler für die 6502 und 6510 CPU ;-)

          Also wenn ich es könnte und sicher wäre, dass ich nichts kaputt mache, würde ich das sehr gerne einen "Pull Request" machen. Ich bin davon aber noch Meilen entfernt :-(

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Antwort Letzte Antwort
          0
          • BluefoxB Offline
            BluefoxB Offline
            Bluefox
            schrieb am zuletzt editiert von
            #20

            @ruhr70:

            @Bluefox:

            Und das alles nur dafür um kein Pull Request auf github zu machen. :D

            Es ist sehr einfach die Info zugreifbar zu machen . Ich muss nur wissendass es nötig ist. :D `

            Na ja…

            2.500 Zeilen Code...

            Dann wüsste ich nicht, wie man das sauber in dem Adapter umsetzt.

            Und github/pull Request sind auch so Themen, mit denen ich sonst nichts zu tun habe.

            Programmierung kenne ich noch als Maschinencode und Assambler für die 6502 und 6510 CPU ;-)

            Also wenn ich es könnte und sicher wäre, dass ich nichts kaputt mache, würde ich das sehr gerne einen "Pull Request" machen. Ich bin davon aber noch Meilen entfernt :-( `
            Ich muss nur nicht vergessen. Dann baue ich das ein.

            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #21

              @Bluefox:

              Ich muss nur nicht vergessen. Dann baue ich das ein. `

              Danke! :-)

              Ich komme ganz gut damit zurecht, dass ich ein Script zweimal starten muss, damit es dann sauber läuft :-)

              Ich erstell mir gerade ein Script-Template, welches ich dann hier für die Allgemeinheit reinstelle. Da wäre das halt unschön.

              Was kann ich tun, damit das nicht vergessen wird? Jira?

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Antwort Letzte Antwort
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                schrieb am zuletzt editiert von
                #22

                @ruhr70:

                @Bluefox:

                Ich muss nur nicht vergessen. Dann baue ich das ein. `

                Danke! :-)

                Ich komme ganz gut damit zurecht, dass ich ein Script zweimal starten muss, damit es dann sauber läuft :-)

                Ich erstell mir gerade ein Script-Template, welches ich dann hier für die Allgemeinheit reinstelle. Da wäre das halt unschön.

                Was kann ich tun, damit das nicht vergessen wird? Jira? `
                Habe ich schon implementiert.

                Damit die Fehlermeldung nicht kommt muss man so eine Struktur machen.

                function ready () {
                   // set start states
                   setState('myState', 0);
                   log('ready');
                }
                createState('state1',0);
                createState ('myState', ready);
                
                

                Weil createState asynchron ausgeführt wird und wir müssen warten, bis die Funktion fertig wird, bevor wir die mit setState ansprechen können.

                1 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #23

                  @Bluefox:

                  Habe ich schon implementiert.

                  Damit die Fehlermeldung nicht kommt muss man so eine Struktur machen.

                  function ready () {
                     // set start states
                     setState('myState', 0);
                     log('ready');
                  }
                  createState('state1',0);
                  createState ('myState', ready);
                  
                  

                  Weil createState asynchron ausgeführt wird und wir müssen warten, bis die Funktion fertig wird, bevor wir die mit setState ansprechen können. `

                  Danke und Danke ;-)

                  Dann könnte ich ja an der Stelle aufhören das zu testen. :P

                  Habe ich aber nicht. Mit dem asynchrone stehe ich immer noch auf dem Kriegsfuss. Es funktioniert nicht. :(

                  function ready () {
                     // set start states
                     setState('myState', 0);
                     log('function ready');
                  }
                  
                  createState('state1',0);
                  createState ('myState', ready);
                  
                  log ('weiter im Script');
                  
                  javascript-1	2016-03-06 08:44:34	info	script.js.Test_schnell: function ready
                  javascript-1	2016-03-06 08:44:34	info	script.js.Test_schnell: registered 0 subscriptions and 0 schedules
                  javascript-1	2016-03-06 08:44:34	info	script.js.Test_schnell: weiter im Script
                  javascript-1	2016-03-06 08:44:34	info	Start javascript script.js.Test_schnell
                  

                  Das "weiter im Script" kommt vor dem "function ready".

                  Ich hatte das so verstanden, dass durch das Setzen des Datenpunkt über eine Funktion, der nächste Befehl erst ausgeführt wird, wenn der Datenpunkt angelegt ist.

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Antwort Letzte Antwort
                  0
                  • BluefoxB Offline
                    BluefoxB Offline
                    Bluefox
                    schrieb am zuletzt editiert von
                    #24

                    @ruhr70:

                    @Bluefox:

                    Habe ich schon implementiert.

                    Damit die Fehlermeldung nicht kommt muss man so eine Struktur machen.

                    function ready () {
                       // set start states
                       setState('myState', 0);
                       log('ready');
                    }
                    createState('state1',0);
                    createState ('myState', ready);
                    
                    

                    Weil createState asynchron ausgeführt wird und wir müssen warten, bis die Funktion fertig wird, bevor wir die mit setState ansprechen können. `

                    Danke und Danke ;-)

                    Dann könnte ich ja an der Stelle aufhören das zu testen. :P

                    Habe ich aber nicht. Mit dem asynchrone stehe ich immer noch auf dem Kriegsfuss. Es funktioniert nicht. :(

                    function ready () {
                       // set start states
                       setState('myState', 0);
                       log('function ready');
                    }
                    
                    createState('state1',0);
                    createState ('myState', ready);
                    
                    log ('weiter im Script');
                    
                    javascript-1	2016-03-06 08:44:34	info	script.js.Test_schnell: function ready
                    javascript-1	2016-03-06 08:44:34	info	script.js.Test_schnell: registered 0 subscriptions and 0 schedules
                    javascript-1	2016-03-06 08:44:34	info	script.js.Test_schnell: weiter im Script
                    javascript-1	2016-03-06 08:44:34	info	Start javascript script.js.Test_schnell
                    

                    Das "weiter im Script" kommt vor dem "function ready".

                    Ich hatte das so verstanden, dass durch das Setzen des Datenpunkt über eine Funktion, der nächste Befehl erst ausgeführt wird, wenn der Datenpunkt angelegt ist. `
                    Du hast es nicht ganz verstanden. Asynchron heißt: es wird als Auftrag gespeichert und irgendwann später ausgeführt. Und wenn es fertig ist, dann wird die ready Funktion ausgeführt.

                    "Irgendwann später" heißt, wenn er nichts zu tun haben wird und bei dir muss er was tun, nämlich, log ausgeben.

                    1 Antwort Letzte Antwort
                    0
                    • ruhr70R Offline
                      ruhr70R Offline
                      ruhr70
                      schrieb am zuletzt editiert von
                      #25

                      @Bluefox:

                      Du hast es nicht ganz verstanden. Asynchron heißt: es wird als Auftrag gespeichert und irgendwann später ausgeführt. Und wenn es fertig ist, dann wird die ready Funktion ausgeführt.

                      "Irgendwann später" heißt, wenn er nichts zu tun haben wird und bei dir muss er was tun, nämlich, log ausgeben. `

                      Ich danke Dir für Deine Erklärung.

                      Das Ergebnis spielt sich ja auch im Log wieder.

                      Das bedeutet aber doch, dass ich um eine setTimeout() Funktion nicht drumherum komme, wenn ich den geschriebenen Datenpunkt im weiteren Verlauf benötige oder?

                      Mit setTimeout() habe ich das jetzt realisiert. Hatte die Hoffnung, dass es auch "eleganter" geht.

                      Adapter: Fritzbox, Unify Circuit
                      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                      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

                      823

                      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