NEWS
Programm oder Befehl über Vis starten bzw. ausführen
-
Ich möchte gerne mein NAS über einen Button in der Vis abschalten
Hierzu habe ich einen Button definiert: Nas453 off als logikwert
der Befehle zum Abschalten lautet:
ssh -i ~/.ssh/iobroker_qnap453 admin@192.168.178.90 /sbin/poweroffwenn ich den über CMD auslöse schaltet das NAS ab
ich habe eine BAT-Datei die diesen Befehl beinhaltet. Wenn ich diese starte schaltet das NAS ab.
Jetzt habe ich das Problem, wie ich dies genau in den IOBroker einbaue.
Als Newly habe bräuchte ich eine detailliert Anweisung.
Kann mir jemand dabei helfen.was die meisten immer vergessen. wenn man aus iobroker den exec befehl startet, wird das mit dem user iobroker ausgeführt.
d.h. deine ganzen ssh einstellungen musst du für diesen user machen.
zum testen und zum user aufrufen kannst du auf der konsole eine shell mitsudo -u iobroker bashstarten. wenn da der aufruf deiner batch datei funktioniert, dann klappt es meist auch aus dem iobroker heraus.
ansonsten siehst du aber da auch die fehlermeldungen, die du im iobroker nicht immer siehst. -
was die meisten immer vergessen. wenn man aus iobroker den exec befehl startet, wird das mit dem user iobroker ausgeführt.
d.h. deine ganzen ssh einstellungen musst du für diesen user machen.
zum testen und zum user aufrufen kannst du auf der konsole eine shell mitsudo -u iobroker bashstarten. wenn da der aufruf deiner batch datei funktioniert, dann klappt es meist auch aus dem iobroker heraus.
ansonsten siehst du aber da auch die fehlermeldungen, die du im iobroker nicht immer siehst.@MartinFriz sagte in Programm oder Befehl über Vis starten bzw. ausführen:
BAT-Datei
Das klingt für mich nach Windows.
-
@MartinFriz sagte: BAT-Datei die diesen Befehl beinhaltet. Wenn ich diese starte schaltet das NAS ab.
Dafür gibt es die Funktion exec().
@MartinFriz sagte in Programm oder Befehl über Vis starten bzw. ausführen:
Button definiert
const idButton = ''; // ID eintragen! on({id: idButton, val: true}, function() { exec('NASstop.bat'); });das habe ich verstanden. Ich habe dieses Skript nun angepasst.
const idButton = '0_userdata.0.System.nas.shutdown'; // ID eintragen!
on({id: idButton, val: true}, function() {
exec('cmd_nas.bat');
});Die Datei liegt an dieser Stelle:
C:\Users\IOBroker\Documents\cmd_nas.batich hoffe das passt so.
an welcher Stelle muss ich nun das Skript eintragen?
Sorry bin Newcomer auf diesem Bereich -
das habe ich verstanden. Ich habe dieses Skript nun angepasst.
const idButton = '0_userdata.0.System.nas.shutdown'; // ID eintragen!
on({id: idButton, val: true}, function() {
exec('cmd_nas.bat');
});Die Datei liegt an dieser Stelle:
C:\Users\IOBroker\Documents\cmd_nas.batich hoffe das passt so.
an welcher Stelle muss ich nun das Skript eintragen?
Sorry bin Newcomer auf diesem Bereich@MartinFriz sagte: an welcher Stelle muss ich nun das Skript eintragen?
Als neues Javascript in eine beliebige Gruppe außer "global".
@MartinFriz sagte: Die Datei liegt an dieser Stelle:
C:\Users\IOBroker\Documents\cmd_nas.batIst "C:\Users\IOBroker\Documents" als Suchpfad vorhanden? Falls nicht, muss an exec() der komplette Pfad übergeben werden.
-
das habe ich verstanden. Ich habe dieses Skript nun angepasst.
const idButton = '0_userdata.0.System.nas.shutdown'; // ID eintragen!
on({id: idButton, val: true}, function() {
exec('cmd_nas.bat');
});Die Datei liegt an dieser Stelle:
C:\Users\IOBroker\Documents\cmd_nas.batich hoffe das passt so.
an welcher Stelle muss ich nun das Skript eintragen?
Sorry bin Newcomer auf diesem Bereich -
ich komme der Sache näher,
ich habe folgendes Protokoll erhalten:javascript.0
2025-12-20 12:00:34.990 info script.js.off: exec(cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat)leider läuft das NAS noch immer
wenn ich die Datei direkt unter Windows starte schaltet das NAS ab -
ich komme der Sache näher,
ich habe folgendes Protokoll erhalten:javascript.0
2025-12-20 12:00:34.990 info script.js.off: exec(cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat)leider läuft das NAS noch immer
wenn ich die Datei direkt unter Windows starte schaltet das NAS abWas steht denn in der 'bat'-Datei drin? Ich würde da ja ein shell/bash-Skript draus machen.
-
Was steht denn in der 'bat'-Datei drin? Ich würde da ja ein shell/bash-Skript draus machen.
@Thomas-Braun sagte in Programm oder Befehl über Vis starten bzw. ausführen:
Was steht den
ssh -i ~/.ssh/iobroker_qnap453 admin@192.168.178.90 /sbin/poweroff
-
ich komme der Sache näher,
ich habe folgendes Protokoll erhalten:javascript.0
2025-12-20 12:00:34.990 info script.js.off: exec(cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat)leider läuft das NAS noch immer
wenn ich die Datei direkt unter Windows starte schaltet das NAS ab@MartinFriz sagte: cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat
"Fritz-IO" ist nicht "IOBroker".
-
@Thomas-Braun sagte in Programm oder Befehl über Vis starten bzw. ausführen:
Was steht den
ssh -i ~/.ssh/iobroker_qnap453 admin@192.168.178.90 /sbin/poweroff
Gerade erst gelesen...
Der ioBroker läuft auf einem Windooze? -
ja der läuft unter Windows
-
ja der läuft unter Windows
Ah, da funktioniert das wohl anders. Bin dann raus.
-
@MartinFriz sagte: cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat
"Fritz-IO" ist nicht "IOBroker".
@paul53 sagte in Programm oder Befehl über Vis starten bzw. ausführen:
ich habe den User geändert, wegen den Adminrechten
-
@paul53 sagte in Programm oder Befehl über Vis starten bzw. ausführen:
ich habe den User geändert, wegen den Adminrechten
@MartinFriz sagte: ich habe den User geändert
Dann schau mal, was das Log ergibt:
const idButton = '0_userdata.0.System.nas.shutdown'; const path = 'C:\Users\Friz-IO\Documents\cmd_nas.bat'; on({id: idButton, val: true}, function() { exec(path, (error, stdout, stderr) => { log(error ? stderr : stdout); }); }); -
habe Skript kopiert und eingefügt.
Folgendes Protokoll:javascript.0
2025-12-20 12:37:25.146 info script.js.off: Der Befehl "C:UsersFriz-IODocumentscmd_nas.bat" ist entweder falsch geschrieben oder konnte nicht gefunden werden.javascript.0
2025-12-20 12:37:25.120 info script.js.off: exec(cmd=C:UsersFriz-IODocumentscmd_nas.bat)habe dann die Doppel \ eingetragen und folgendes Protokoll erhalten
javascript.0
2025-12-20 12:38:48.002 info script.js.off: exec(cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat) -
habe Skript kopiert und eingefügt.
Folgendes Protokoll:javascript.0
2025-12-20 12:37:25.146 info script.js.off: Der Befehl "C:UsersFriz-IODocumentscmd_nas.bat" ist entweder falsch geschrieben oder konnte nicht gefunden werden.javascript.0
2025-12-20 12:37:25.120 info script.js.off: exec(cmd=C:UsersFriz-IODocumentscmd_nas.bat)habe dann die Doppel \ eingetragen und folgendes Protokoll erhalten
javascript.0
2025-12-20 12:38:48.002 info script.js.off: exec(cmd=C:\Users\Friz-IO\Documents\cmd_nas.bat)@MartinFriz sagte: Doppel \ eingetragen
Wurde die "cmd_nas.bat" dann ausgeführt?
Ich betreibe ioBroker nur unter Linux.
-
nein, aber ich habe den Fehler gefunden.
Es hing mit den Rechten zusammen
Danke für Deine Unterstützung