Synology DS115j herunterfahren und Steckdose ausschalten

Begonnen von Ruggy, 09 März 2020, 14:17:02

Vorheriges Thema - Nächstes Thema

Ruggy

Hallo,

habe eine Synology DS115j. Diese hat kann kein WakeOnLan.
Habe mir deshalb nach foldener Anleitung mit einem Arduino beholfen, welcher die DS hochfährt sobald Strom anliegt.
(https://www.synology-forum.de/showthread.html?4581-Automatisches-Einschalten-DS106-fuer-20-Cent/page4&p=856049#post856049)

Angesteckt habe ich die DS an eine osram smart+ Steckdose angesteckt, welche ich über FHEM steuere.

Damit das nächste mal der Arduino wieder "WOL" durchführt muss der DS vorher stromlos sein. Ich möchte aber die Steckdose mit den DS nicht einfach ausschalten sondern die DS vorher herunterfahren.


Ich habe es geschafft, dass ich mit Putty und folgenden Befehl die DS herunterfahren kann

poweroff

Hierfür habe ich ein Kennwort für den Benutzers Root vergeben den Root-Login in der Datei /etc/ssh/sshd_config mit der Erweiterung um die Zeile "PermitRootLogin yes" ermöglicht.

Wie kann ich mit FHEM steuern, dass der o.g. Befehl "poweroff" über ssh gesendet wird und dann nach z.B. 5 Minuten die Osram Steckdose automatisch ausgeschaltet wird.

Ich das möglich und falls ja wie?
(Ich kenne mich mit der Materie nicht gut aus und habe mich bisher mit Hilfe von anderen Anleitungen bis zu diesem Punkt gebracht)

Vielen Dank
Grüße
Ruggy


Otto123

Hi,

vom Prinzip her geht das einfach so.
Ich entsinne mich aber, dass es bei Syno irgendwie besonders war, es gab da mal eine endlose Diskussion...

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ruggy

Das ist mir schon fast zu kompliziert; geht es auch einfacher? Wenn nicht, muss ich es doch probieren.

Habe folgenden Thread gefunden.
https://forum.fhem.de/index.php/topic,48902.msg405669.html#msg405669

Hier wird durch @ujaudio folgendes geschrieben

Zitat von: ujaudio am 20 August 2016, 10:54:33
Aus FHEM heraus kann ich meine Synology wie folgt herunterfahren:
system ('ssh root@xxx.xxx.xxx.xxx poweroff');
# statt der xxx die IP-Adresse


Wenn ich aber
system ('ssh root@xxx.xxx.xxx.xxx poweroff');
(mit meiner IP; muss ich die IP dreistellig eingeben; z.B. 192.168.001.002 ?)

in FHEM oben in der Befehlszeile eingebe, kommt die Meldung

Unknown command system, try help.

Was mache ich falsch?
Könnte das so funktionieren?

Ruggy

Habe es jetzt mal so probiert

{ system ('ssh root@192.168.001.002 poweroff') }


In FHEM zeigt es
-1
an; die DS fährt aber nicht herunter

Wernieman

Dein user fhem darf bestimmt nicht auf die Synology so einfach "drauf" ....

Probiere es doch bitte erstmal "normal" von der Konsole. Wenn das funzt, kannst Du es nach fhem portieren.

Wenn Du auf Deinen fhem-Rechern mit der Konsole gehst  (putty), was kommt bei ssh root@192.168.001.002 poweroff
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Ruggy

#5
Folgendes wird nach der Eingabe in Putty angezeigt (den Fingerprint habe ich für hier etwas verändert):

The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:mnoTiQ3zBKYwFTbbmN1e/THP34teH+zPhmoHVtNFCMM.
Are you sure you want to continue connecting (yes/no)?


Dann nach folgender Eingabe

yes

wird diese Meldung angezeigt

Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
root@192.168.1.2's password:


nach Eingabe des Passwortes (welches ich root festgelegt habe; siehe Eingangsthread) wird die DS heruntergefahren  :)


Beim erneuten eingeben deines codes wird nur mehr das Passwort abgefragt und die DS fährt herunter.

Jetzt frage ich mich zusätzlich, wie es grundsätzlich von FHEM aus funktioniert. Deinen Befehl habe ich ja in Putty eingegeben, welches auf meinen Win-PC läuft.
Muss ich dann ssh auch auf meinen Raspberry installieren, auf welchen FHEM läuft?
Den PC möchte ich dazu nicht immer laufen lassen, sonder z.B. auch vom Smartphone steuern.
Die Passworteingabe stört auch noch.

Wernieman

