[Raspberry Pi ] Funksteckdosen mit dem Raspberry Pi verwalten

Funksteckdosen mit dem Raspberry Pi verwalten

17.01.2015 | 10:10 Uhr | Thomas Springer

Artikel empfehlen:

 

 

 

 

 

 >Übersicht

<![if !supportLists]>·         <![endif]>Preisvergleich

<![if !supportLists]>·         <![endif]>ebay Angebote

<![if !supportLists]>·         <![endif]>Alle Artikel

Funksteckdosen: Schalten & walten

VergrößernFunksteckdosen: Schalten & walten

© Thomas Springer

Ein Funkmodul für wenige Euro macht den Raspberry Pi zur heimischen Steuerzentrale, die über das Haus verteilte Funksteckdosen schaltet – bei Bedarf auch über das Netzwerk und mit dem Smartphone.

https://bilder.pcwelt.de/1411620DXEvXZ_03100x07680.jpg

Funksteckdosen sind im Dreier- oder Sechserpack samt Fernbedienung in fast jedem Baumarkt erhältlich, oft schon für wenige Euro. Für sich alleine sind die Steckdosen begrenzt interessant: Die mitgelieferte Fernbedienung ist nie zur Hand, wenn man sie braucht, und ist so klein, dass sie gerne zwischen den Sofaritzen verschwindet. Mit einem günstigen Sender und ein wenig Software machen Sie den Raspberry zur Schaltzentrale, die Steckdosen per Browser, Makro oder Handy von überall her steuert. Was Sie dafür benötigen, ist ein Funkmodul mit 433 MHz. Ein Set mit Sender und Empfänger kostet bei Ebay oder Amazon zwischen einem Euro (aus China) und rund vier Euro (aus Deutschland) und ist über eine Suche nach „RF Link Arduino“ schnell zu finden. Die Sets werden in erster Linie für den Arduino-Mikro-Controller verkauft, funktionieren aber mit einer entsprechenden Software-Bibliothek auch am Raspberry Pi.

Drei Kabel sollt ihr sein: Für die Ansteuerung des Senders zur Übertragung der Befehle an die Funksteckdosen genügt eine einzige Datenleitung des Raspberry Pi plus Spannungsversorgung.

VergrößernDrei Kabel sollt ihr sein: Für die Ansteuerung des Senders zur Übertragung der Befehle an die Funksteckdosen genügt eine einzige Datenleitung des Raspberry Pi plus Spannungsversorgung.

© Thomas Springer

Auswahl: Nicht jede Funksteckdose ist geeignet

Funksteckdosen gibt es inzwischen nicht nur optisch, sondern auch technisch in großer Vielfalt. Fast alle Arten lassen sich auch mit dem Raspberry steuern. Am einfachsten und zuverlässigsten funktionieren Steckdosen, die sich über zehn Dipschalter einstellen lassen, die hinter einer kleinen Klappe mit kleiner Kreuzschlitzschraube verborgen sind. Steckdosen ohne Dipschalter, insbesondere die aktuell oft als Billigware verkauften selbstlernenden Dosen, lassen sich über den Raspberry oft nur nach längeren Versuchen ansteuern und erfordern je nach Hersteller Software-Anpassungen auf dem Raspberry Pi.

