Hallo
Ich hab ein DOIF:
Zitatdefine Nas_DO DOIF([Nas1:?ein]) (set Nas1_UG on, attr Nas1_ping disable 0)
DOELSEIF ([Nas1:?aus]) (set Nas1_ping statusRequest) ({system ('ssh root@192.168.178.9 halt')})
DOELSEIF ([Nas1_ping:absent] and [Nas1:state] eq "aus") (set Nas1_UG off, attr Nas1_ping disable 1)
attr Nas_DO do always
attr Nas_DO room Nas
attr Nas_Do wait 0:200,3:200
Wobei Nas1 ein normales Switch ist wo das Nas1 angesteckt ist.
Wenn ich das Nas1 Switch einschalte startet das NAS1 sofort.
Ausschalten mach ich mit {system ('ssh root@192.168.178.9 halt')} in FHEM.
Das gibt mir -1 aber das Nas1 geht aus.
Das Nas1 geht dann aus, wenn es aus ist soll es das DOIF das Switch wo das Nas1 angeschlossen ist auch auf off stellen
Wenn das DOIF abarbeitet gibt es mir ein error und geht dann nicht auf cmd3.
Zitaterror {system ('ssh root@192.168.178.7 halt')}: -1
Wie kann ich das Error verhindern, das das Doif weiterläuft?
Schau mal hier: https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Besonderheit_des_Error-Reading
Warum verwendest Du )$ ?
ZitatWarum verwendest Du )$ ?
Ist ein Fehler, das verwende ich nicht.
Zitat({system ('ssh root@192.168.178.7 halt');;0})
Ergibt 0 hoffe das geht so, danke.
"system" gibt eigentlich (fast) immer -1 zurück. Wenn du den Aufruf mit backticks oder qw machst solltest du die Ausgabe des shell Kommandos zurück bekommen.
Ab morgen kannst du statt:
({system ('ssh root@192.168.178.7 halt');;0})
{system ('ssh root@192.168.178.7 halt');0}
angeben.
Ich habe gerade neue Version eingecheckt.
{system...} ist eigentlich nicht erforderlich, es sollte so funktionieren
DOELSEIF ([Nas1:?aus]) (set Nas1_ping statusRequest) ("ssh root@192.168.178.9 halt")
siehe: https://fhem.de/commandref_DE.html#command
und wenn wir schon dabei sind:
[Nas1:?aus]
ist die alte Syntax, es sollte stattdessen
[Nas1:"aus"]
für Ereignistrigger benutzt werden, damit man es nicht mit
[?Nas1:aus]
verwechselt, weil es ganz was anderes bedeutet.
Die alte Syntax wollte ich früher oder später ausbauen.
Zitat von: Damian am 07 März 2017, 21:18:02
Die alte Syntax wollte ich früher oder später ausbauen.
DOIFtools erkennt mit
get checkDOIF
die alte Syntax und gibt einen Hinweis aus.
Da könnte man die alte Syntax schon mal vorbereitend ändern.