Dann lies Dir den Beitrag von Otto durch ... da geht es um einen Passwortlosen ssh Zugang ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Ruggy


Otto123

#8
Ruggy, ehrlich - wenn Dir das in meinem Artikel zu kompliziert dargestellt ist - dann lass das lieber.
Ich kann Dir sagen, alle anderen Artikel die Du zum Thema finden wirst sind komplizierter ;)

Alle Alternativen sind sicher viel unsicherer, aber davon gibt es sicher viele Varianten.

Mein Artikel ist für einen raspberry, Du musst das auf die Syno portieren. Bei deinem jetzigen Stand wird das nichts - tut mir leid.

Du kannst aber gern noch mal in Ruhe von vorn und Satz für Satz (link für link)  lesen. Vielleicht kommst Du ja dann nicht wieder sofort zu dem Schluß: Länger als eine A4 Seite - zu kompliziert ;)
Wenn was unklar ist, frag einfach.

Hier war die alte Diskussion mit der Synology -> https://forum.fhem.de/index.php?topic=37090.45

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ruggy

 :(

In dem anderen Thread hat es sich so einfach angehört (system ('ssh root@xxx.xxx.xxx.xxx poweroff');)
Werde mir deinen Artikel genauer anschauen und versuchen das ich es damit hin bekomme.

Habe leider niemanden, den ich hierzu fragen kann. Diejenigen, welche ich später kennengelernt habe, haben Openhab; hatte mich aber da schon mit FHEM "angefreundet" und wollte nicht mehr umsteigen.

Evlt. schaffe ich es. Wenn nicht muss ich es leider sein lassen oder oder den umständlichen Weg über DS finder. Damit wird sich meine Frau aber wahrscheinlich nicht anfreunden können.

Trotzdem Danke

Otto123

#10
Zitatso einfach angehört (system ('ssh root@xxx.xxx.xxx.xxx poweroff')
so einfach ist es am Ende auch. Aber dazu brauchst Du den passwortlosen ssh Zugang mit public key - der genau das erlaubt.

Wieso kannst Du keinen fragen? Hier hast Du schon mal zwei ziemlich nette Leute in deinem Thread ;)

Vielleicht hast Du ein anderes Linux System zum üben. Einmal verstanden ist es leichter es am finalen Objekt um zu setzen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ruggy

Ich meine jemand der sich mal mit an meinen Computer setzen kann und mir das erklären bzw. zeigen kann. Mir fehlen halt grundlegende Programierkenntnisse.

Hier im Forum wurde mir schon öfters geholfen und es gibt hier auch noch mehr nette Leute  ;)
Ich verstehe aber auch, dass es nicht leistbar ist, jeden Schritt für Schritt zu helfen;

Ich werde mir deinen Artikel jedenfalls mal in Ruhe anschauen und ein paar Mal durchlesen. Auf die Kürze habe ich es nicht kapiert und steige irgenwann aus. Liegt aber nicht an Deinen Artikel sondern an mir.  ;)

Wernieman

Mal eine Adaption:
1. Du logst Dich auf dem FHEM-Rechner ein
2. root werden ("sudo -i", "su -" oder wie auch immer Du es machst)
3. Dort erlaubst Du (temporär!) das einloggen als FHEM user
- in der /etc/passwd das /bin/false durch /bin bash ersetzen
4. per "su - fhem" fhem werden
5. ssh-key erstellen "ssh-keygen -t rsa -b 4096"
6. ssh-key auf Synology kopieren "ssh-copy-id root@<Deine Synology>"
- Eventuell mjußt Du das "will ich" bestätigen
- Es erfolgt natürlich eine Passwortabfrage
7. probieren ob es jetzt wirkich funzt "ssh root@<Deine Synology>"
8. wieder root werden "exit"
9. Punkt 3. deaktivieren (/bin/false in /etc/passwd)

jetzt kannst Du mit fhem weitermachen ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Ergänzung:
Bei Punkt 5. Ganz wichtig - und dies war für mich als Laie damals absolut nicht klar: Zweimal die Passwortabfrage nur mit enter, also leer quittieren und damit kein Passwort erzeugen!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ruggy

Hallo Wernieman und vielen Dank für die Anleitung, hat funktioniert.  :D

Und der Tip von Otto123 habe ich auch benötigt. Das erste Mal habe ich ein Passwort vergeben und hat nicht funktioniert. Danke


Muss ich jetzt mit einen dummy und notify arbeiten um erst den Befehl fürs herunterfahren zu senden und nach einer bestimmten Zeit die Osram Steckdose auszuschalten?

Oder funktioniert das auch direkt mit device der Osram Steckdose?

Otto123

Erstmal schön das Du das hinbekommen hast.

