Archiv der Kategorie: Linux

DS18B20 mit Openhab am Raspberry Pi: Von Bash zu Python

1
0

Werbung:

Stand der Dinge:

Nachdem ich mittlerweile alles ziemlich gut im Griff hatte, gab es immer wieder Punkte, die mich gestört haben. Zum Beispiel hatte ich die Onewire (1-Wire)-Sensoren vom Typ DS18B20 immer über ein Shellscript aufgerufen. Der im Netz zu findende Aufruf ist im Prinzip immer ähnlich und es gibt nur feine Nuancen die sich ändern. Das „klassische“ Beispiel ist folgende onewire.sh:

#Temperatur des Sensors auslesen
INPUT=`cat /sys/bus/w1/devices/$1/w1_slave | tail -n1 | cut -d '=' -f2`
TEMP=`echo "scale=2; $INPUT / 1000" | bc`

#INPUT=$(cat "/sys/bus/w1/devices/$1/w1_slave" |tail -n1 |cut -d\"=\" -f2)
#TEMP=$(echo "scale=2; $INPUT / 1000" | bc)

# Wert ausgeben
echo $TEMP

Erläuterung des klassischen Skripts:

Dabei wird per CAT-Befehl die Datei aufgerufen, in der derDS18B20- Sensor seinen Temperaturwert ablegt. Um das Skript nicht für jeden Sensor neu auflegen zu müssen wird die Sensornummer über einen Aufrufparameter an das Skript übergeben. Da jeder Sensor sein eigenes Verzeichnis hat kann der Übergabeparameter (im Skript ‚$1‘) also einfach in den Pfad eingefügt werden, die Datei mit dem Gewünschten Inhalt ist die „w1_slave“. Mit dem „tail“ Befehl wird die letzte Zeile der Datei ausgewählt und mit „cut“ Befehl alles nach dem „=“ Zeichen Ausgeschnitten und an die Variable „Input“ übergeben. Im nächsten Schritt wird die Zahl mit „scale“ und „bc“ noch etwas zurechtgestutzt, weil sie mehrstellig ist, aber der tatsächliche °C-Wert erst durch die Division mit 1000 erzeugt wird. Mit dem Echo wird das Ergebnis letztendlich ausgegeben.

Was das Problem ist:

So weit so gut. Aber dieses Shellskript hat einen kleinen Haken: Auf vielen Installationen von Openhab, besonders auf dem Raspberry Pi oft anzutreffen, liefert dieses Skript kein Ergebnis! Warum das so ist, liegt an den Dateirechten, die man nach jedem Neustart von Openhab neu setzen müsste. Das wäre zwar mit einer Zeile Code geregelt, aber was wenn man das mal Vergisst? Oder man möchte einfach das System so einfach wie möglich halten ohne zu viele kleine Anpassungen und Skripte zu schreiben, die dann bei einer Neuinstallation neu gelernt und erinnert werden müssen?

DS18B20 mit Openhab am Raspberry Pi: Von Bash zu Python weiterlesen

1
0

Fernzugriff auf den Raspberry Pi – Teil 8 (Den Raspberry Hardwareseitig absichern)

0
0

Hardwareseitige Absicherung? Damit meine ich nicht, den Raspberry Pi weg zu schließen um ihn vor physischem Zugriff zu schützen (auch wenn das eine gute Methode ist um die Sicherheit zu erhöhen, weil die Gefahr gerne unterschätzt wird).

Tatsächlich geht es mir um die Erhöhung der Ausfallsicherheit des Raspberry Pi und die Konfiguration um einen Serverbetrieb aufrecht zu erhalten.

Fernzugriff auf den Raspberry Pi – Teil 8 (Den Raspberry Hardwareseitig absichern) weiterlesen

0
0

Fernzugriff auf den Raspberry Pi – Teil 7 (Die sicherere Verbindung mit HTTPS/SFTP)

0
0

Was kann ich tun um Zugriffe auf meine Dateien zu erschweren?

Zunächst einmal kann keiner auf Daten zugreifen, wenn er nicht an die entsprechenden Passwörter kommt. Über den herkömmlichen Weg sich mit dem Raspberry Pi aus der „ferne“ (was ja auch schon ein anderer Rechner im lokalen Netzwerk sein kann) zu verbinden, werden die Daten(ströme) in der Regel unverschlüsselt übertragen. Ein potentieller Angreifer muss also eigentlich nur den Netzwerkverkehr „mithören“ um nach und nach an Dateien oder sogar Benutzername/Passwortkombinationen zu kommen.

Wie verhindere ich das?

Bisher haben wir den Zugriff auf unseren Raspberry Pi mittels SSH ermöglicht. Weiter bieten wir einen Apache 2 Webserver und einen FTP-Serverdienst an. SSH ist schon relativ sicher, aber die anderen beiden Dienste sind aus Sicherheitsbetrachtungen gesehen offene Scheunentore. Um die Sicherheit zu erhöhen kann man die Daten ab sofort nur noch SSL verschlüsselt übertragen. Je besser/größer der zum Verschlüsseln gewählte Schlüssel ist, umso eher wird sich ein potentieller Angreifer abwehren lassen.

