Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst]State per Script 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

    [gelöst]State per Script löschen

    This topic has been deleted. Only users with topic management privileges can see it.
    • dslraser
      dslraser Forum Testing Most Active last edited by dslraser

      Hallo,
      ich möchte gern selbst erstellte Datenpunkte (oder ganze Ordner mit "Unterstruktur" in jacascript.x oder 0_userdata.0) per Blockly Funktion löschen können. Alles was ich bisher probiert habe funktionierte nicht. Es kam immer die Meldung Not found (oder so ähnlich), aber der/die states existieren.

      Wie muß so eine Funktion aussehen?
      Ein Beispiel wäre schön.

      @paul53 kannst Du helfen ?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @dslraser last edited by

        @dslraser sagte:

        Alles was ich bisher probiert habe funktionierte nicht.

        Was hast Du probiert ? Bei mir wurde der Datenpunkt beim ersten Versuch gelöscht.

        deleteState.JPG

        dslraser 1 Reply Last reply Reply Quote 0
        • dslraser
          dslraser Forum Testing Most Active @paul53 last edited by dslraser

          @paul53 sagte in State per Script löschen:

          Was hast Du probiert ?

          const id = 'javascript.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Batterien_zaehlen.Haus.01_Anzahl_Batterien_gesamt'/*01 Anzahl Batterien gesamt*/;
          if (existsState(id)) deleteState(id);
          

          Bildschirmfoto 2020-06-11 um 15.04.18.png

          Ergebnis

          javascript.0	2020-06-11 15:03:12.340	error	(470) Cannot delete state "javascript.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Batterien_zaehlen.Haus.01_Anzahl_Batterien_gesamt": Not found
          

          EDIT: in 0_userdata.0 funktioniert das löschen. In javascript.0 funktioniert es nicht, da kommt die Fehlermeldung.

          ScriptEngine 4.6.17

          paul53 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @dslraser last edited by

            @dslraser sagte:

            In javascript.0 funktioniert es nicht

            Ja, das kann ich nachvollziehen. Bitte Issue auf Github erstellen.

            dslraser 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @dslraser last edited by

              @dslraser
              Aber das folgende Löschen funktioniert, wenn man es aus der Instanz macht, unter der die Datenpunkte erstellt sind:

              if(existsState(id)) deleteState(id.substring(13));
              

              Erläuterung: Habe erst mit einem Test-Script in der Instanz 0 einen Datenpunkt unter "javascript.1" so löschen wollen, was nicht funktionierte. Habe dann die Script-Instanz auf 1 geändert, womit dann das Löschen funktioniert hat.

              1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @paul53 last edited by

                @paul53 sagte in State per Script löschen:

                @dslraser sagte:

                In javascript.0 funktioniert es nicht

                Ja, das kann ich nachvollziehen. Bitte Issue auf Github erstellen.

                Ich hatte es eben schon gemeldet...

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

                dslraser created this issue in ioBroker/ioBroker.javascript

                closed deleteState per Script unter javascript.0 funktioniert nicht #604

                dslraser 1 Reply Last reply Reply Quote 0
                • dslraser
                  dslraser Forum Testing Most Active @dslraser last edited by

                  @dslraser sagte in State per Script löschen:

                  @paul53 sagte in State per Script löschen:

                  @dslraser sagte:

                  In javascript.0 funktioniert es nicht

                  Ja, das kann ich nachvollziehen. Bitte Issue auf Github erstellen.

                  Ich hatte es eben schon gemeldet...

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

                  Ich verstehe nicht wie Du es meinst. (ich habe nur javascript.0 und 0_userdata.0---weitere Instanzen habe ich nicht)
                  Die Datenpunkte werden bei mir per Script erstellt. Zum Testen nehme ich immer javascript.0 und "produktive" Sachen nehme ich 0_userdata.0. Jetzt kann man ja per Script den Installationsort zum erstellen der Datenpunkte festlegen.

                  Hintergrund, warum ich diese löschen Funktion gerne hätte ist folgender:

                  Ich habe ein Blockly, womit mann mehrere DP erstellen kann und dann auch nutzen kann. Über eine Variable, die auf wahr oder falsch gestellt werden kann, möchte ich festlegen was im Blockly benutzt wird. Erstellt, aber unbenutzte Datenpunkte, also bei Variable auf falsch gestellt, sollen diese DP dann wieder gelöscht werden.

                  dslraser created this issue in ioBroker/ioBroker.javascript

                  closed deleteState per Script unter javascript.0 funktioniert nicht #604

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @dslraser last edited by

                    @dslraser
                    Du kannst die Datenpunkte unter "javascript.0" und "0_userdata.0" so löschen:

                    if(existsState(id)) {
                        if(id.substring(0, 11) == 'javascript.') deleteState(id.substring(13));
                        else deleteState(id);
                    }
                    
                    dslraser TG70 2 Replies Last reply Reply Quote 1
                    • dslraser
                      dslraser Forum Testing Most Active @paul53 last edited by

                      @paul53 sagte in State per Script löschen:

                      Du kannst die Datenpunkte unter "javascript.0" und "0_userdata.0" so löschen:

                      Danke, das funktioniert.

                      Wie kann ich mehrere auf einmal löschen, also z.B. alles ab Batterien_zaehlen (einschließlich Batterien_zaehlen)

                      Bildschirmfoto 2020-06-11 um 17.08.18.png

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @dslraser last edited by

                        @dslraser sagte:

                        Wie kann ich mehrere auf einmal löschen, also z.B. alles ab Batterien_zaehlen

                        Mittels $Selector.

                        const ids = $('javascript.0.xxx.Batterien_zaehlen.*'); // xxx ersetzen !
                        
                        ids.each(function(id, i) {
                           if(existsState(id)) deleteState(id.substring(13));
                        });
                        
                        dslraser 2 Replies Last reply Reply Quote 1
                        • dslraser
                          dslraser Forum Testing Most Active @paul53 last edited by

                          @paul53 sagte in State per Script löschen:

                          Mittels $Selector.

                          vielen Dank, mal wieder 👍

                          1 Reply Last reply Reply Quote 0
                          • dslraser
                            dslraser Forum Testing Most Active @paul53 last edited by

                            @paul53 sagte in [gelöst]State per Script löschen:

                            Mittels $Selector.

                            das geht mit substring nur in javascript.x (in 0_userdata.0 funktioniert es bei mir nicht, da kommt dann auch Not found)

                            ich mache es aktuell so

                            javascript Instanz

                            const idsjs = $('javascript.*.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Batterien*'/*Batterien Zaehlen*/);
                             
                            idsjs.each(function(id, i) {
                               if(existsState(id)) deleteState(id.substring(13));
                            });
                            

                            0_userdata.0

                            const idsud = $('0_userdata.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Batterien*'/*Batterien Zaehlen*/);
                             
                            idsud.each(function(id, i) {
                               if(existsState(id)) deleteState(id);
                            });
                            

                            Oder habe ich was falsch gemacht ?

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @dslraser last edited by paul53

                              @dslraser sagte:

                              Oder habe ich was falsch gemacht ?

                              Nein, siehe hier. Wenn Du nur eine .each-Schleife haben möchtest, dann bau die Abfrage mit ein. Oder so:

                              const ids = $('javascript.0.*.Batterien_zaehlen.*'); 
                               
                              ids.each(function(id, i) {
                                 if(existsState(id)) {
                                    if(id.startsWith('0_userdata.0.')) deleteState(id);
                                    else deleteState(id.substring(13));
                                 }
                              });
                              
                              dslraser 2 Replies Last reply Reply Quote 1
                              • dslraser
                                dslraser Forum Testing Most Active @paul53 last edited by

                                @paul53 sagte in [gelöst]State per Script löschen:

                                Nein, siehe hier. Wenn Du nur eine .each-Schleife haben möchtest, dann bau die Abfrage mit ein. Oder so:

                                Danke, das funktioniert so, aber mir ist eben erst aufgefallen das dann unter javascript.x auch scriptEnabled gelöscht wird.

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @dslraser last edited by

                                  @dslraser sagte:

                                  unter javascript.x auch scriptEnabled gelöscht wird.

                                  Wenn "Batterien_zaehlen" auch als Skript-Name verwendet wurde, dann darf man mit dem "*" nicht so großzügig umgehen, sondern muss genauer selektieren.

                                  dslraser 1 Reply Last reply Reply Quote 0
                                  • dslraser
                                    dslraser Forum Testing Most Active @paul53 last edited by

                                    @paul53
                                    Es werden alle scriptEnabled gelöscht, auch die, die nichts mit dem Namen zu tun haben.

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @dslraser last edited by paul53

                                      @dslraser sagte:

                                      auch die, die nichts mit dem Namen zu tun haben.

                                      Das wundert mich und kann ich bei mir mit dem $Selector nicht nachvollziehen.
                                      Ein Buchstabe != "s" direkt hinter "javascript.0." sollte ausreichen, dies zu verhindern.

                                      dslraser 1 Reply Last reply Reply Quote 0
                                      • dslraser
                                        dslraser Forum Testing Most Active @paul53 last edited by

                                        @paul53
                                        ich probiere nochmal.

                                        dslraser 1 Reply Last reply Reply Quote 0
                                        • dslraser
                                          dslraser Forum Testing Most Active @dslraser last edited by

                                          @dslraser sagte in [gelöst]State per Script löschen:

                                          @paul53
                                          ich probiere nochmal.

                                          ich jetzt auch nicht mehr, bleibt alles da. Da werde ich dann wohl beim probieren was falsch gehabt haben.

                                          1 Reply Last reply Reply Quote 0
                                          • dslraser
                                            dslraser Forum Testing Most Active @paul53 last edited by

                                            @paul53 sagte in [gelöst]State per Script löschen:

                                            @dslraser sagte:

                                            Oder habe ich was falsch gemacht ?

                                            Nein, siehe hier. Wenn Du nur eine .each-Schleife haben möchtest, dann bau die Abfrage mit ein. Oder so:

                                            const ids = $('javascript.0.*.Batterien_zaehlen.*'); 
                                             
                                            ids.each(function(id, i) {
                                               if(existsState(id)) {
                                                  if(id.startsWith('0_userdata.0.')) deleteState(id);
                                                  else deleteState(id.substring(13));
                                               }
                                            });
                                            

                                            Ich habe jetzt eine Weile an einem Blockly was gemacht und als Ort zum erstellen und löschen der Datenpunkte immer javascript.0 benutzt, da funktioniert das löschen.
                                            Eben habe ich dann mal die gleichen Datenpunkte in 0_userdata.0 erstellt und wollte diese anschließend mit dieser Schleife löschen, dort wird nicht gelöscht.
                                            Nehme ich die zwei Schleifen wie hier funktioniert an beiden Orten das löschen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            945
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript
                                            4
                                            29
                                            2552
                                            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