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. Erzeugen von Datenpunkten mit Voreinstellungen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Erzeugen von Datenpunkten mit Voreinstellungen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
12 Beiträge 6 Kommentatoren 6.2k 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #1

    Mit dem hier vorgestellten globalen Script können Datenpunkte mit sinnvollen Voreinstellungen erzeugt werden (createState). Die Attribute der so erstellten Objekte kann man in der Eingabemaske "allgemein" bequem editieren.

    Das Script stellt fogende 5 Funktionen zur Verfügung:

    • createCheckbox(name) - für boolsche Werte ohne Zustandstexte

    • createSwitch(name) - für boolsche Werte mit Zustandstexten (falsch/wahr, Aus/Ein, Nein/Ja, Sommer/Winter, …)

    • createMultistate(name) - für Multistate-Werte (Werteliste, z.B. Auto;Manu;Boost, Aus;Stufe-1;Stufe-2, ...)

    • createLevel(name) - für Analogwerte

    • createString(name) - für Zeichenketten

    // Datenpunkte mit Voreinstellungen erzeugen (createState)
    
    function createCheckbox(name) {
        createState(name, false, {read: true, 
                                  write: true, 
                                  desc: "Beschreibung", 
                                  type: "boolean", 
                                  def: false
        });
    }
    
    function createSwitch(name) {
        createState(name, false, {read: true, 
                                  write: true, 
                                  desc: "Beschreibung", 
                                  type: "boolean", 
                                  def: false, 
                                  states: {false:'Aus', true:'Ein'}
        });
    }
    
    function createMultistate(name) {
        createState(name, 0, {read: true, 
                              write: true, 
                              desc: "Beschreibung", 
                              type: "number", 
                              min: 0, 
                              max: 2, 
                              def: 0, 
                              states: {0:'Wert0', 1:'Wert1', 2:'Wert2'}
        });
    }
    
    function createLevel(name) {
        createState(name, 0, {read: true,
                              write: true, 
                              desc: "Beschreibung", 
                              type: "number", 
                              min: -30, 
                              max: 70, 
                              def: 0,
                              unit: "°C"
        });
    }
    
    function createString(name) {
        createState(name, "", {read: true, 
                               write: true, 
                               desc: "Beschreibung", 
                               type: "string", 
                               def: ""
        });
    }
    
    

    Die Auswahl der Zustände der Funktion createSwitch(name) funktioniert erst ab Version 0.5.7 von ioBroker Admin (Tab "Zustände").

    EDIT(10.07.2020): String-Version für states ersetzt durch Objekt-Version.

    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

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

      Da man in verschiedenen Räumen immer wieder die gleichen Datenpunkte benötigt, die sich nur im Namen (und der ID) unterscheiden, habe ich das globale Script noch um die Funktion copyDatapoint(Quellname,Zielname) erweitert:

      function copyDatapoint(src, dst) {
          var sid = getIdByName(src);
          var sdp = getObject(sid).common;
          createState(dst, sdp.def, { read: sdp.read,
                                      write: sdp.write,
                                      desc: sdp.desc,
                                      type: sdp.type,
                                      min: sdp.min,
                                      max: sdp.max,
                                      def: sdp.def,
                                      unit: sdp.unit,
                                      states: sdp.states
          });
      }
      

      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
      • B Offline
        B Offline
        Baerny
        schrieb am zuletzt editiert von
        #3

        Ich versuche schon seit längerer Zeit für ein Blocklyscript einen Datenpunkt zu erstellen. Das erstellen dieses Datenpunktes gelingt mir auch, nur kann ich diesen Datenpunkt nicht mit true oder false beschreiben. ( Bin in Sachen Script absoluter Anfänger) Auch die intensive Suche in diesem Forum hat mir leider nicht weitergeholfen.

        Jetzt bin ich zufällig auch dieses Script gestoßen.

        Wäre bitte jemand so lieb, mir zu erklären, welche Punkte ich bei dem Script anpassen muss um einen Datenpunkt zu erzeugen.

        Vielen Dank schon mal im voraus

        Baerny

        CCU 2 | Intel NUC mit Proxmox

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

          Wie kann ich die globalen Variablen in anderen Scripts zum Einsatz bringen? Hast du hierfür ein beispiel zum besseren Verständniss?

          Danke.

          Mfg
          0018

          1 Antwort Letzte Antwort
          0
          • umbmU Offline
            umbmU Offline
            umbm
            schrieb am zuletzt editiert von
            #5

            Es gibt hier 3 Funktion, die man in Blockly importieren kann, um Datenpunkte mit 3 verschiedenen Eigenschaften zu etzeugen.

            Dazu die entsprechende Funktion (für wshr/unwahr z. B. boolean) in das neue Blockly-Script kopieren, dann hat man links in der Blockauswahl bei den Funktionen den entsprechenden neuen Block und kann den entsprechenden vorbereiten.

            Ich erzeuge damit generell für alle Scripte die Datenpunkte, wenn das im Script erforderlich ist.

            Hier der Link zu den Import-Dateien direkt für Blockly

            viewtopic.php?p=157770#p157770

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

              Wie verwendet man es im normalen Javascript? Benutze leider kein Blocky.

              Mfg
              0018

              1 Antwort Letzte Antwort
              0
              • umbmU Offline
                umbmU Offline
                umbm
                schrieb am zuletzt editiert von
                #7

                Importiere es einmal in ein Blockly-Script und lasse dir dann rechts oben den Quelltext anzeigen.

                Von dort kannst du es leicht kopieren.

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

                  @0018:

                  Wie verwendet man es im normalen Javascript? Benutze leider kein Blocky. `
                  Dann ist es noch einfacher, weil globale Skripte automatisch in alle anderen (nicht globalen) Skripte kopiert werden: Verwende das Skript aus meinem ersten Post als globales Skript, dann kannst Du die passende Funktion zur Datenpunkterzeugung in jedem Skript aufrufen. Beispiel für String:

                  createString('meineGruppe.meinName'); // String-Datenpunkt mit der ID "javascript.0.meineGruppe.meinName" wird erzeugt
                  

                  EDIT: Seit @Bluefox die Erzeugung von Datenpunkten im Reiter "Objekte" ermöglicht hat, benutze ich nur noch die Funktion copyDatapoint(src, dst), um Datenpunkte zu duplizieren, die sich nur im Namen (ID) unterscheiden.

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

                    @paul53:

                    Da man in verschiedenen Räumen immer wieder die gleichen Datenpunkte benötigt, die sich nur im Namen (und der ID) unterscheiden, habe ich das globale Script noch um die Funktion copyDatapoint(Quellname,Zielname) erweitert:

                    function copyDatapoint(src, dst) {
                        var sid = getIdByName(src);
                        var sdp = getObject(sid).common;
                        createState(dst, sdp.def, { read: sdp.read,
                                                    write: sdp.write,
                                                    desc: sdp.desc,
                                                    type: sdp.type,
                                                    min: sdp.min,
                                                    max: sdp.max,
                                                    def: sdp.def,
                                                    unit: sdp.unit,
                                                    states: sdp.states
                        });
                    }
                    ```` `  
                    

                    Wie kann man die Funktion einfach ausführen lassen habe es so versucht:

                    
                    copyDatapoint("javascript.0.Homematic.hue", "javascript.0.Esszimmer.Tablet.hue");
                    
                    

                    aber ich bekomme immer eine Fehlermeldung und die States werden nicht angelegt!

                    Gruß Oliver

                    Ein paar details über meinen iobroker:
                    Proxmox VM iobroker
                    Alarmanlage mit Alexa Sprachausgabe
                    Solvis Heizung anbindung

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

                      Als Quelle den Namen angeben - nicht die ID !

                      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
                      • O Offline
                        O Offline
                        oliver2017
                        schrieb am zuletzt editiert von
                        #11

                        achso, ich dachte man kann den gesamten "ordner" kopieren, oder gibt es da auch eine möglichkeit?

                        Ein paar details über meinen iobroker:
                        Proxmox VM iobroker
                        Alarmanlage mit Alexa Sprachausgabe
                        Solvis Heizung anbindung

                        1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          Mit dem hier vorgestellten globalen Script können Datenpunkte mit sinnvollen Voreinstellungen erzeugt werden (createState). Die Attribute der so erstellten Objekte kann man in der Eingabemaske "allgemein" bequem editieren.

                          Das Script stellt fogende 5 Funktionen zur Verfügung:

                          • createCheckbox(name) - für boolsche Werte ohne Zustandstexte

                          • createSwitch(name) - für boolsche Werte mit Zustandstexten (falsch/wahr, Aus/Ein, Nein/Ja, Sommer/Winter, …)

                          • createMultistate(name) - für Multistate-Werte (Werteliste, z.B. Auto;Manu;Boost, Aus;Stufe-1;Stufe-2, ...)

                          • createLevel(name) - für Analogwerte

                          • createString(name) - für Zeichenketten

                          // Datenpunkte mit Voreinstellungen erzeugen (createState)
                          
                          function createCheckbox(name) {
                              createState(name, false, {read: true, 
                                                        write: true, 
                                                        desc: "Beschreibung", 
                                                        type: "boolean", 
                                                        def: false
                              });
                          }
                          
                          function createSwitch(name) {
                              createState(name, false, {read: true, 
                                                        write: true, 
                                                        desc: "Beschreibung", 
                                                        type: "boolean", 
                                                        def: false, 
                                                        states: {false:'Aus', true:'Ein'}
                              });
                          }
                          
                          function createMultistate(name) {
                              createState(name, 0, {read: true, 
                                                    write: true, 
                                                    desc: "Beschreibung", 
                                                    type: "number", 
                                                    min: 0, 
                                                    max: 2, 
                                                    def: 0, 
                                                    states: {0:'Wert0', 1:'Wert1', 2:'Wert2'}
                              });
                          }
                          
                          function createLevel(name) {
                              createState(name, 0, {read: true,
                                                    write: true, 
                                                    desc: "Beschreibung", 
                                                    type: "number", 
                                                    min: -30, 
                                                    max: 70, 
                                                    def: 0,
                                                    unit: "°C"
                              });
                          }
                          
                          function createString(name) {
                              createState(name, "", {read: true, 
                                                     write: true, 
                                                     desc: "Beschreibung", 
                                                     type: "string", 
                                                     def: ""
                              });
                          }
                          
                          

                          Die Auswahl der Zustände der Funktion createSwitch(name) funktioniert erst ab Version 0.5.7 von ioBroker Admin (Tab "Zustände").

                          EDIT(10.07.2020): String-Version für states ersetzt durch Objekt-Version.

                          GarfonsoG Offline
                          GarfonsoG Offline
                          Garfonso
                          Developer
                          schrieb am zuletzt editiert von
                          #12

                          @paul53 said in Erzeugen von Datenpunkten mit Voreinstellungen:

                          Leider scheint dieses alte Topic immer noch als Referenz zu dienen für manche. Daher hier mein Hinweis:
                          common.states sollte heute ein Object sein, kein string, wie in dem Skript. Hier das aktualisierte Skript:

                          // Datenpunkte mit Voreinstellungen erzeugen (createState)
                          
                          function createCheckbox(name) {
                              createState(name, false, {read: true, 
                                                        write: true, 
                                                        desc: "Beschreibung", 
                                                        type: "boolean", 
                                                        def: false
                              });
                          }
                          
                          function createSwitch(name) {
                              createState(name, false, {read: true, 
                                                        write: true, 
                                                        desc: "Beschreibung", 
                                                        type: "boolean", 
                                                        def: false,
                                                        states: {false:"Aus", true:"Ein"}
                              });
                          }
                          
                          function createMultistate(name) {
                              createState(name, 0, {read: true, 
                                                    write: true, 
                                                    desc: "Beschreibung", 
                                                    type: "number", 
                                                    min: 0, 
                                                    max: 2, 
                                                    def: 0, 
                                                    states: { 0:"Wert0", 1:"Wert1", 2:"Wert2"}
                              });
                          }
                          
                          function createLevel(name) {
                              createState(name, 0, {read: true,
                                                    write: true, 
                                                    desc: "Beschreibung", 
                                                    type: "number", 
                                                    min: -30, 
                                                    max: 70, 
                                                    def: 0,
                                                    unit: "°C"
                              });
                          }
                           
                          function createString(name) {
                              createState(name, "", {read: true, 
                                                     write: true, 
                                                     desc: "Beschreibung", 
                                                     type: "string", 
                                                     def: ""
                              });
                          }
                          

                          Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

                          Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

                          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

                          493

                          Online

                          32.7k

                          Benutzer

                          82.4k

                          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