Fernzugriff auf den Raspberry Pi – Teil 7 (Die sicherere Verbindung mit HTTPS/SFTP) weiterlesen

0
0

Fernzugriff auf den Raspberry Pi – Teil 6 (Allgemeine Sicherheitsaspekte)

0
0

Warum muss man sich über Sicherheit Gedanken machen?

Eine berechtigte Frage… der Raspberry hängt im Heimnetz, hinter einer Firewall, die Freigaben sind vielleicht nur im direkten Heimnetz überhaupt erreichbar (sofern man Sie durch Portweiterleitung nicht für die ganze Welt freigegeben hat). Die Passwörter sind irre kompliziert und sicher und vor allem DAS Argument:“Wen interessieren schon meine Spielereien auf dem Pi?“ oder „Sollen sie doch meine Daten stehlen, ist eh nicht interessant!“

Fernzugriff auf den Raspberry Pi – Teil 6 (Allgemeine Sicherheitsaspekte) weiterlesen

0
0

Fernzugriff auf den Raspberry Pi – Teil 5 (FTP – Die eigene Dokumentenverwaltung)

0
0

Der eigene FTP-Server

Einen eigenen FTP-Server zu betreiben ist gar nicht so schwer, wie man glauben könnte. Auch hier geht die Installation sehr einfach.

Aber wozu braucht man einen FTP-Server überhaupt?

Wann immer man Dateien, egal welche, kopieren, bearbeiten oder Sichern möchte und zusätzlich von verschiedenen Geräten, oder sogar vom Internet aus darauf zugreifen möchte, ist es hilfreich, beziehungsweise unumgänglich, einen Speicher rund um die Uhr, also im 24/7 betieb verfügbar zu haben. Hat man einen eigenen Webserver ist ftp eine super Lösung um seine Dateien zu aktualisieren oder zu erweitern. Weiter kann man so anderen Leuten schnell Zugriff auf Dokumente geben und man kann auf den lahmen Versand via E-Mail verzichten. (Angemerkt sei: E-Mail wurde niemals dafür entwickelt, große Dateien hin und her zu schicken. Dafür ist das Protokoll vollkommen ungeeignet).
Der FTP-Server bietet einem den Dateizugriff fast so an, wie man es von seinem lokalen Dateisystem gewohnt ist Fast, weil durch die Sicherheitsaspekte wird es nicht ganz so komfortabel, aber das ist zu verschmerzen.

Fernzugriff auf den Raspberry Pi – Teil 5 (FTP – Die eigene Dokumentenverwaltung) weiterlesen

0
0

Fernzugriff auf den Raspberry Pi – Teil 4 (HTTP – Der eigene Webserver)

0
0

Der eigene Webserver

Auch das Anbieten von Webseiten ist eine Möglichkeit den Raspberry Pi mit der Aussenwelt kommunizieren zu lassen. Komisch? Ganz und gar nicht! Auf einer eigenen Webseite kann man durchaus Systemdaten anzeigen lassen, Dateien ablegen und abrufen und sogar Abläufe steuern.

Den Webserver und „Zubehör“ auf den Pi bringen

