Archiv der Kategorie: osbn

[Raspberry Pi] Temperatur Sensor auslesen

Nachdem die Funksteckdosen in FHEM eingerichtet sind, wollte ich nun die Temperatur in den einzelnen Zimmern messen.
Hierfür hatte ich mir gleich mehrere OneWire Sensoren des Typs Dallas 18B20 zugelegt.

Das Problem bei der Variante über den OneWire Sensor ist die Verbindung zwischen dem Raspberry Pi und den Sensoren herzustellen. Ich hatte Glück das wir vor einigen Jahren gebaut haben und ich nun auf die Netzwerkverkabelung zurückgreifen konnte.
Auf einer Lochrasterplatine habe ich RJ 45 Buchsen gelötet und die Sensoren an RJ 45 Stecker.

OneWire Sensor

RJ45

Die Pins des OneWire Sensors werden wie folgt belegt:

Pin 1: Masse
Pin 2: GPIO4
Pin 3: 3.3V

Pin Belegung
Zwischen Pin 2 und 3 habe ich noch einen 4,7 KOhm Widerstand gesetzt.

Damit der Raspberry Pi in der Lage ist die Sensoren auszulesen, müssen zwei Module geladen werden.


sudo modprobe w1-gpio
sudo modprobe w1-therm

Um sich das händische laden der Module nach jedem Neustart zu sparen, können die Module in der /etc/modules eingetragen werden.

Unter /sys/bus/w1/devices/ findet man dann den Sensor, in meinem Fall ist es 28-000004b84990.
Ein cat 28-000004b84990/w1_slave liefert folgendes:
7f 01 4b 46 7f ff 01 10 33 : crc=33 YES
7f 01 4b 46 7f ff 01 10 33 t=23937

t=23937 gibt die Temperatur an, hier 23,937 Grad.

[vmware] lvm vergrößern

Das schöne an virtuellen Maschinen ist, die Hardware lässt sich anpassen bzw erweitern.

Um eine Festplatte zu erweitern ist es am einfachsten, das diese zuvor über lvm als Volume eingerichtet wurde.

Als erstes musste ich wissen auf welcher Festplatte mein Volume lag, dieses konnte ich über pvdisplay in Erfahrung bringen. In meinem Fall war es die /dev/sdc und über die Verwaltungstools von VMware vergrößerte ich die Festplatte um 30GB.

Damit das Betriebssystem mitbekommt das die Festplatte sich vergrößert hat, habe ich die Partitionstabelle mit Hilfe von blockdev --rereadpt /dev/sdc neu eingelesen. Dann musste pvresize /dev/sdc ausgeführt werden, um das Physical Volume zu vergrößern.

Nachdem ich mit lvdisplay das Logical Volume ermittelt hatte, vergrößerte ich es mit dem Befehl lvextend -L+30G /dev/VolGroup02/LogVol_daten . Zum Schluss noch resizefs /dev/VolGroup02/LogVol_daten um das Filesystem zu vergrößern.

Das Gute an dieser Variante ist, das Betriebssystem muss nicht neugestartet werden.

[Raspberry Pi] Ein und Ausschalter

Von Haus aus bietet der Raspberry Pi keine Möglichkeit für ein einfaches aus beziehungsweise einschalten. Zum einschalten muss der Raspberry Pi nur mit Spannung versorgt werden, zum ausschalten muss er sauber heruntergefahren werden. Möchte man den Pi nun wieder einschalten, muss er von der Spannungsversorgung getrennt und wieder verbunden werden.

Für das wieder einschalten gibt es eine einfache Möglichkeit und zwar müssen hierfür nur die beiden Kontakte neben dem HDMI Anschluss (gekennzeichnet mit P6) verbunden werden. Ich habe die beiden Kontakte mit einem einfachen Taster verbunden und kann nun den Raspberry Pi wieder einschalten. Wenn das Betriebssystem auf dem Raspberry noch nicht herunterfahren ist, würde ich vermeiden den Taster zu betätigen. Durch den Reset wird das Betriebssystem vorher nicht sauber heruntergefahren und könnte im schlimmsten Fall im Anschluss nicht mehr starten.

Reset beim Raspberry Pi

Raspberry Pi und der Ausschalter
Für das Ausschalten benötigt man einen der GPIO Ports, ich nutze im weiteren Verlauf den GPIO 22.
Um den Port als Eingang zu definieren, müssen die folgenden zwei Befehle auf der Kommandozeile ausgeführt werden:
echo 22 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio22/direction

Über cat /sys/class/gpio/gpio22/value wird der Zustand abgefragt.

Damit der Port den entsprechenden Zustand erreicht, lege ich ihn auf Masse (Zustand 0) oder 3,3 Volt (Zustand 1).
Ich habe den Port 22 mit einen Pullup Widerstand (10 kOhm) an Pin 1 (3,3V) angeschlossen und über einen Kippschalter kann ich den Gpio 22 Port auf Masse legen. Per Cronjob wird der Wert in der Datei /sys/class/gpio/gpio22/value abgefragt und bei einer 0 wird das System heruntergefahren.

shutdown script
#!/bin/bash
i=`cat /sys/class/gpio/gpio22/value`
if [ $i -eq 0 ]
then
/sbin/shutdown -h now
fi

