Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Javascript Objekte Zugriff

NEWS

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

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

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

[gelöst] Javascript Objekte Zugriff

[gelöst] Javascript Objekte Zugriff

Scheduled Pinned Locked Moved Skripten / Logik
26 Posts 4 Posters 3.8k Views
  • 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.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    wrote on last edited by
    #17

    Der Durchlauf und die Verarbeitung hat 500ms gedauert.

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #18

      @ruhr70:

          var obj = JSON.parse(json);
      
          for(var index in obj) { 
              // var indexObj = JSON.stringify(obj);
              if (/^fullcalendar/gi.test(index)) {
                  log(index); 
                  log(JSON.stringify(obj[index]));
              }
          }
      
      ```` `  
      

      Das Erzeugen des riesigen Objektes per JSON.parse(json) würde ich sparen (Speicherbedarf !) und die IDs folgendermassen ermitteln:

              var pos = 0;
              do {
                  pos = json.indexOf('fullcalendar.0.20', pos + 60);
                  var id = json.substr(pos, 35);
                  if(id.indexOf('pos') == -1 && id.length == 35) {
                      log(id); // Hier kann mit getObject(id) die Auswertung erfolgen
                  }    
              } while(pos != -1);
      
      

      Wenn man die ID hat, kommt man mit getObject(id) an alle Eigenschaften.

      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 Reply Last reply
      0
      • S Offline
        S Offline
        strackfi
        wrote on last edited by
        #19

        Dann kommt aber leider die Fehlermeldung

        TypeError: json.substr is not a function
        

        Edit:

        Habs jetzt hinbekommen anscheinend ist 'json' ein Objekt und kein String. (Stimmt das ?)

        Deshalb hab ichs jetzt mal so probiert (php Kentnisse sei Dank :D)

        json.toString().substr
        

        Und es geht

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #20

          Bei mir funktioniert https://wiki.selfhtml.org/wiki/JavaScript/Objekte/String/substr.

          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 Reply Last reply
          0
          • paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #21

            @strackfi:

            anscheinend ist 'json' ein Objekt und kein String. (Stimmt das ?) `
            Nein, json ist ein String. Die Datei objects.json enthält einen JSON-String.

            Hast Du die Datei eingelesen ?

            const datei = "/opt/iobroker/iobroker-data/objects.json";
            
            

            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 Reply Last reply
            0
            • S Offline
              S Offline
              strackfi
              wrote on last edited by
              #22

              Ja wobei bei mir ein Rechteproblem auftritt 😞

              Welche Rechte muss ich den geben ?

              Selbst mit chmod 777 gehts nicht

              1 Reply Last reply
              0
              • paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #23

                @strackfi:

                Ja wobei bei mir ein Rechteproblem auftritt `
                Ich vermute das Problem eher dadurch, dass die Datei durch ioBroker geöffnet ist.

                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 Reply Last reply
                0
                • S Offline
                  S Offline
                  strackfi
                  wrote on last edited by
                  #24

                  Die Fehlermeldung lautet aber:

                  Error: Permission denied
                           May not read /opt/iobroker/iobroker-data/objects.json
                  
                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #25

                    @strackfi:

                    Die Fehlermeldung lautet aber: `
                    Vielleicht hat node.js fs ein Problem mit der Dateiendung .json ?

                    Unter Windows habe ich mal die Datei kopiert und dann die Kopie eingelesen, was funktioniert

                    exec('copy C://Program Files//ioBroker//iobroker-data//objects.json G://opt//iobroker//iobroker-data//objects.test');
                    
                    const datei = "G://opt//iobroker//iobroker-data//objects.test";
                    
                    

                    Und Du hast recht: Man muss .toString() anwenden

                            json = json.toString();
                            var pos = 0;
                            do {
                    
                    

                    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 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      strackfi
                      wrote on last edited by
                      #26

                      Wenn ich die Datei kopiere und umbenenne in z.B nur "obj.json" im gleichen Verzeichnis, dann funktioniert das ganze 😄

                      Macht irgendwie keinen Sinn, wiee ich finde

                      Edit:

                      Diese Funktion gibt den Fehler aus:

                      
                          mods.fs.readFile = function () {
                              if (mods.path.normalize(arguments[0]).replace(/\\/g, '/').indexOf('-data/objects.json') !== -1) {
                                  if (adapter) {
                                      adapter.log.error('May not read ' + arguments[0]);
                                  } else {
                                      console.error('May not read ' + arguments[0]);
                                  }
                                  throw new Error('Permission denied');
                              }
                      
                              return mods.fs._readFile.apply(this, arguments);
                          };
                      
                      

                      Die if-Abfrage prüft ob der angegebene Pfad '-data/objects.json' enthält, dass ist anscheinend nicht gewollt ?

                      Gruß Finn

                      Edit2: habs gelöst. Ich kopiere einfach die Datei in eine obj.json und lese dann diese aus.

                      Vielen Dank für eure Hilfe 😄 😄

                      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

                      606

                      Online

                      32.4k

                      Users

                      81.3k

                      Topics

                      1.3m

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

                      • Don't have an account? Register

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