Wenn die Befehle hintereinander abgearbeitet werden sollen und auch die maximale Laufzeit der Befehle bekannt ist, dann könnte timeout() helfen
setTimeout(function () {
exec('iobroker stop viessmann.0', function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
}, 1000); // wird nach einer Sekunde ausgeführt
setTimeout(function () {
exec(Befehl_SchaltzeitenMo, function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
}, 2000); // wird nach zwei Sekunden ausgeführt
Das ist zwar durch die Brust in's Auge. Aber JS kennt nun mal kein delay(), das an dieser Stelle kurz wartet.