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. [gelöst] auf globale Objekt kann nicht zugegriffen werden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] auf globale Objekt kann nicht zugegriffen werden

Geplant Angeheftet Gesperrt Verschoben JavaScript
52 Beiträge 5 Kommentatoren 1.4k Aufrufe 3 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.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    schrieb am zuletzt editiert von Ben1983
    #1

    Hallo, ich habe im Ordner "global" ein Script, in welchem ich global gültige Variablen angelegt habe.
    Bis jetzt nur direkt eine Variable für jeden Wert in einer "Ebene".

    Nun wollte ich das Ganze bei neuen Variablen als Objekt aufbauen:

    const id = {};
    id.automatikfreigaben = {};
    id.automatikfreigaben.flur = {};
    id.automatikfreigaben.flur.beleuchtung = {};
    id.automatikfreigaben.flur.beleuchtung.zustand = '0_userdata.0.Produktiv.Automatikfreigaben.Flur.Beleuchtung.zustand';
    

    Wenn ich dies mache, so kann ich diese Objekte aber nicht innerhalb der Skripte verwenden.
    Mit der Autovervollständigung kann ich sie schon mal gar nicht einfügen und kopiere ich den ert rein, so erscheint:

    c423c2f5-7583-4b10-9d33-8850f4b6a47e-image.png

    Was mache ich falsch?

    haus-automatisierungH 1 Antwort Letzte Antwort
    0
    • Ben1983B Ben1983

      Hallo, ich habe im Ordner "global" ein Script, in welchem ich global gültige Variablen angelegt habe.
      Bis jetzt nur direkt eine Variable für jeden Wert in einer "Ebene".

      Nun wollte ich das Ganze bei neuen Variablen als Objekt aufbauen:

      const id = {};
      id.automatikfreigaben = {};
      id.automatikfreigaben.flur = {};
      id.automatikfreigaben.flur.beleuchtung = {};
      id.automatikfreigaben.flur.beleuchtung.zustand = '0_userdata.0.Produktiv.Automatikfreigaben.Flur.Beleuchtung.zustand';
      

      Wenn ich dies mache, so kann ich diese Objekte aber nicht innerhalb der Skripte verwenden.
      Mit der Autovervollständigung kann ich sie schon mal gar nicht einfügen und kopiere ich den ert rein, so erscheint:

      c423c2f5-7583-4b10-9d33-8850f4b6a47e-image.png

      Was mache ich falsch?

      haus-automatisierungH Online
      haus-automatisierungH Online
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von haus-automatisierung
      #2

      @ben1983 Ich würde mal damit anfangen, das Objekt nicht so umständlich zu definieren:

      const id = {
       automatikfreigaben: {
        flur: {
         beleuchtung: {
          zustand: '0_userdata.0.Produktiv.Automatikfreigaben.Flur.Beleuchtung.zustand'
         }
        }
       }
      };
      

      EDIT: Ach, Du hast das Objekt in global definiert, und möchtest es (mit Autovervollständigung im Editor?) in anderen Scripts verwenden? Das geht aktuell nicht.

      Aber das Script müsste dann trotzdem funktionieren.

      Global bedeutet einfach nur, dass der Inhalt der Scripts vor jedes andere Script kopiert wird.

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      Ben1983B 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @ben1983 Ich würde mal damit anfangen, das Objekt nicht so umständlich zu definieren:

        const id = {
         automatikfreigaben: {
          flur: {
           beleuchtung: {
            zustand: '0_userdata.0.Produktiv.Automatikfreigaben.Flur.Beleuchtung.zustand'
           }
          }
         }
        };
        

        EDIT: Ach, Du hast das Objekt in global definiert, und möchtest es (mit Autovervollständigung im Editor?) in anderen Scripts verwenden? Das geht aktuell nicht.

        Aber das Script müsste dann trotzdem funktionieren.

        Global bedeutet einfach nur, dass der Inhalt der Scripts vor jedes andere Script kopiert wird.

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

        @haus-automatisierung Ah ok.

        Schade,dass es nicht geht. Dann bekomme ich halt lauter Fehlermeldungen und weiß nicht, ob es wirklich Fehler sind.

        Ich habe es so "umständlich" definiert,
        da ich einzelne "Bereiche" habe und und dort immer wieder dann etwas hinzufüge.
        Also nicht alles in einem Block definiere.

        Am besten feature request als issue?

        haus-automatisierungH OliverIOO 2 Antworten Letzte Antwort
        0
        • Ben1983B Ben1983

          @haus-automatisierung Ah ok.

          Schade,dass es nicht geht. Dann bekomme ich halt lauter Fehlermeldungen und weiß nicht, ob es wirklich Fehler sind.

          Ich habe es so "umständlich" definiert,
          da ich einzelne "Bereiche" habe und und dort immer wieder dann etwas hinzufüge.
          Also nicht alles in einem Block definiere.

          Am besten feature request als issue?

          haus-automatisierungH Online
          haus-automatisierungH Online
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

          Am besten feature request als issue?

          Zu dem Thema gibt es schon ein paar ähnliche Issues, such mal durch.

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          Ben1983B 1 Antwort Letzte Antwort
          0
          • haus-automatisierungH haus-automatisierung

            @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

            Am besten feature request als issue?

            Zu dem Thema gibt es schon ein paar ähnliche Issues, such mal durch.

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

            @haus-automatisierung OK.
            Meinst DU es ist "Besser" das Objekt nur dazu definieren, wo es gebraucht wird?
            Also dann im worst case 2-3 mal in unterschiedlichen Skripten und den Global Ordner so gar nicht nutzen?

            Lerne ja gerne dazu :-)

            haus-automatisierungH paul53P 2 Antworten Letzte Antwort
            0
            • Ben1983B Ben1983

              @haus-automatisierung OK.
              Meinst DU es ist "Besser" das Objekt nur dazu definieren, wo es gebraucht wird?
              Also dann im worst case 2-3 mal in unterschiedlichen Skripten und den Global Ordner so gar nicht nutzen?

              Lerne ja gerne dazu :-)

              haus-automatisierungH Online
              haus-automatisierungH Online
              haus-automatisierung
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @ben1983 Weiß nicht, ob es da den besten Weg gibt. Jeder hat andere Vorzüge. Ich sehe z.B. gern auf einen Blick, was im Script passiert. Und wenn da dann Dinge aus Global kommen, sehe ich das ja nicht mehr. Daher verwende ich den Ordner z.B. gar nicht.

              Aber: Geschmackssache.

              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
              📚 Meine inoffizielle ioBroker Dokumentation

              Ben1983B 1 Antwort Letzte Antwort
              0
              • haus-automatisierungH haus-automatisierung

                @ben1983 Weiß nicht, ob es da den besten Weg gibt. Jeder hat andere Vorzüge. Ich sehe z.B. gern auf einen Blick, was im Script passiert. Und wenn da dann Dinge aus Global kommen, sehe ich das ja nicht mehr. Daher verwende ich den Ordner z.B. gar nicht.

                Aber: Geschmackssache.

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

                @haus-automatisierung OK.
                ist ein gutes Argument.

                Ich nutze allerdings auch ein Skript für globale Funktionen, die ich oft verwende.
                Hab z.B. eine Funktion, die einfach ein senden an die Alexainstanzen wrapt

                function sendAlexaMessage(message, deviceId)
                {
                    setState(deviceId + ".Commands.speak", message);
                }
                

                Die wird halt sehr oft in unterschiedlichen Skipten verwendet

                haus-automatisierungH 1 Antwort Letzte Antwort
                0
                • Ben1983B Ben1983

                  @haus-automatisierung OK.
                  ist ein gutes Argument.

                  Ich nutze allerdings auch ein Skript für globale Funktionen, die ich oft verwende.
                  Hab z.B. eine Funktion, die einfach ein senden an die Alexainstanzen wrapt

                  function sendAlexaMessage(message, deviceId)
                  {
                      setState(deviceId + ".Commands.speak", message);
                  }
                  

                  Die wird halt sehr oft in unterschiedlichen Skipten verwendet

                  haus-automatisierungH Online
                  haus-automatisierungH Online
                  haus-automatisierung
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @ben1983 Das mache ich mit sendTo / onMessage

                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                  📚 Meine inoffizielle ioBroker Dokumentation

                  Ben1983B 2 Antworten Letzte Antwort
                  0
                  • haus-automatisierungH haus-automatisierung

                    @ben1983 Das mache ich mit sendTo / onMessage

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

                    @haus-automatisierung OK

                    1 Antwort Letzte Antwort
                    0
                    • haus-automatisierungH haus-automatisierung

                      @ben1983 Das mache ich mit sendTo / onMessage

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

                      @haus-automatisierung nutzt Du immer sendTo?
                      Oder auch messageTo (innerhalb von Skripten)?

                      haus-automatisierungH 1 Antwort Letzte Antwort
                      0
                      • Ben1983B Ben1983

                        @haus-automatisierung nutzt Du immer sendTo?
                        Oder auch messageTo (innerhalb von Skripten)?

                        haus-automatisierungH Online
                        haus-automatisierungH Online
                        haus-automatisierung
                        Developer Most Active
                        schrieb am zuletzt editiert von haus-automatisierung
                        #11

                        @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                        Oder auch messageTo (innerhalb von Skripten)?

                        Ist technisch genau das gleiche. messageTo nutzt auch sendTo.

                        https://github.com/ioBroker/ioBroker.javascript/blob/ae0a27b3edca7e346ddfbff81df40ff77fbfbcd8/lib/sandbox.js#L3526-L3573

                        https://github.com/ioBroker/ioBroker.javascript/blob/ae0a27b3edca7e346ddfbff81df40ff77fbfbcd8/main.js#L724-L725

                        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                        📚 Meine inoffizielle ioBroker Dokumentation

                        Ben1983B 1 Antwort Letzte Antwort
                        0
                        • haus-automatisierungH haus-automatisierung

                          @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                          Oder auch messageTo (innerhalb von Skripten)?

                          Ist technisch genau das gleiche. messageTo nutzt auch sendTo.

                          https://github.com/ioBroker/ioBroker.javascript/blob/ae0a27b3edca7e346ddfbff81df40ff77fbfbcd8/lib/sandbox.js#L3526-L3573

                          https://github.com/ioBroker/ioBroker.javascript/blob/ae0a27b3edca7e346ddfbff81df40ff77fbfbcd8/main.js#L724-L725

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

                          @haus-automatisierung OK, danke

                          Ich bekomme nur bei der messageTo den log geschrieben, was ist denn beim SendTo falsch?

                          
                          messageTo("Testmessage",{name:"Testname"},(callbackdata)=>{
                              log(JSON.stringify(callbackdata));   
                          });
                          
                          sendTo("javascript.0",'toScript', {
                                  script: 'script.js.x_testskripte._a_Mesagetest', 
                                  message: 'Testmessage', 
                                  data: {
                                      flag: true
                                  },function(res){
                                      log(JSON.stringify(res));
                                  } 
                          });
                          
                          onMessage("Testmessage",(messagedata,callback) =>{
                              const myData = {input: messagedata,
                                              output:{name:"Test"}};
                              callback(myData)
                          });
                          

                          Ps. die funktionieren NUR mit callback,oder?
                          Also mit return kann man nichts zurückgeben, dass man das Ergebnis einer Funktion in einer Zeile direkt zuweisen kann.
                          Oder?

                          haus-automatisierungH 1 Antwort Letzte Antwort
                          0
                          • Ben1983B Ben1983

                            @haus-automatisierung OK, danke

                            Ich bekomme nur bei der messageTo den log geschrieben, was ist denn beim SendTo falsch?

                            
                            messageTo("Testmessage",{name:"Testname"},(callbackdata)=>{
                                log(JSON.stringify(callbackdata));   
                            });
                            
                            sendTo("javascript.0",'toScript', {
                                    script: 'script.js.x_testskripte._a_Mesagetest', 
                                    message: 'Testmessage', 
                                    data: {
                                        flag: true
                                    },function(res){
                                        log(JSON.stringify(res));
                                    } 
                            });
                            
                            onMessage("Testmessage",(messagedata,callback) =>{
                                const myData = {input: messagedata,
                                                output:{name:"Test"}};
                                callback(myData)
                            });
                            

                            Ps. die funktionieren NUR mit callback,oder?
                            Also mit return kann man nichts zurückgeben, dass man das Ergebnis einer Funktion in einer Zeile direkt zuweisen kann.
                            Oder?

                            haus-automatisierungH Online
                            haus-automatisierungH Online
                            haus-automatisierung
                            Developer Most Active
                            schrieb am zuletzt editiert von haus-automatisierung
                            #13

                            @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                            Also mit return kann man nichts zurückgeben, dass man das Ergebnis einer Funktion in einer Zeile direkt zuweisen kann.

                            Na Du kannst doch mit sendToAsync und await arbeiten. Ganz normal mit Promises halt.

                            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#sendtoasync

                            Oder halt messageToAsync:

                            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#messagetoasync

                            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                            📚 Meine inoffizielle ioBroker Dokumentation

                            Ben1983B 1 Antwort Letzte Antwort
                            0
                            • haus-automatisierungH haus-automatisierung

                              @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                              Also mit return kann man nichts zurückgeben, dass man das Ergebnis einer Funktion in einer Zeile direkt zuweisen kann.

                              Na Du kannst doch mit sendToAsync und await arbeiten. Ganz normal mit Promises halt.

                              https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#sendtoasync

                              Oder halt messageToAsync:

                              https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#messagetoasync

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

                              @haus-automatisierung AH ok... hatte mir mal etwas drum rum gebaut, weil damals ein fehler im sendToAsynch war... weiß leider nicht mehr was :-(

                              async function mySendToAsync(_adapter, cmd, msg) {
                                  return new Promise((resolve, reject) => {
                                      sendTo(_adapter, cmd, msg, res => {
                                          if (!res || res.error) {
                                              reject(res ? res.error : new Error('Unknown error'));
                                          } else {
                                              resolve(res);
                                          }
                                      });
                                  });
                              }
                              

                              also kann man auch normal jetzt das messageToAsynch benutzen, oder wie?

                              Trotzdem macht er irgendwie meinen Callback nicht, ob wohl ich den aufrufe. (im sendTo)

                              haus-automatisierungH 1 Antwort Letzte Antwort
                              0
                              • Ben1983B Ben1983

                                @haus-automatisierung AH ok... hatte mir mal etwas drum rum gebaut, weil damals ein fehler im sendToAsynch war... weiß leider nicht mehr was :-(

                                async function mySendToAsync(_adapter, cmd, msg) {
                                    return new Promise((resolve, reject) => {
                                        sendTo(_adapter, cmd, msg, res => {
                                            if (!res || res.error) {
                                                reject(res ? res.error : new Error('Unknown error'));
                                            } else {
                                                resolve(res);
                                            }
                                        });
                                    });
                                }
                                

                                also kann man auch normal jetzt das messageToAsynch benutzen, oder wie?

                                Trotzdem macht er irgendwie meinen Callback nicht, ob wohl ich den aufrufe. (im sendTo)

                                haus-automatisierungH Online
                                haus-automatisierungH Online
                                haus-automatisierung
                                Developer Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                                also kann man auch normal jetzt das messageToAsynch benutzen, oder wie?

                                Hatte ich doch schon geschrieben, dass die beiden Funktionen praktisch identisch sind. Siehe Code. messageTo hat halt eine etwas andere Signatur und braucht weniger Infos. Siehe Doku.

                                Ich hatte das hier gefixt: https://github.com/ioBroker/ioBroker.javascript/pull/1343

                                Einfach die aktuellste Stable version nehmen dann passts.

                                🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                📚 Meine inoffizielle ioBroker Dokumentation

                                Ben1983B 1 Antwort Letzte Antwort
                                0
                                • Ben1983B Ben1983

                                  @haus-automatisierung Ah ok.

                                  Schade,dass es nicht geht. Dann bekomme ich halt lauter Fehlermeldungen und weiß nicht, ob es wirklich Fehler sind.

                                  Ich habe es so "umständlich" definiert,
                                  da ich einzelne "Bereiche" habe und und dort immer wieder dann etwas hinzufüge.
                                  Also nicht alles in einem Block definiere.

                                  Am besten feature request als issue?

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

                                  @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                                  Schade,dass es nicht geht. Dann bekomme ich halt lauter Fehlermeldungen und weiß nicht, ob es wirklich Fehler sind.

                                  du könntest, zumindest temporär, die zeilen in dem das objekt aufgebaut wird in dein skript kopieren. dann funktioniert auch die vervollständigung.
                                  wenn dann alles getestet ist und es funktioniert, dann entfernst du die zeilen wieder und die zeilen aus global wirken.

                                  das einmalige definieren in global ist vor allem dann gut, wenn du regelmäßig das objekt in seiner definition erweiterst und du dir arbeit sparen willst. dadurch werden fehler reduziert.

                                  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
                                  • haus-automatisierungH haus-automatisierung

                                    @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                                    also kann man auch normal jetzt das messageToAsynch benutzen, oder wie?

                                    Hatte ich doch schon geschrieben, dass die beiden Funktionen praktisch identisch sind. Siehe Code. messageTo hat halt eine etwas andere Signatur und braucht weniger Infos. Siehe Doku.

                                    Ich hatte das hier gefixt: https://github.com/ioBroker/ioBroker.javascript/pull/1343

                                    Einfach die aktuellste Stable version nehmen dann passts.

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

                                    @haus-automatisierung OK. Cool.

                                    Könntest DU mir freundlicherweise noch sagen, warum ich hier keinen Log der Daten im Callback bekomme?
                                    Ich finde es nicht. Aufruf wird geloggt

                                    sendTo("javascript.0",'toScript', {
                                            script: 'script.js.x_testskripte._a_Mesagetest', 
                                            message: 'Testmessage', 
                                            data: {
                                                flag: true
                                            },function(res){
                                                log(JSON.stringify(res));
                                            } 
                                    });
                                    
                                    onMessage("Testmessage",(messagedata,callback) =>{
                                        const myData = {input: messagedata,
                                                        output:{name:"Test"}};
                                        callback(myData)
                                        log("Aufruf ");
                                    });
                                    
                                    haus-automatisierungH 1 Antwort Letzte Antwort
                                    0
                                    • Ben1983B Ben1983

                                      @haus-automatisierung OK. Cool.

                                      Könntest DU mir freundlicherweise noch sagen, warum ich hier keinen Log der Daten im Callback bekomme?
                                      Ich finde es nicht. Aufruf wird geloggt

                                      sendTo("javascript.0",'toScript', {
                                              script: 'script.js.x_testskripte._a_Mesagetest', 
                                              message: 'Testmessage', 
                                              data: {
                                                  flag: true
                                              },function(res){
                                                  log(JSON.stringify(res));
                                              } 
                                      });
                                      
                                      onMessage("Testmessage",(messagedata,callback) =>{
                                          const myData = {input: messagedata,
                                                          output:{name:"Test"}};
                                          callback(myData)
                                          log("Aufruf ");
                                      });
                                      
                                      haus-automatisierungH Online
                                      haus-automatisierungH Online
                                      haus-automatisierung
                                      Developer Most Active
                                      schrieb am zuletzt editiert von haus-automatisierung
                                      #18

                                      @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                                      Könntest DU mir freundlicherweise noch sagen, warum ich hier keinen Log der Daten im Callback bekomme?

                                      Deine Klammern sind falsch. Die Function ist teil des Msg-Objektes und nicht als separater Parameter definiert. Wenn Du den Code schöner formatieren würdest, siehst Du das auch auf einen Blick :)

                                      So gehts:

                                      sendTo(
                                          'javascript.0',
                                          'toScript',
                                          {
                                              script: 'script.js.test.playground', 
                                              message: 'Testmessage', 
                                              data: {
                                                  flag: true
                                              }
                                          },
                                          (res) => {
                                              console.log(JSON.stringify(res));
                                          }
                                      );
                                      
                                      onMessage('Testmessage', (messagedata, callback) => {
                                          console.log('Aufruf');
                                          const myData = {
                                              input: messagedata,
                                              output: {
                                                  name: 'Test'
                                              }
                                          };
                                      
                                          callback(myData);
                                      });
                                      

                                      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                      📚 Meine inoffizielle ioBroker Dokumentation

                                      Ben1983B 1 Antwort Letzte Antwort
                                      0
                                      • haus-automatisierungH haus-automatisierung

                                        @ben1983 sagte in auf globale Objekt kann nicht zugegriffen werden:

                                        Könntest DU mir freundlicherweise noch sagen, warum ich hier keinen Log der Daten im Callback bekomme?

                                        Deine Klammern sind falsch. Die Function ist teil des Msg-Objektes und nicht als separater Parameter definiert. Wenn Du den Code schöner formatieren würdest, siehst Du das auch auf einen Blick :)

                                        So gehts:

                                        sendTo(
                                            'javascript.0',
                                            'toScript',
                                            {
                                                script: 'script.js.test.playground', 
                                                message: 'Testmessage', 
                                                data: {
                                                    flag: true
                                                }
                                            },
                                            (res) => {
                                                console.log(JSON.stringify(res));
                                            }
                                        );
                                        
                                        onMessage('Testmessage', (messagedata, callback) => {
                                            console.log('Aufruf');
                                            const myData = {
                                                input: messagedata,
                                                output: {
                                                    name: 'Test'
                                                }
                                            };
                                        
                                            callback(myData);
                                        });
                                        
                                        Ben1983B Offline
                                        Ben1983B Offline
                                        Ben1983
                                        schrieb am zuletzt editiert von Ben1983
                                        #19

                                        @haus-automatisierung OK. Danke

                                        Beim Verwendet von messageToAsynch tritt dieser Fehler auf:

                                        messageToAsync("Testmessage",{name:"Testname"});
                                        
                                        	javascript.0 (20591) script.js.x_testskripte._a_Mesagetest: TypeError: Cannot read properties of undefined (reading 'timeout')
                                        
                                        haus-automatisierungH T 2 Antworten Letzte Antwort
                                        0
                                        • Ben1983B Ben1983

                                          @haus-automatisierung OK.
                                          Meinst DU es ist "Besser" das Objekt nur dazu definieren, wo es gebraucht wird?
                                          Also dann im worst case 2-3 mal in unterschiedlichen Skripten und den Global Ordner so gar nicht nutzen?

                                          Lerne ja gerne dazu :-)

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

                                          @ben1983 sagte: "Besser" das Objekt nur dazu definieren, wo es gebraucht wird?

                                          Ja. Die Gruppe "global" verwendet man für häufig verwendete eigene Funktionen.
                                          Mit globalen Objektdefinitionen müllt man sich den RAM der Javascript-Instanz zu, da sie in jedem nicht globalen Skript kompiliert werden.

                                          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

                                          Ben1983B 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

                                          641

                                          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