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. Datenpunkt runden, Datenpunkt Speicher von MB auf GB

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Datenpunkt runden, Datenpunkt Speicher von MB auf GB

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptblockly
25 Beiträge 3 Kommentatoren 1.9k 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 paul53

    @klassisch sagte:

    Vielleict gibt es deshalb kein automatisches Zufügen des alias.0 Objektbereichs?

    Vielleicht ? Gibt es das Objekt "0_userdata.0" ?

    @klassisch sagte in Datenpunkt runden, Datenpunkt Speicher von MB auf GB:

    Was passiert, wenn ich das händisch anlege?

    Probieren ! So muss das Objekt in der RAW-Ansicht aussehen:

    {
      "from": "system.adapter.admin.0",
      "user": "system.user.admin",
      "ts": 1572866284729,
      "common": {
        "name": "Alias Ordner",
        "role": "",
        "desc": "Manuell erzeugt",
        "icon": ""
      },
      "native": {},
      "acl": {
        "object": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      },
      "_id": "alias.0",
      "type": "meta"
    }
    

    Entscheidend sind Zeilen 17, 18.
    Ich glaube mich zu erinnern (ist lange her), dass ich erst einen Alias-Datenpunkt erzeugt hatte und später ein Objekt "alias.0" vom Typ "device" das ich in Typ "meta" geändert habe.
    Neuerdings kann man aber im Tab "Objekte" keine Objekte mehr in der Wurzel erzeugen. Dann musst Du ein Script verwenden.

    const id = 'alias.0';
    const obj = {
        type: 'meta',
        common: {
            name: 'Alias Ordner',
            desc: 'per Script erzeugt'
        },
        native: {}
    };
    
    if(!existsObject(id)) setObject(id, obj);
    
    K Offline
    K Offline
    klassisch
    Most Active
    schrieb am zuletzt editiert von
    #16

    @paul53 sagte in Datenpunkt runden, Datenpunkt Speicher von MB auf GB:

    Gibt es das Objekt "0_userdata.0" ?

    Ja, gibt es, weil ich es manuell angelegt habe. War nie ein Freund der vereinnahmenden Adapter, die immer die ganzen Daten in einem eigenen Objektraum vereinnahmen und hatte deshalb schon lange für diese Zwecke "data.0" erstellt. Man hat zwar den Vorteil des Konzepts eingesehen aber leider einen anderen Namen gewählt :-(

    Probieren ! So muss das Objekt in der RAW-Ansicht aussehen:
    Entscheidend sind Zeilen 17, 18.

    Vielen Dank für die Anschubfinanzierung. Habe es in raw so hingefrickelt

    Ich glaube mich zu erinnern (ist lange her), dass ich erst einen Alias-Datenpunkt erzeugt hatte und später ein Objekt "alias.0" vom Typ "device" das ich in Typ "meta" geändert habe.

    wie gesagt, in raw kann man frickeln

    Neuerdings kann man aber im Tab "Objekte" keine Objekte mehr in der Wurzel erzeugen. Dann musst Du ein Script verwenden.

    Das ist mir lider auch aufgefallen. Aber auch das ging dann mit raw. Hätte ich zwar so nicht erwartet, ging aber.
    Seit wann kan der JS-Adapter Objekte außerhalb seines Bereichs erzeugen? Hatte das früher mal getestet, da hat das aber nicht funktioniert.

    Habe jetzt mal ein einfaches Skript auf alias umgestellt und das scheint zu gehen.
    Werde ich auch noch nutzen, um meine häßliche Parallelstruktur "data.0" und "0_userdata.0" sy synchronisieren. Aber das braucht Zeit, Ruhe und Konzentration, weil ich das teilweise schon in Skripten mache und man so leicht einen Zirkelbezug generieren kann.

    Derzeit lege ich die alias-Datenpunkt in raw an, was etwas fummelig ist. Habe aber noch keine elegantere Methode gefunden. die funktioniert.

    paul53P 1 Antwort Letzte Antwort
    0
    • K klassisch

      @paul53 sagte in Datenpunkt runden, Datenpunkt Speicher von MB auf GB:

      Gibt es das Objekt "0_userdata.0" ?

      Ja, gibt es, weil ich es manuell angelegt habe. War nie ein Freund der vereinnahmenden Adapter, die immer die ganzen Daten in einem eigenen Objektraum vereinnahmen und hatte deshalb schon lange für diese Zwecke "data.0" erstellt. Man hat zwar den Vorteil des Konzepts eingesehen aber leider einen anderen Namen gewählt :-(

      Probieren ! So muss das Objekt in der RAW-Ansicht aussehen:
      Entscheidend sind Zeilen 17, 18.

      Vielen Dank für die Anschubfinanzierung. Habe es in raw so hingefrickelt

      Ich glaube mich zu erinnern (ist lange her), dass ich erst einen Alias-Datenpunkt erzeugt hatte und später ein Objekt "alias.0" vom Typ "device" das ich in Typ "meta" geändert habe.

      wie gesagt, in raw kann man frickeln

      Neuerdings kann man aber im Tab "Objekte" keine Objekte mehr in der Wurzel erzeugen. Dann musst Du ein Script verwenden.

      Das ist mir lider auch aufgefallen. Aber auch das ging dann mit raw. Hätte ich zwar so nicht erwartet, ging aber.
      Seit wann kan der JS-Adapter Objekte außerhalb seines Bereichs erzeugen? Hatte das früher mal getestet, da hat das aber nicht funktioniert.

      Habe jetzt mal ein einfaches Skript auf alias umgestellt und das scheint zu gehen.
      Werde ich auch noch nutzen, um meine häßliche Parallelstruktur "data.0" und "0_userdata.0" sy synchronisieren. Aber das braucht Zeit, Ruhe und Konzentration, weil ich das teilweise schon in Skripten mache und man so leicht einen Zirkelbezug generieren kann.

      Derzeit lege ich die alias-Datenpunkt in raw an, was etwas fummelig ist. Habe aber noch keine elegantere Methode gefunden. die funktioniert.

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

      @klassisch sagte:

      Habe aber noch keine elegantere Methode gefunden. die funktioniert.

      Ich verwende ein Script, das nur dazu dient, einzelne Alias-Datenpunkte zu erzeugen.

      // Original-Datenpunkt
      const idOrigin = '...'; 
      // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt.
      // Bei Nicht-Verwendung Leerstring '' zuweisen
      const idRead = '';
       
      // Alias-Datenpunkt
      const idAlias = 'PV.Einspeisung';
      var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
      
      // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
      nameAlias = 'PV Einspeisung';
      desc = 'per Script erstellt';
      // typeAlias = 'boolean'; // oder 'number'
      // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
      // write = "val ? true : true";
      // role = 'value';
      // min = 0; // nur Zahlen
      // max = 100; // nur Zahlen
      // unit = '%'; // nur für Zahlen
      // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
      // custom = []; // verhindert doppelte Ausführung von history, ...
      // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
      // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
      
      // Ab hier nichts ändern !!
      function createAlias(idDst, idSrc, idRd) {
         if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
         else {
            var obj = {};
            obj.type = 'state';
            obj.common = getObject(idSrc).common;
            obj.common.alias = {};
            if(idRd) {
                obj.common.alias.id = {};
                obj.common.alias.id.read = idRd;
                obj.common.alias.id.write = idSrc;
                obj.common.read = true;
            } else obj.common.alias.id = idSrc;
            if(typeAlias) obj.common.type = typeAlias;
            if(obj.common.read !== false && read) obj.common.alias.read = read;
            if(obj.common.write !== false && write) obj.common.alias.write = write;
            if(nameAlias) obj.common.name = nameAlias;
            if(role) obj.common.role = role;
            if(desc) obj.common.desc = desc;
            if(min !== undefined) obj.common.min = min;
            if(max !== undefined) obj.common.max = max;
            if(unit) obj.common.unit = unit;
            if(states) obj.common.states = states;
            if(custom && obj.common.custom) obj.common.custom = custom;
            obj.native = {};
            setObject(idDst, obj, function() {
                 if(idRd) setState(idRd, getState(idRd).val, true);
                 else setState(idSrc, getState(idSrc).val, true); 
            });
            if(raum && existsObject('enum.rooms.' + raum)) {
               let obj = getObject('enum.rooms.' + raum)
               obj.common.members.push(idDst);
               setObject('enum.rooms.' + raum, obj);
            }
            if(gewerk && existsObject('enum.functions.' + gewerk)) {
               let obj = getObject('enum.functions.' + gewerk)
               obj.common.members.push(idDst);
               setObject('enum.functions.' + gewerk, obj);
            }
         } 
      }
       
      createAlias('alias.0.' + idAlias, idOrigin, idRead);
      

      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
      1
      • K Offline
        K Offline
        klassisch
        Most Active
        schrieb am zuletzt editiert von
        #18

        @paul53 Klasse Skript, herzlichen Dank! Das macht das Leben sehr viel einfacher und steigert die Qualität der Alias-Datenpunkte enorm!
        Da werden alle Eigenschaften vererbt. Das ist klasse! So läuft das schon sehr viel runder!

        Der alias-Datenpunkt wird anscheind nur aktualisiert, wenn sich der Datenpunkt ändert. Und bis zu diesem Zeitpunkt gibt es eine Warnmeldung im Skript, welches den alias-Punkt verwendet (Nutzerskript).
        Beispiel:

        avascript.0	2020-11-07 16:13:32.779	warn	(6784) at script.js.common.automowerControl:96:24
        javascript.0	2020-11-07 16:13:32.778	warn	(6784) getState "alias.0.Automower.onTour" not found (3) 
        

        Wenn ich dann manuell am Datenpunkt etwas ändere, dann wird anscheinend synchronisiert und wenn ich das Nutzerskript aufrufe gibt es keine Warnmeldung mehr.

        Fällt auf, bei Datenpunkten mit seltener Änderung.

        Ist anscheinend nur ein Schönheitsfehler, das Nutzerskript wird nicht abgebrochen.
        Wäre es möglich an ein Skript ein synchronisationsbefehl dranzuhängen, damit die Aliaswerte von Anfang an befüllt werden?

        paul53P 1 Antwort Letzte Antwort
        0
        • K klassisch

          @paul53 Klasse Skript, herzlichen Dank! Das macht das Leben sehr viel einfacher und steigert die Qualität der Alias-Datenpunkte enorm!
          Da werden alle Eigenschaften vererbt. Das ist klasse! So läuft das schon sehr viel runder!

          Der alias-Datenpunkt wird anscheind nur aktualisiert, wenn sich der Datenpunkt ändert. Und bis zu diesem Zeitpunkt gibt es eine Warnmeldung im Skript, welches den alias-Punkt verwendet (Nutzerskript).
          Beispiel:

          avascript.0	2020-11-07 16:13:32.779	warn	(6784) at script.js.common.automowerControl:96:24
          javascript.0	2020-11-07 16:13:32.778	warn	(6784) getState "alias.0.Automower.onTour" not found (3) 
          

          Wenn ich dann manuell am Datenpunkt etwas ändere, dann wird anscheinend synchronisiert und wenn ich das Nutzerskript aufrufe gibt es keine Warnmeldung mehr.

          Fällt auf, bei Datenpunkten mit seltener Änderung.

          Ist anscheinend nur ein Schönheitsfehler, das Nutzerskript wird nicht abgebrochen.
          Wäre es möglich an ein Skript ein synchronisationsbefehl dranzuhängen, damit die Aliaswerte von Anfang an befüllt werden?

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

          @klassisch sagte:

          Wäre es möglich an ein Skript ein synchronisationsbefehl dranzuhängen, damit die Aliaswerte von Anfang an befüllt werden?

          Ja, wenn man setObject() um eine Callback-Funktion ergänzt.

                setObject(idDst, obj, function() {
                   if(idRd) setState(idRd, getState(idRd).val, true);
                   else setState(idSrc, getState(idSrc).val, true); 
                });
          

          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

          K 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @klassisch sagte:

            Wäre es möglich an ein Skript ein synchronisationsbefehl dranzuhängen, damit die Aliaswerte von Anfang an befüllt werden?

            Ja, wenn man setObject() um eine Callback-Funktion ergänzt.

                  setObject(idDst, obj, function() {
                     if(idRd) setState(idRd, getState(idRd).val, true);
                     else setState(idSrc, getState(idSrc).val, true); 
                  });
            
            K Offline
            K Offline
            klassisch
            Most Active
            schrieb am zuletzt editiert von
            #20

            @paul53 den Callback habe ich eingebaut. Bei einer boolean hat es funktioniert bei einer number nicht. Das wurde nichts synchronisiert.
            Dann habe ich diesen alias-Datenpunkt gelöscht und seither sagt das Skript, daß des den Datenpunkt schon gäbe.
            Wahrscheinlich frickel ich zu viel herum.....

            paul53P 1 Antwort Letzte Antwort
            0
            • K klassisch

              @paul53 den Callback habe ich eingebaut. Bei einer boolean hat es funktioniert bei einer number nicht. Das wurde nichts synchronisiert.
              Dann habe ich diesen alias-Datenpunkt gelöscht und seither sagt das Skript, daß des den Datenpunkt schon gäbe.
              Wahrscheinlich frickel ich zu viel herum.....

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

              @klassisch sagte:

              Das wurde nichts synchronisiert.

              Wie hast Du das festgestellt ? Im Tab "Objekte" ? Dann ist der Puffer von admin.0 noch nicht aktualisiert.

              @klassisch sagte in Datenpunkt runden, Datenpunkt Speicher von MB auf GB:

              Dann habe ich diesen alias-Datenpunkt gelöscht und seither sagt das Skript, daß des den Datenpunkt schon gäbe.

              Per Script oder im Tab "Objekte". Falls im Tab "Objekte", dann ist der Puffer von javascript.0 noch nicht aktualisiert.

              In beiden Fällen hilft ein Neustart der jeweils anderen Instanz: Änderung im Admin --> Neustart von javascript.0; Änderung per Script --> Neustart von admin.0.

              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

              K 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @klassisch sagte:

                Das wurde nichts synchronisiert.

                Wie hast Du das festgestellt ? Im Tab "Objekte" ? Dann ist der Puffer von admin.0 noch nicht aktualisiert.

                @klassisch sagte in Datenpunkt runden, Datenpunkt Speicher von MB auf GB:

                Dann habe ich diesen alias-Datenpunkt gelöscht und seither sagt das Skript, daß des den Datenpunkt schon gäbe.

                Per Script oder im Tab "Objekte". Falls im Tab "Objekte", dann ist der Puffer von javascript.0 noch nicht aktualisiert.

                In beiden Fällen hilft ein Neustart der jeweils anderen Instanz: Änderung im Admin --> Neustart von javascript.0; Änderung per Script --> Neustart von admin.0.

                K Offline
                K Offline
                klassisch
                Most Active
                schrieb am zuletzt editiert von
                #22

                @paul53 vielen Dank, was es alles gibt. Puffer von javascript.
                Ich habe in der Objektansicht geschaut und gelöscht.
                Wie lange braucht es, bis die Puffer synchronisiert sind, wenn man javascript nicht neu starten möchte?

                paul53P 1 Antwort Letzte Antwort
                0
                • K klassisch

                  @paul53 vielen Dank, was es alles gibt. Puffer von javascript.
                  Ich habe in der Objektansicht geschaut und gelöscht.
                  Wie lange braucht es, bis die Puffer synchronisiert sind, wenn man javascript nicht neu starten möchte?

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

                  @klassisch sagte:

                  Wie lange braucht es, bis die Puffer synchronisiert sind, wenn man javascript nicht neu starten möchte?

                  Leider keine Ahnung :cry:

                  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

                  K 2 Antworten Letzte Antwort
                  0
                  • paul53P paul53

                    @klassisch sagte:

                    Wie lange braucht es, bis die Puffer synchronisiert sind, wenn man javascript nicht neu starten möchte?

                    Leider keine Ahnung :cry:

                    K Offline
                    K Offline
                    klassisch
                    Most Active
                    schrieb am zuletzt editiert von
                    #24

                    @paul53 Danke, dann versuche ich es herauszufinden und warte mal ab. Muß eh noch ein paar andere Dinge tun, Auf jeden Fall kam ich heute Dank Deinem Verweis auf die alias Anleitung unverhofft und ungeplant zum Einstieg in dieses Thema, das mich schon lange interessiert und das ich noch etwas ausbauen werde. Gerade bei den messenden Schaltsteckdosen, die ab und an den Platz wechseln besonders praktisch. Dann noch bei meinen billigen 433MHz T-H-Sensoren, die leider bei jedem Batteriewechsel ihre Adresse ändern, was wirklich lästig und unnötig ist. die 433MHz TFK haben diese lästige Eigenschaft nicht.

                    1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @klassisch sagte:

                      Wie lange braucht es, bis die Puffer synchronisiert sind, wenn man javascript nicht neu starten möchte?

                      Leider keine Ahnung :cry:

                      K Offline
                      K Offline
                      klassisch
                      Most Active
                      schrieb am zuletzt editiert von
                      #25

                      @paul53 sagte in Datenpunkt runden, Datenpunkt Speicher von MB auf GB:

                      Leider keine Ahnung :cry:

                      Es ist auch keine praktischh handhabbare Zeit. Habe eben - etliche Stunden später - nochmals getestet. Geht nicht. JS Adapter neu gestartet - geht.

                      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

                      435

                      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