Blog Obsolet

Startup, Shutdown und Reboot eines Raspberry Pi über die HomeMatic CCU

Raspi und CCU

Letzte Aktualisierung am 1. Juli 2023

Dieser Beitrag ist zwischenzeitlich obsolet, da die beschriebenen Softwareanteile veraltet sind. Er wird nicht mehr aktualisiert. Möglicherweise funktioniert das beschriebene Verfahren aber nach wie vor. Die Kommentare wurden geschlossen.

Zu verschiedenen Zwecken kann es nützlich sein, einen Raspberry Pi über die HomeMatic CCU hochzufahren, herunterzufahren oder neu zu starten. Dies ist z.B. dann sinnvoll, wenn sich der Raspberry Pi an einem unzugänglichen Ort befindet bzw. diese Aktionen von irgendeinem HomeMatic-Ereignis getriggert werden sollen.

Hier eine Anleitung…

1. Den Raspberry Pi hochfahren

Den Raspberry Pi über ein CCU-Programm hochzufahren ist eine sehr einfach umzusetzende Aufgabe, denn er bootet automatisch, wenn er an die Spannungsversorgung angeschlossen wird. Also verbindet man das Steckernetzteil des Raspberry Pi mit einem geeigneten HomeMatic Schaltaktor und fährt ihn mit dem folgenden Programm hoch…

Raspi und CCU

Die Abfrage der SysVar „CCU im Reboot“ verhindert, dass Programme beim Start der CCU ausgeführt werden. Diese Funktion ist im einem anderen Beitrag erklärt. Wer sie nicht nutzt, lässt die Bedingung einfach weg.

2. Den Raspberry Pi herunterfahren und neu starten

Dem Raspberry Pi würde es wohl nicht schaden, wenn mal ihm einfach mit einem Schaltaktor die Spannungsversorgung entzieht. Es kann dabei jedoch vorkommen, dass die Speicherkarte zerschossen wird, wenn gerade darauf zugegriffen wird und man dann das ganze System neu aufsetzen darf. Daher bietet es sich an, den Raspberry Pi zunächst herunterzufahren, bevor ihm der Strom abgeschaltet wird.

Da sich ein Reboot des Raspberry Pi sehr ähnlich bewerkstelligen lässt, setzen wir diese beiden Funktionalitäten parallel um.


Die folgende Anleitung geht davon aus, dass auf der CCU der CUxD installiert ist, da dessen CURL genutzt wird und im CUxD ein “System”-Gerät mit der Funktion “Exec” angelegt wurde…

Zwischenablage01


Außerdem wird davon ausgegangen, dass auf dem zu steuernden Raspberry Pi bereits Raspian als Betriebssystem installiert ist. Die Eingaben lassen sich direkt an der Konsole des Raspberry Pi aber natürlich auch über einen SSH-Zugriff erledigen, z.B. mittels Putty.

Sofern nicht schon vorhanden, wird als erstes der Apache Webserver installiert, zuvor sollte das System aber mit…

sudo apt-get update
sudo apt-get upgrade

…aktualisiert werden.

Der Apache Webserver benötigt Nutzergruppen, die mit den folgenden Befehlen eingerichtet werden. Es ist möglich, dass sie bereits vorhanden sind, dann erscheinen Fehlermeldungen, die getrost ignoriert werden können..

sudo groupadd www-data
sudo usermod -a -G www-data www-data

Anschließend sollte die Paketliste erneut mit…

sudo apt-get update

…aktualisiert und der Raspberry Pi mit…

sudo reboot

…neu gestartet werden.

Danach erfolgt die Installation des Apache Webservers. Hierzu holen wir uns mit der Eingabe von…

sudo bash

…zunächst die Adminrechte und starten die Installation mit…

sudo apt-get install apache2 apache2-doc apache2-utils

Wenn die Installation durchgelaufen ist, müsste der Webserver bereits laufen und nach Eingabe von…

http://IP-Adresse_des_Rasperry_Pi

…im Browser folgendes erscheinen…

Raspi und CCU

Nun wird PHP5 installiert. Hierzu holen wir uns wieder die Adminrechte (falls wir sie nicht ohnehin noch besitzen)…

sudo bash

…und installieren zuerst den Script-Interpreter…

apt-get install libapache2-mod-php5 php5 php-pear php5-xcache

…und anschließend die benötigte PHP5-Bibliothek…

apt-get install php5-mysql

Wir verlassen die Admin-Berechtigung wieder mit…

exit

Nun sollte geprüft werden, ob PHP5 läuft. Wir legen dazu im Verzeichnis „/var/ www“ des Raspberry Pi mit dem NANO Editor eine Datei mit dem Namen test.php an…

sudo nano /var/www/test.php

…und geben dort folgenden Code ein…

<?php
phpinfo();
?>

Wir speichern die Datei mit…

<Strg> o und <Enter>

…und verlassen den Editor mit

<Strg> x

Bei Eingabe von…

http://IP-Adresse_des_Rasperry_Pi/test.php

…im Browser, sollte die PHP-Infoseite erscheinen…

Raspi und CCU

Damit sind alle notwendigen Pakete installiert, um die hier beschriebene Funktion durchführen zu können.


Die Schritte in dieser grünen Text-Box sind optional:

Wenn schon ein Webserver und PHP5 auf dem Raspberry Pi laufen, bietet es sich natürlich an, gleich auch noch das MySQL-Paket mit Client und Server zu installieren (hierbei nicht vergessen, vorher ggf. wieder die Adminrechte zu holen)…
[code]apt-get install mysql-server mysql-client[/code]
Während der Installation sollte ein Passwort für die MySQL-Datenbank vergeben werden, da einige Serveranwendungen ein solches voraussetzen.

Zur komfortablen Administration der Datenbanken empfiehlt es sich, anschließend phpMyAdmin zu installieren…
[code]apt-get install phpmyadmin[/code]
Im Verlauf der Installation wird der Typ des Webservers abgefragt, hier ist „apache2“ anzukreuzen. Nach der Installation von phpMyAdmin lässt es sich zur Administration der Datenbanken wie folgt aufrufen…
[code]http://IP-Adresse_des_Rasperry_Pi/phpmyadmin[/code]
Der Benutzername lautet „root“ und als Passwort ist das zuvor vergebenen MySQL-Passwort einzusetzen.

Nun aber zurück zum eigentlichen Inhalt dieses Artikels.

Analog zu der Vorgehensweise mit der Datei „test.php“ erstellen wir mit NANO eine Datei zum Herunterfahren des Raspberry Pi…

sudo nano /var/www/shutdown.php

…und geben dort folgenden Code ein…

<?PHP
exec ("/sbin/shutdown -h now");
?>

Wir speichern die Datei mit…

<Strg> o und <Enter>

…und verlassen den Editor mit

<Strg> x

Gleichermaßen für den Reboot…

sudo nano /var/www/reboot.php

…und geben dort folgenden Code ein…

<?PHP
exec ("/sbin/shutdown -r now");
?>

Wir speichern wieder mit…

<Strg> o und <Enter>

…und verlassen den Editor mit

<Strg> x

Jetzt sollten sich die beiden Dateien im Verzeichnis „/var/www/“ des Raspberry Pi befinden…

Raspi und CCU

Damit der Aufruf funktioniert, darf die Datei „/sbin/shutdown“ nicht mit den Rechten des Benutzers gestartet werden, der sie aufruft sondern muss mit den Rechten des Benutzers aufgerufen werden, der als Eigentümer eingetragen ist.

Dies realisieren wir mit dem „set user id“ bit (suid bit), das wir wie folgt setzen…

sudo chmod u+s /sbin/shutdown

Das war es auch schon.

Nun müsste der Raspberry Pi mit der Browsereingabe…

http://IP-Adresse_des_Rasperry_Pi/shutdown.php

…herunterfahren und mit…

http://IP-Adresse_des_Rasperry_Pi/reboot.php

…neu starten.

Wenn das soweit funktioniert, fehlt nur noch die Implementierung in der CCU.

Dies machen wir mit einem keinen Skript, das den Aufruf der jeweiligen php-Datei über den CURL des CUxD realisiert.

Für den Reboot kann das z.B. so aussehen…

Raspi und CCU
string command="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k 'http://IP-Adresse_des_Rasperry_Pi/reboot.php'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(command);

Nach dem Schutdown, kann man dem Rasperry Pi nach einiger Zeit die Spannungsversorgung abschalten…

Raspi und CCU
string command="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k 'http://IP-Adresse_des_Rasperry_Pi/shutdown.php'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(command);

Starten kann man ihn dann wieder mit dem Programm von ganz oben.

Wer möchte, kann die Skripte vor Erstellung der Programme mit dem erweiterten Skript Parser testen…

Raspi und CCU
HomeMatic-Forum

Zum korrespondierenden Beitrag im…

Bitte beachten…

