NEWS
Befehl wird im Skript nicht ausgeführt
-
on('hm-rega.0.2764', function (obj) { current_state = getState("hm-rega.0.2764").val; log(current_state) if (current_state == "true") { exec('sudo /raspberry-remote/./send 11101 1 1'); } else { exec('sudo /raspberry-remote/./send 11101 1 0'); } }); ```` `
dien script geht kuerzer da das geraet bereits durch die function obj weitergegeben wird:
on('hm-rega.0.2764', function (obj) { current_state = obj.val; log(current_state) });
was sagt dein log wen du das probierst
-
Hallo Dutchman,
Wenn ich dein Skript einsetze kommt im log „undefined“
-
Daher rate ich mal, dass
=== true
geht. Also keine Anführungszeichen, drei Gleichzeichen `
Danke für den Hinweis, ist möglicherweise richtig, habe ich mal geändert.
Wenn die Bedingung nicht erfüllt ist müsste er allerdings in den Else-Teil springen und trotzdem die Funktion send ausführen. Macht er leider nicht…
-
dutch hatte einen kleinen FEhler:
on('hm-rega.0.2764', function (obj) { current_state = obj.state.val; log(current_state) });
das state fehlte
-
Hallo,
Um es weiter abzukürzen, kannst du die Abfrage auf true dann so einbauen:
on('hm-rega.0.2764', function (obj) { log(obj.state.val) if (obj.state.val) exec('sudo /raspberry-remote/./send 11101 1 1'); else exec('sudo /raspberry-remote/./send 11101 1 0'); });
Gruß
Pix
-
Danke für die Hinweise für schlanken Code!
Das eigentliche Problem ist aber halt dass ein Programm dass sich in der Konsole ausführen lässt bei Skript Aufruf nichts macht. Kann das an Dateirechten der Programms liegen?
Bin wirklich ratlos…
-
Stimmt denn der Pfad?
-
Also die Datei liegt in /raspberry-remote/. Die Syntax mit ./send habe ich aus mehreren Tutorien so übernommen, funktioniert übrigens genau so in der Konsole nicht: Da muss der . vor den Anfang, also ./raspberry-remote/send/
Ich sehe auch keine Fehlermeldung. Kann ich Bei Skriptausführung entstehende Fehler sichtbar machen?
-
War doch der Pfad!
Echter Anfängerfehler… :oops:
Nachdem ich /home/pi/ davorgestellt habe funktioniert alles einwandfrei!
Danke!
-
Also die Datei liegt in /raspberry-remote/. Die Syntax mit ./send habe ich aus mehreren Tutorien so übernommen, funktioniert übrigens genau so in der Konsole nicht: Da muss der . vor den Anfang, also ./raspberry-remote/send/
Ich sehe auch keine Fehlermeldung. Kann ich Bei Skriptausführung entstehende Fehler sichtbar machen? `
Ja, das geht.Du müsstest der exec-Ausführung einen callback verpassen. Hier ist ein Beispiel von ruhr70: http://forum.iobroker.net/viewtopic.php … 935#p26547
! Auszug aus dem Code:````
function abfrageConsole() {
exec(abfrage, function(err, stdout, stderr) { // <--------DAS IST DIE RELEVANTE ZEILE
if (err) {
log(err,"error");
return;
}
stdout = stdout.replace(/\n+/g, " "); // neue Zeile gegen Leerzeichen ersetzen
stdout = stdout.split(/ +/g); // array erstellen, Lerzeichen als Trennervar anzProzesse = (stdout.length-1) / 11; //log(stdout); //log("Anzahl laufender ioBroker Prozesse: " + anzProzesse); var jsonArr = createArrayJson(stdout); var mem = Math.floor(getMemAbsolut(jsonArr)/1024); var cpu = Math.floor(getCpu(jsonArr)*10)/10; var memPercent = Math.floor(getMem(jsonArr)*10)/10;
! setState(idProzesse ,writeJson(jsonArr));
setState(idMemAll ,mem);
setState(idAnzProzesse ,anzProzesse);
setState(idCpuAll ,cpu);
setState(idMemPercent ,memPercent);
});
}Gruß Pix