Man kann das sicher verschieden gestalten. Ich habe generell ein WOL Device - aber genau das geht ja bei Dir nicht.

Du brauchst ja auch einen Status, also Ablauf sehe ich etwa so:
Gerät an? (Ping / PRESENCE)
shutdown Befehl
Gerät aus? (Ping / PRESENCE)
kurze Verzögerung zur Sicherheit
Steckdose aus

Vielleicht ist eine ReadingsGroup in deinem Fall die bessere "Repräsentation"?

Im Übrigen geht der Befehl zum Herunterfahren auch ohne den Perl Umweg direkt so:
"ssh root@192.168.001.002 poweroff"siehe https://fhem.de/commandref_DE.html#command

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Viele verschidene Wege "führen nach Rom". Es geht auch per at ..... also wenn nach 2 Minuten difinitif die Synology down ist, sie nach 2 Minuten per at ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Ruggy

Der Weg über Ping wäre wahrscheinlich der elegantere. Derzeit für mich einfacher ist wahrscheinlich der mit at (aber nichtmal das).

Probiere jedoch jetzt schon 1,5 Std. an dem Notify und ich schaffe es nicht, dass er die Steckdose nach einer bestimmten Zeit ausschaltet (zum Test 5 sec). Ohne die Zeitangabe funktioniert das ein und ausschalten der Steckdose über den Dummy-Schalter.

Folgendes habe ich gemacht:
- ein Dummy als Schalter angelegt
- je ein notify für on und off

Hier das list vom off-notify. Habe schon in der Commandref gelesen und auch andere Threads. Mit Semikolons hätte ich auch an den verschiedensten Stellen schon versucht.

Internals:
   CFGFN     
   DEF        MEDIA_NAS:off at +00:00:05 set HUEDevice3 off
   FUUID      5e694ca6-f33f-194f-272c-a8546453bdf730c8
   NAME       MEDIA_NAS_off
   NOTIFYDEV  MEDIA_NAS
   NR         20859
   NTFY_ORDER 50-MEDIA_NAS_off
   REGEXP     MEDIA_NAS:off
   STATE      2020-03-11 22:33:19
   TRIGGERTIME 1583962399.81211
   TYPE       notify
   Helper:
     DBLOG:
       state:
         DbLog:
           TIME       1583962388.93561
           VALUE      active
   READINGS:
     2020-03-11 22:33:08   state           active
Attributes:
   room       Abstellkammer


Hier das on:

Internals:
   CFGFN     
   DEF        MEDIA_NAS:on set HUEDevice3 on
   FUUID      5e694b7f-f33f-194f-40bb-44e6662d161cc9cb
   NAME       MEDIA_NAS_on
   NOTIFYDEV  MEDIA_NAS
   NR         20842
   NTFY_ORDER 50-MEDIA_NAS_on
   REGEXP     MEDIA_NAS:on
   STATE      2020-03-11 22:33:18
   TRIGGERTIME 1583962398.11419
   TYPE       notify
   Helper:
     DBLOG:
       state:
         DbLog:
           TIME       1583958911.73656
           VALUE      active
   READINGS:
     2020-03-11 21:35:11   state           active
Attributes:
   room       Abstellkammer


Hier das Dummy:

Internals:
   CFGFN     
   FUUID      5e694522-f33f-194f-b943-e2a82a03423ba51c
   NAME       MEDIA_NAS
   NR         20770
   STATE      off
   TYPE       dummy
   Helper:
     DBLOG:
       state:
         DbLog:
           TIME       1583962399.80603
           VALUE      off
   READINGS:
     2020-03-11 22:33:19   state           off
Attributes:
   room       Abstellkammer
   webCmd     on:off

Otto123

#18
Das hier ist MEDIA_NAS:off at +00:00:05 set HUEDevice3 off - sagen wir mal Unfug :)

define n_test notify MEDIA_NAS:off {}
define a_test at +00:00:05 {}

Sind zwei Paar Schuhe :)

mach einfach :
defmod MEDIA_NAS_off notify MEDIA_NAS:off sleep 5;;set HUEDevice3 off

Was Du machen wolltest - ich finde aber die sleep Variante übersichtlicher. Am Ende ist es das Ergebnis exakt gleich:
Achtung: das ist der Inhalt der DEF
MEDIA_NAS:off define at +00:00:05 set HUEDevice3 off
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

SCMP77

#19
Hallo,

Zitat von: Ruggy am 09 März 2020, 14:17:02Ich habe es geschafft, dass ich mit Putty und folgenden Befehl die DS herunterfahren kann

poweroff


