Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Leere Ordner aus Objekt-Struktur löschen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Leere Ordner aus Objekt-Struktur löschen

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MeinhardRisch last edited by

      Hallo,

      als Java-Anfänger benötige ich bitte mal Eure Hilfe. Ich benutze Bluetooth zur Anwesenheitserkennung. Das funktioniert mit OMG auf einem ESP32 sehr gut. Das Gateway schickt Daten von anwesenden Handys über MQTT an ioBroker und ich kann dies dann dort weiter verarbeiten. Leider aber erfasst der Chip natürlich auch allerlei andere Geräte, aber deren Objekt-Datenpunkte lasse ich nachts einfach per kleinem Javascript löschen. Soweit so - so gut. Leider bleiben aber dann in der Objekt-Ordner-Struktur leere Verzeichnisse (Ordner). Und genau die möchte ich irgendwie löschen. Also konkrete Frage:

      Wie lösche ich mittels Java leere Order in der Objekt-Struktur?

      Für Eure Hilfe sag ich schon jetzt vielen Dank!!! 🙂

      arteck geschild liv-in-sky 3 Replies Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active @MeinhardRisch last edited by

        @meinhardrisch sagte in Leere Ordner aus Objekt-Struktur löschen:

        Java-Anfänger

        zuerst was ist es denn Java oder JavaScript .. das sind 2 verschiedene paar Schuhe

        M 1 Reply Last reply Reply Quote 0
        • M
          MeinhardRisch @arteck last edited by

          @arteck Hi artec,
          es ist JavaScript.
          Hier das kurze Listing:
          log('Löschen ungewollter Objekte vom OMG gestartet');

          $('mqtt.0.OMGhome.OpenMQTTGateway.BTtoMQTT03.*').each(function(id, i) {
          //var dpType = getObject(id).common.type;
          console.log(id + ': ' + typeof getState(id).val);
          let simpleString = id;
          if(simpleString.indexOf("C47C8D6DAEEC") < 0){
          console.log(id + " wird gelöscht.");
          deleteObject(id);
          }
          })

          Vielleicht hilft Dir das ...

          Beste Grüße

          arteck 1 Reply Last reply Reply Quote 1
          • arteck
            arteck Developer Most Active @MeinhardRisch last edited by

            @meinhardrisch

            code und logs bitte in code tag
            5cbde28a-163b-4993-8323-daaea54d1755-grafik.png

            das währe der ordner oder ?

            mqtt.0.OMGhome.OpenMQTTGateway.BTtoMQTT03
            
            M 2 Replies Last reply Reply Quote 0
            • M
              MeinhardRisch @arteck last edited by

              @arteck Sorry, werde Code demnächst passend einfügen. Nein, es ist zum Beispiel:
              Ordner: mqtt.0.OMGhome.OpenMQTTGateway.BTtoMQTT03.409DD4A879EF
              Datenpunkt: mqtt.0.OMGhome.OpenMQTTGateway.BTtoMQTT03.409DD4A879EF.model

              Der Datenpunkt wird dann gelöscht, der Ordner bleibt dann aber leer stehen.

              Danke für deine Unterstützung 😉

              fhainz 1 Reply Last reply Reply Quote 0
              • M
                MeinhardRisch @arteck last edited by

                @arteck 2022-05-16_183924.jpg 2022-05-16_184154.jpg

                1 Reply Last reply Reply Quote 0
                • fhainz
                  fhainz @MeinhardRisch last edited by

                  @meinhardrisch sagte in Leere Ordner aus Objekt-Struktur löschen:

                  Der Datenpunkt wird dann gelöscht, der Ordner bleibt dann aber leer stehen.

                  Ich stehe aktuell vor dem selben Problem.. Die Datenpunkte werden gelöscht, der leerer Ordner bleibt bestehen.

                  Hast du eine Lösung gefunden oder jemand anders eine Idee?

                  1 Reply Last reply Reply Quote 0
                  • geschild
                    geschild @MeinhardRisch last edited by

                    @meinhardrisch said in Leere Ordner aus Objekt-Struktur löschen:

                    Das funktioniert mit OMG auf einem ESP32 sehr gut

                    Die Anwendung interessiert mit. Wo kann ich im Netz etwas dazu, ggf. Quellcode, finden. Googeln mit 'OMG' führt zu "Oh my God".

                    1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @MeinhardRisch last edited by liv-in-sky

                      @meinhardrisch

                      ich bekomme auch immer datenpunkte und ordner in meinem mqtt.0 verzeichnis

                      lasse dieses script laufen

                      evtl kannst du da was nutzen

                      async function deleteFolder(folder){
                        // await deleteObjectAsync("mqtt.0.1$_1_1_xiaomiantenna",true);
                         log(folder)
                         let dpsInFolder = $(folder+'.*');
                         log(JSON.stringify(dpsInFolder))
                       //  for ( let i=0; i<dpsInFolder.length;i++){ //log(getObject(dpsInFolder[i]).type)
                       //      if (existsState(dpsInFolder[i]) && getObject(dpsInFolder[i]).type=="state") {log(dpsInFolder[i],"warn"); await deleteStateAsync(dpsInFolder[i]);}
                        // }
                         await deleteObjectAsync(folder,true);
                      }
                      
                      //deleteFolder('mqtt.0.1$_1_1_xiaomiantenna')
                      schedule("47 9 * * *", function (obj) {
                      let theValOld="xxx";
                      $('mqtt.0.*').each(function(id, i) { 
                         let splittet=id.split('.');
                         let theVal=splittet[0]+'.'+splittet[1]+'.'+splittet[2]
                         if(theValOld!=theVal && theVal!='mqtt.0.Regensensor' && theVal!='mqtt.0.esp7segment' && theVal!='mqtt.0.galaxyS9' 
                                              && theVal!='mqtt.0.galaxyS9' && theVal!='mqtt.0.tablettest' && theVal!='mqtt.0.xiaomi' && theVal!='mqtt.0.entfernungsampel'
                                              && theVal!='mqtt.0.xiaomiantenna' && theVal!='mqtt.0.telegraf' && theVal!='mqtt.0.ld2410motion' && theVal!='mqtt.0.pflanzenampel'
                                              && theVal!='mqtt.0.entfernungswemos' && splittet.length>=4){
                        // log(theVal)
                         theValOld=theVal
                       //  log(id+"  "+getObject(id).type)
                      // log(i.toString())
                       /* if(getObject(id).type=="state")*/ /*if(i<500)*/  deleteFolder(theVal)
                         }
                        // log(splittet.length)
                        // log(JSON.stringify(getObject(id)));
                         //if(getObject(id).common.type=="folder") log(id)
                      })
                      })
                      

                      ps: das auskommentierte kannste ja löschen 🙂

                      1 Reply Last reply Reply Quote 1
                      • fhainz
                        fhainz last edited by

                        @liv-in-sky

                        Vielen Dank, jetzt funktioniert es auch bei mir.
                        Mein Fehler war, ich habe den 2 Parameter bei deleteObject (rekursives löschen) nicht angegeben.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        388
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        566
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo