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
    927

  • 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #5

    @pix:

    Wie kann ich in Zeile eins die richtige Javascript Instanz auswählen (hier: system.adapter.javascript.2), je nachdem, wo das Skript läuft? Gibt es sowas wie system.adapter.javascript.aktuell? `
    So könnte man die aktuelle Instanz ermitteln:

    var logging = true;
    
    createState("CheckInstance");
    
    var breite;
    var laenge;
    
    var timerID = setTimeout(function() {
        var dpID = getIdByName("CheckInstance");
        var inst = dpID.substr(0,12);
        if (logging) log("aktuelle Instanz: " + inst);
        var geo = getObject("system.adapter." + inst);
        if (geo && geo.native) {
        breite = geo.native.latitude;
        laenge = geo.native.longitude;
        if (logging) log('Spritpreis - Geokoordinaten aus Javascript-Adapter gelesen');
        } else { // falls nicht in den Adaptereinstellungen festgelegt, manuelle Werte
        breite = '48';
        laenge = '11';
        if (logging) log('Spritpreis - Geokoordinaten manuell eingetragen');
    }
    
        clearTimeout(timerID);
        // hier sollte der DP "CheckInstance" gelöscht werden, aber wie ?
    }, 1000);
    
    

    Da ich nicht weiß, wie man ein Objekt aus Javascript heraus löscht, muss man das Objekt "CheckInstance" manuell löschen, um das Verfahren mehrfach anwenden zu können.

    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
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #6

      Hallo Paul,
      @paul53:

      So könnte man die aktuelle Instanz ermitteln:

      var logging = true;
      
      createState("CheckInstance");
      
      var breite;
      var laenge;
      
      var timerID = setTimeout(function() {
          var dpID = getIdByName("CheckInstance");
          var inst = dpID.substr(0,12);
          if (logging) log("aktuelle Instanz: " + inst);
          var geo = getObject("system.adapter." + inst);
          if (geo && geo.native) {
          breite = geo.native.latitude;
          laenge = geo.native.longitude;
          if (logging) log('Spritpreis - Geokoordinaten aus Javascript-Adapter gelesen');
          } else { // falls nicht in den Adaptereinstellungen festgelegt, manuelle Werte
          breite = '48';
          laenge = '11';
          if (logging) log('Spritpreis - Geokoordinaten manuell eingetragen');
      }
      
          clearTimeout(timerID);
          // hier sollte der DP "CheckInstance" gelöscht werden, aber wie ?
      }, 1000);
      
      

      Da ich nicht weiß, wie man ein Objekt aus Javascript heraus löscht, muss man das Objekt "CheckInstance" manuell löschen, um das Verfahren mehrfach anwenden zu können. `

      Danke für die Hilfe. getIdByName liefert bei mir kein Ergebnis ('undefined').

      createState('Sprit.billigste_Tankstelle.json', {name: 'Billigste Tankstelle - JSON'});
      var dpID = getIdByName("Sprit.billigste_Tankstelle.json");
      if (logging) log('DP ID' + dpID);
      var teile = dpID.split('.');
      var instanz = teile[3];
      if (logging) log('Instanz: system.adapter.javascript.' + instanz);
      

      Warum erst CheckInstance anlegen und dann wieder löschen? Ich kann doch gleich eines der Objekte nehmen, die eh angelegt werden. Weiterhin habe ich statt substr dann split verwendet. Es teilt den String bei einem vordefinierten Zeichen (in diesem Fall der Punkt) und schreibt die Teile in ein Array. Aus diesem Array nehme ich das vierte Teil ([3]). Leider läuft das nicht, da

      error: javascript.2 script.js.VIS_Spritpreis_billigsteTankstelle: TypeError: Cannot call method 'split' of undefined
          at script.js.VIS_Spritpreis_billigsteTankstelle:70:18
      

      Gruß

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #7

        @pix:

        getIdByName liefert bei mir kein Ergebnis ('undefined'). `
        Verwendest Du die aktuelle Version (0.5.5) von iobroker.javascript ?

        Das Script habe ich bei mir erfolgreich getestet (iobroker unter Win 7).
        @pix:

        Warum erst CheckInstance anlegen und dann wieder löschen? Ich kann doch gleich eines der Objekte nehmen, die eh angelegt werden. `
        Ja, kannst Du natürlich. Allerdings funktioniert getIdByName() nur richtig, wenn man eindeutige Namen verwendet, also in jeder Instanz einen anderen Namen.
        @pix:

        createState('Sprit.billigste_Tankstelle.json', {name: 'Billigste Tankstelle - JSON'});

        var dpID = getIdByName("Sprit.billigste_Tankstelle.json"); `
        Das sofortige Abfragen nach createState() funktioniert nicht, deshalb das Timeout.

        Der Name ist explizit vorgegeben "{name: 'Billigste Tankstelle - JSON'}", also muss wohl auch getIdByName() darauf angewendet werden ?:

        var dpID = getIdByName("Billigste Tankstelle - JSON");
        

        2562_22.png

        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
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #8

          Hallo Paul,@paul53:

          @pix:

          getIdByName liefert bei mir kein Ergebnis ('undefined'). Verwendest Du die aktuelle Version (0.5.5) von iobroker.javascript ?
          ja~~@paul53:~~

          Das sofortige Abfragen nach createState() funktioniert nicht, deshalb das Timeout. `
          Aha, das timeout hatte mich schon gewundert.@paul53:

          Der Name ist explizit vorgegeben "{name: 'Billigste Tankstelle - JSON'}", also muss wohl auch getIdByName() darauf angewendet werden ?:

          var dpID = getIdByName("Billigste Tankstelle - JSON");
          ```` `  Das war der entscheidende Tipp - jetzt gehts.
          

          Danke und Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

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

            @paul53:

            @pix:

            Wie kann ich in Zeile eins die richtige Javascript Instanz auswählen (hier: system.adapter.javascript.2), je nachdem, wo das Skript läuft? Gibt es sowas wie system.adapter.javascript.aktuell? `
            So könnte man die aktuelle Instanz ermitteln:

            var logging = true;
            
            var breite;
            var laenge;
            
            var timerID = setTimeout(function() {
                var dpID = getIdByName("CheckInstance");
                var inst = dpID.substr(0,12);
                if (logging) log("aktuelle Instanz: " + inst);
                var geo = getObject("system.adapter." + inst);
                if (geo && geo.native) {
                breite = geo.native.latitude;
                laenge = geo.native.longitude;
                if (logging) log('Spritpreis - Geokoordinaten aus Javascript-Adapter gelesen');
                } else { // falls nicht in den Adaptereinstellungen festgelegt, manuelle Werte
                breite = '48';
                laenge = '11';
                if (logging) log('Spritpreis - Geokoordinaten manuell eingetragen');
            }
            
                clearTimeout(timerID);
                // hier sollte der DP "CheckInstance" gelöscht werden, aber wie ?
            }, 1000);
            
            

            Da ich nicht weiß, wie man ein Objekt aus Javascript heraus löscht, muss man das Objekt "CheckInstance" manuell löschen, um das Verfahren mehrfach anwenden zu können. `
            Ich würde nie drauf kommen, so das Problem zu lösen :lol: Cool.

            Währe es nicht einfache getInstance Funktion zu implementieren und pull request zu machen?

            Du bist doch fit in JS. :!:

            P.S. timeout braucht man nicht unbedingt.

            
            var breite;
            var laenge;
            
            function getPosition () {
                var dpID = getIdByName("CheckInstance");
                var inst = dpID.substr(0,12);
                if (logging) log("aktuelle Instanz: " + inst);
                var geo = getObject("system.adapter." + inst);
                if (geo && geo.native) {
                breite = geo.native.latitude;
                laenge = geo.native.longitude;
                if (logging) log('Spritpreis - Geokoordinaten aus Javascript-Adapter gelesen');
                } else { // falls nicht in den Adaptereinstellungen festgelegt, manuelle Werte
                breite = '48';
                laenge = '11';
                if (logging) log('Spritpreis - Geokoordinaten manuell eingetragen');
            }
            
            createState("CheckInstance", getPosition);
            
            
            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #10

              @Bluefox:

              Währe es nicht einfache getInstance Funktion zu implementieren und pull request zu machen?

              Du bist doch fit in JS. `
              Nein, ich arbeite mich gerade erst in JS ein. Was ist ein pull request ?
              @Bluefox:

              P.S. timeout braucht man nicht unbedingt. `
              Die Möglichkeit mit

              createState(name, callback);
              

              habe ich übersehen.

              Ist das createState(name) am Script-Ende erforderlich ?

              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
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                schrieb am zuletzt editiert von
                #11

                GELÖSCHT

                erst denken, dann schreiben… ;-)

                Die Idee mit RegExp war dumm :-(

                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
                  #12

                  @paul53:

                  Nein, ich arbeite mich gerade erst in JS ein. Was ist ein pull request ? `
                  1. Du machst ein Account auf github

                  2. Machst fork von https://github.com/ioBroker/ioBroker.javascript

                  3. Dann machst du die Änderungen an dem Projekt (online oder "lokal und dann push") und dann

                  4. drückst du auf "pull request" Knopf und bietest deine Änderungen in den Hauptzweig zu mergen.

                  @paul53:

                  Ist das createState(name) am Script-Ende erforderlich ? `
                  Habe korrigiert :)

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

                    @ruhr70:

                    kann man bei getObject nicht auch mit RegExp arbeiten? `
                    Nein. Weil du genau wissen solltest, was du nimmst.

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

                      @Bluefox:

                      @ruhr70:

                      kann man bei getObject nicht auch mit RegExp arbeiten? Nein. Weil du genau wissen solltest, was du nimmst.

                      Verdammt bist Du schnell…

                      ich hatte es schon gelöscht und dann kam Deine Antwort.

                      Ja, ist logisch... ich muss ja nicht irgendeine Instanz haben, sondern genau die Richtige.
                      4874_dwdexpand.txt

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

                      1 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #15

                        Bevor ich Änderungen auf GitHub vornehme, muss ich Deinen Code erst einmal (nahezu vollständig) verstehen. Davon bin ich noch weit entfernt.

                        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
                        0
                        • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          818

                                          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