Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. subscribe dynamisch erstellen?

    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

    subscribe dynamisch erstellen?

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

      Hallo zusammen

      Ich schreibe gerade meine eigene Shelly-Strommessung/Speicherung für Tag-/Nachtstrom etc...
      Das funktioniert auch ganz ok, aber ich möchte, falls ich einen neuen Shelly hinzufüge, dies dynamisch hinzufügen.
      Dazu muss ich einen Wert subscriben - nur sollte das dynamisch sein, also sobald ein neuer Shelly da ist, soll auch auf diesen Wert "gehört" werden.

      Statisch geht das ja so:

      on({id: 'irgendwas', change: "ne"}, function (obj){
      })
      

      Nun müsste ich, aus einer funktion raus, sobald ich merke, dass ein neuer Shelly da ist, diese subscription machen für den neuen Shelly...

      Aus einer Funktion raus kann ich ja alle Shellys abrufen und dann auch vergleichen, ob einer neu ist:

      $('shelly.*.*.Relay0.Energy').each(function(id) { 
      ....
         if(istNeu){
            subscribe-Logik();
         }
      }
      

      Brauchen tue ich das, weil der Shelly seinen Energy-Wert auf 0 setzt, sobald er Stromlos ist - das muss ich abfangen können.

      Geht das irgendwie?

      Danke

      mickym paul53 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Dominic Reber last edited by mickym

        @dominic-reber Ehrlich gesagt verstehe ich Dich nicht. Wenn Du mit * subscribst, kann Dir das doch egal sein, ob alt oder neu. Der neue ist in jedem Fall mit dabei und kann doch dann wie die alten gelesen werden???? Es wird immer auf alle gehört und zwar dynamisch.

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

          @dominic-reber sagte: Aus einer Funktion raus kann ich ja alle Shellys abrufen und dann auch vergleichen, ob einer neu ist:

          Der $Selector erkennt keine neuen Datenpunkte, da er den Puffer der Javascript-Instanz verwendet. Eine Subscription mit RegExp erfasst neue Datenpunkte.

          on({id: /^shelly\..+\.Relay0\.Energy$/}, function(dp) {
              if(!ids.includes(dp.id)) { // DP ist neu
                  ids.push(dp.id);
                  ...
              }
          });
          

          Siehe hier

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

          Support us

          ioBroker
          Community Adapters
          Donate

          466
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          3
          3
          162
          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