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. Neue und gelöschte States in Script erst nach Neustart?

NEWS

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

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

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

Neue und gelöschte States in Script erst nach Neustart?

Geplant Angeheftet Gesperrt Verschoben JavaScript
20 Beiträge 4 Kommentatoren 1.2k 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.
  • W Offline
    W Offline
    Waly_de
    schrieb am zuletzt editiert von Waly_de
    #1

    Hi,
    ich hab das folgende Problem:
    Über ein MQTT-Gateway sammle ich Bluetooth-ID's ein. Ich lese damit Pflanzensensoren und ein paar Bacons zur Positionsbestimmung aus. Leider werden für jeden Bluetoothsender der in die Nähe kommt ein Datenpunkte angelegt Da es x Sender gibt (Smartphones, Tracker, Computer.....) die auch noch alle regelmäßig ihre ID's neu würfeln hatte ich zuletzt ca 20000 unnötige Datenpunkte.
    Jetzt habe ich mir ein Script geschrieben, das diese Datenpunkte täglich entfernen soll. Klappt auch soweit ganz gut. Allerdings stelle ich fest, das mein Script immer nur die Datenpunkte findet, die beim letzten Neustart des Javascript-Adapters schon da waren. Genauso werden von der Auflistung bei einem 2. Aufruf schon gelöschte Datenpunkte wieder gefunden, bis ich den JS-Adapter neu starte.
    Kann ich irgendwie ohne Neustarten des Adapters die Werte aktualisieren? Ich denke das passiert beim Neustarten mit den Logeinträgen:

    2020-11-04 08:53:20.118 - info: javascript.0 (8668) requesting all states
    2020-11-04 08:53:20.122 - info: javascript.0 (8668) requesting all objects
    2020-11-04 08:53:25.098 - info: javascript.0 (8668) received all states
    2020-11-04 08:53:27.616 - info: javascript.0 (8668) received all objects
    

    So rufe ich die Datenpunkte ab:

    var Suchstring = "mqtt.0.BT-Flora.BTtoMQTT.*"
    var WichtigeIDs = "C963618F4605,C47C8D66ECC2,C47C8D66EDBD,C47C8D66EEC7,C47C8D66EC41"
    var Elemente = Suchstring.split(".").length
    $('channel[state.id=' + Suchstring + ']').each(function (id, i) {
            if (id.split(".").length  != Elemente ) return true
            var aktuID =  id.split(".").slice(-2)[1];
            if(WichtigeIDs.split(",").includes(aktuID)){
                log(i + " - " + id + " Wird behalten!");
            }else{
                if (id.indexOf("mqtt.0.") == 0){
                    var StundenHer = 12;
                    if (getState(id).ts > new Date().getTime() - (StundenHer*1000*60*60) ){
                        log(i + "-State:" + id + " ist noch keine " + StundenHer + " Stunden alt und wird nicht gelöscht!");
                    }else{
                        deleteObject(id,true);
                        i2++;
                        log(i + "-State:" + id + " wird gelöscht!");
                    }
                }else{
                    log("id prüfung negativ: "+ id);
                } 
            }
            if(Number(i)>20000){
                    log("Ende")
                    return false;  
            }  
        });
    

    LG
    Markus

    M AlCalzoneA 2 Antworten Letzte Antwort
    0
    • W Waly_de

      Hi,
      ich hab das folgende Problem:
      Über ein MQTT-Gateway sammle ich Bluetooth-ID's ein. Ich lese damit Pflanzensensoren und ein paar Bacons zur Positionsbestimmung aus. Leider werden für jeden Bluetoothsender der in die Nähe kommt ein Datenpunkte angelegt Da es x Sender gibt (Smartphones, Tracker, Computer.....) die auch noch alle regelmäßig ihre ID's neu würfeln hatte ich zuletzt ca 20000 unnötige Datenpunkte.
      Jetzt habe ich mir ein Script geschrieben, das diese Datenpunkte täglich entfernen soll. Klappt auch soweit ganz gut. Allerdings stelle ich fest, das mein Script immer nur die Datenpunkte findet, die beim letzten Neustart des Javascript-Adapters schon da waren. Genauso werden von der Auflistung bei einem 2. Aufruf schon gelöschte Datenpunkte wieder gefunden, bis ich den JS-Adapter neu starte.
      Kann ich irgendwie ohne Neustarten des Adapters die Werte aktualisieren? Ich denke das passiert beim Neustarten mit den Logeinträgen:

      2020-11-04 08:53:20.118 - info: javascript.0 (8668) requesting all states
      2020-11-04 08:53:20.122 - info: javascript.0 (8668) requesting all objects
      2020-11-04 08:53:25.098 - info: javascript.0 (8668) received all states
      2020-11-04 08:53:27.616 - info: javascript.0 (8668) received all objects
      

      So rufe ich die Datenpunkte ab:

      var Suchstring = "mqtt.0.BT-Flora.BTtoMQTT.*"
      var WichtigeIDs = "C963618F4605,C47C8D66ECC2,C47C8D66EDBD,C47C8D66EEC7,C47C8D66EC41"
      var Elemente = Suchstring.split(".").length
      $('channel[state.id=' + Suchstring + ']').each(function (id, i) {
              if (id.split(".").length  != Elemente ) return true
              var aktuID =  id.split(".").slice(-2)[1];
              if(WichtigeIDs.split(",").includes(aktuID)){
                  log(i + " - " + id + " Wird behalten!");
              }else{
                  if (id.indexOf("mqtt.0.") == 0){
                      var StundenHer = 12;
                      if (getState(id).ts > new Date().getTime() - (StundenHer*1000*60*60) ){
                          log(i + "-State:" + id + " ist noch keine " + StundenHer + " Stunden alt und wird nicht gelöscht!");
                      }else{
                          deleteObject(id,true);
                          i2++;
                          log(i + "-State:" + id + " wird gelöscht!");
                      }
                  }else{
                      log("id prüfung negativ: "+ id);
                  } 
              }
              if(Number(i)>20000){
                      log("Ende")
                      return false;  
              }  
          });
      

      LG
      Markus

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2

      @Waly_de Warum wird das geprüft?
      b0782bac-a36b-45c2-bd07-28c2b342138d-image.png
      Der Suchstring ist doch "mqtt.0.BT-Flora.BTtoMQTT.*" -> Alle id haben diesen Wert am Anfang.

      War schon mal eine id prüfung negativ?
      Wofür ist die Variable i2?
      Aufgrund der hohen Anzahl im nächsten Schritt prüfen, ist das Objekt überhaupt gelöscht worden?
      existsObject(id), getObject(id)

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      W 1 Antwort Letzte Antwort
      0
      • M MCU

        @Waly_de Warum wird das geprüft?
        b0782bac-a36b-45c2-bd07-28c2b342138d-image.png
        Der Suchstring ist doch "mqtt.0.BT-Flora.BTtoMQTT.*" -> Alle id haben diesen Wert am Anfang.

        War schon mal eine id prüfung negativ?
        Wofür ist die Variable i2?
        Aufgrund der hohen Anzahl im nächsten Schritt prüfen, ist das Objekt überhaupt gelöscht worden?
        existsObject(id), getObject(id)

        W Offline
        W Offline
        Waly_de
        schrieb am zuletzt editiert von
        #3

        @MCU sagte in Neue und gelöschte States in Script erst nach Neustart?:

        @Waly_de Warum wird das geprüft?
        War schon mal eine id prüfung negativ?

        ich entwickle ja noch an der Funktion und arbeite hier mit einem rekursivem deleteObject. Darum bin ich ein wenig paranoid und prüfe lieber 2 mal, ob ich an der richtigen Stelle bin. Nein war bisher noch nicht negativ ;-)

        Wofür ist die Variable i2?

        Damit gebe ich im weiteren Verlauf die Anzahl der gelöschten ID's aus

        Aufgrund der hohen Anzahl im nächsten Schritt prüfen, ist das Objekt überhaupt gelöscht worden?
        existsObject(id), getObject(id)

        Ja. Das wird asynchron erledigt. Dauert aber bei der Menge natürlich etwas.
        MeinProblem ist ja: beim nächsten Aufruf werden alle Einträge erneut gefunden.:

        2020-11-04 08:57:53.837 - info: javascript.0 (8668) script.js.common.Verschiedenes: 120-State:mqtt.0.BT-Flora.BTtoMQTT.3FFD83F34375 ist noch keine 12 Stunden alt und wird nicht gelöscht!
        2020-11-04 08:57:53.838 - warn: javascript.0 (8668) getState "mqtt.0.BT-Flora.BTtoMQTT.C2C165B7EFF2" not found (3)
        2020-11-04 08:57:53.839 - warn: javascript.0 (8668) at script.js.common.Verschiedenes:889:21
        2020-11-04 08:57:53.840 - warn: javascript.0 (8668) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:785:29)
        2020-11-04 08:57:53.840 - warn: javascript.0 (8668) at BLEAufraeumen (script.js.common.Verschiedenes:880:47)
        2020-11-04 08:57:53.841 - warn: javascript.0 (8668) at script.js.common.Verschiedenes:869:1
        2020-11-04 08:57:53.842 - info: javascript.0 (8668) script.js.common.Verschiedenes: 121-State:mqtt.0.BT-Flora.BTtoMQTT.C2C165B7EFF2 wird gelöscht!
        2020-11-04 08:57:53.844 - info: javascript.0 (8668) script.js.common.Verschiedenes: 122 - mqtt.0.BT-Flora.BTtoMQTT.C47C8D66ECC2 Wird behalten!
        

        ...solange ich nicht den JS-Adapter neu starte.

        M 1 Antwort Letzte Antwort
        0
        • W Waly_de

          @MCU sagte in Neue und gelöschte States in Script erst nach Neustart?:

          @Waly_de Warum wird das geprüft?
          War schon mal eine id prüfung negativ?

          ich entwickle ja noch an der Funktion und arbeite hier mit einem rekursivem deleteObject. Darum bin ich ein wenig paranoid und prüfe lieber 2 mal, ob ich an der richtigen Stelle bin. Nein war bisher noch nicht negativ ;-)

          Wofür ist die Variable i2?

          Damit gebe ich im weiteren Verlauf die Anzahl der gelöschten ID's aus

          Aufgrund der hohen Anzahl im nächsten Schritt prüfen, ist das Objekt überhaupt gelöscht worden?
          existsObject(id), getObject(id)

          Ja. Das wird asynchron erledigt. Dauert aber bei der Menge natürlich etwas.
          MeinProblem ist ja: beim nächsten Aufruf werden alle Einträge erneut gefunden.:

          2020-11-04 08:57:53.837 - info: javascript.0 (8668) script.js.common.Verschiedenes: 120-State:mqtt.0.BT-Flora.BTtoMQTT.3FFD83F34375 ist noch keine 12 Stunden alt und wird nicht gelöscht!
          2020-11-04 08:57:53.838 - warn: javascript.0 (8668) getState "mqtt.0.BT-Flora.BTtoMQTT.C2C165B7EFF2" not found (3)
          2020-11-04 08:57:53.839 - warn: javascript.0 (8668) at script.js.common.Verschiedenes:889:21
          2020-11-04 08:57:53.840 - warn: javascript.0 (8668) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:785:29)
          2020-11-04 08:57:53.840 - warn: javascript.0 (8668) at BLEAufraeumen (script.js.common.Verschiedenes:880:47)
          2020-11-04 08:57:53.841 - warn: javascript.0 (8668) at script.js.common.Verschiedenes:869:1
          2020-11-04 08:57:53.842 - info: javascript.0 (8668) script.js.common.Verschiedenes: 121-State:mqtt.0.BT-Flora.BTtoMQTT.C2C165B7EFF2 wird gelöscht!
          2020-11-04 08:57:53.844 - info: javascript.0 (8668) script.js.common.Verschiedenes: 122 - mqtt.0.BT-Flora.BTtoMQTT.C47C8D66ECC2 Wird behalten!
          

          ...solange ich nicht den JS-Adapter neu starte.

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von MCU
          #4

          @Waly_de https://forum.iobroker.net/topic/34304/gelöst-state-per-script-löschen/22

          https://github.com/ioBroker/ioBroker.mqtt/issues/87

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          W 1 Antwort Letzte Antwort
          0
          • M MCU

            @Waly_de https://forum.iobroker.net/topic/34304/gelöst-state-per-script-löschen/22

            https://github.com/ioBroker/ioBroker.mqtt/issues/87

            W Offline
            W Offline
            Waly_de
            schrieb am zuletzt editiert von
            #5

            @MCU
            Danke für den Hinweis... Aber meine Einträge werden ja gelöscht. Nur weiss der Javascript-Adapter nicht sofort davon. Übrigens weiss der Adapter auch nichts von neu angelegten Datenpunkten. Erst nach Neustart.

            Ich könnte ja auch einen Issue anlegen. Allerdings weiss ich noch nicht ob mqtt oder Javascript das Problem ist.

            paul53P 1 Antwort Letzte Antwort
            0
            • W Waly_de

              @MCU
              Danke für den Hinweis... Aber meine Einträge werden ja gelöscht. Nur weiss der Javascript-Adapter nicht sofort davon. Übrigens weiss der Adapter auch nichts von neu angelegten Datenpunkten. Erst nach Neustart.

              Ich könnte ja auch einen Issue anlegen. Allerdings weiss ich noch nicht ob mqtt oder Javascript das Problem ist.

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

              @Waly_de sagte:

              weiss ich noch nicht ob mqtt oder Javascript das Problem ist.

              Das Problem ist der Puffer des Javascript-Adapters.

              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

              W 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @Waly_de sagte:

                weiss ich noch nicht ob mqtt oder Javascript das Problem ist.

                Das Problem ist der Puffer des Javascript-Adapters.

                W Offline
                W Offline
                Waly_de
                schrieb am zuletzt editiert von
                #7

                @paul53 sagte in Neue und gelöschte States in Script erst nach Neustart?:

                Das Problem ist der Puffer des Javascript-Adapters.

                Ok, gibt es denn vielleicht einen Weg den zu leeren, ohne Instanz neu zu starten?

                paul53P 1 Antwort Letzte Antwort
                0
                • W Waly_de

                  @paul53 sagte in Neue und gelöschte States in Script erst nach Neustart?:

                  Das Problem ist der Puffer des Javascript-Adapters.

                  Ok, gibt es denn vielleicht einen Weg den zu leeren, ohne Instanz neu zu starten?

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

                  @Waly_de sagte:

                  gibt es denn vielleicht einen Weg den zu leeren, ohne Instanz neu zu starten?

                  Der Puffer darf nicht geleert werden, sondern er muss bei Löschen und Erzeugen von Datenpunkten aktualisiert werden, was offenbar nicht immer erfolgt. Als Ausweg sehe ich zur Zeit nur die Verwendung der asynchronen Versionen von z.B. getState(id, callback). Allerdings glaube ich, dass der $Selector auch auf den Puffer zurück greift.

                  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

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • W Waly_de

                    Hi,
                    ich hab das folgende Problem:
                    Über ein MQTT-Gateway sammle ich Bluetooth-ID's ein. Ich lese damit Pflanzensensoren und ein paar Bacons zur Positionsbestimmung aus. Leider werden für jeden Bluetoothsender der in die Nähe kommt ein Datenpunkte angelegt Da es x Sender gibt (Smartphones, Tracker, Computer.....) die auch noch alle regelmäßig ihre ID's neu würfeln hatte ich zuletzt ca 20000 unnötige Datenpunkte.
                    Jetzt habe ich mir ein Script geschrieben, das diese Datenpunkte täglich entfernen soll. Klappt auch soweit ganz gut. Allerdings stelle ich fest, das mein Script immer nur die Datenpunkte findet, die beim letzten Neustart des Javascript-Adapters schon da waren. Genauso werden von der Auflistung bei einem 2. Aufruf schon gelöschte Datenpunkte wieder gefunden, bis ich den JS-Adapter neu starte.
                    Kann ich irgendwie ohne Neustarten des Adapters die Werte aktualisieren? Ich denke das passiert beim Neustarten mit den Logeinträgen:

                    2020-11-04 08:53:20.118 - info: javascript.0 (8668) requesting all states
                    2020-11-04 08:53:20.122 - info: javascript.0 (8668) requesting all objects
                    2020-11-04 08:53:25.098 - info: javascript.0 (8668) received all states
                    2020-11-04 08:53:27.616 - info: javascript.0 (8668) received all objects
                    

                    So rufe ich die Datenpunkte ab:

                    var Suchstring = "mqtt.0.BT-Flora.BTtoMQTT.*"
                    var WichtigeIDs = "C963618F4605,C47C8D66ECC2,C47C8D66EDBD,C47C8D66EEC7,C47C8D66EC41"
                    var Elemente = Suchstring.split(".").length
                    $('channel[state.id=' + Suchstring + ']').each(function (id, i) {
                            if (id.split(".").length  != Elemente ) return true
                            var aktuID =  id.split(".").slice(-2)[1];
                            if(WichtigeIDs.split(",").includes(aktuID)){
                                log(i + " - " + id + " Wird behalten!");
                            }else{
                                if (id.indexOf("mqtt.0.") == 0){
                                    var StundenHer = 12;
                                    if (getState(id).ts > new Date().getTime() - (StundenHer*1000*60*60) ){
                                        log(i + "-State:" + id + " ist noch keine " + StundenHer + " Stunden alt und wird nicht gelöscht!");
                                    }else{
                                        deleteObject(id,true);
                                        i2++;
                                        log(i + "-State:" + id + " wird gelöscht!");
                                    }
                                }else{
                                    log("id prüfung negativ: "+ id);
                                } 
                            }
                            if(Number(i)>20000){
                                    log("Ende")
                                    return false;  
                            }  
                        });
                    

                    LG
                    Markus

                    AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @Waly_de sagte in Neue und gelöschte States in Script erst nach Neustart?:

                    Über ein MQTT-Gateway sammle ich Bluetooth-ID's ein. Ich lese damit Pflanzensensoren und ein paar Bacons zur Positionsbestimmung aus

                    Hast du schon mal den BLE-Adapter probiert? Da kannst du zumindest deaktivieren, dass neue Objekte angelegt werden.

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @Waly_de sagte:

                      gibt es denn vielleicht einen Weg den zu leeren, ohne Instanz neu zu starten?

                      Der Puffer darf nicht geleert werden, sondern er muss bei Löschen und Erzeugen von Datenpunkten aktualisiert werden, was offenbar nicht immer erfolgt. Als Ausweg sehe ich zur Zeit nur die Verwendung der asynchronen Versionen von z.B. getState(id, callback). Allerdings glaube ich, dass der $Selector auch auf den Puffer zurück greift.

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

                      @paul53 sagte:

                      Allerdings glaube ich, dass der $Selector auch auf den Puffer zurück greift.

                      Habe es mal mit Erzeugen eines DP per Admin, dem $Selector und Löschen per Script getestet: Ohne Instanz-Neustart hat der $Selector den neuen DP gefunden und nach dem Löschen nicht mehr.

                      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

                      AlCalzoneA 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @paul53 sagte:

                        Allerdings glaube ich, dass der $Selector auch auf den Puffer zurück greift.

                        Habe es mal mit Erzeugen eines DP per Admin, dem $Selector und Löschen per Script getestet: Ohne Instanz-Neustart hat der $Selector den neuen DP gefunden und nach dem Löschen nicht mehr.

                        AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        schrieb am zuletzt editiert von
                        #11

                        @paul53 sagte in Neue und gelöschte States in Script erst nach Neustart?:

                        Habe es mal mit Erzeugen eines DP per Admin

                        Es könnte mit der Struktur device.channel.state zusammen hängen. Ich konnte das vor einer halben Ewigkeit wie folgt reproduzieren:
                        https://github.com/ioBroker/ioBroker.javascript/issues/109

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • AlCalzoneA AlCalzone

                          @paul53 sagte in Neue und gelöschte States in Script erst nach Neustart?:

                          Habe es mal mit Erzeugen eines DP per Admin

                          Es könnte mit der Struktur device.channel.state zusammen hängen. Ich konnte das vor einer halben Ewigkeit wie folgt reproduzieren:
                          https://github.com/ioBroker/ioBroker.javascript/issues/109

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

                          @AlCalzone sagte:

                          Es könnte mit der Struktur device.channel.state zusammen hängen.

                          Gerade getestet: "ESP_Easy_1" ist device, "GARTEN_Stromsensor" ist channel, "Power" ist gerade per Admin erzeugter Datenpunkt.

                          Selector_test.JPG

                          Das synchrone existsState(id) zeigt übrigens, dass der Puffer der JS-Instanz aktualisiert wurde, sonst wäre nicht gelöscht worden.

                          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

                          W 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @AlCalzone sagte:

                            Es könnte mit der Struktur device.channel.state zusammen hängen.

                            Gerade getestet: "ESP_Easy_1" ist device, "GARTEN_Stromsensor" ist channel, "Power" ist gerade per Admin erzeugter Datenpunkt.

                            Selector_test.JPG

                            Das synchrone existsState(id) zeigt übrigens, dass der Puffer der JS-Instanz aktualisiert wurde, sonst wäre nicht gelöscht worden.

                            W Offline
                            W Offline
                            Waly_de
                            schrieb am zuletzt editiert von Waly_de
                            #13

                            @paul53
                            Bei per Admin angelegten Datenpunkten hatte ich die Probleme auch nicht.

                            hier was zum rekonstruieren:

                            zunächst ein paar states Anlegen:

                            createState("Personen.Test.sub.sub1",false,false,{role: 'state', type: 'boolean'});
                            createState("Personen.Test.sub.sub2",false,false,{role: 'state', type: 'boolean'});
                            createState("Personen.Test.sub3","Testwert",false);
                            

                            dann durchlaufen und löschen:

                            
                            $('channel[state.id=javascript.0.Personen.Test.*]').each(function (id, i) {
                                        log(i + " - " + id + " existsObject: " + existsObject(id))
                                        deleteObject(id,true);
                            });
                            
                            

                            Ester Aufruf der schleife:

                            16:33:26.060	info	javascript.0 (22097) Start javascript script.js.common.StateDeleteTest
                            16:33:27.316	info	javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: true
                            16:33:27.319	info	javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: true
                            16:33:27.320	info	javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: true
                            

                            zweiter bis x-ter Aufruf der Schleife:

                            16:33:48.202	info	javascript.0 (22097) Start javascript script.js.common.StateDeleteTest
                            16:33:49.081	info	javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: false
                            16:33:49.083	info	javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: false
                            16:33:49.084	info	javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: false
                            

                            nach Neustart von Javascript:

                            6:36:15.855	info	javascript.0 (26064) Start javascript script.js.common.StateDeleteTest
                            

                            Bei Euch auch so?

                            AlCalzoneA paul53P 2 Antworten Letzte Antwort
                            0
                            • W Waly_de

                              @paul53
                              Bei per Admin angelegten Datenpunkten hatte ich die Probleme auch nicht.

                              hier was zum rekonstruieren:

                              zunächst ein paar states Anlegen:

                              createState("Personen.Test.sub.sub1",false,false,{role: 'state', type: 'boolean'});
                              createState("Personen.Test.sub.sub2",false,false,{role: 'state', type: 'boolean'});
                              createState("Personen.Test.sub3","Testwert",false);
                              

                              dann durchlaufen und löschen:

                              
                              $('channel[state.id=javascript.0.Personen.Test.*]').each(function (id, i) {
                                          log(i + " - " + id + " existsObject: " + existsObject(id))
                                          deleteObject(id,true);
                              });
                              
                              

                              Ester Aufruf der schleife:

                              16:33:26.060	info	javascript.0 (22097) Start javascript script.js.common.StateDeleteTest
                              16:33:27.316	info	javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: true
                              16:33:27.319	info	javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: true
                              16:33:27.320	info	javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: true
                              

                              zweiter bis x-ter Aufruf der Schleife:

                              16:33:48.202	info	javascript.0 (22097) Start javascript script.js.common.StateDeleteTest
                              16:33:49.081	info	javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: false
                              16:33:49.083	info	javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: false
                              16:33:49.084	info	javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: false
                              

                              nach Neustart von Javascript:

                              6:36:15.855	info	javascript.0 (26064) Start javascript script.js.common.StateDeleteTest
                              

                              Bei Euch auch so?

                              AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #14

                              @Waly_de sagte in Neue und gelöschte States in Script erst nach Neustart?:

                              createState("Personen.Test.sub.sub1"

                              Hast du die Objekte für die "Zwischenstufen" auch angelegt? Personen, Personen.Test, Personen.Test.sub?

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              W 1 Antwort Letzte Antwort
                              0
                              • AlCalzoneA AlCalzone

                                @Waly_de sagte in Neue und gelöschte States in Script erst nach Neustart?:

                                createState("Personen.Test.sub.sub1"

                                Hast du die Objekte für die "Zwischenstufen" auch angelegt? Personen, Personen.Test, Personen.Test.sub?

                                W Offline
                                W Offline
                                Waly_de
                                schrieb am zuletzt editiert von
                                #15

                                @AlCalzone nein... sind automatisch da..

                                AlCalzoneA 1 Antwort Letzte Antwort
                                0
                                • W Waly_de

                                  @AlCalzone nein... sind automatisch da..

                                  AlCalzoneA Offline
                                  AlCalzoneA Offline
                                  AlCalzone
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #16

                                  @Waly_de Nur als Ordner sichtbar oder auch mit einem Objekt (device, channel) versehen?

                                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                  W 1 Antwort Letzte Antwort
                                  0
                                  • AlCalzoneA AlCalzone

                                    @Waly_de Nur als Ordner sichtbar oder auch mit einem Objekt (device, channel) versehen?

                                    W Offline
                                    W Offline
                                    Waly_de
                                    schrieb am zuletzt editiert von
                                    #17

                                    @AlCalzone Nur als Ordner....

                                    AlCalzoneA 1 Antwort Letzte Antwort
                                    0
                                    • W Waly_de

                                      @AlCalzone Nur als Ordner....

                                      AlCalzoneA Offline
                                      AlCalzoneA Offline
                                      AlCalzone
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      @Waly_de Du selektierst aber channel. Wir hatten grade vorhin erst unter den Devs die Diskussion, dass der JS-Adapter von der "klassischen" Struktur device.channel.state ausgeht und sich sonst extrem komisch verhält.
                                      Daher gehts in @paul53 seinem Beispiel, er befolgt die Struktur.

                                      Bei dir nicht. Probier mal, Personen als device-Objekt und Personen.Test als channel-Objekt anzulegen, und ob es dann auf der Ebene von Personen.Test.sub mit dem Löschen und selektieren geht.

                                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                      1 Antwort Letzte Antwort
                                      0
                                      • W Waly_de

                                        @paul53
                                        Bei per Admin angelegten Datenpunkten hatte ich die Probleme auch nicht.

                                        hier was zum rekonstruieren:

                                        zunächst ein paar states Anlegen:

                                        createState("Personen.Test.sub.sub1",false,false,{role: 'state', type: 'boolean'});
                                        createState("Personen.Test.sub.sub2",false,false,{role: 'state', type: 'boolean'});
                                        createState("Personen.Test.sub3","Testwert",false);
                                        

                                        dann durchlaufen und löschen:

                                        
                                        $('channel[state.id=javascript.0.Personen.Test.*]').each(function (id, i) {
                                                    log(i + " - " + id + " existsObject: " + existsObject(id))
                                                    deleteObject(id,true);
                                        });
                                        
                                        

                                        Ester Aufruf der schleife:

                                        16:33:26.060	info	javascript.0 (22097) Start javascript script.js.common.StateDeleteTest
                                        16:33:27.316	info	javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: true
                                        16:33:27.319	info	javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: true
                                        16:33:27.320	info	javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: true
                                        

                                        zweiter bis x-ter Aufruf der Schleife:

                                        16:33:48.202	info	javascript.0 (22097) Start javascript script.js.common.StateDeleteTest
                                        16:33:49.081	info	javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: false
                                        16:33:49.083	info	javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: false
                                        16:33:49.084	info	javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: false
                                        

                                        nach Neustart von Javascript:

                                        6:36:15.855	info	javascript.0 (26064) Start javascript script.js.common.StateDeleteTest
                                        

                                        Bei Euch auch so?

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

                                        @Waly_de sagte:

                                        Bei Euch auch so?

                                        Ja, da falscher Selektor. So funktioniert es wie erwartet:

                                        Selector_test.JPG

                                        Seltsamerweise gibt der falsche Selektor nicht vorhandene Datenpunkte aus. Da wurde wohl eine Initialisierung vergessen ?

                                        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

                                        W 1 Antwort Letzte Antwort
                                        1
                                        • paul53P paul53

                                          @Waly_de sagte:

                                          Bei Euch auch so?

                                          Ja, da falscher Selektor. So funktioniert es wie erwartet:

                                          Selector_test.JPG

                                          Seltsamerweise gibt der falsche Selektor nicht vorhandene Datenpunkte aus. Da wurde wohl eine Initialisierung vergessen ?

                                          W Offline
                                          W Offline
                                          Waly_de
                                          schrieb am zuletzt editiert von
                                          #20

                                          @paul53
                                          Klasse, das ist die Lösung für mich! Wusste garnicht das es auch so geht.

                                          Danke Euch!

                                          LG Markus

                                          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

                                          844

                                          Online

                                          32.4k

                                          Benutzer

                                          81.6k

                                          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