Ein weiterer Nachteil der Billigware ist, dass viele Modelle nach einem Stromausfall oder auch nur einem Wechsel der Steckdose ihre Codierung vergessen und dann neu eingelernt werden müssen. Wir raten deshalb zu Steckdosenmodellen, das sich mit zehn Dipschaltern programmieren lassen. Je nach Hersteller sind die Dipschalter mit 1 bis 10 oder mit 1 bis 5 und A bis D beschriftet – beide Versionen sind gleichermaßen nutzbar. Aktuell kostet ein Dreierset etwa bei Online- Versandhäusern rund zehn Euro (Beispiel:http://www.pollin.de , Artikelnummer 550666). Zunächst sollten Sie Fernbedienung und Steckdosen aufeinander abstimmen. Dazu wird an den fünf Dipschaltern der Fernbedienung und den linken fünf Dipschaltern der Steckdosen der Systemcode eingestellt, über den die Dosen erreichbar sind. Vorsicht: Die Verwendung von 00000 oder 11111 als Systemcode bietet gute Chancen, dass einer Ihrer Nachbarn denselben Code verwendet und damit unter Umständen Ihre Steckdosen schaltet. Funktioniert die Steckdose mit der Fernbedienung, kann die Einrichtung des Raspberry Pi als Schaltzentrale beginnen.

Raspberry 2 Model B

 

 

Die besten verwendungsmöglichkeiten für den Raspberry Pi

Belegung der GPIO-Pins: Diese hat sich zwischen den Raspberry-Pi-Revisionen und Versionen geringfügig geändert. Der hier vorgestellte Aufbau funktioniert aber mit allen Versionen des Raspberry Pi.

VergrößernBelegung der GPIO-Pins: Diese hat sich zwischen den Raspberry-Pi-Revisionen und Versionen geringfügig geändert. Der hier vorgestellte Aufbau funktioniert aber mit allen Versionen des Raspberry Pi.

Prototyp: Schaltung am Breadboard entwerfen

Zunächst muss der Sender mit dem Raspberry verbunden werden. Am einfachsten geht das über ein kleines Breadboard (Steckbrett) und einige Steckkabel. In den meisten Elektronik-Bastelsets sind nur beidseitig männliche Steckkabel dabei. Je nachdem, ob Sie ein Steckbrett verwenden oder den Empfänger direkt anschließen, brauchen Sie aber weiblich/männlich oder weiblich/weiblich.

Tipp : Die meisten Steckkabel lassen sich durch Abknipsen des metallenen Aderendes in ein weibliches Ende improvisieren, das sich vorsichtig auf einen Pin-Anschluss aufstecken lässt. Den Sender stecken Sie mit seinen drei oder vier Pins am besten direkt quer auf das Steckbrett. Verbinden Sie die dann VCC (rot) mit Pin 2 (5 Volt) und Pin 6 (Erdung) des Raspberry Pi. Die Datenleitung zum RF-Sender erwarten fast alle Programme zur Steckdosensteuerung an Pin 11 (GPIO 17) des Raspberry. Die Antenne wird bei einigen Sendern über einen Pin geführt, bei anderen ist ein Anschluss auf dem Board. Die passende Länge errechnet sich über die Faustformel (Lichtgeschwindigkeit/Frequenz)/4. Eine optimale Länge für 433,92 MHz wären 17,2 Zentimeter – in der Praxis tut es aber ein beliebiges Drahtstück mit einer Länge um die 17 Zentimeter, das mit dem Antennen-Pin verbunden oder mit auf der Platine eingehakt oder verlötet wird.

Wiring Pi: vom Mikro-Controller Arduino inspiriert

Um den Raspberry Pi mit einem RF-Sender zu verbinden, gibt es inzwischen eine Vielzahl von Programmen. So gut wie alle bauen auf der GPIO-Bibliothek von Gordon Henderson auf, der die Funktionalität der Arduino-Bibliothek „Wiring“ auf den Raspberry portiert hat. Die Bibliothek wird am einfachsten direkt über Git installiert (drei Zeilen):

sudo apt-get install build-essential git-core
cd ~ && git clone git://git.drogon.net/wiringPi
cd wiringPi && ./build

Damit ist die Grundlage zur Nutzung der GPIO-Ports geschaffen. Ein einfaches, aber leistungsfähiges Projekt zur Ansteuerung von Funksteckdosen ist unter dem Namen „Raspberry Remote“ veröffentlicht. Auch hier können wir die Quelltextverwaltung Git zum Herunterladen des Programms verwenden (zwei Zeilen):

cd ~ && git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote

Raspberry Remote besteht aus einem Kommandozeilenprogramm zum Schalten der Steckdosen sowie einem Server-Teil, der auf einem frei wählbaren Port im Netz zuhört und Steckdosen auf Zuruf schaltet. Das Kommandozeilenprogramm wird mit

sudo make send

kompiliert. Mit „send“ lassen sich beliebige Steckdosen aus- und anschalten. Um eine Steckdose zu schalten, rufen Sie das Programm mit folgenden Parametern auf:

sudo ./send <Systemcode> <Steckdosennummer> <Zustand>

Die Codes ergeben sich aus der Stellung der Dipschalter. Der fünfstellige Systemcode entspricht der Stellung der ersten Dipschalters an der Steckdose: 0 für aus, 1 für an. Stehen diese Schalter alle auf ein, wäre der Systemcode die 11111. Stehen nur der erste und der letzte Schalter auf 1, wäre der Systemcode 10001.

Die Steckdosennummer ergibt sich aus den rechten fünf Dipschaltern, von denen nur einer auf 1 stehen darf. Die möglichen Gerätecodes sind 1,2,3,4 und 5, je nachdem, welcher der fünf rechten Dipschalter auf „on“ steht. Es darf nur einer der Schalter auf „on“ stehen. Der dritte Parameter gibt an, ob die Funksteckdose an („1“) oder ausgeschaltet werden soll („0“). Ein Beispielaufruf zum Einschalten der Dose sieht dann so aus:

sudo ./send 10001 1 1

Damit sollte, sofern die Dipschalter entsprechend gesetzt sind, die Steckdose angehen. Der sendende Raspberry hat übrigens keine Möglichkeit zu erkennen, ob und wenn ja was wirklich passiert ist: Es gibt keinen Rückkanal, über den die Funksteckdose Vollzug oder eventuelle Fehler melden könnte.

Die maximale Zahl schaltbarer Steckdosen ist 160. Sie ergibt sich aus den möglichen Dipschalterstellungen nach der Formel: (2*2*2*2*2)*5 oder einfacher 2 hoch 5*5.

Displays am Raspberry Pi anbringen

Schalten übers Netz: automatisch per Script

Die Steckdosen über eine SSH-Konsole schalten zu können ist ein nettes Spielzeug, für eine echte Anwendung aber etwas unpraktisch – weder kann man übers Netz schalten noch kann man externe Geräte einbinden. Interessanter wird es, wenn man den in Rasberry Remote enthaltenen Server startet. Dazu müssen Sie den Quellcode etwas anpassen. Verwenden Sie den Befehl nano ~/raspberry-remote/daemon.cpp und ändern die Zeile „nPlugs=10“ zu „nPlugs=1110“.

Standardmäßig ist der Server über Port 11337 erreichbar. Wem Sie dies ändern wollen, tragen Sie eine andere Nummer hinter „Port“ im Quellcode von „daemon.h“ ein. Mit

sudo make daemon

wird der Hintergrundprozess (Daemon) dann kompiliert. Mit

sudo ./daemon >/dev/null &

starten Sie den Server als Hintergrundprozess. Bedient wird der Dämon über eine simple TCP-Netzwerkverbindung, zum Beispiel über Netcat oder ähnliche Programme. Um beispielsweise eine Steckdose anzuschalten, geben Sie auf der Kommandozeile an:

echo -en "Codierung"|nc -w 1 <ip> <port>

Als IP geben Sie die IP-Nummer ihres Raspberry Pi an und als Port den TCP-Port, auf den der Server lauscht. „Codierung“ besteht aus dem Systemcode wie bei „send“, gefolgt von „0“ und der Dosennummer. In unserem Fall wäre das etwa

echo -en "1000101"|nc -w 1 192.168.178.25 11337

wobei der Parameter „-w“ dafür sorgt, dass Netcat die Verbindung zum Dämon nach einer Sekunde selbsttätig wieder trennt. Damit ist die Funksteckdose also schon mal am Netz und kann von beliebigen Applikationen ein- und ausgeschaltet werden, sofern diese TCP-Socket-Verbindungen aufbauen können. Sinnvoll ist diese Art der Ansteuerung in erster Linie für Script-Sprachen wie Python oder Perl, die man auf diese Weise zum Steuern von Funksteckdosen über das lokale Netzwerk oder das Internet verwendet. Es besteht jedoch ein gewisses Risiko, wenn man den Port des Dämons für das gesamte Internet freigibt. Ein Missbrauch könnte unter Umständen das Raspberry-Pi-System samt dem dahinterliegenden Netzwerk für einen Angreifer offenlegen. Wenn Sie das System also in einem fremden Netz oder dem Internet über TCP-Sockets erreichbar machen, sollten Sie unbedingt den Zugriff über IP-Tables oder ein VPN auf autorisierte Kommunikationspartner beschränken.

Universelles Schalten: ein und aus per Browser

Die Socket-Verbindung des Dämons bringt die Funksteckdosen ans Netz, die Bedienung erfordert aber immer noch ein wenig Programmierung oder den Aufruf hässlicher Befehlszeilen auf der Konsole. Raspberry Remote hat auch hier Abhilfe: Im Verzeichnis „./webinterface“ finden Sie eine Weboberfläche, mit der man die Funksteckdosen in den Browser bringt. Die Weboberfläche benötigt einen Webserver wie Apache und PHP. Dies lässt sich mit dem Kommando

sudo apt-get install apache2 php5

installieren, falls noch nicht vorhanden. Bringen Sie dann das Script-Verzeichnis in das Wurzelverzeichnis des Webservers:

mv ~/raspberry-remote/webinterface/* /var/www/funk

und passen Sie dort die Konfigurationsdatei an:

nano /var/www/funk/config.php

Wenn der Dämon auf dem selben Raspberry Pi läuft wie der Webserver, setzen Sie folgende Variable:

$target=$_SERVER['SERVER_ADDR']

Schaltung im Browser: Die Weboberfläche zum Ein- und Ausschalten von Funksteckdosen ist auf dem Raspi schnell installiert.

VergrößernSchaltung im Browser: Die Weboberfläche zum Ein- und Ausschalten von Funksteckdosen ist auf dem Raspi schnell installiert.

Laufen Webserver und Dämon auf verschiedenen Rechnern, geben Sie hier die IP-Nummer des Dämons an, den der Webserver ansprechen soll. Die Variable „$port“ setzen Sie auf die Portnummer, unter welcher der Dämon erreichbar ist. Unter „$config“ können Sie in einem Array beliebig viele Schaltaktoren definieren. Sie geben wie gehabt als Parameter den Systemcode, die Dosennummer und eine frei wählbare Textbeschreibung für diese Dose an. Nun können Sie über den Browser unter<ip>/funk das Kommando-Interface zum Schalten aufrufen.

Mit der Weboberfläche ergibt sich die Option, auf anderen, tastaturlosen Geräten wie etwa Smartphones oder Tablets zu schalten. Sie können dafür einfach ein Lesezeichen auf dem Desktop des Gerätes hinterlegen. Für kleinere Displays können Größe und Layout der Schalterquadrate im Quellcode leicht verändert werden, so dass bei Bedarf auch mehr Geräte auf das Handydisplay passen. Auch über das Webinterface kann nicht nur per Fingerzeig oder Mausklick, sondern auch ganz direkt geschaltet werden. Geben Sie dafür einfach beim Aufruf die Parameter in der URL an. Ein Beispiel:

 http://<ip>/funk/index.php?group=10001&switch=01&action=1

Die Parameter sind dieselben wie oben, „action=1“ heißt, dass die Steckdose eingeschaltet wird. Dafür gibt es dafür viele nützliche Anwendungen: So können Sie etwa den Strom an Peripheriegeräten wie Scanner, Drucker oder externer Festplatte einschalten, indem Sie die URL in einer Verknüpfung ablegen.

Tipp: Eine alternative Methode mit einer Android-App und Sprachsteuerung ist hierbeschrieben.

Pilight Zusätzliche Funktionen für Funksteckdosen

Neben dem hier vorgestellten Raspberry Remote gibt es eine Reihe von Paketen, die teils eine Vielzahl verschiedener Steckdosentypen schalten, Unterstützung für Dimmer bieten oder eine komplexere Weboberfläche bieten. Wer einen Steckertyp ohne Dipschalter verwenden will, hat mit „ Pilight “ eine komplexe und vielseitige Umgebung, die breite Hardware-Unterstützung und in Verbindung mit einem Empfängermodul sogar einen Lernmodus bietet.

Dieser Artikel stammt aus der LinuxWelt 5/2014

Die neue Linux-Welt 5/2014 finden Sie jetzt am Kiosk und im PC-WELT Shop.

Zehn Top-Systeme für den USB-Stick – der Linux-Multiboot-Stick für jeden Einsatzzweck, die besten Power-Tricks für Mint 17 – das und mehr finden Sie in der neuen LinuxWelt 5/2014 . 

 

Raspberry Pi: Root-Rechte an Benutzer vergeben

Raspberry Pi: Root-Rechte an Benutzer vergeben

Der Benutzer „root“ ist ein Standard-Benutzer, der sich in jedem Linux-System befindet. Dieser Benutzername ist nicht nur bekannt, sondern auch noch mit uneingeschränkten Rechten ausgestattet. Wenn man einen Raspberry Pi normal nutzt, dann wird man das nicht als „root“ tun, sondern als Benutzer „pi“. Der hat aber nur eingeschränkte Rechte. Das heißt, er darf nicht alles tun.

Gelegentlich kommt es aber vor, dass man Änderungen am Raspberry Pi vornehmen muss, und dann braucht man die Rechte von „root“ bzw. Root-Rechte. Bei der Linux-Distribution Raspbian ist es so, dass der Standard-Benutzer „pi“ auf der Kommandozeile jederzeit Root-Rechte mit Hilfe von „sudo“ oder „su“ erhalten kann. Und das ohne Kenntnis des Root-Passworts. Je nach Sicherheitsbedürfnis möchte man diese Möglichkeit einschränken.

Hinweis: Der Root-Zugang ist ein Arbeitsmittel. Ohne Root-Rechte kann man auf keinem System Änderungen vornehmen. Allerdings stellt ein direkter Root-Zugang immer auch ein Sicherheitsrisiko dar, insbesondere dann, wenn der Zugriff nicht eingeschränkt wird.

 

Aufgaben

  1. Wie funktionieren die Root-Rechte in der Standard-Konfiguration?
  2. Schränken Sie die Root-Rechte für den Benutzer „pi“ ein.
  3. Aktivieren Sie den Root-Account durch Festlegen eines Passworts.
  4. Deaktivieren Sie den Root-Account.

Hinweis: Änderung von Berechtigungen

Wenn man Berechtigungen ändert, dann testet man die in der Regel gleich. Nur so kann man sicherstellen, das es funktioniert, wie es gewünscht ist. Es kommt allerdings vor, dass beim Testen die Berechtigungen nicht wie eigentlich gewünscht funktionieren, obwohl die Änderung richtig durchgeführt wurde.
In solchen Fällen sollte man daran denken, dass Änderungen an Berechtigungen und Konfigurationen erst von aktiven Instanzen übernommen werden müssen. Je nach Instanz muss dazu die Instanz neu gestartet werden. Im Falle von Benutzerberechtigungen (Gruppen, usw.) muss sich der Benutzer erst abmelden und neu anmelden. Erst dann werden zum Beispiel Gruppenzuweisungen übernommen. Oder bei einer Änderung einer Server-Konfiguration muss der Dienst neu gestartet werden. Erst dann übernimmt der Dienst die geänderte Konfiguration. Es gibt sogar Konfigurationsänderungen, bei denen ein kompletter Neustart des Systems erforderlich ist.
Das bedeutet, bei der Änderung von Berechtigungen und Konfigurationen sollte man sich klar machen, wo man die Änderung vorgenommen hat (laufender Prozess oder Datei) und dann überlegen, welche Instanz davon betroffen ist (Benutzer, Dienst oder System) und ob diese Instanz neu gestartet werden muss, um die Änderung zu übernehmen.

Lösung: Root-Rechte in der Standard-Konfiguration

In der Standard-Konfiguration von Raspbian (Images ab Ende 2014) ist für den Benutzer „root“ kein Passwort gesetzt. Dafür darf der Standard-Benutzer „pi“ mittels „sudo“ mit Root-Rechten arbeiten. Und zwar ohne Einschränkungen.
„sudo“ wird im Allgemeinen als „super user do“ bezeichnet. Allerdings steht „sudo“ für „substitute user do“. Mit „sudo“ kann man also mit den Rechten jedes beliebigen Benutzers Kommandos ausführen und nicht nur „root“. Vorausgesetzt man hat Root-Rechte.

sudo {KOMMANDO}

Lösung: Zu „root“ wechseln

Allerdsings kann es ziemlich nervig sein immer „sudo“ vor jeder Aktion zu schreiben. Deshalb gibt es Wege, wie man temporär oder dauerhaft zu „root“ werden kann, um systemweite Änderungen vorzunehmen.

sudo -s
sudo su
sudo su -

Nach der Eingabe des Passworts wird die normale Shell zur Root-Shell.

Das Kommando „su“ steht für „substitute user“. Im Allgemeinen sagt man auch „super user“ dazu. Mit „super user“ ist „root“ gemeint, der unbeschränkte Rechte auf einem System hat. Allerdings kann man mit „su“ nicht nur zu „root“, sondern zu jedem Benutzer werden.
Der Bindestrich „-“ nach „su“ bedeutet, das die komplette Umgebung (Aliase, Pfade u.s.w.) des Users zur Verfügung stehen und dabei auch in sein Home-Verzeichnis gewechselt wird. Lässt man das „-“ weg, arbeitet man in der selben Umgebung weiter, aus welcher man gewechselt hat. In dem Fall werden nur die Berechtigungen übernommen.

Bei „sudo su -„, was die Kurzform von „sudo su – root“ ist, wechselt man ins Home-Verzeichnis von „root“.

Mit „exit“ kann man den übernommenen Benutzer verlassen und zum vorherig angemeldeten Benutzer zurückkehren. Eine eventuell aufgebaute SSH-Verbindung wird dabei aber nicht beendet.

Lösung: „sudo“ installieren

In der Regel ist „sudo“ auf Mehrbenutzer-Distributionen installiert. Es kann jedoch vorkommen, dass es nicht der Fall ist. Dann kann man es nachträglich installieren.

apt-get update
apt-get install sudo

Lösung: Root-Rechte einschränken (Benutzer-Passwort abfragen)

Normalerweise ist es so, dass der Benutzer „pi“ nur beim Login nach seinem Passwort gefragt wird. Danach wird er nicht mehr nach seinem Passwort gefragt. Wenn der Benutzer dann seinen Arbeitsplatz verlässt, dann kann jeder ohne Beschränkung an diesem System arbeiten. Auch mit Root-Rechten mittels „sudo“. Die Idee ist, die Berechtigungen so weit einzuschränken, dass der Benutzer „pi“ ab und zu nach seinem Passwort gefragt wird, wenn er „sudo“ verwendet.
Dazu muss man sicherstellen, dass der Benutzer „pi“ der Benutzergruppe „sudo“ zugeordnet ist.

sudo gpasswd -a pi sudo

Grundsätzlich kann man dadurch auch jeden anderen Benutzer zu einem Systemadministrator machen.
Diese Änderung wird aber erst nach der Ab- und Wiederanmeldung des Benutzers wirksam, sofern der Benutzer „pi“ nicht schon vorher in der Benutzergruppe „sudo“ drin war.

id pi

Anschließend ändern wir die sudo-Benutzersteuerung (Sudoers) mit „visudo“. Damit wird eine Datei editiert, die man nie direkt editieren sollte.

sudo visudo

Verantwortlich für die Passwort-Abfrage bei der Nutzung von „sudo“ ist die folgende Zeile. Sie sollte in der Konfigurationsdatei enthalten sein.

%sudo   ALL=(ALL:ALL) ALL

In der Konfigurationsdatei ändern wir die folgende Zeile:

pi ALL=(ALL) NOPASSWD: ALL

in

#pi ALL=(ALL) NOPASSWD: ALL

Damit kommentieren wir die Zeile, die ursprünglich dafür da war, dass der Benutzer „pi“ ohne Passwort-Eingabe „sudo“ benutzen durfte.
Danach die Datei speichern und schließen: Strg + O, Return, Strg + X.
„visudo“ verifiziert vor dem Überschreiben der Original-Datei die Syntax. Falls man etwas falsch gemacht hat wird so verhindert, dass man sich auf diese Weise aussperrt.

Die Änderung gilt sofort. Jetzt muss „pi“ beim ersten Kommandozeilenzusatz „sudo“ sein eigenes Passwort eingeben, um Root-Rechte zu erlangen. Für ein paar Minuten darf „pi“ dann ohne Passwort-Eingabe „sudo“ weiter benutzen.

Lösung: Root-Account aktivieren

Im Allgemeinen fährt man bei Raspbian gut damit, den Root-Account deaktiviert zu lassen und das System ausschließlich als Benutzer „pi“ mit Hilfe von „sudo“ oder „su“ zu administrieren. Es gibt allerdings Gründe, für den Benutzer „root“ ein Passwort anzulegen und damit den Root-Account zu aktivieren. Beispielsweise dann, wenn nicht-vertrauenswürdige Benutzer Zugang zum Raspberry Pi haben. Die könnten unbemerkt den Root-Account aktivieren und weiteren Unfug treiben.
Deshalb gilt, wenn der Raspberry Pi als Multi-User-Umgebung benutzt wird, sollte der Root-Account aktiviert werden.

Das Aktivieren des Root-Accounts erfolgt dadurch, dass wir dem Benutzer „root“ ein Passwort geben.

sudo su
passwd

Hinweis: Wenn man den Root-Account aktiviert, dann wird dadurch auch der Root-Zugang per SSH aktiviert. Das ist natürlich abhängig von der SSH-Server-Konfiguration. Aus Sicherheitsgründen macht es Sinn, den SSH-Server so zu konfigurieren, dass ein Login per „root“ NICHT möglich ist.

Lösung: Root-Rechte für Benutzer nur mit Root-Passwort

Wir möchten, dass ein Benutzer wie gewohnt mit dem Kommandozusatz „sudo“ Root-Rechte erlangen kann. Bei Verwendung von „sudo“ soll zusätzlich das Root-Passwort abgefragt werden und somit eine doppelte Sicherheit hergestellt werden.
Ein Benutzer soll „sudo“ also nur dann verwenden können, wenn er das Root-Passwort kennt. Dazu müssen wir sicherstellen, dass der Root-Account aktiviert ist, also dass „root“ ein Passwort hat.

Als Benutzer „pi“ kann man sich mit „su“ zum Benutzer „root“ machen.

sudo su

Wenn an dieser Stelle NICHT nach dem Root-Passwort gefragt wird, dann ist auch keines eingerichtet. Das sollte man an der Stelle nachholen.

passwd

Nach dem man das Passwort und die Bestätigung eingegeben hat, verlässt man „root“.

exit

Anschließend versucht man es noch einmal.

sudo su

Jetzt lässt uns „su“ erst dann zu „root“ werden, wenn das Root-Passwort richtig eingegeben wurde. Anschließend kann man als „root“ alle Kommandos ohne „sudo“ eingeben.

Als „root“ fügen wir „pi“ zuerst der Benutzergruppe „sudo“ hinzu, sofern der Benutzer „pi“ nicht bereits zugeordnet ist.

gpasswd -a pi sudo

Anschließend fügen wir einen Parameter in der sudo-Benutzersteuerung (Sudoers) hinzu.

visudo

Hier fügt man folgende Zeile ein:

Defaults        rootpw

Diese Einstellung sorgt dafür, dass bei Nutzung von „sudo“ nicht das Benutzer-Passwort, sondern das Root-Passwort abgefragt wird.
Nach der Änderung die Datei speichern und schließen: Strg + O, Return, Strg + X.

Anschließend verlässt man den Benutzer „root“.

exit

Hinweis: Die zusätzliche Abfrage des Root-Passworts ist natürlich nur sinnvoll, wenn dieses Passwort vom eigentlichen Benutzer-Passwort abweicht. Sind beide identisch, würde ein aktivierter Root-Account überhaupt keinen Sinn machen und wäre auch nicht sicher.

Lösung: Root-Account deaktiveren

Folgendermaßen bringt man den Root-Account wieder in den „deaktivierten“ Zustand.

Zuerst muss man aber „Defaults rootpw“ per „visudo“ entfernen. Wenn das noch drin steht, wenn man das Root-Passwort löscht, dann kann man als normaler Nutzer kein „sudo“ mehr nutzen. Und Anmelden als „root“ geht unter Umständen auch nicht mehr.
Erst wenn man sichergestellt hat, dass „sudo“ nicht mehr nach dem Root-Passwort fragt, dann darf man das Root-Passwort löschen.

sudo passwd -d root

Hinweis: Unterschied zwischen „sudo“ oder „su“?

Mit Hilfe von „sudo“ kann man Kommandos mit den Rechten eines jeden Benutzers ausführen. In der Regel benutzt man „sudo“, um Kommandos mit den Rechten von „root“ auszuführen.

Mit Hilfe von „su“ wechselt man zu einem beliebigen Benutzer, um anschließend mit dessen Rechte zu arbeiten. In der Regel wechselt man mit „sudo su“ zu „root“, um Kommandos mit dessen Rechte auszuführen.

Der Unterschied hängt davon ab, ob man einmalig mit „sudo“ ein Kommando mit den Rechten eines anderen Nutzers ausführen möchte, oder ob man mit „su“ zu einem anderen Nutzer wechselt und alle darauf folgenden Kommandos mit dessen Rechten ausführt. Selbstverständlich kann man auch mit „sudo“ alle Kommandos mit den Rechten eines anderen Nutzers ausführen. Das wechseln des Benutzers mit „su“ ist aber häufig bequemer, weil man dann auf „sudo“ verzichten kann.

Erweiterungen

Weitere verwandte Themen:

[Raspberry Pi] Hausautomatisierung mit Raspberry Pi – Folge 4

Hausautomatisierung mit Raspberry Pi – Folge 4

08.10.2014 | 08:30 Uhr | Daniel Böber

http://bilder.pcwelt.de/3897729_75x75.jpg

Daniel Böber

Daniel Böber ist Geschäftsführer von Smarthome Agentur. Mehr

Autorenprofil schließen

Hausautomatisierung mit Raspberry Pi

VergrößernHausautomatisierung mit Raspberry Pi

© Daniel Böber

Haus- und Heimautomatisierung wird immer populärer – aber es gibt viele Standards und noch mehr Hersteller. Wenn man sich für ein Gesamtsystem entscheidet, ist man meist daran gebunden. Alternativ baut man das Ganze selber, so wie Daniel Böber.

 

Daniel Böber studiert Medieninformatik, sein Leben dreht sich um Technik, seit er denken kann. Vor allem interessieren ihn Trends und Projekte, die den Alltag erleichtern. Sie noch besser zu machen, ist Herausforderung für ihn. Auf http://siio.de stellt er seine Projekte vor.

In Folge 1 ging es um das Kennenlernen des Minicomputers Raspberry Pi und die grundlegende Inbetriebnahme.

In Folge 2 haben wir erklärt, wie wir das Ganze mit der passenden Hardware bestücken, die wir dann mit der intuitiven Software Pilight bedienen.

In Folge 3 haben wir die Heimautomatisierungs-Software Pimatic vorgestellt und die Zentrale dazu gebracht, einige Aufgaben selbstständig zu erledigen.

In dieser Folge geht es um die Installation eines digitalen Temperatursensors, der nebenbei die Luftfeuchtigkeit misst. Er ist sehr günstig und die Inbetriebnahme ist ein Kinderspiel. In der Praxis können Sie damit Heizungssteuerungen umsetzen oder Räume zur Schimmelprävention überwachen. Am Ende dieser Folge werden wir den Temperaturverlauf in übersichtlichen Diagrammen auswerten können.

Sie sollten sich die Folgen 1 bis 3 durchlesen, um die Programme Pilight und Pimatic zu verstehen. Wenn Sie das schon gemacht haben, sollten Sie jetzt auch ein Grundgefühl für den Umgang mit der Konsole haben. Ich stelle hier ein Image (ca. 1,5 GB) bereit, das den Stand am Ende von Folge 3 abbildet. Eine schöne Anleitung für die Image-Installation gibt es hier in Jan Karres Blog (Schritt 1 bis 3)

Das brauchen Sie für Folge 4:

<![if !supportLists]>·         <![endif]>Temperatursensor DHT22  (8 Euro)

<![if !supportLists]>·         <![endif]>Ein Widerstand 4,7 kOhm bis 10 kOhm (auch im Elektronikfachhandel) (10 Cent)

<![if !supportLists]>·         <![endif]>Schaltdraht  (3 Euro)

<![if !supportLists]>·         <![endif]>Lötkolben

<![if !supportLists]>·         <![endif]>Raspberry Pi mit installierter Software

Wenn Sie jetzt merken, dass Ihnen das Basteln viel Spaß macht, können Sie auch über ein Steckbrett mit Kabeln  nachdenken. Damit kann man sehr gut experimentieren, ohne jedesmal alles zu verlöten.

Anbringen des Temperatursensors

Der Sensor hat drei Anschlüsse: Plus, Masse und die Datenleitung. Man spricht auch von “One Wire”, denn es wird ja nur ein einziger Pin für die Kommunikation genutzt. Wie man es von Netzwerken kennt, hat jeder Sensor eine ID, wird vom Raspberry Pi angesprochen und gibt dann die Werte zurück.

Wer etwas Fantasie besitzt, merkt jetzt: Über eine Leitung können auch mehrere Sensoren hintereinander geschaltet und ausgelesen werden. Darauf möchte ich hier aber erst einmal nicht weiter eingehen.

Verkabelung des Temperatursensors

VergrößernVerkabelung des Temperatursensors

© Daniel Böber

Der Widerstand ist wichtig, um die Datenleitung bei Nichtbenutzung in einen festen Zustand zu versetzen. Es wäre sonst nicht klar, ob sie aktiv ist oder nicht. Ohne den Widerstand würden schon kleinste elektromagnetische Schwingungen reichen, um die Datenleitung zu beeinflussen.

Konfiguration der Software

Der Sensor wird in der Konfigurationsdatei von Pilight definiert. Von dort aus wird er automatisch an Pimatic übergeben, kann also dann in beiden Weboberflächen verwendet werden.

Ich liste hier gleich noch die Einstellungen für eine weitere Komponente auf, nämlich einen zweiten virtuellen Temperatursensor, der mit Daten eines Wetterdienstes gefüttert wird.

Als erstes loggen wir uns via SSH ins Raspberry Pi ein.

sudo service pilight stop

Pilight beenden. WICHTIG!

cd /etc/pilight/

Pilight Verzeichnis aufrufen.

sudo nano config.json

Konfiguration im Editor öffnen. Wir fügen folgende beiden “Devices” hinzu:

Konfiguration Codezeilen

VergrößernKonfiguration Codezeilen

© Daniel Böber

Achten Sie hier vor allem auf die “,” die nach den “}” kommen. Nur der letzte Block in der Konfiguration schließt NICHT mit Komma am Ende. “gpio :4″ ist der Pin, an dem der Sensor angeschlossen ist, hier im Beispiel wie in der Abbildung oben. Wenn alles fertig ist, speichern mit Strg+X -> Y(es) -> Enter.  

sudo service pilight start

Pilight wieder starten. Sollte das nicht klappen (es kommt die Meldung “[FAIL] Starting : pilight failed!”, können Sie nach Fehlern suchen. Das geht am einfachsten, indem Sie sich erst einmal die Log-Datei anschauen:

tail -f /var/log/pilight.log

Wenn es Fehler bei der Formatierung gibt, kommt etwa so eine Meldung im log-file:

[ Sep 22 16:36:29:88074] pilight-daemon: ERROR: config is not in a valid json format

Das war’s. Der Temperatursensor und die “Wetterstation” sind jetzt eingebunden. Sie haben damit eine genaue Temperaturmessung für den Raum und eine recht zuverlässige für die Außentemperatur. Beide Werte können wir jetzt in diversen Regeln kombinieren.

Temperaturdaten aufzeichnen

Um die Temperatur aufzuzeichnen, muss nicht viel gemacht werden. Pimatic hat bereits einen Data-Logger installiert. Sie sehen den Temperaturverlauf in der Weboberfläche und können einfach das Diagramm anklicken. Die Achsen können frei eingestellt werden, und Sie können so auch über mehrere Tage beobachten.

Die Dateiaufzeichnung im Web

VergrößernDie Dateiaufzeichnung im Web

© Daniel Böber

Der Temperatursensor in der Praxis

Zum Schluss noch ein kleines Praxisbeispiel. Für eine Heizungssteuerung fehlen uns noch die Heizregler, darum etwas anderes. Wir fügen Wetterdaten aus dem Internet für die Außentemperatur ein und lassen uns warnen, wenn es sinnvoll ist, das Fenster zu schließen. Die Regel sieht folgendermaßen aus:

Pilight Regel: Fenster offen

VergrößernPilight Regel: Fenster offen

© Daniel Böber

Hier wird, wenn die Außentemperatur 30 Minuten lang 2 °C höher als die Innentemperatur ist, eine Meldung ans Smartphone geschickt. Der “then” Teil ist hier beliebig. Es kann auch eine Mail verschickt oder ein Alarm ausgelöst werden.

Wie Sie die Infos bekommen, erfahren Sie in der nächsten und damit auch letzten Folge, in der es um die Einbindung des Smartphones geht. Ich zeige, wie Sie sich Push-Mitteilungen auf das Handy schicken können. Ihr Smart Home informiert damit über wichtige Ereignisse, etwa zu hohe Luftfeuchtigkeit, eine offene Tür oder auch die Anwesenheit von Personen. Folge 5 erscheint demnächst. 

Hinweis für alle Bastler:  Wenn auch Sie ein kreatives Projekt entwickelt haben, schreiben Sie uns. Wir würden Ihre Konstruktionen, nützlich oder einfach nur schräg, gern im Hacks-Bereich auf www.pcwelt.de vorstellen. Schreiben Sie an Birgit Götz – bgoetz@pcwelt.de.