Reset der GPIO Ports nach neustart
Leider gehen nach einem Neustart die Einstellungen für die GPIO Ports verloren. Mit Hilfe eines Scripts, welches in der /etc/rc.local hinterlegt wird, werden die Einstellungen beim starten neu gesetzt.

set_gpio22.sh:
#!/bin/bash
echo 22 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio22/direction

Festplatte aus einem Mac unter Linux mounten

Beim mounten einer Festplatte die mit hfsplus formatiert war, erhielt ich die folgende Meldung in der /var/log/syslog.

hfs: unable to find HFS+ superblock

Damit Ubuntu die Festplatte überhaupt erkannte, musste ich zuvor die hfsprogs(apt-get install hfsprogs) installieren.

Mit Hilfe von fdisk /dev/sde fand ich heraus, das die Festplatte anscheinend nur eine Partition hat. Diese versuchte ich mit mount -t hfsplus /dev/sde1 /media/temp zu mounten, jedoch ohne Erfolg. Im Internet fand ich die verschiedensten Optionen die ich mit angeben konnte, die Lösung war aber die zweite Partition zu mounten.

Das Problem ist, das fdisk in diesem Fall nur die mbr Tabelle anzeigen kann und es sich bei der sde1 um die EFI Partition gehandelt hat. Die sde2 Partition läßt sich dann mit mount -t hfsplus /dev/sde2 /media/temp als read only mounten. Der Grund für das read only ist, das unter Mac das journaling aktiviert wurde. Um die Festplatte auch schreibbar zu mounten, muss vorher das journaling deaktiviert werden. Dieses geht jedoch leider nur unter einem Mac mit dem Befehl:

diskutil disableJournal Volume Name

SSH Keys verwalten

Ich finde ein ssh-keymanager ist sinnvoll wenn man mehrere Benutzer und Linuxserver verwalten muss. Angenommen man hat um die 40 Entwickler die auf bis zu 100 verschiedene Server zugreifen müssen. Für jeden Entwickler ein Benutzerkonto auf dem jeweiligen System zu erstellen ist sehr zeitaufwendig und bedarf auch einer guten Dokumentation. Meine Idee ist es ein Benutzerkonto zu erstellen zum Beispiel ewl , unter diesem Benutzer können sich alle Entwickler anmelden. Vorraussetzung ist das der Publickey des Entwickler in der authorized_keys hinterlegt wurde. Das hinterlegen des Keys würde in diesem Fall der ssh-keymanager übernehmen.

Installation
Die Inbetriebnahme des ssh-keymanagers ist recht einfach. Den Ordner entpacken und in ein entsprechendes Verzeichniss ablegen, auf den der Apache zugreifen kann. Eine Mysqldatenbank erstellen, den mitgelieferten Dump einspielen und die Zugangsdaten in der inc/connect.inc.php hinterlegen. Nun die Webseite aufrufen und mit admin / itbasic anmelden.

Damit die Keys verteilt werden können muss der Apache Benutzer in der Lage sein eine shell auszuführen, gegebenenfalls muss dafür die /etc/passwd angepasst werden. Zusätzlich muss unter dem Apache Benutzer ein Public key erstellt werden, dieser wird in der Mysqldatenbank(Tabelle systemkey) hinterlegt.

Host und Linuxbenutzer anlegen
Ein neuer Host wird über „Host => hinzufügen“ hinzugefügt, wichtig ist hierbei das die korrekte IP Adresse angegeben wird. Nachdem der Host angelegt wurde, kann über „Host => anzeigen“ ein neuer Linuxbenutzer für den Host angelegt werden. Der Linuxbenutzer muss nun jedoch noch manuell auf dem eigentlichen System angelegt werden und der zuvor erstellte public key des Apache muss in der authorized_keys abgelegt werden.
Bevor der erste Abgleich der Keys stattfinden kann, muss man sich über den Apache Benutzer an dem neuen Host anmelden. Durch die Anmeldung wird der Neue Host zu den known_hosts hinzugefügt.

Benutzer / Benutzergruppe
Unter Benutzer gibt es die Möglichkeit einen neuen Benutzer anzulegen bzw sich alle Benutzer anzuzeigen zu lassen.
Für die einfachere Verwaltung können Benutzer zu Gruppen zusammengefasst werden, diese Benutzergruppe wird dann dem entsprechendem Linuxbenutzer zugewiesen.

Abgleich
Unter Abgeich => Systemkey wir lediglich für den einfachen Zugriff der Public Key des Apache Benutzers dargestellt.
Bei dem Punkt anzeigen werden alles Linuxbenutzer aufgelistet die aktualisiert werden müssen. Ändert zum Beispiel ein Benutzer seinen Public Key, wird der entsprechende Linuxbenutzer hier aufgeführt. Ein klick auf den Pfeil stößt den Abgleich der Keys an.

Das Layout könnte man sicherlich noch überarbeiten, aber ich denke fürs erste sollte es reichen. Wenn jemand einen Fehler findet oder einen Änderungswunsch hat, einfach eine email schreiben.

 

Serverübersicht

 

Benutzerübersicht

 

Download

Kleine Anmerkung
Da meine grafischen Fähigkeiten leider nur reichen um Bilder mit Hilfe von Gimp zurechtzuschneiden, benutze ich folgende Buttons: http://fortawesome.github.io/Font-Awesome/