FHEM Forum

FHEM - Hardware => Network Attached Storage (NAS) => Thema gestartet von: Fashionbye am 13 Mai 2013, 01:10:13

Titel: NAS Server herunterfahren mit FHEM
Beitrag von: Fashionbye am 13 Mai 2013, 01:10:13
Kann man über Ethernet einen Synology NAS Server per FHEM herunterfahren?
Habe ein DS410 und würde dieses gerne per FHEM herunterfahren bei Abwesenheit.
Einfach abschalten ist dauerhaft keine gute Idee.
Hat das schon mal jemand realisiert (außer über Aktor am Schalter), ein Ethernet Befehl wäre mir lieber?
Geht ja über das Webinterface, also muss es eine remote Möglichkeit geben.
Titel: Aw: NAS Server herunterfahren mit FHEM
Beitrag von: Puschel74 am 14 Mai 2013, 17:30:30
Hallo,

wenn du den Web-Befehl per Telnet/oder HTTP ans NAS schicken kannst sollte das möglich sein.

Grüße
Titel: Aw: NAS Server herunterfahren mit FHEM
Beitrag von: Fashionbye am 14 Mai 2013, 21:34:38
Danke, ja, wenn ich den Web-Befehl wüsste, täte ich mir leichter.
Am Web-GUI von Synology dem DSM (Disk Station Manager) gibt es einen Button zum Herunterfahren, läuft in Java, soweit ich weiß. Aber wie man den Befehl "abfängt" - keine Ahnung.
Titel: Aw: NAS Server herunterfahren mit FHEM
Beitrag von: justme1968 am 14 Mai 2013, 21:38:13
wenn du mit runterfahren wirklich ausschalten meinst dann per ssh entweder poweroff oder syno_poweroff_task ausführen. wie man den suspend mode von der kommandozeile aktiviert habe ich leider noch nicht gefunden.

gruss
  andre
Titel: Aw: NAS Server herunterfahren mit FHEM
Beitrag von: Bernd D. am 15 Mai 2013, 22:12:09
Hallo Andre,

ich stand vor dem selben Problem bei meiner DS107+. Habe auch schon eine Lösung für das automatische Einschalten gefunden (Stichwort Funksteckdose und Kondensator an den Einschalttaster der Diskstation anlöten).

Das Herunterfahren habe ich experimentell wie folgt in einer 99_myutils.pm gelöst:


### Connect to diskstation
sub NAS_Shutdown()
{
 {fhem ("set NAS shutdown")};
 use Net::Telnet ();
    my ($t) = new Net::Telnet ( Timeout=>50,
Errmode=>'die');
$t->open("192.168.xxx.xxx");
Log 1, "NAS: Verbindung hergestellt";
$t->waitfor('/login: $/i');
$t->print("root");
Log 1, "NAS: login eingegeben";
$t->waitfor('/Password: $/i');
$t->print("xxxxxxxx");
Log 1, "NAS: Passwort eingegeben";
$t->waitfor('/DiskStation>/i');
$t->print('poweroff');
Log 1, "NAS: Shutdown Befehl ausgegeben";
my ($output) = $t->waitfor('/>/i');
print $output;
Log 1, "NAS: Shutdown abgeschlossen";
}


Beim Herunterfahren wird noch eine Warnung ins Logfile geschrieben, aber es funktioniert seit einigen Wochen bei mir problemlos. Testhalber sind vielleicht auch noch ein paar zu viele Log-Einträge drin.

Viele Grüße,
Bernd
Titel: Aw: NAS Server herunterfahren mit FHEM
Beitrag von: justme1968 am 15 Mai 2013, 22:43:49
ja. oder das hier um per ssh ein kommando aufzuführen. das geht aber nur wenn die keys entsprechend ausgetauscht sind und nicht nach einem password verlangt wird. der vorteil ist es geht ohne zusätzliches perl paket wenn das ssh binary gefunden wird.

sub ssh_cmd($$@)
{
  my($host,$cmd,$user) = @_;
 
  my $ret;
 
  my $ssh = qx(which ssh);    
  chomp( $ssh );
  $ssh .= ' ';
  $ssh .= $user."\@" if( defined($user) );
  $ssh .= $host ." ". $cmd;
  if( open(my $fh, "$ssh|" ) ) {    
    $ret = <$fh>;
    close($fh);
  }
 
return $ret;
}


vielleicht findet ja noch jemand einen weg den suspend mode per software zu triggern. das wäre eigentlich noch eleganter und man könnte per wol einschalten.

