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. Globales Script: Variablen hinterlegen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

Globales Script: Variablen hinterlegen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
16 Beiträge 3 Kommentatoren 3.6k 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.
  • bahnuhrB Online
    bahnuhrB Online
    bahnuhr
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #1

    Guten Morgen,

    ich habe in einem globalen Script folgende Variablen hinterlegt.

    ! // Variablen die man immer braucht
    ! function variablen_holen() {
    ! var vUrlaub = getState("hm-rega.0.2042").val;
    ! var vSommer = getState("hm-rega.0.1503").val;
    ! var vWochenende = getState("hm-rega.0.1504").val;
    ! var vAnwesenheit = getState("hm-rega.0.32078").val;
    ! var vFeiertag = getState("hm-rega.0.2905").val;
    ! var Temp = getState("hm-rpc.0.KEQ0766778.1.TEMPERATURE").val; // Temp vom Außensensor
    ! }

    Nur wie rufe ich diese globale function jetzt aus einem script heraus ab.

    Versucht habe ich:

    variablen_holen()

    Dies hat aber nicht geklappt?

    Gebt mir mal Hilfe, ich raff die Funktionsweise noch nicht so richtig.

    mfg

    Dieter


    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
    Danke.
    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
    ScreenToGif :https://www.screentogif.com/downloads.html

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

      Die Werte müssen mit return an das aufrufende Programm zurück gegeben werden:

      function variablen_holen() {
      var vUrlaub = getState("hm-rega.0.2042").val;
      var vSommer = getState("hm-rega.0.1503").val;
      var vWochenende = getState("hm-rega.0.1504").val;
      var vAnwesenheit = getState("hm-rega.0.32078").val;
      var vFeiertag = getState("hm-rega.0.2905").val;
      var Temp = getState("hm-rpc.0.KEQ0766778.1.TEMPERATURE").val; // Temp vom Außensensor
      return {
        Urlaub: vUrlaub,
        Sommer: vSommer,
        Wochenende: vWochenende,
        Anwesenheit: vAnwesenheit,
        Feiertag: vFeiertag,
        Aussentemp: Temp
        };
      }
      

      Der Aufruf erfolgt dann so:

      var variablen = variablen_holen();
      var Urlaub = variablen.Urlaub;
      ...
      

      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
      • blauholstenB Offline
        blauholstenB Offline
        blauholsten
        Developer
        schrieb am zuletzt editiert von
        #3

        @paul53

        Anfänger Frage….

        Wäre es nicht möglich die Variablen außerhalb der function in dem globalen Skript zu deklarieren? Und dann mit der function varialblen_holen immer die aktuellen Werte in diesen neu zu schreiben.

        Wobei die Idee mit den Objekt Klasse ist.

        Entwickler vom: - Viessman Adapter
        - Alarm Adapter

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

          @blauholsten:

          Wäre es nicht möglich die Variablen außerhalb der function in dem globalen Skript zu deklarieren? Und dann mit der function varialblen_holen immer die aktuellen Werte in diesen neu zu schreiben. `
          Im Prinzip ja, aber nicht zu empfehlen, da man irgendwann den Überblick über die globalen Variablen verliert.

          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
          • bahnuhrB Online
            bahnuhrB Online
            bahnuhr
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #5

            @blauholsten:

            @paul53

            Wäre es nicht möglich die Variablen außerhalb der function in dem globalen Skript zu deklarieren? Und dann mit der function varialblen_holen immer die aktuellen Werte in diesen neu zu schreiben. `

            Aber genau das hatte ich ja vor.

            Ich wollte die paar Variablen die ich immer brauche in ein globales script.

            Und dann in den Einzel-Scripten darauf zugreifen.

            Nur wie ?

            mfg

            Dieter


            Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
            Danke.
            gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
            ScreenToGif :https://www.screentogif.com/downloads.html

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

              @bahnuhr:

              Ich wollte die paar Variablen die ich immer brauche in ein globales script.

              Und dann in den Einzel-Scripten darauf zugreifen. `
              Dann müssen die Variablen außerhalb der Funktion deklariert werden:

              var vUrlaub;
              ...
              
              function variablen_holen() {
                vUrlaub = getState("hm-rega.0.2042").val;
                ...
              }
              
              

              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
              • bahnuhrB Online
                bahnuhrB Online
                bahnuhr
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                Hallo paul53,

                ok, aber wie ?

                Ziel bzw. das angedachte:

                • Ich schreibe in ein globales script einige Variablen die ich öfters brauche.

                Diese holen sich den ccu2 wert bzw. den status automatisch.

                • In den Einzelscripten benutze ich den variablennamen um nicht immer die lange HM Nr. eintippen zu müssen.

                Geht das ?

                mfg

                Dieter


                Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                Danke.
                gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                ScreenToGif :https://www.screentogif.com/downloads.html

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

                  @bahnuhr:

                  Diese holen sich den ccu2 wert bzw. den status automatisch. `
                  Das sollte so in einem globalen Script gehen (nicht getestet):

                  var vUrlaub;
                  var vSommer;
                  ...
                  
                  on({id: "hm-rega.0.2042", change: "ne", ack: true}, function(dp) {vUrlaub = dp.state.val;});
                  on({id: "hm-rega.0.1503", change: "ne", ack: true}, function(dp) {vSommer = dp.state.val;});
                  ...
                  

                  EDIT: Empfehlen würde ich es nicht, da das Subscribe mehrerer Datenpunkte in jedes Script eingefügt wird, egal ob die Variablen in dem Script benötigt werden oder nicht !

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

                    @bahnuhr:

                    …um nicht immer die lange HM Nr. eintippen zu müssen. `
                    Wenn es darum geht, nicht immer die ID zu ermitteln und einzutippen, würde ich lediglich diese in das globale Script schreiben.

                    var idUrlaub = "hm-rega.0.2042";
                    var idSommer = "hm-rega.0.1503";
                    var idWochenende = "hm-rega.0.1504";
                    var idAnwesenheit = "hm-rega.0.32078";
                    var idFeiertag = "hm-rega.0.2905";
                    var idTemp = "hm-rpc.0.KEQ0766778.1.TEMPERATURE"; // Temp vom Außensensor
                    
                    

                    Diese IDs können dann bei Bedarf in getState(id) bzw on() in den einzelnen Scripts verwendet 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

                    1 Antwort Letzte Antwort
                    0
                    • bahnuhrB Online
                      bahnuhrB Online
                      bahnuhr
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #10

                      Ok,

                      ich hatte mir vorgestellt, dass man in global schreiben könnte:

                      var idSommer = getState("hm-rega.0.1503").val;

                      Diese wäre dann immer aktuell.

                      Im einem Script wollte ich dann nur noch "idSommer" verwenden.

                      Fazit:

                      Scheint so nicht zu funktionieren.

                      Wenn ich dann doch immer "getState" schreiben muss, dann kann ich auch gleich die HM-Nr. hinschreiben.

                      Ist dann vielleicht sogar noch übersichtlicher.

                      mfg

                      Dieter


                      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                      Danke.
                      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                      ScreenToGif :https://www.screentogif.com/downloads.html

                      1 Antwort Letzte Antwort
                      0
                      • blauholstenB Offline
                        blauholstenB Offline
                        blauholsten
                        Developer
                        schrieb am zuletzt editiert von
                        #11

                        @bahnuhr:

                        Ok,

                        ich hatte mir vorgestellt, dass man in global schreiben könnte:

                        var idSommer = getState("hm-rega.0.1503").val;

                        Diese wäre dann immer aktuell.

                        Dieter `

                        Das geht so nicht! du müsstest den gewünschten Datenpunkte mit ein "on" abfragen, und dann in eine Variable schreiben.

                        Entwickler vom: - Viessman Adapter
                        - Alarm Adapter

                        1 Antwort Letzte Antwort
                        0
                        • blauholstenB Offline
                          blauholstenB Offline
                          blauholsten
                          Developer
                          schrieb am zuletzt editiert von
                          #12

                          @paul53:

                          @bahnuhr:

                          …um nicht immer die lange HM Nr. eintippen zu müssen. `
                          Wenn es darum geht, nicht immer die ID zu ermitteln und einzutippen, würde ich lediglich diese in das globale Script schreiben.

                          var idUrlaub = "hm-rega.0.2042";
                          var idSommer = "hm-rega.0.1503";
                          var idWochenende = "hm-rega.0.1504";
                          var idAnwesenheit = "hm-rega.0.32078";
                          var idFeiertag = "hm-rega.0.2905";
                          var idTemp = "hm-rpc.0.KEQ0766778.1.TEMPERATURE"; // Temp vom Außensensor
                          
                          

                          Diese IDs können dann bei Bedarf in getState(id) bzw on() in den einzelnen Scripts verwendet werden. `

                          Das wäre so auch mein Favorites. Habe eben aus Spass mal probiert ein "on" in einen globalen Skript anzulegen, dieses wir dann tatsächlich als subcribele in jeden Skript erkannt.

                          Merke: Laut bluefox habe ich mal gelernt, jedes globale Skript wird quasi vor ein "normales" Skript geschrieben.

                          Entwickler vom: - Viessman Adapter
                          - Alarm Adapter

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

                            @blauholsten:

                            Das wäre so auch mein Favorites. `
                            Mein Favorit ist die Verwendung von getIdByName(name), was allerdings eine eindeutige Namensvergabe voraussetzt.

                            var idUrlaub = getIdByName('Urlaub');
                            

                            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
                            • bahnuhrB Online
                              bahnuhrB Online
                              bahnuhr
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @paul53:

                              Mein Favorit ist die Verwendung von getIdByName(name), was allerdings eine eindeutige Namensvergabe voraussetzt. `

                              Hallo Paul,

                              schreib mal bitte etwas mehr.

                              Hört sich interessant an.

                              mfg

                              Dieter


                              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                              Danke.
                              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                              ScreenToGif :https://www.screentogif.com/downloads.html

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

                                Mehrere Skripte von mir, in denen ich getIdByName(name) anwende, findest Du unter den Script-Beispielen auf http://www.iobroker.net/?page_id=2786&lang=de, z.B. das http://www.iobroker.net/?page_id=3660&lang=de.

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

                                  @bahnuhr:

                                  schreib mal bitte etwas mehr. `
                                  Gerade bei Systemvariablen bietet sich die Verwendung des Namen (common.name) an, die aus der CCU automatisch in die Datenpunkte des Rega-Adapters übernommen werden.

                                  Auch den Datenpunkten des RPC-Adapters können Namen vergeben werden. Dies muss allerdings manuell im Reiter "Objekte" erfolgen, da auf der CCU nur Geräte und Kanäle (und SV) frei vergebbare Namen erhalten können, nicht jedoch die Hardware-Datenpunkte.

                                  Kein Objekt-Name innerhalb ioBrokers sollte doppelt vergeben werden. getIdByName(name) liefert in diesem Fall ein Array mit zwei/mehreren IDs, womit die Funktionen, in denen die ID verwendet wird, nichts anfangen 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
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  772

                                  Online

                                  32.5k

                                  Benutzer

                                  81.6k

                                  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