Ich besitze einen DS216J, und bei diesem würde es so nicht klappen, er würde bei Anlegen vom Strom nicht wieder aufwachen. Das ist so, als wenn man ihn von der Weboberfläche ausschaltet.

Was beim DS216J geht, ist folgender Befehl:

/usr/syno/sbin/synopoweroff -fr

den würde Synology verwenden, wenn eine USB sagen würde, dass zu wenig Spannung da ist.

Wenn man den ausführt, bootet die Synologie neu ohne die Festplatten zu mounten. Die drehen sich zwar noch, aber man kann das Teil gefahrlos vom Netz trennen.

Es kann natürlich beim der DS115j etwas anders sein, wenn aber poweroff nicht funktioniert, nimm den obigen Befehl, das funktioniert bei mir seit vielen Jahren.

Viele Grüße
   Stefan

PS: Ich sehe gerade, dieses Manko des poweroff wird durch die Arduino-Lösung behoben. Mit dem obigen Befehl reicht allein eine Smart-Steckdose ohne Arduino.
Raspberry Pi 3 Model B mit Rasbian, SolvisMax, AVM DECT 200, Sonoff mit Tasmota geflasht

Ruggy

#20
@SCMP77
Danke für den Tip. Wie Du später gelesen hast habe ich den Arduino schon eingebaut. Aber evlt. kann es jemand anderes mal gebraucht, der vor dem gleichen Problem steht.


Ich habe es aber jetzt geschafft, dass es funktioniert so wie ich mir es vorgestellt habe. Dank Otto123 und Wernieman.

Falls es jemand anderes benötigt, so habe ich es gemacht:

Um Device für den Schalter anzulegen folgender Befehl:

define MEDIA_NAS dummy

dann in diesem Device MEDIA_NAS folgedes Attribut hinzugefügt
attr MEDIA_NAS webCmd on:off



Dann für das einschalten der Osramsteckdose (mit der eingesteckten DS) folgenden Befehl:
define MEDIA_NAS_on notify MEDIA_NAS:on set HUEDevice3 on



Für das Ausschalten habe ich folgenden Befehl von Otto123 verwendet.

defmod MEDIA_NAS_off notify MEDIA_NAS:off sleep 300;;set HUEDevice3 off

Und in diesem Device dann den Inhalt im DEF nachträglich verändert, dass dort folgendes steht und der Befehl fürs herunterfahren vorher gesendet wird. (mit einem defmod Befehl und beiden Befehlen gleichzeitig hat es irgendwie nicht geklappt):

MEDIA_NAS:off { system ('ssh root@192.168.33.93 poweroff') }; sleep 300; set HUEDevice3 off

Wahrscheinlich würde es jemand der sich damit auskennt nicht so machen (vermischen von Perl und FHEM-Befehl), aber es funktioniert zumindest  ;)


Außerdem habe ich wieder etwas hinzugelernt. Mein Problem im Allgemeinen ist, wenn ich die fertigen Befehle vor mir sehe kann ich diesen einigermaßen folgen, wie diese funktionieren. Wenn ich diese aber selber zusammenstellen muß wird es schon wieder schwierig.


Otto123

Ich denke jetzt mal bloß laut. :)
Kann man auf alle Fälle so machen.
Rudi hat letztens gesagt: auch wenn es funktioniert ist die Vermischung der einzelnen Befehlstypen (Perl, Shell, FHEM) nicht garantiert.
der system Befehl blockiert, könnte man verhindern aber dann läuft der Befehl ohne Rückmeldung
Die Befehlsfolge schaltet hart die Dose aus, auch wenn der shutdown gar nicht an kommt.
Besser wäre:
Die syno bekommt den shutdown Befehl, gibt eine Rückmeldung an FHEM, FHEM wartet und schaltet die Dose aus.

Wie gesagt: erstmal nur gedacht. Weil - Kompromisse halten bekanntlich ewig ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ruggy

Kann mir vorstellen, dass meines nicht die Ideallösung ist, bin aber (vorerst) mal froh, dass es soweit funktioniert.  8)  ::)

Ginge das in die Richtung Doif?

In der Commandref bei PRESENCE habe ich Modus: lan-ping gefunden.

Otto123

ZitatIn der Commandref bei PRESENCE habe ich Modus: lan-ping gefunden.
... das wäre meine Idee aus #15 ;)
Die Syno könnte aber auch richtig zurückmelden, per HTTP, per MQTT ...

Aber einfach den shutdown Befehl so absetzen"ssh root@192.168.33.93 poweroff"ohne {system()}, ja - die " " gehören dazu und müssen sein, ja - das blockiert nicht  ;D
Und dann warten das PRESENCE absent ist, funktioniert auch.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz