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.
  • AlmixxA Offline
    AlmixxA Offline
    Almixx
    schrieb am zuletzt editiert von
    #1

    moin. Wie runde ich am einfachsten Datenpunkte, im meinem Fall wäre das die Speichergröße der SSD Platte. Würde gerne in GB anzeigen lassen.
    Hatte was gelesen mit alias, blicke da aber noch nicht ganz durch.
    Könnte mir das einer kurz erklären?
    SSD.png

    K paul53P 2 Antworten Letzte Antwort
    0
    • AlmixxA Almixx

      moin. Wie runde ich am einfachsten Datenpunkte, im meinem Fall wäre das die Speichergröße der SSD Platte. Würde gerne in GB anzeigen lassen.
      Hatte was gelesen mit alias, blicke da aber noch nicht ganz durch.
      Könnte mir das einer kurz erklären?
      SSD.png

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

      @Almixx in Javascript mit

      Math.round(x)
      

      wenn das die Frage war.

      AlmixxA 1 Antwort Letzte Antwort
      0
      • K klassisch

        @Almixx in Javascript mit

        Math.round(x)
        

        wenn das die Frage war.

        AlmixxA Offline
        AlmixxA Offline
        Almixx
        schrieb am zuletzt editiert von
        #3

        Problem ist, ich hab noch keine Erfahrung mit JS. Bin dabei das zu lernen...

        K 1 Antwort Letzte Antwort
        0
        • AlmixxA Almixx

          moin. Wie runde ich am einfachsten Datenpunkte, im meinem Fall wäre das die Speichergröße der SSD Platte. Würde gerne in GB anzeigen lassen.
          Hatte was gelesen mit alias, blicke da aber noch nicht ganz durch.
          Könnte mir das einer kurz erklären?
          SSD.png

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

          @Almixx sagte:

          Könnte mir das einer kurz erklären?

          Doku

          Umrechnung MB in GB mit 2 Nachkommastellen:

          Math.round(val / 10.24) / 100;
          

          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
          • AlmixxA Almixx

            Problem ist, ich hab noch keine Erfahrung mit JS. Bin dabei das zu lernen...

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

            @Almixx Willkommen im Club.
            An Deiner Stelle würde ich erst mal in der Objektansicht manuell einen neuen Datenpunkt anlegen, der den gerundeten Datenpunkt aufnimmt.
            Dann die Einführung lesen. Dort steht drin, wie man Werte aus den Datenpunkten holt, verrechnet und wieder in einen Datenpunkt schreibt. getState und setState. Fehlermeldungen findet man dann im ioBroker logfile.
            JS ist nicht gerade mein Liebling, aber es ist halt sehr verbreitet und damit findet man viel.

            1 Antwort Letzte Antwort
            1
            • K Offline
              K Offline
              klassisch
              Most Active
              schrieb am zuletzt editiert von
              #6

              @Almixx wenn Du gestattest, dann nutze ich den Thread, um alias an einem Beispiel selbst zu lernen und anzuwenden. Ich nutze die Gelegenheit, daß sich der hochgeschätzte @paul53 gemeldet hat.
              Folgendes Szenario:

              • Meine Mikrowelle wird mit einer messenden und schaltenden Zwischensteckdose der Fa. Shelly vesorgt.
              • Die Shelly Steckdose hat einen grausligen und wenig sprechenden Namen mit Seriennummer drin
              • Ausserdem besteht die Möglichkeit, daß ich später einmal eine andere messende und schaltende Steckdose verwende. Das kann eine andere Shelly oder auch eine Homematic-Steckdose sein
              • Mit einem alias Objekt kann ich eine verknüpfte "virtuelle" Steckdose einführen, die einen sprechenden Namen hat, z.B.
              alias.0.microwaveOven.power
              

              und dessen Werte dann automatosch mit dem zugewiesenen Zwilling hin und her synchronisiert werden

              • Ich habe bereits ein Programm, welches die Leistungsaufnahme der Mikrowelle mißt und mir eine mail schickt, wenn die fertig ist - sei es als Mikrowelle oder als Flammkuchenbackofen

              Jetzt meine erste Frage an @paul53 :

              Mein Objektraum hat noch keinen alias.0 Bereich. Kann ich einfach einen manuell anlegen und dann ist das automatisch ein alias-Raum oder ist mein System dafür noch nicht bereit?

              paul53P 1 Antwort Letzte Antwort
              0
              • K klassisch

                @Almixx wenn Du gestattest, dann nutze ich den Thread, um alias an einem Beispiel selbst zu lernen und anzuwenden. Ich nutze die Gelegenheit, daß sich der hochgeschätzte @paul53 gemeldet hat.
                Folgendes Szenario:

                • Meine Mikrowelle wird mit einer messenden und schaltenden Zwischensteckdose der Fa. Shelly vesorgt.
                • Die Shelly Steckdose hat einen grausligen und wenig sprechenden Namen mit Seriennummer drin
                • Ausserdem besteht die Möglichkeit, daß ich später einmal eine andere messende und schaltende Steckdose verwende. Das kann eine andere Shelly oder auch eine Homematic-Steckdose sein
                • Mit einem alias Objekt kann ich eine verknüpfte "virtuelle" Steckdose einführen, die einen sprechenden Namen hat, z.B.
                alias.0.microwaveOven.power
                

                und dessen Werte dann automatosch mit dem zugewiesenen Zwilling hin und her synchronisiert werden

                • Ich habe bereits ein Programm, welches die Leistungsaufnahme der Mikrowelle mißt und mir eine mail schickt, wenn die fertig ist - sei es als Mikrowelle oder als Flammkuchenbackofen

                Jetzt meine erste Frage an @paul53 :

                Mein Objektraum hat noch keinen alias.0 Bereich. Kann ich einfach einen manuell anlegen und dann ist das automatisch ein alias-Raum oder ist mein System dafür noch nicht bereit?

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

                @klassisch sagte:

                Mein Objektraum hat noch keinen alias.0 Bereich.

                Der wird eigentlich durch den js-controller erzeugt. Welche Version läuft bei Dir ?
                Wenn noch keine Alias-Datenpunkte vorhanden sind, erscheint alias.0 nicht als Ordner, sondern weiter unten als Objekt vom Typ "meta".

                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:

                  Mein Objektraum hat noch keinen alias.0 Bereich.

                  Der wird eigentlich durch den js-controller erzeugt. Welche Version läuft bei Dir ?
                  Wenn noch keine Alias-Datenpunkte vorhanden sind, erscheint alias.0 nicht als Ordner, sondern weiter unten als Objekt vom Typ "meta".

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

                  @paul53 vielen Dank!
                  Mein System

                  a2ae0c5c-e55a-475d-b51f-2addacfda916-grafik.png Systemdata Bitte Ausfüllen
                  Hardwaresystem: Lenovo X1 i5-6300u
                  Arbeitsspeicher: 8GB
                  Festplattenart: SSD 180GB
                  Betriebssystem: Win 10 Pro
                  Node-Version: 10.17.0
                  Nodejs-Version: Node.js v10.17.0
                  NPM-Version: 6.11.3
                  ioBroker Version (js-controller): 3.1.6
                  Installationsart: Installer mit Workaround
                  Image genutzt: Installer
                  Installer 2 Link

                  Habe jetzt mal auf Expertenmodus umgeschaltet. Jede Menge meta Objekte, aber kein alias gefunden.

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • K klassisch

                    @paul53 vielen Dank!
                    Mein System

                    a2ae0c5c-e55a-475d-b51f-2addacfda916-grafik.png Systemdata Bitte Ausfüllen
                    Hardwaresystem: Lenovo X1 i5-6300u
                    Arbeitsspeicher: 8GB
                    Festplattenart: SSD 180GB
                    Betriebssystem: Win 10 Pro
                    Node-Version: 10.17.0
                    Nodejs-Version: Node.js v10.17.0
                    NPM-Version: 6.11.3
                    ioBroker Version (js-controller): 3.1.6
                    Installationsart: Installer mit Workaround
                    Image genutzt: Installer
                    Installer 2 Link

                    Habe jetzt mal auf Expertenmodus umgeschaltet. Jede Menge meta Objekte, aber kein alias gefunden.

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

                    @klassisch sagte:

                    kein alias gefunden.

                    Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.
                    Unabhängig davon solltest Du node.js auf Version 12.x updaten.

                    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

                    AlmixxA K 3 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @klassisch sagte:

                      kein alias gefunden.

                      Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.
                      Unabhängig davon solltest Du node.js auf Version 12.x updaten.

                      AlmixxA Offline
                      AlmixxA Offline
                      Almixx
                      schrieb am zuletzt editiert von
                      #10

                      Habe das Runden mit Blockly versucht, bekomme aber nur Ausgabe 0GB...???
                      Nehme an, am Blockly hab ich was falsch, aber was?

                      Blockly.png

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • AlmixxA Almixx

                        Habe das Runden mit Blockly versucht, bekomme aber nur Ausgabe 0GB...???
                        Nehme an, am Blockly hab ich was falsch, aber was?

                        Blockly.png

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

                        @Almixx sagte:

                        falsch, aber was?

                        Nicht die "Objekt ID", sondern den "Wert" verwenden. So wird aber nicht auf GB umgerechnet.

                        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

                        AlmixxA 1 Antwort Letzte Antwort
                        1
                        • paul53P paul53

                          @Almixx sagte:

                          falsch, aber was?

                          Nicht die "Objekt ID", sondern den "Wert" verwenden. So wird aber nicht auf GB umgerechnet.

                          AlmixxA Offline
                          AlmixxA Offline
                          Almixx
                          schrieb am zuletzt editiert von
                          #12

                          @paul53
                          so funktionierts, habs hinbekommen. man muss sich nur mal etwas damit beschäftigen :slightly_smiling_face: :wink:
                          Blockly.png

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @klassisch sagte:

                            kein alias gefunden.

                            Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.
                            Unabhängig davon solltest Du node.js auf Version 12.x updaten.

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

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

                            Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.

                            Aus irgendwelchen Gründen bei mir nicht da. Was passiert, wenn ich das händisch anlege?

                            Unabhängig davon solltest Du node.js auf Version 12.x updaten.

                            Windows Maschine. da hoffe ich noch auf eine aktualisierte Version des Installers von @Stabilostick mit runderneuertem Paket.

                            1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @klassisch sagte:

                              kein alias gefunden.

                              Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.
                              Unabhängig davon solltest Du node.js auf Version 12.x updaten.

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

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

                              Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.

                              Achso. Bin ja von einer älteren Version migriert mit @AlCalzone s Workaround. Da wird das gesamte iobroker-data Verzeichnis kopiert. Vielleict gibt es deshalb kein automatisches Zufügen des alias.0 Objektbereichs?

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • K klassisch

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

                                Bei js-controller 3.1.6. muss es ein Objekt alias.0 geben.

                                Achso. Bin ja von einer älteren Version migriert mit @AlCalzone s Workaround. Da wird das gesamte iobroker-data Verzeichnis kopiert. Vielleict gibt es deshalb kein automatisches Zufügen des alias.0 Objektbereichs?

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

                                @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);
                                

                                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:

                                  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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          471

                                          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