MacMini Ruhezustand via FHEM

Begonnen von fhainz, 17 Dezember 2013, 20:53:58

Vorheriges Thema - Nächstes Thema

fhainz

Hallo!

Kann ich irgendwie via fhem Kommandozeilen befehle an den mac senden? So etwas wie hier. http://www.maclife.de/tipps-tricks/mac-os-x/os-x-den-mac-ueber-das-terminal-den-ruhezustand-versetzen
Würde gerne meinen MacMini zeitgesteuert in den Ruhezustand setzten.

Grüße

rudolfkoenig

Aber wieso ueber FHEM?
Der mac hat doch einen ganz  normalen crontab...

Herr 3x

Mit ssh user@hostname command kannst du Befehle "ferngesteuert" vom Raspi aus auf dem Mac per Script starten.
Den ssh-Server musst du auf dem Mac in den Einstellungen unter Freigaben -> Entfernte Anmeldung aktivieren.
Allerdings habe ich noch keine Ahnung, wie du das von fhem aus steuerst.

Allerdings: Wenn es nur um einen zeitgesteuerten Ruhezustand geht: Den Ruhezustand kann der Mac auch selbst auslösen Systemeinstellungen -> Energie sparen -> Zeitplan.

HTH

Herr 3x

fhainz

#3
Ich wollte es mit meinem Anwesend/Abwesend taster verknüpfen.

Edit:
Danke. Das ist schonmal super das es vom raspi aus klappt. Jetzt ist nur noch die Frage wie ich das mit fhem verbinde.

rudolfkoenig

Wenn FHEM auf einem "richtigen" Rechner laeuft, dann erzeugt man hier ein ssh-key (~fhem/.ssh/id_dsa bzw. id_dsa.pub), und man traegt id_dsa.pub auf dem macmini in /var/root/.ssh/authorized_keys ein (detaillierte Anleitung im Web suchen). Damit muesste ein "ssh root@macmini poweroff" als FHEM-Befehl ohne Passwort funktionieren.

Sonst (also FHEM@Fritzbox) faellt mir nur ein, FHEM auch auf dem mac mini zu starten, und per FHEM2FHEM was auzuloesen.



fhainz

Fhem läuft am raspi.

Ich werde das morgen mal versuchen. Dann post ich das Ergebnis hier nochmal.

Danke für die Infos!

Grüße

UliM

Hi,
habe auf dem macmini ein php-script hinterlegt, das unterschiedl. Befehle ausführen kann (war urspr. mal für iTunes gedacht). Das kann auch die Befehle sleep und shutdown. Wird aus fhem auf meiner FB via GetFileFromURL aufgerufen.

Auf die Idee mit fhem2fhem bin ich nicht gekommen - da perl auf dem mac ja schon vorhanden ist, geht ein fhem-Install schnell und einfach - das hätte ich mal früher wissen sollen...

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

fhainz

Hallo!

Ich hab das jetzt mal getestet. Funktioniert schon ganz gut. Schlafen legen klappt, aufwecken nicht.

define testSSH dummy
attr testSSH group SSH
attr testSSH room 8. Einstellungen
attr testSSH webCmd on:off

define n_testSSH notify testSSH{ if(VALUE($NAME) eq "on"){ ssh fhainz@10.0.0.40 pmset sleepnow }else{ ssh fhainz@10.0.0.40 pmset wake }}


MacMini eingerichtet wir Herr 3x gesagt hat und schon klappt's soweit.

Wenn ich aber vom Laptop den Befehl ssh fhainz@10.0.0.40 pmset wake sende wacht der Mini auf. Hab auch schon mit ssh fhainz@10.0.0.40 cd ./ versucht. Leider hat das auch nicht geklappt.

Jemand eine Idee?

Grüße

justme1968

wenn der rechner schläft kannst du ihn nicht per ssh aufwecken. du kannst aber wake on lan aktivieren und ihn mit dem wol modul aufwecken.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Koppl

Hallo zusammen,

hier wurde zwar schon lange nichts mehr geschrieben, aber vielleicht kann mir ja jemand helfen.

Der MacMini ist eingerichtet und der Zugriff über ssh ohne Passwort funktioniert auch.

Das aufwecken des Macs geht per WOL auch sehr gut.

Jetzt würde ich den Rechner gerne in den Ruhezustand schicken, aber folgender Befehl funktioniert nicht:

