NEWS

Javscript mehrere Objekte auslesen und verarbeiten

  • Forum Testing

    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 *********************
    

  • @DerT sagte:

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

    Variable name.

Suggested Topics

2.0k
Online

34.9k
Users

40.9k
Topics

561.4k
Posts