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. JavaScript
  5. Leere Ordner aus Objekt-Struktur löschen

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.3k

Leere Ordner aus Objekt-Struktur löschen

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 5 Kommentatoren 801 Aufrufe 5 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.
  • M Offline
    M Offline
    MeinhardRisch
    schrieb am zuletzt editiert von
    #1

    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!!! :-)

    arteckA geschildG liv-in-skyL 3 Antworten Letzte Antwort
    0
    • M MeinhardRisch

      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!!! :-)

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @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

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      M 1 Antwort Letzte Antwort
      0
      • arteckA arteck

        @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 Offline
        M Offline
        MeinhardRisch
        schrieb am zuletzt editiert von
        #3

        @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

        arteckA 1 Antwort Letzte Antwort
        1
        • M MeinhardRisch

          @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

          arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @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
          

          zigbee hab ich, zwave auch, nuc's genauso und HA auch

          M 2 Antworten Letzte Antwort
          0
          • arteckA arteck

            @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 Offline
            M Offline
            MeinhardRisch
            schrieb am zuletzt editiert von
            #5

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

            fhainzF 1 Antwort Letzte Antwort
            0
            • arteckA arteck

              @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 Offline
              M Offline
              MeinhardRisch
              schrieb am zuletzt editiert von
              #6

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

              1 Antwort Letzte Antwort
              0
              • M MeinhardRisch

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

                fhainzF Offline
                fhainzF Offline
                fhainz
                schrieb am zuletzt editiert von
                #7

                @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 Antwort Letzte Antwort
                0
                • M MeinhardRisch

                  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!!! :-)

                  geschildG Offline
                  geschildG Offline
                  geschild
                  schrieb am zuletzt editiert von
                  #8

                  @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 Antwort Letzte Antwort
                  0
                  • M MeinhardRisch

                    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!!! :-)

                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von liv-in-sky
                    #9

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

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    1 Antwort Letzte Antwort
                    1
                    • fhainzF Offline
                      fhainzF Offline
                      fhainz
                      schrieb am zuletzt editiert von
                      #10

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

                      842

                      Online

                      32.4k

                      Benutzer

                      81.5k

                      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