define n_ssh_MacMini notify ssh_MacMini { if(VALUE($NAME) eq "on"){ ssh ThomasMacMini@192.168.200.34 pmset sleepnow }}

Kann mir jemand sagen was ich an dem Befehl falsch mache.

Vielen Dank.

justme1968

$name muss ziemlich sicher klein geschrieben werden und der ssh aufruf muss z.b. in ein system("...") eingeschlossen werden.

ansonsten schau doch mal was im log steht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Koppl

#11
Zitat von: justme1968 am 29 Oktober 2014, 13:40:14
$name muss ziemlich sicher klein geschrieben werden und der ssh aufruf muss z.b. in ein system("...") eingeschlossen werden.

ansonsten schau doch mal was im log steht.

folgendes steht in der FileLog:

2014.10.29 14:11:15 5: Cmd: >set ssh_MacMini off<
2014.10.29 14:11:15 4: dummy set ssh_MacMini off
2014.10.29 14:11:15 5: Triggering ssh_MacMini (1 changes)
2014.10.29 14:11:15 5: Notify loop for ssh_MacMini off
2014.10.29 14:11:15 4: eventTypes: dummy ssh_MacMini off -> off
2014.10.29 14:11:15 4: eventTypes: dummy ssh_MacMini state: off -> state: off
2014.10.29 14:11:15 5: Triggering n_ssh_MacMini
2014.10.29 14:11:15 4: n_ssh_MacMini exec { if(VALUE($name) eq "on") system("ssh ThomasMacMini@192.168.200.34 pmset sleepnow")}
2014.10.29 14:11:15 5: Cmd: >{ if(VALUE($name) eq "on") system("ssh ThomasMacMini@192.168.200.34 pmset sleepnow")}<
2014.10.29 14:11:16 3: n_ssh_MacMini return value: Global symbol "$name" requires explicit package name at (eval 11531) line 1.
syntax error at (eval 11531) line 1, near ") system"



justme1968

die geschweiften klammern um das system(...) darfst du natürlich nicht weg lassen.

define n_ssh_MacMini notify ssh_MacMini { if(VALUE("meinMacMini") eq "on"){ system("ssh ThomasMacMini@192.168.200.34 pmset sleepnow"); }}

statt $name schreib den namen direkt hin.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Koppl

Jetzt steht folgendes in der FileLog

2014.10.29 14:24:26 5: Cmd: >set ssh_MacMini off<
2014.10.29 14:24:26 4: dummy set ssh_MacMini off
2014.10.29 14:24:26 5: Triggering ssh_MacMini (1 changes)
2014.10.29 14:24:26 5: Notify loop for ssh_MacMini off
2014.10.29 14:24:26 4: eventTypes: dummy ssh_MacMini off -> off
2014.10.29 14:24:26 4: eventTypes: dummy ssh_MacMini state: off -> state: off
2014.10.29 14:24:26 5: Triggering n_ssh_MacMini
2014.10.29 14:24:26 4: n_ssh_MacMini exec { if(VALUE("meinMacMini") eq "on"){ system("ssh ThomasMacMinissh_MacMini192.168.200.34 pmset sleepnow");; }}
2014.10.29 14:24:26 5: Cmd: >{ if(VALUE("meinMacMini") eq "on"){ system("ssh ThomasMacMinissh_MacMini192.168.200.34 pmset sleepnow"); }}<
2014.10.29 14:24:26 3: n_ssh_MacMini return value: Undefined subroutine &main::VALUE called at (eval 12043) line 1.


Es ist nur komisch das aus dem @ ein ssh_MacMni wird im Log.

2014.10.29 14:24:26 5: Cmd: >{ if(VALUE("meinMacMini") eq "on"){ system("ssh ThomasMacMinissh_MacMini192.168.200.34 pmset sleepnow"); }}<

justme1968

#14
mein fehler. ich war bei in gedanken grad ganz woanders.

in einem notify muss es $NAME heissen. wenn $NAME oder $EVENT nicht verwendet wird dann wird @ automatisch durch den namen ersetzt. und du müsstest @@ verwenden.

so sollte es jetzt wirklich gehen:
define n_ssh_MacMini notify ssh_MacMini { if(Value($NAME) eq "on"){ system("ssh ThomasMacMini@192.168.200.34 pmset sleepnow"); }}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968