gruss
  andre
Titel: Aw: NAS Server herunterfahren mit FHEM
Beitrag von: Fashionbye am 21 Mai 2013, 08:44:18
Danke für die Tipps. Meinte schon ausschalten, aber eben so,dass WOL danach wieder funktioniert.
@justme1968: das werde ich testen, wenn ich wieder zu Hause bin.
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: botze am 02 Oktober 2015, 16:55:28
Hallo Zusammen,

ich habe noch ein Frage bezüglich der SSH Funktion. Die Funktion läuft prima, aber ich frage mich ob diese Funktion solange sie ausgeführt wird, den FHEM Server blockiert?!

Zu meinem Hintergrund: Ich würde nämlich gerne einen SSH Command zur Datensicherung über diese Funktion aufrufen, der aber ein paar Sekunden dauert bis er die Sicherung durchgeführt hat. Das wäre ja blöd, wenn FHEM solange blockiert wäre.

Danke und Gruß,
Botze
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: kleineslichtHH am 07 Oktober 2016, 22:07:18
ich muss das hier leider nochmal rauskramen

folgende routine habe ich in der 99_myutils stehen

sub NAS_Stop()
{
{fhem ("set WOL_Synology ausschalten")};
use Net::Telnet ();
    my ($t) = new Net::Telnet ( Timeout=>50,
Errmode=>'die');
$t->open("192.168.xx.xx");
Log 1, "NAS: Verbindung hergestellt";
$t->waitfor('/login: $/i');
$t->print("admin");
Log 1, "NAS: login eingegeben";
$t->waitfor('/Password: $/i');
$t->print("xxxx");
Log 1, "NAS: Passwort eingegeben";
$t->waitfor('/DiskStation>/i');
$t->print('sudo poweroff');
Log 1, "NAS: Shutdown Befehl ausgegeben";
$t->waitfor('/Password: $/i');
$t->print("xxxxx");
Log 1, "NAS: Shutdown Befehl2 ausgegeben";
my ($output) = $t->waitfor('/>/i');
print $output;
Log 1, "NAS: Shutdown abgeschlossen";
}


folgende definition
Internals:
   DEF        00:11:32:xx:xx:xx 192.168.xx.xx BOTH
   IP         192.168.178.10
   MAC        00:11:32:xx:xx:xx
   MODE       BOTH
   NAME       WOL_Synology
   NR         48
   REPEAT     000
   STATE      aufwecken
   TYPE       WOL
   Readings:
     2016-10-07 21:58:47   active          off
     2016-10-07 21:58:57   isRunning       true
     2016-10-07 21:58:47   packet_via_EW   none
     2016-10-07 21:58:47   packet_via_UDP  none
     2016-10-07 21:58:57   state           on
   Timer:
     Wol_synology_ping:
       HASH       WOL_Synology
       MODIFIER   ping
       NAME       WOL_Synology_ping
   Helper:
     Bm:
       Wol_set:
         cnt        3
         dmx        0
         mAr
         max        0
         tot        0
Attributes:
   alias      Synology aufwecken
   devStateIcon on:general_an@green off:general_aus@red
   eventMap   on:aufwecken off:ausschalten
   group      Synology
   icon       it_nas
   room       System
   shutdownCmd { NAS_Stop() }


gebe ich die schritte per Hand in die Console ein (per Putty über SSH) funktioniert der WEg und die Synology fährt runter.

Wo habe ich da meinen Denkfehler?
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::fhem" at ./FHEM/99_myUtils.pm line 54.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::NAS_Stop" at (eval 5495) line 1.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzePerlCommand" at fhem.pl line 1025.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::CommandSet" at fhem.pl line 1084.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::WOL_Set" at ./FHEM/98_apptime.pm line 104.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::DoSet" at fhem.pl line 1633.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::CommandSet" at fhem.pl line 2374.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::CallFn" at fhem.pl line 1601.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::CallFn" at fhem.pl line 3143.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::apptime_getTiming" at ./FHEM/98_apptime.pm line 74.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::CallFn" at fhem.pl line 1591.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommandChain" at fhem.pl line 3233.
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommand" at fhem.pl line 954.
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: Wernieman am 07 Oktober 2016, 23:13:26
Sorry bibn zu "faul zum Suchen", kannst Du mir bitte sagen, was in folgender Zeile steht?
2016.10.07 21:52:28 1: PERL WARNING: Deep recursion on subroutine "main::fhem" at ./FHEM/99_myUtils.pm line 54.

