DOIF mit {system ('ssh root@192.168.178.9 halt')} gibt Error

Begonnen von Damu, 07 März 2017, 17:45:57

Vorheriges Thema - Nächstes Thema

Damu

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?

Ellert


Damu

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.

KernSani

"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.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

{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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

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.