SMART WOHNEN in Stern’s Haus ist ein rein privates, nicht kommerzielles Projekt. Meine Hinweise, Anleitungen, Schaltungen und Software werden so angeboten, „wie sie sind“, Support kann ich nur im Rahmen meiner begrenzten Freizeit leisten, hierfür bitte ich um Verständnis.
Die Verwendung meiner Hinweise, Anleitungen, Schaltungen und Software erfolgt auf eigenes Risiko. Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung! Für die Einhaltung der einschlägigen technischen Vorschriften ist jeder Anwender selbst verantwortlich!
Creative Commons Lizenzvertrag
Copyright © Jens-Peter Stern | SMART WOHNEN in Stern’s Haus | sternshaus.de
  1. DerDortmunder

    Hallo!

    Ersteinmal vielen Dank für diese DA(Linux)U-taugliche Schritt für Schritt Anleitung.

    Auch ich suche nach einer Möglichkeit meinen Raspi etwas eleganter abzuschalten als einfach nur den Saft abzudrehen…

    Leider hänge ich bei der test.php! Rufe ich diese im Browser auf bekomme ich den berühmten 404-Not Found Fehler.
    Ich habe alle Packete wie beschrieben installiert, die Datei ist abgelegt in /var/www, heißt test.php… Trotzdem wird sie nicht gefunden. Die Skripte shutdown und reboot funktionieren dementsprechend leider auch nicht.

    Any Ideas?

    Vielen Dank schonmal aus Dortmund

    • Hallo,

      der Apache läuft, richtig?

      Dann hat wohl entweder die PHP5 Installation nicht funktioniert oder es stimmt vielleicht was mit den Rechten nicht.

      Ohne PHP können die Skripte jedenfalls nicht laufen.

      Ich würde PHP nochmal neu installieren und falls das immer noch nichts bringt, das System nochmal komplett neu aufsetzen.

      Stimmen die Software Versionen? Ich hatte das Tutorial mit Wheezy erstellt. Aber eigentlich dürfte es daran nicht liegen.

  2. DerDortmunder

    so, habe mich nochmal damit auseinandergesetzt: Der Fehler ist folgender:
    Die test.php muss in /var/www/html gespeichert werden. In deiner Anleitung steht nur /var/www!

    Geht doch!

  3. Leerzeichen

    Hallo,

    Ich habe einen Pi3 mit OpenElec (aktuelle version) und Hyperion. Ich bin leider kein Linux Spezi also verzeiht bitte die Frage. Lässt sich deine Anleitung auch für mein Szenario umsetzen? Aktuell läuft mein Pi ununterbrochen und ich würde ihn bei nicht gebrauch gerne ordentlich herunterfahren.

    Danke vorab und viele grüsse

    • Hallo,
      ich selbst habe leider keine Erfahrung mit der von dir verwendeten Konfiguration aber vielleicht liest das hier ja jemand, der das in dieser Art einsetzt.
      Liebe Grüße Jens

  4. Leider kann ich in www/ ´html nichts speichern.
    Und der PHP aufruf geht auch nicht.
    Hat jemand noch ein Lösung parat, wie ich vorgehn kann?
    Danke

    • Hallo Jörg,
      wenn PHP läuft aber keine php-Dateien aufgerufen (und – wie du schreibst – schon gar nicht gespeichert) werden können, hat das möglicherweise etwas mit den Rechten zu tun. Versuche mal, dort die Ursache zu finden und fange im Zweifel nochmal ganz von vorne an, das ist oftmals eine gute Alternative zu einer aufwändigen Ursachenanalyse.
      Liebe Grüße Jens

      • die frage ist, wo sollen die php dateién nun gespeichert werden?
        in HTML oder in www?

        • bei mir liegen sie – wie oben beschrieben und im Screenshot zu sehen – im Verzeichneis /var/www/

          • Die Antwort lautet wohl:
            Apache 2.4 : /var/www/html/
            Apache 2.2 : /var/www/

  5. Sebastian

    Hi !

    Super Anleitung !

    Leider klappt unter Jessie der folgende Code nicht mehrm weil Jessie nur noch neuestes PHP unterstützt.

    apt-get install libapache2-mod-php5 php5 php-pear php5-xcache

    Gibt es Erfahrungen, ob es aucg mit php7 klappt ?

    Betsen Gruß,
    Sebastian

    • Hallo Sebastian,
      danke für den Hinweis. Mit Jessie habe ich das noch nicht probiert (die Anleitung ist ja schon etwas älter). Du könntest mal probieren, ein anderes Apache zu nehmen -> Google: „apache auf raspberry pi installieren jessie“ oder es gleich mal so versuchen, wie hier für Jessie und Strech beschrieben.
      Liebe Grüße Jens

Kommentare sind geschlossen.

WordPress Cookie Plugin von Real Cookie Banner