Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. 60 Datenpunkte in 0_userdata.0.xxxx anlegen

NEWS

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

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

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

60 Datenpunkte in 0_userdata.0.xxxx anlegen

Scheduled Pinned Locked Moved Einsteigerfragen
9 Posts 4 Posters 613 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    griessbx
    wrote on last edited by
    #1

    Hallo ich muss 60 Datenpunkte in der 0_userdata.0.xxxx anlegen die sich nur durch den Namen unterscheiden. Über den Dialog ist das recht mühsam. Geht das auch einfacher ?
    Gruß Roland

    MartinPM 1 Reply Last reply
    0
    • G griessbx

      Hallo ich muss 60 Datenpunkte in der 0_userdata.0.xxxx anlegen die sich nur durch den Namen unterscheiden. Über den Dialog ist das recht mühsam. Geht das auch einfacher ?
      Gruß Roland

      MartinPM Offline
      MartinPM Offline
      MartinP
      wrote on last edited by MartinP
      #2

      @griessbx

      // Upstream DOCSIS 3.0
      for (var i = 0; i < 4; i++) {
          var Channel = 'C0' + i.toString();
          createState('Internet.Docsis.US.' + Channel + '.Frequency', 0, false, {
              name: 'Frequency',
              unit: 'MHz',
              type: 'mixed',
              role: 'state'
          });
      

      Wenn man aber den Javascript-Adapter da freie Hand lässt, legt er die Datenpunkte unter "Javascript" an ...

      0cfb57a2-8676-47c6-899e-d0008236abb3-grafik.png

      EDIT: https://github.com/ioBroker/ioBroker.javascript/issues/429

      Da gibt es einen "Workaround", um den Datenpunkt in Userdata zu erzeugen...

      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
      Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
      Linux pve 6.8.12-16-pve
      6 GByte RAM für den Container
      Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
      Remote-Access über Wireguard der Fritzbox

      T 1 Reply Last reply
      1
      • I Offline
        I Offline
        ignis-draco
        wrote on last edited by ignis-draco
        #3

        @griessbx

        let nameslist = ["A", "B", "C"] // <-= Die Namen eingeben (bei dir ist das "xxxx")
        
        
        for (const name of nameslist){
          createState("0_userdata.0."+name, {type: 'boolean' }) //<- Hier muss noch der passende Typ ausgewählt werden
        }
        

        Natürlich ist auch auch möglich eine andere Rolle als "state" zu verwende.

        Proxmox [DMAF5] = LXC [Debian 12]
        ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

        MartinPM 1 Reply Last reply
        2
        • MartinPM MartinP

          @griessbx

          // Upstream DOCSIS 3.0
          for (var i = 0; i < 4; i++) {
              var Channel = 'C0' + i.toString();
              createState('Internet.Docsis.US.' + Channel + '.Frequency', 0, false, {
                  name: 'Frequency',
                  unit: 'MHz',
                  type: 'mixed',
                  role: 'state'
              });
          

          Wenn man aber den Javascript-Adapter da freie Hand lässt, legt er die Datenpunkte unter "Javascript" an ...

          0cfb57a2-8676-47c6-899e-d0008236abb3-grafik.png

          EDIT: https://github.com/ioBroker/ioBroker.javascript/issues/429

          Da gibt es einen "Workaround", um den Datenpunkt in Userdata zu erzeugen...

          T Offline
          T Offline
          TT-Tom
          wrote on last edited by
          #4

          @martinp

          man kann mit createState unter 0_userdata seine Datenpunkte anlegen.

          for (var i = 0; i < 60; i++) {
              var Channel = String(i);
              createState('0_userdata.0.' + Channel + '.stateName', initWert, {
                  name: 'stateName',
                  unit: 'Einheit ',
                  type: 'string'; //oder number oder boolean
                  role: 'state'
              });
          }
          

          Gruß Tom
          https://github.com/tt-tom17
          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

          NSPanel Script Wiki
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          NSPanel Adapter Wiki
          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

          1 Reply Last reply
          0
          • I ignis-draco

            @griessbx

            let nameslist = ["A", "B", "C"] // <-= Die Namen eingeben (bei dir ist das "xxxx")
            
            
            for (const name of nameslist){
              createState("0_userdata.0."+name, {type: 'boolean' }) //<- Hier muss noch der passende Typ ausgewählt werden
            }
            

            Natürlich ist auch auch möglich eine andere Rolle als "state" zu verwende.

            MartinPM Offline
            MartinPM Offline
            MartinP
            wrote on last edited by MartinP
            #5

            @ignis-draco sagte in 60 Datenpunkte in 0_userdata.0.xxxx anlegen:

            createState("0_userdata.0."+name, {type: 'boolean' })

            Die Anleitung ist da anscheinend etwas zu kompliziert bzw lückenhaft

            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#createstate

            Der Haken, der da geschlagen wird, um aliases zu erzeugen hat mich verwirrt ... hatte vermutet, dass man irgendwelches Vodoo im Stil des Kreieren eines Alias machen muss, um in userdata schreiben zu können ...

            Das, was im Issue unwidersprochen als letzter Kommentar steht (weil beim Erstellen noch zutreffend), hat auch nicht gerade zum Auflösen der Verwirrung beigetragen... habe im geschlossenen Issue zumindest noch einen klärenden Kommentar dahintergesetzt.

            https://github.com/ioBroker/ioBroker.javascript/issues/429

            Ich möchte gern dieses Thema aufwärmen und wieder in Erinnerung rufen.

            Es kam bei mir Freude auf, als ich die Ankündigung von 0_userdata.0 und dessen Funktionalität als benutzereigener Datenpunktbaum im Rahmen der ioBroker Version 2 gelesen hatte - weil dieses Konstrukt mir als Javascript-User mehr Sicherheit bringt. Als jedoch nach dem Upgrade auf Version 2 ein erster Test mit einem simplen Statement der Art

            createState('0_userdata.0.Test123');

            ein ungewolltes Ergebnis lieferte (nämlich einen Datenpunkt javascript.0.0_userdata.0.Test123), wandelte sich meine Freude in "Unfreude". Laut den Diskussionen im Forum soll ja das 0_userdata.0-Konstrukt gerade Einsteiger "anlocken". Um so wichtiger ist es daher, den Einsteigern auch ein einfaches Grundgerüst an Werkzeugen hierfür in die Hand zu geben.

            Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
            Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
            Linux pve 6.8.12-16-pve
            6 GByte RAM für den Container
            Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
            Remote-Access über Wireguard der Fritzbox

            T 1 Reply Last reply
            0
            • MartinPM MartinP

              @ignis-draco sagte in 60 Datenpunkte in 0_userdata.0.xxxx anlegen:

              createState("0_userdata.0."+name, {type: 'boolean' })

              Die Anleitung ist da anscheinend etwas zu kompliziert bzw lückenhaft

              https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#createstate

              Der Haken, der da geschlagen wird, um aliases zu erzeugen hat mich verwirrt ... hatte vermutet, dass man irgendwelches Vodoo im Stil des Kreieren eines Alias machen muss, um in userdata schreiben zu können ...

              Das, was im Issue unwidersprochen als letzter Kommentar steht (weil beim Erstellen noch zutreffend), hat auch nicht gerade zum Auflösen der Verwirrung beigetragen... habe im geschlossenen Issue zumindest noch einen klärenden Kommentar dahintergesetzt.

              https://github.com/ioBroker/ioBroker.javascript/issues/429

              Ich möchte gern dieses Thema aufwärmen und wieder in Erinnerung rufen.

              Es kam bei mir Freude auf, als ich die Ankündigung von 0_userdata.0 und dessen Funktionalität als benutzereigener Datenpunktbaum im Rahmen der ioBroker Version 2 gelesen hatte - weil dieses Konstrukt mir als Javascript-User mehr Sicherheit bringt. Als jedoch nach dem Upgrade auf Version 2 ein erster Test mit einem simplen Statement der Art

              createState('0_userdata.0.Test123');

              ein ungewolltes Ergebnis lieferte (nämlich einen Datenpunkt javascript.0.0_userdata.0.Test123), wandelte sich meine Freude in "Unfreude". Laut den Diskussionen im Forum soll ja das 0_userdata.0-Konstrukt gerade Einsteiger "anlocken". Um so wichtiger ist es daher, den Einsteigern auch ein einfaches Grundgerüst an Werkzeugen hierfür in die Hand zu geben.

              T Offline
              T Offline
              TT-Tom
              wrote on last edited by TT-Tom
              #6

              @martinp

              hier mal ein kleines Beispiel mit erstellen der 0_userdata Datenpunkte und dem Alias dazu.

              /**
               * erstellen der Datenpunkte in 0_userdata.0 und alias.0 je Haltestelle und je Route
               */
              async function init_Datenpunkte() {
                  try {
                      for (let h = 0; h < NummernHaltestellen.length; h++) {
                          let haltestelle: string = NummernHaltestellen[h];
                          for (let i = 0; i < anzahlAbfahrtenHaltestelle; i++) {
                              if (existsObject(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i)) == false) {
                                  log(`Datenpunkte für Haltestelle ${haltestelle} Abfahrt ${i} werden angelegt`);
                                  await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Departure', '00:00', {
                                      type: 'string',
                                      name: { de: 'Abfahrzeit', en: 'Departure time' },
                                  });
                                  await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Direction', 'Hbf', {
                                      type: 'string',
                                      name: { de: 'Richtung', en: 'Direction' },
                                  });
                                  await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Vehicle', 'train', {
                                      type: 'string',
                                      name: { de: 'Fahrzeug', en: 'Vehicle' },
                                  });
                                  await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Delay', false, {
                                      type: 'boolean',
                                      name: { de: 'Verspätung', en: 'Delay' },
                                  });
                                  setObject(dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle, {
                                      type: 'device',
                                      common: {
                                          role: 'timeTable',
                                          name: { de: 'Haltestelle ' + haltestelle, en: 'Station ' + haltestelle },
                                      },
                                      native: {},
                                  });
                                  setObject(dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i), {
                                      type: 'channel',
                                      common: {
                                          role: 'timeTable',
                                          name: { de: 'Abfahrt ' + String(i), en: 'Departure ' + String(i) },
                                      },
                                      native: {},
                                  });
                                  await createAliasAsync(
                                      dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.ACTUAL',
                                      dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Departure',
                                      true,
                                      <iobJS.StateCommon>{ type: 'string', role: 'state', name: { de: 'Abfahrzeit', en: 'Departure time' } }
                                  );
                                  await createAliasAsync(
                                      dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.DIRECTION',
                                      dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Direction',
                                      true,
                                      <iobJS.StateCommon>{ type: 'string', role: 'state', name: { de: 'Richtung', en: 'Direction' } }
                                  );
                                  await createAliasAsync(
                                      dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.VEHICLE',
                                      dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Vehicle',
                                      true,
                                      <iobJS.StateCommon>{ type: 'string', role: 'state', name: { de: 'Fahrzeug', en: 'Vehicle' } }
                                  );
                                  await createAliasAsync(
                                      dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.DELAY',
                                      dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Delay',
                                      true,
                                      <iobJS.StateCommon>{ type: 'boolean', role: 'state', name: { de: 'Verspätung', en: 'Delay' } }
                                  );
                                  log(`Fertig`);
                              } else {
                                  log(`Datenpunkte für Haltestelle ${haltestelle} Abfahrt ${i} vorhanden`);
                              }
                          }
                      }
              

              du musst zuerst die 0_userdata DP erstellen und dann die Alias Struck aufbauen. wobei du da beachten musst folder, device und channel müssen separat aufgebaut werden.

              Gruß Tom
              https://github.com/tt-tom17
              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

              NSPanel Script Wiki
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              NSPanel Adapter Wiki
              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

              MartinPM 1 Reply Last reply
              0
              • T TT-Tom

                @martinp

                hier mal ein kleines Beispiel mit erstellen der 0_userdata Datenpunkte und dem Alias dazu.

                /**
                 * erstellen der Datenpunkte in 0_userdata.0 und alias.0 je Haltestelle und je Route
                 */
                async function init_Datenpunkte() {
                    try {
                        for (let h = 0; h < NummernHaltestellen.length; h++) {
                            let haltestelle: string = NummernHaltestellen[h];
                            for (let i = 0; i < anzahlAbfahrtenHaltestelle; i++) {
                                if (existsObject(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i)) == false) {
                                    log(`Datenpunkte für Haltestelle ${haltestelle} Abfahrt ${i} werden angelegt`);
                                    await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Departure', '00:00', {
                                        type: 'string',
                                        name: { de: 'Abfahrzeit', en: 'Departure time' },
                                    });
                                    await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Direction', 'Hbf', {
                                        type: 'string',
                                        name: { de: 'Richtung', en: 'Direction' },
                                    });
                                    await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Vehicle', 'train', {
                                        type: 'string',
                                        name: { de: 'Fahrzeug', en: 'Vehicle' },
                                    });
                                    await createStateAsync(dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Delay', false, {
                                        type: 'boolean',
                                        name: { de: 'Verspätung', en: 'Delay' },
                                    });
                                    setObject(dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle, {
                                        type: 'device',
                                        common: {
                                            role: 'timeTable',
                                            name: { de: 'Haltestelle ' + haltestelle, en: 'Station ' + haltestelle },
                                        },
                                        native: {},
                                    });
                                    setObject(dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i), {
                                        type: 'channel',
                                        common: {
                                            role: 'timeTable',
                                            name: { de: 'Abfahrt ' + String(i), en: 'Departure ' + String(i) },
                                        },
                                        native: {},
                                    });
                                    await createAliasAsync(
                                        dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.ACTUAL',
                                        dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Departure',
                                        true,
                                        <iobJS.StateCommon>{ type: 'string', role: 'state', name: { de: 'Abfahrzeit', en: 'Departure time' } }
                                    );
                                    await createAliasAsync(
                                        dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.DIRECTION',
                                        dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Direction',
                                        true,
                                        <iobJS.StateCommon>{ type: 'string', role: 'state', name: { de: 'Richtung', en: 'Direction' } }
                                    );
                                    await createAliasAsync(
                                        dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.VEHICLE',
                                        dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Vehicle',
                                        true,
                                        <iobJS.StateCommon>{ type: 'string', role: 'state', name: { de: 'Fahrzeug', en: 'Vehicle' } }
                                    );
                                    await createAliasAsync(
                                        dp_Alias + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.DELAY',
                                        dp_Userdata + 'FahrplanAnzeiger.Haltestelle' + haltestelle + '.Abfahrt' + String(i) + '.Delay',
                                        true,
                                        <iobJS.StateCommon>{ type: 'boolean', role: 'state', name: { de: 'Verspätung', en: 'Delay' } }
                                    );
                                    log(`Fertig`);
                                } else {
                                    log(`Datenpunkte für Haltestelle ${haltestelle} Abfahrt ${i} vorhanden`);
                                }
                            }
                        }
                

                du musst zuerst die 0_userdata DP erstellen und dann die Alias Struck aufbauen. wobei du da beachten musst folder, device und channel müssen separat aufgebaut werden.

                MartinPM Offline
                MartinPM Offline
                MartinP
                wrote on last edited by
                #7

                @tt-tom warum legst Du eigentlich doppelte Strukturen an, einmal in alias, und einmal in userdata?

                Ich meinte diese Variante von createState mit gesetztem "common" Parameter zur Erzeugung eines Aliases, die mich verwirrt hat ...

                The following settings for aliases are valid too:

                common => {
                alias: {
                id: 'alias.0.myOtherState', // will be created automatically if not already exists
                write: 'val * 1000', // convert function for write to created state
                read: 'val / 1000' // convert function to read from created state
                }
                }

                or

                common => {
                alias: {
                id: 'alias.0.myOtherState', // will be created automatically if not already exists
                }
                }

                Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
                Linux pve 6.8.12-16-pve
                6 GByte RAM für den Container
                Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
                Remote-Access über Wireguard der Fritzbox

                T 1 Reply Last reply
                0
                • MartinPM MartinP

                  @tt-tom warum legst Du eigentlich doppelte Strukturen an, einmal in alias, und einmal in userdata?

                  Ich meinte diese Variante von createState mit gesetztem "common" Parameter zur Erzeugung eines Aliases, die mich verwirrt hat ...

                  The following settings for aliases are valid too:

                  common => {
                  alias: {
                  id: 'alias.0.myOtherState', // will be created automatically if not already exists
                  write: 'val * 1000', // convert function for write to created state
                  read: 'val / 1000' // convert function to read from created state
                  }
                  }

                  or

                  common => {
                  alias: {
                  id: 'alias.0.myOtherState', // will be created automatically if not already exists
                  }
                  }

                  T Offline
                  T Offline
                  TT-Tom
                  wrote on last edited by
                  #8

                  @martinp

                  das hat mit dem NSPanel zu tun und seinem Script dahinter.

                  Gruß Tom
                  https://github.com/tt-tom17
                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                  NSPanel Script Wiki
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  NSPanel Adapter Wiki
                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                  MartinPM 1 Reply Last reply
                  0
                  • T TT-Tom

                    @martinp

                    das hat mit dem NSPanel zu tun und seinem Script dahinter.

                    MartinPM Offline
                    MartinPM Offline
                    MartinP
                    wrote on last edited by MartinP
                    #9

                    Ein Gedanke zu einer anderen Lösung:

                    Wenn man sich in Javascript nicht fit fühlt, könnte man ja auf folgende Idee kommen .. (Beispiel aus meinem Objekt Tree)

                    In Userdata_0 gibt es im Folder Sensors zwei Datenpunkte für die Temperatur der beiden CPU-Cores

                    dcc15837-5b5c-4fd6-84cc-0b860a0cd91f-grafik.png


                    {
                    "0_userdata.0.Proxmox_N3000.Sensors": {
                    "common": {
                    "name": "Sensors",
                    "desc": "Manuell erzeugt",
                    "role": "",
                    "icon": ""
                    },
                    "type": "channel",
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1719507072987,
                    "_id": "0_userdata.0.Proxmox_N3000.Sensors",
                    "acl": {
                    "object": 1636,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                    }
                    },
                    "0_userdata.0.Proxmox_N3000.Sensors.Temp_Core0": {
                    "common": {
                    "name": "Temp_Core0",
                    "desc": "Manuell erzeugt",
                    "role": "value.temperature",
                    "type": "number",
                    "read": true,
                    "write": true,
                    "def": 0,
                    "custom": {
                    "influxdb.0": {
                    "enabled": true,
                    "storageType": "",
                    "aliasId": "",
                    "debounceTime": 0,
                    "blockTime": 0,
                    "changesOnly": true,
                    "changesRelogInterval": 0,
                    "changesMinDelta": 0,
                    "ignoreBelowNumber": "",
                    "disableSkippedValueLogging": false,
                    "enableDebugLogs": false,
                    "debounce": 1000
                    }
                    }
                    },
                    "type": "state",
                    "native": {},
                    "_id": "0_userdata.0.Proxmox_N3000.Sensors.Temp_Core0",
                    "acl": {
                    "object": 1636,
                    "state": 1636,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                    },
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1719509549918,
                    "val": 57,
                    "ack": false
                    },
                    "0_userdata.0.Proxmox_N3000.Sensors.Temp_Core1": {
                    "common": {
                    "name": "Temp_Core1",
                    "desc": "Manuell erzeugt",
                    "role": "value.temperature",
                    "type": "number",
                    "read": true,
                    "write": true,
                    "def": 0,
                    "custom": {
                    "influxdb.0": {
                    "enabled": true,
                    "storageType": "",
                    "aliasId": "",
                    "debounceTime": 0,
                    "blockTime": 0,
                    "changesOnly": true,
                    "changesRelogInterval": 0,
                    "changesMinDelta": 0,
                    "ignoreBelowNumber": "",
                    "disableSkippedValueLogging": false,
                    "enableDebugLogs": false,
                    "debounce": 1000
                    }
                    }
                    },
                    "type": "state",
                    "native": {},
                    "_id": "0_userdata.0.Proxmox_N3000.Sensors.Temp_Core1",
                    "acl": {
                    "object": 1636,
                    "state": 1636,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                    },
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1719509623191,
                    "val": 63,
                    "ack": false
                    }
                    }

                    Wenn man da einen JSON-Export anstößt, die Datei mit einem Text-Editor öffnet, und durch COPY&PASTE die JSON-Struktur um Blöcke für weitere CPU-Cores ergänzen, und die JSON-Datei dann wieder zurückschreiben...

                    Wäre aber sicherlich nicht so einfach, weil man nicht nur an einer Stelle umbenennen muss...

                    "0_userdata.0.Proxmox_N3000.Sensors.Temp_Core1": {

                    "_id": "0_userdata.0.Proxmox_N3000.Sensors.Temp_Core1",

                    Gibt es da einen Schema Check, bevor man so eine (möglicherweise fehlerhafte) Datei iobroker zum Import übergibt?

                    Beim Zurücklesen von VIS-2 Projekten scheint das der Fall zu sein ...

                    Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                    Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
                    Linux pve 6.8.12-16-pve
                    6 GByte RAM für den Container
                    Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
                    Remote-Access über Wireguard der Fritzbox

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    440

                    Online

                    32.4k

                    Users

                    81.5k

                    Topics

                    1.3m

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

                    • Don't have an account? Register

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