FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Damu am 07 März 2017, 17:45:57

Titel: DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Damu am 07 März 2017, 17:45:57
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?
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Ellert am 07 März 2017, 18:31:12
Schau mal hier: https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Besonderheit_des_Error-Reading

Warum verwendest Du )$ ?
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Damu am 07 März 2017, 18:58:23
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.
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: KernSani am 07 März 2017, 20:11:14
"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.
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Damian am 07 März 2017, 20:57:42
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.
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Ellert am 07 März 2017, 21:05:43
{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
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Damian am 07 März 2017, 21:18:02
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.
Titel: Antw:DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error
Beitrag von: Ellert am 09 März 2017, 08:46:05
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.