Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    805

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

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

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

Scheduled Pinned Locked Moved JavaScript
52 Posts 5 Posters 1.4k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    wrote on last edited by 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 Reply Last reply
    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 Offline
      haus-automatisierungH Offline
      haus-automatisierung
      Developer Most Active
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Replies Last reply
        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 Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #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 Replies Last reply
            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 Offline
              haus-automatisierungH Offline
              haus-automatisierung
              Developer Most Active
              wrote on last edited by
              #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 Reply Last reply
              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
                wrote on last edited by 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 Reply Last reply
                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 Offline
                  haus-automatisierungH Offline
                  haus-automatisierung
                  Developer Most Active
                  wrote on last edited by
                  #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 Replies Last reply
                  0
                  • haus-automatisierungH haus-automatisierung

                    @ben1983 Das mache ich mit sendTo / onMessage

                    Ben1983B Offline
                    Ben1983B Offline
                    Ben1983
                    wrote on last edited by
                    #9

                    @haus-automatisierung OK

                    1 Reply Last reply
                    0
                    • haus-automatisierungH haus-automatisierung

                      @ben1983 Das mache ich mit sendTo / onMessage

                      Ben1983B Offline
                      Ben1983B Offline
                      Ben1983
                      wrote on last edited by
                      #10

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

                      haus-automatisierungH 1 Reply Last reply
                      0
                      • Ben1983B Ben1983

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

                        haus-automatisierungH Offline
                        haus-automatisierungH Offline
                        haus-automatisierung
                        Developer Most Active
                        wrote on last edited by 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 Reply Last reply
                        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
                          wrote on last edited by
                          #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 Reply Last reply
                          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 Offline
                            haus-automatisierungH Offline
                            haus-automatisierung
                            Developer Most Active
                            wrote on last edited by 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 Reply Last reply
                            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
                              wrote on last edited by 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 Reply Last reply
                              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 Offline
                                haus-automatisierungH Offline
                                haus-automatisierung
                                Developer Most Active
                                wrote on last edited by
                                #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 Reply Last reply
                                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
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  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
                                    wrote on last edited by 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 Reply Last reply
                                    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 Offline
                                      haus-automatisierungH Offline
                                      haus-automatisierung
                                      Developer Most Active
                                      wrote on last edited by 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 Reply Last reply
                                      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
                                        wrote on last edited by 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 Replies Last reply
                                        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
                                          wrote on last edited by
                                          #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 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          473

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe