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. [gelöst] Subscribe auf ganze Datenpunkt-Zweige

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

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

[gelöst] Subscribe auf ganze Datenpunkt-Zweige

Geplant Angeheftet Gesperrt Verschoben JavaScript
21 Beiträge 5 Kommentatoren 1.6k Aufrufe 4 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.
  • paul53P paul53

    @hsteinme sagte:

    Notification reichen, dass sich die Anzahl der Elemente im Zweig geändert hat.

    Wodurch ändert sich die Anzahl der Objekte ?

    hsteinmeH Offline
    hsteinmeH Offline
    hsteinme
    schrieb am zuletzt editiert von
    #6

    @paul53 sagte in Subscribe auf ganze Datenpunkt-Zweige:

    Wodurch ändert sich die Anzahl der Objekte ?

    Durch Löschungen oder Neuanlagen von Objekten unterhalb des "Ober-Objekts".

    paul53P 1 Antwort Letzte Antwort
    0
    • hsteinmeH hsteinme

      Mit dem Statement

      on({id: /^aaa\.0\.bbb\.ccc\./, change: 'ne'}, DoSomething);
      

      kann ich Änderungen im Datenpunkt-Zweig unterhalb des angegebenen Pfades abgreifen, ebenso dort erfolgte Datenpunkt-Neuanlagen, sofern ihnen ein Defaultwert mitgegeben wird. Dort erfolgte Löschungen von Datenpunkten werden jedoch nicht mitgeteilt. Wie kann ich derartige Löschungen per "on" abgreifen?

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

      @hsteinme sagte in Subscribe auf ganze Datenpunkt-Zweige:

      Wie kann ich derartige Löschungen per "on" abgreifen?

      Soweit ich weiß, geht das nur mit einem Adapter.

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

      1 Antwort Letzte Antwort
      0
      • hsteinmeH hsteinme

        @paul53 sagte in Subscribe auf ganze Datenpunkt-Zweige:

        Wodurch ändert sich die Anzahl der Objekte ?

        Durch Löschungen oder Neuanlagen von Objekten unterhalb des "Ober-Objekts".

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

        @hsteinme sagte:

        Durch Löschungen oder Neuanlagen von Objekten unterhalb des "Ober-Objekts".

        Das erfolgt durch eine Adapter-Instanz oder durch ein Script ?

        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

        hsteinmeH 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @hsteinme sagte:

          Durch Löschungen oder Neuanlagen von Objekten unterhalb des "Ober-Objekts".

          Das erfolgt durch eine Adapter-Instanz oder durch ein Script ?

          hsteinmeH Offline
          hsteinmeH Offline
          hsteinme
          schrieb am zuletzt editiert von hsteinme
          #9

          @paul53: Dieser Objekt-Teilbaum wird durch einen Adapter bereitgestellt und auch gepflegt. Mein Skript möchte Änderungen in diesem Teilbaum mitbekommen, um dann Aktionen lostreten zu können.

          paul53P 1 Antwort Letzte Antwort
          0
          • hsteinmeH hsteinme

            @paul53: Dieser Objekt-Teilbaum wird durch einen Adapter bereitgestellt und auch gepflegt. Mein Skript möchte Änderungen in diesem Teilbaum mitbekommen, um dann Aktionen lostreten zu können.

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

            @hsteinme sagte:

            Mein Skript möchte Änderungen in diesem Teilbaum mitbekommen,

            Da sehe ich momentan keine Chance.

            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 Antwort Letzte Antwort
            0
            • hsteinmeH hsteinme

              Nachtrag: Ich hänge in dieser Fragestellung nicht am on-Statement. Paul53's Hinweis, was denn bei einem gelöschten Teilchen überhaupt gemeldet werden soll, habe ich schon verstanden. Mir würde auch schon eine Notification reichen, dass sich die Anzahl der Elemente im Zweig geändert hat. Hat jemand eine Idee dazu?

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

              @hsteinme sagte in Subscribe auf ganze Datenpunkt-Zweige:

              Nachtrag: Ich hänge in dieser Fragestellung nicht am on-Statement. Paul53's Hinweis, was denn bei einem gelöschten Teilchen überhaupt gemeldet werden soll, habe ich schon verstanden. Mir würde auch schon eine Notification reichen, dass sich die Anzahl der Elemente im Zweig geändert hat. Hat jemand eine Idee dazu?

              du könntest dir ein script machen, das diesen ordner scannt und alle id's in ein array speichern - dann frägst du jede z.b minute ab, ob diese array noch dem entspricht, das du gerade abfrägst - dann weißt du, dass es eine änderung
              gegeben hat - du kannst sogar rausfinden an welcher stelle es sich geändert hat - ist nicht so schnell wie ein on{}, aber falls die zeit nicht unbedingt ein kriterium ist - letztlich kannst du auch auf das array triggern mit on{}

              wenn du viele datenpunkte darin hast und öfter in der minute diese abfragen machst, wird dein load ziemlich hoch werden

              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

              paul53P hsteinmeH 3 Antworten Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @hsteinme sagte in Subscribe auf ganze Datenpunkt-Zweige:

                Nachtrag: Ich hänge in dieser Fragestellung nicht am on-Statement. Paul53's Hinweis, was denn bei einem gelöschten Teilchen überhaupt gemeldet werden soll, habe ich schon verstanden. Mir würde auch schon eine Notification reichen, dass sich die Anzahl der Elemente im Zweig geändert hat. Hat jemand eine Idee dazu?

                du könntest dir ein script machen, das diesen ordner scannt und alle id's in ein array speichern - dann frägst du jede z.b minute ab, ob diese array noch dem entspricht, das du gerade abfrägst - dann weißt du, dass es eine änderung
                gegeben hat - du kannst sogar rausfinden an welcher stelle es sich geändert hat - ist nicht so schnell wie ein on{}, aber falls die zeit nicht unbedingt ein kriterium ist - letztlich kannst du auch auf das array triggern mit on{}

                wenn du viele datenpunkte darin hast und öfter in der minute diese abfragen machst, wird dein load ziemlich hoch werden

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

                @liv-in-sky sagte:

                ein script machen, das diesen ordner scannt und alle id's in ein array speichern

                Hast Du berücksichtigt, dass der Javascript-Adapter alle Objekte und Zustände puffert ?

                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

                liv-in-skyL hsteinmeH 2 Antworten Letzte Antwort
                0
                • paul53P paul53

                  @liv-in-sky sagte:

                  ein script machen, das diesen ordner scannt und alle id's in ein array speichern

                  Hast Du berücksichtigt, dass der Javascript-Adapter alle Objekte und Zustände puffert ?

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

                  @paul53 hab ich wohl nicht, wenn du so fragst

                  ich habe das getestet und es funktionierte

                  habe einfach von hand während der minute einen datenpunkt oder auch einen unterordner mit datenpunkten angelegt - das script hat sie gezeigt - der counter springt auf die richtige anzahl

                   schedule('* * * *  *',  function () {
                   var counter=0;
                    $('0_userdata.0.Tabellen.*').each(function(id, i) {         
                      counter++
                    
                  log(id)
                  
                       
                    }); 
                    log(counter.toString())
                  
                     
                     });    
                  

                  selbst mit einem 10 sekunden schedule hat es richtig angezeigt

                  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

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • liv-in-skyL liv-in-sky

                    @paul53 hab ich wohl nicht, wenn du so fragst

                    ich habe das getestet und es funktionierte

                    habe einfach von hand während der minute einen datenpunkt oder auch einen unterordner mit datenpunkten angelegt - das script hat sie gezeigt - der counter springt auf die richtige anzahl

                     schedule('* * * *  *',  function () {
                     var counter=0;
                      $('0_userdata.0.Tabellen.*').each(function(id, i) {         
                        counter++
                      
                    log(id)
                    
                         
                      }); 
                      log(counter.toString())
                    
                       
                       });    
                    

                    selbst mit einem 10 sekunden schedule hat es richtig angezeigt

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

                    @liv-in-sky sagte:

                    selbst mit einem 10 sekunden schedule hat es richtig angezeigt

                    Um so besser, wenn es so funktioniert. Mit Subscriptions auf neue, per Hand angelegte Datenpunkte habe ich schon negative Erfahrungen gemacht.

                    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

                    liv-in-skyL 2 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @liv-in-sky sagte:

                      selbst mit einem 10 sekunden schedule hat es richtig angezeigt

                      Um so besser, wenn es so funktioniert. Mit Subscriptions auf neue, per Hand angelegte Datenpunkte habe ich schon negative Erfahrungen gemacht.

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

                      @paul53 da ich weiß, das du bedeutend mehr erfahrung hast als ich:

                      gehst du davon aus, dass es situationen gibt, in dem das nicht funktioniert und ich nur eine art "glück" hatte - oder ich irgendwas eingestellt habe, dass ich vergessen habe ?

                      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
                      0
                      • paul53P paul53

                        @liv-in-sky sagte:

                        selbst mit einem 10 sekunden schedule hat es richtig angezeigt

                        Um so besser, wenn es so funktioniert. Mit Subscriptions auf neue, per Hand angelegte Datenpunkte habe ich schon negative Erfahrungen gemacht.

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

                        @paul53 ok - überschneidung

                        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
                        0
                        • liv-in-skyL liv-in-sky

                          @hsteinme sagte in Subscribe auf ganze Datenpunkt-Zweige:

                          Nachtrag: Ich hänge in dieser Fragestellung nicht am on-Statement. Paul53's Hinweis, was denn bei einem gelöschten Teilchen überhaupt gemeldet werden soll, habe ich schon verstanden. Mir würde auch schon eine Notification reichen, dass sich die Anzahl der Elemente im Zweig geändert hat. Hat jemand eine Idee dazu?

                          du könntest dir ein script machen, das diesen ordner scannt und alle id's in ein array speichern - dann frägst du jede z.b minute ab, ob diese array noch dem entspricht, das du gerade abfrägst - dann weißt du, dass es eine änderung
                          gegeben hat - du kannst sogar rausfinden an welcher stelle es sich geändert hat - ist nicht so schnell wie ein on{}, aber falls die zeit nicht unbedingt ein kriterium ist - letztlich kannst du auch auf das array triggern mit on{}

                          wenn du viele datenpunkte darin hast und öfter in der minute diese abfragen machst, wird dein load ziemlich hoch werden

                          hsteinmeH Offline
                          hsteinmeH Offline
                          hsteinme
                          schrieb am zuletzt editiert von
                          #17

                          @liv-in-sky sagte in Subscribe auf ganze Datenpunkt-Zweige:

                          du könntest dir ein script machen, das diesen ordner scannt und alle id's in ein array speichern - dann frägst du jede z.b minute ab, ob diese array noch dem entspricht, das du gerade abfrägst - dann weißt du, dass es eine änderung
                          gegeben hat

                          Ja, diesen Notnagel habe ich schon fertig da liegen, weil ich ihn eh an anderer Stelle benötige. Aber das ist kein Ansatz, der mir Freude bereitet. Im besagten Objektbaum gibt es im Abstand von Tagen gelegentliche Änderungen, auf die ich dann zeitnah reagieren möchte. Dann ist das in kurzen Abständen durchzuführende "Durchwandern" des Baumes wirklich nur eine verschwenderische Notlösung.

                          Danke für Deine Anregung.

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @liv-in-sky sagte:

                            ein script machen, das diesen ordner scannt und alle id's in ein array speichern

                            Hast Du berücksichtigt, dass der Javascript-Adapter alle Objekte und Zustände puffert ?

                            hsteinmeH Offline
                            hsteinmeH Offline
                            hsteinme
                            schrieb am zuletzt editiert von
                            #18

                            @paul53 sagte in Subscribe auf ganze Datenpunkt-Zweige:

                            Hast Du berücksichtigt, dass der Javascript-Adapter alle Objekte und Zustände puffert ?

                            Ooooh! Gibt es dazu irgendwo verlässliche nachlesbare Informationen? Diese Aussage stellt ja schließlich elementare Teile des ioBroker-Konzepts in Frage. Von daher fehlt mir hier ein wenig der Glaube.

                            Jeder, der einen Cache einführt, muss doch auch Mechanismen parat haben, die eine Inkonsistenz zwischen dem Cache und seinem repräsentierten Hintergrundmedium vermeiden.

                            1 Antwort Letzte Antwort
                            0
                            • liv-in-skyL liv-in-sky

                              @hsteinme sagte in Subscribe auf ganze Datenpunkt-Zweige:

                              Nachtrag: Ich hänge in dieser Fragestellung nicht am on-Statement. Paul53's Hinweis, was denn bei einem gelöschten Teilchen überhaupt gemeldet werden soll, habe ich schon verstanden. Mir würde auch schon eine Notification reichen, dass sich die Anzahl der Elemente im Zweig geändert hat. Hat jemand eine Idee dazu?

                              du könntest dir ein script machen, das diesen ordner scannt und alle id's in ein array speichern - dann frägst du jede z.b minute ab, ob diese array noch dem entspricht, das du gerade abfrägst - dann weißt du, dass es eine änderung
                              gegeben hat - du kannst sogar rausfinden an welcher stelle es sich geändert hat - ist nicht so schnell wie ein on{}, aber falls die zeit nicht unbedingt ein kriterium ist - letztlich kannst du auch auf das array triggern mit on{}

                              wenn du viele datenpunkte darin hast und öfter in der minute diese abfragen machst, wird dein load ziemlich hoch werden

                              hsteinmeH Offline
                              hsteinmeH Offline
                              hsteinme
                              schrieb am zuletzt editiert von
                              #19

                              @liv-in-sky sagte in Subscribe auf ganze Datenpunkt-Zweige:

                              du könntest dir ein script machen, das diesen ordner scannt und alle id's in ein array speichern [...] letztlich kannst du auch auf das array triggern mit on{}

                              Nein, damit komme ich nicht weiter, da ich in die gleiche Situation hineinlaufe wie mit meinem on-Beispiel aus meinem ersten Beitrag: Änderungen an den Datenpunkten werden Dir mitgeteilt, Löschungen von Datenpunkten jedoch nicht.

                              Ein Beispiel:

                              var MyDPs = ['javascript.0.Test1', 'javascript.0.Test1.Test11'];
                              on({id: MyDPs, change: 'any'}, function(DP) {
                                  console.log('Änderung in ' + MyDPs[MyDPs.indexOf(DP.id)]);
                              });
                              

                              Änderst Du den Wert von Test11, so macht on fein säuberlich einen Vermerk im Log. Löschst Du jedoch Test11, so schweigt on Dich an.

                              Hier gilt auch wieder die Anmerkung von paul 53: Wenn Test11 gelöscht ist, wie soll on bzw. function damit noch arbeiten können?

                              1 Antwort Letzte Antwort
                              0
                              • T Nicht stören
                                T Nicht stören
                                ticaki
                                schrieb am zuletzt editiert von ticaki
                                #20

                                Hallo,

                                folgender Code erzeugt auf RB4 mit redis <1% load mit ca. 40-50 States:

                                var arrayofstates = $('state[state.id=javascript.0.*]');
                                setState("javascript.0.Test1",JSON.stringify(arrayofstates));
                                
                                schedule("*/1 * * * * *", function() { // jede Sekunde
                                  arrayofstates = $('state[state.id=javascript.0.*]');
                                  setState("javascript.0.Test1",JSON.stringify(arrayofstates));
                                })
                                
                                on({id:"javascript.0.Test1", change:"ne"},function(obj) {
                                    console.log("test 123 kann mich wer hören");
                                })
                                

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                1 Antwort Letzte Antwort
                                0
                                • hsteinmeH Offline
                                  hsteinmeH Offline
                                  hsteinme
                                  schrieb am zuletzt editiert von
                                  #21

                                  @ticaki sagte in Subscribe auf ganze Datenpunkt-Zweige:

                                    arrayofstates = $('state[state.id=javascript.0.*]');
                                    setState("javascript.0.Test1",JSON.stringify(arrayofstates));
                                  

                                  Ein "schöner" :blush: Code, danke! Vor allem ein für mich brauchbarer Ansatz, insbesondere weil durch die Stringifizierung es ermöglicht wird, auch Löschungen innerhalb der Struktur als Änderung zu erfahren. Ganz herzlichen Dank!

                                  Durch geeignete Wildcard-Wahl im $-Selektor kann ich darüber hinaus sogar erreichen, dass nur für mich relevante Teile des Objektbaums betrachtet werden.

                                  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

                                  763

                                  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