Also Zeile 54 in der ./FHEM/99_myUtils.pm

Und .. gibt es einen besonderen Grund, das Du unbedingt per telnet arbeitest? Der admin-User hat sehr viele rechte auf der Synology ......
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: kleineslichtHH am 08 Oktober 2016, 09:38:32
{fhem ("set WOL_Synology ausschalten")};

das ist die Zeile 54

ich habe es auch gerade noch versucht mit

{fhem ("set WOL_Synology off")};

leider mit selbem problem

per telnet arbeite ich eigentlich nur weil ich bisher keinen anderen weg gefunden habe über den raspberry die synology auszuschalten
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: Wernieman am 08 Oktober 2016, 15:43:45
stichwort ist ssh und keyauthentifizierung

Hast Du eventuell ein paar zeilen davor/dahinter?

Und .. was passiert genau bei "set WOL_Synology ausschalten"
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: kleineslichtHH am 08 Oktober 2016, 15:54:48
folgende routine habe ich in der 99_myutils stehen

sub NAS_Stop()
{
{fhem ("set WOL_Synology ausschalten")};
use Net::Telnet ();
    my ($t) = new Net::Telnet ( Timeout=>50,
Errmode=>'die');
$t->open("192.168.xx.xx");
Log 1, "NAS: Verbindung hergestellt";
$t->waitfor('/login: $/i');
$t->print("admin");
Log 1, "NAS: login eingegeben";
$t->waitfor('/Password: $/i');
$t->print("xxxx");
Log 1, "NAS: Passwort eingegeben";
$t->waitfor('/DiskStation>/i');
$t->print('sudo poweroff');
Log 1, "NAS: Shutdown Befehl ausgegeben";
$t->waitfor('/Password: $/i');
$t->print("xxxxx");
Log 1, "NAS: Shutdown Befehl2 ausgegeben";
my ($output) = $t->waitfor('/>/i');
print $output;
Log 1, "NAS: Shutdown abgeschlossen";
}


folgende definition
Internals:
   DEF        00:11:32:xx:xx:xx 192.168.xx.xx BOTH
   IP         192.168.178.10
   MAC        00:11:32:xx:xx:xx
   MODE       BOTH
   NAME       WOL_Synology
   NR         48
   REPEAT     000
   STATE      aufwecken
   TYPE       WOL
   Readings:
     2016-10-07 21:58:47   active          off
     2016-10-07 21:58:57   isRunning       true
     2016-10-07 21:58:47   packet_via_EW   none
     2016-10-07 21:58:47   packet_via_UDP  none
     2016-10-07 21:58:57   state           on
   Timer:
     Wol_synology_ping:
       HASH       WOL_Synology
       MODIFIER   ping
       NAME       WOL_Synology_ping
   Helper:
     Bm:
       Wol_set:
         cnt        3
         dmx        0
         mAr
         max        0
         tot        0
Attributes:
   alias      Synology aufwecken
   devStateIcon on:general_an@green off:general_aus@red
   eventMap   on:aufwecken off:ausschalten
   group      Synology
   icon       it_nas
   room       System
   shutdownCmd { NAS_Stop() }


gebe ich die schritte per Hand in die Console ein (per Putty über SSH) funktioniert der WEg und die Synology fährt runter
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: Wernieman am 08 Oktober 2016, 16:01:30
Warum steht in dem NAS_Stop() denn ein "fhem ("set WOL_Synology ausschalten")"???

Außerdem .. eigentlich brauchst Du keine {} bei dem fhem Befehl, da Du schon in Perl bist ....
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: kleineslichtHH am 08 Oktober 2016, 16:21:31
Zitat von: Wernieman am 08 Oktober 2016, 16:01:30
Warum steht in dem NAS_Stop() denn ein "fhem ("set WOL_Synology ausschalten")"???

Außerdem .. eigentlich brauchst Du keine {} bei dem fhem Befehl, da Du schon in Perl bist ....

das hatte ich mir aus diesem Beitrag https://forum.fhem.de/index.php/topic,12791.msg77870.html#msg77870 (https://forum.fhem.de/index.php/topic,12791.msg77870.html#msg77870)
Titel: Antw:NAS Server herunterfahren mit FHEM
Beitrag von: Wernieman am 08 Oktober 2016, 19:36:52
Hast Du einen noify auf "WOL_Synology"?