Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Javscript mehrere Objekte auslesen und verarbeiten

    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

    Javscript mehrere Objekte auslesen und verarbeiten

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

      Hallo Zusammen,

      ich würde gerne mehrere Zustände auf einmal auslesen und verarbeiten.
      Das Script soll mit einer gewissen Verzögerung meine 433Mhz Steckdosen schalten.
      Das brauche ich, da manchmal das Signal nicht korrekt ankommt und ich es so einfach wiederholt sende.
      Nun habe ich ein Array mit den aktuellen Steckdosen definiert.
      Das funktioniert soweit auch.
      Ich würde das ganze aber gerne dynamischen machen und nicht jede neue Steckdose immer hinzufügen müssen. (Fehlerquellen minimieren)
      Also möchte ich einfach ein Array erzeugen welches alle States beinhaltet die unter dem Ordner "OwnDevices.0.433mhzPlugs." liegen.

      So sieht meine aktuelle Struktur aus.
      2cf1161e-e2b5-419e-9582-675fe3a946b5-image.png

      Diese kann aber nach belieben angepasst werden.

      Und so sieht mein aktuelles Script aus.
      Gibt es außerdem eine Möglichkeit den Pfad des aktuellen Scriptes auszulesen?

      Danke und Gruß

      T

      var ThisScript = "javascript.0.scriptEnabled.Licht.433Mhz.433MhzRetrigger";
      var StartTime = getState(ThisScript).lc;
      var Duration = 20000; //20 Sekunden
      var EndTime = StartTime + Duration;
      var PlugRootFolder = "OwnDevices.0.433mhzPlugs.";
      var Plugspathes = ["10011.PlugA", "10011.PlugB", "10011.PlugC"];
      var delay = 0;
      
      for (var i = 0; i <= 3; i++) {
          Plugspathes.forEach(function (Plugpath) {
              var PlugId = PlugRootFolder + Plugpath;
              var PlugState = getState(PlugId).val;
      
              setTimeout(function () {
                  SendCommand(PlugId, PlugState);
                  
              }, delay);
      
              delay += 1000;
          });
      };
      
      setTimeout(function () {
          stopScript(); //No Error, it stops this script
      }, delay);
      
      
      //************************ Functions *********************
      function SendCommand(PlugId, state) {
          var ssh = 'ssh pi@****************** "';
          var path = '/home/pi/programs/433Utils/RPi_utils/./codesend ';
          if (state) {
              var Code = getState(PlugId + '.CodeOn').val;
          }
          else {
              var Code = getState(PlugId + '.CodeOff').val;
          };
          var command = ssh + path + Code + '"';
          log ("Send Command: " + command)
          exec(command);
      };
      //************************ Functions *********************
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @DerT last edited by

        @DerT sagte:

        Gibt es außerdem eine Möglichkeit den Pfad des aktuellen Scriptes auszulesen?

        Variable name.

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

        Support us

        ioBroker
        Community Adapters
        Donate

        405
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        javascript
        2
        2
        305
        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