Zunächst einmal ist eine Internetseite nichts anderes als ein Dokument, das in einem Browser dargestellt wird. Genauer: Gibt man eine Internetadresse ein wie www.xyz.de, dann verbindet sich der Browser mit einem sogannten „Nameserver“. Dieser sagt dem Browser dann, zu welcher IP Adresse die Anfrage gehen soll. Zum Beispiel antwortet er, dass xyz zu der IP-Adresse 127.0.0.1 gehört. (Okay.. das ist nur ein Beispiel, es wird nicht funktionieren). Daraufhin fragt der Browser dann die IP-Adresse 127.0.0.1 auf Port 80 an (Port 80 ist nämlich der Standardport für das HTTP Protokoll über das Webseiten ausgeliefert werden. Auf 127.0.0.1 sollte nun ein Server diese Anfrage verbeiten können. Was viele nicht wissen: Die Angabe von „www.“ vor dem xyz, sagt im Prinzip nur aus, dass der Webserver in dem Verzeichnis www nach den darzustellenden Daten suchen soll. Dieser Blog liegt zum Beispiel im „Internetordner“ flying-bordercollies.de im Unterverzeichnis „thomas“.

Fernzugriff auf den Raspberry Pi – Teil 4 (HTTP – Der eigene Webserver) weiterlesen

0
0

Fernzugriff auf den Raspberry Pi – Teil 3 (SSH – Secure Shell)

1
0

Die einfachste Variante: SSH

Die fiese Konsole – Manche lieben sie, manche hassen sie… ich finde sie nützlich für das was ich tun will

SSH auf dem Raspberry installieren/aktivieren

Mittels der Secure Shell ist es möglich auf den Raspberry Pi zuzugreifen und die wichtigsten Dinge zu erledigen. Die aktuelle Raspian (Debian für den Raspberry Pi) Distribution (im November 2014) bringt schon alles mit, was man hierfür benötigt. Noch sollte der Raspi aber direkt ansprechbar sein, also über HDMI mit einem Display und mit mindestens einem USB-Keyboard, besser noch Maus ausgestattet sein.

Fernzugriff auf den Raspberry Pi – Teil 3 (SSH – Secure Shell) weiterlesen

1
0

Fernzugriff auf den Raspberry Pi – Teil 2 (Technische Grundlagen)

0
0

Die Technische Seite / Umsetzung

Prinzipiell wird man immer über eine Art Netzwerk auf ein entferntes Gerät zugreifen, das kann ein Mobilfunknetz (über GPRS,EDGE,UMTS,LTE…), ein WLAN (Wireless local area network also „kabelloses lokales Netzwerk“ oder auch ein LAN sein. Mit hoher Wahrscheinlichkeit wird man also auch eine Verbindung über das „Internet“ benutzen (selbst wenn es ein Heimnetzwerk ist… die Unterschiede sind gar nicht so groß wie viele annehmen). Da zur Zeit Raspian eine der am meisten benutzen „Distributionen“, also eine Betriebssystemvariante – hier Debian Linux – die speziell auf den Rasperry Pi erstellt, ist, werde ich im weiteren auch davon ausgehen, dass Raspian in einer halbwegs aktuellen Version Verwendung findet.

Den im Netzwerk angeschlossenen Raspberry wiederfinden!

Um zu verstehen, wie man den Pi wiederfindet und warum es so kompliziert werden kann, muss man ein paar Dinge über Netzwerke wissen.

Fernzugriff auf den Raspberry Pi – Teil 2 (Technische Grundlagen) weiterlesen

0
0

Fernzugriff auf den Raspberry Pi – Teil 1

0
0

Grundlagen

Was ist Fernzugriff?

Der Raspberry Pi mit Tastatur, Maus und an einen Fernseher, Display oder Monitor angeschlossen ist eine feine Sache! Was aber wenn er am Dachboden hängt oder im Keller platziert ist um dort vielleicht Messaufgaben oder Serveraufgaben wahrzunehmen? Dort hat man oft keine Tastatur, Maus oder Display zur Hand.  Man muss also den Raspberry auch ohne diese Dinge – aus der Ferne – ansprechen können.
Die Idee ist also, von einem anderen Rechner im Netzwerk auf den Raspberry so zuzugreifen bzw. ihn bedienen, als wäre er direkt neben einem „wie gewohnt“ verbunden.

Womit werde ich es zu tun bekommen und mit was muss ich mich anfreunden?

Hierzu gibt es unterschiedliche Techniken, jede hat ihre Vor- und Nachteile, aber in der Regel, kann man davon ausgehen, dass es gewisse komforteinschränkungen gibt und auch nicht alles immer mit nur einem Tool/Werkzeug zu erledigen ist.

Fernzugriff auf den Raspberry Pi – Teil 1 weiterlesen

0
0

Regelmäßige Jobs unter Linux ausführen

0
0

Wer einen eigenen Server betreibt, oder betreiben will, regelmäßige Backups oder Aufgaben automatisch erledigen lassen will, sollte sich einmal mit Cronjobs auseinandersetzen.

Was sind „Cronjobs“?

Cronjobs sind kleine Aufträge die von einem (typischerweise rund um die Uhr laufenden System) regelmäßig ausgeführt werden. Daher finden diese gerne auf (Web-)servern, Fritz!Boxen oder kleinen Computern wie dem Raspberry Pi, Verwendung.

Wie funktioniert das mit den Cronjobs?

Auf dem Rechner läuft ein Dienst (genauer: ein Daemon), der Aufgaben aus einer zuvor angelegten Liste ausführt, wenn die Startbedinungen zutreffen. Diese Startbedingung wird in Form einer Zeitangabe definiert. Der Name Cronjob leitet sich vom griechischen Wort „chronos“ ab, was Zeit bedeutet. Diese Zeitangaben, und was zu diesem Zeitpunkt zu tun ist, wird in einer Datei, der Crontab (tab von griechisch „tabula“, die Tabelle), gespeichert. Diese Crontab enthält die Angaben natürlich in einer bestimmten Syntax, die zwingend eingehalten werden muss, sonst kann es mitunter zu falschen Ergebnissen führen. Besonders wichtig für Linuxneueinsteiger: der Dienst liest diese Tabelle nicht ständig neu ein, das würde bei Servern mit mehreren Benutzern schnell eine enorm große Systemausnutzung erzeugen, die gar nicht notwendig ist. Daher wird diese Tabelle im Speicher gehalten. Wenn man diese Tabelle also geändert hat muss man den Dienst neu starten. Geschickter ist es, die Tabelle mit einem speziellen Aufruf zu ändern, der dafür sorgt, dass beim Speichern und Schließen der Dienst automatisch informiert wird, dass es eine Änderung gibt. Da in der Regel Administratorrechte für eine solche Änderung notwendig sind muss man entweder Administrator sein, oder den Befehl mittels „sudo“ starten. Ein korrekter Aufruf wäre also:

sudo crontab -e

Regelmäßige Jobs unter Linux ausführen weiterlesen

0
0