Synology DS115j herunterfahren und Steckdose ausschalten

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

Vorheriges Thema - Nächstes Thema

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