Archiv der Kategorie: Raspberry Pi

[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

[Raspberry Pi] CUL in Fhem einbinden

Endlich habe ich es geschafft die Stehlampen im Garten an den FS20 Umschalter anzuschließen. Über die Fernbedienung konnte ich die einzelnen Ausgänge bereits schalten, nun sollte es auch über Fhem möglich sein.

In der Dokumentation hatte ich gelesen das es reicht die CUL anzuschließen und den Fhem neu zu starten. Kurz nach dem Neustart kam folgende Meldung auf der Kommandozeile:

Use of uninitialized value in string ne at ./FHEM/99_CULflash.pm line 63.

Die Meldung tritt auf wenn man beim einstecken den kleinen Taster nicht eingedrückt hat. Also nochmal raus, Taster drücken, einstecken und Fhem neu starten.

Jedoch blinkte die CUL nicht und In den fhem logs kam folgende Meldungen
Can't open /dev/ttyAMA0: Keine Berechtigung

Ich änderte die Rechte auf /dev/ttAMA0 und startete Fhem neu, diesmal erhielt ich folgende Meldung:
usb create starting
Opening CUL device /dev/ttyAMA0
Setting CUL baudrate to 38400
CUL device opened
usb create end

Was mich jedoch wunderte ist, das in den Dokumentationen von /dev/ttyACM0 die Rede ist und die CUL auch nicht blinkte. In einem Forum stieß ich auf die Lösung, wenn Fhem auf dem Rasbperry Pi läuft gibt es Probleme beim einspielen der Firmware.

Also lud ich mich mir FLIP für Windows von Atmel herunter und die benötigte Firmware. Nach der Installation der Software ließ sich die Firmware ohne Probleme aufspielen und die CUL blinkte.
Nun gab es unter Linux auch das Device /dev/ttyACM0 und in der fhem.cfg fügte ich folgende Zeile hinzu:
define CUL1 CUL /dev/ttyACM0@9600 1234

Einbinden in Fhem

Ich hatte erst am nächsten Tag Zeit den FS20 Aktor in Fhem einzubinden. Als ich Fhem im Browser aufrief gab es bereits den Raum FS20, darunter befanden sich vier Schalter.
Ich klickte den ersten Schalter an und siehe da, die Lampen gingen an. Anscheinend erkennt die CUL alle FS20 Vorgänge und leitet sie an den Fhem weiter, dieser erstellt den passenden Schalter.
Nun musste ich nur noch in der fhem.cfg die angelegten Schalter nach meinen Wünschen umbenennen.

fhem fs20

Automatisch angelegte Schalter

Fhem registriert es wenn ich die Lampen per Fernbedienung schalte und ändert den Status im Webfrontend.

cul

CUL gekauft www.busware.de

[Raspberry Pi] Sendeleistung des 433Mhz Senders erhöhen

In dem Artikel hatte ich den 433 MHz Sender direkt an die 5 Volt des Rasbperry Pi’s angeschlossen. Die Reichweite würde ich auf 8 – 10 Meter schätzen, in der Entfernung habe ich eine Steckdose die sich zeitweilig nicht schalten lässt. Die maximale Reichweite des Senders erhält man, wenn der Sender mit 12 Volt betrieben wird. Laut Datenblatt ist 12 Volt die höchste Spannung die angelegt werden darf.
Ich habe den Sender mittlerweile auf eine Platine gelötet und zu Testzwecken über die Batterie(12 Volt) aus der Fernbedienung mit Spannung versorgt. Ich kann nicht sagen wie die Reichweite mit 12 Volt ist, die problematische Steckdose lässt sich jetzt jedoch ohne Probleme schalten.

Bei externer Spannungsversorgung
Wenn der Sender nicht über den Raspberry Pi mit Spannung versorgt wird, muss der Minuspol der Batterie mit dem Ground des Raspberry Pi´s verbunden werden. Wenn man die beiden Pole nicht miteinander verbindet, sendet der Sender nicht.

Damit die Fernbedienung wegfällt, könnte man die Kontakte auslösten und auf der Platine wieder ein löten. Ansonsten würde in meinem Fall sicherlich eine 9 Volt Batterie über einen Batterieclip reichen.

Spannungsversorgung mit 9 Volt

Spannungsversorgung mit 9 Volt

Spannungsversorgung mit 12 Volt

Spannungsversorgung mit 12 Volt

[fhem] Steckdosen zeitgesteuert schalten

Was wäre eine Automation ohne das Zeitgesteuerte Schalten von Aktoren?

Eine Vorraussetzung für das Zeigesteuerte Schalten ist die richtige Uhrzeit. Um zu prüfen ob die Uhrzeit stimmt, reicht ein einfaches date auf der Kommandozeile aus. Bei der Installation von wheezy auf meinem Raspberry Pi hatte ich versehentlich die Zeitzone falsch gesetzt, dies konnte ich über dpkg-reconfigure tzdata korrigieren.

Einfaches Zeitgesteuert Schalten
In meiner fhem Konfiguration wurde die LampeFlur bereits definiert und konnte über Weboberfläche geschaltet werden.
Nun sollte Sie gegen 16 Uhr ein und um 22 Uhr ausgeschaltet werden, hierfür waren nur zwei Einträge in der fhem.cfg nötig:

Lampe einschalten
define LapmpeFlurAn at 16:00 set LampeFlur on;

Lampe ausschalten
define LapmpeFlurAus at 22:00 set LampeFlur off;

Laut der fhem Dokumentation soll es auch möglich mehrere Lampen gleichzeitig zu schalten, das hatte ich jedoch nicht ausprobiert. Das Schalten mehrerer Aktoren würde wie folgt aussehen:
define LapmpeFlurAn at 16:00 set LampeFlur on;;set LampeKueche on

Schalten über Sonnenaufgang / Sonnenuntergang
Da der Sonnenuntergang an jeden Tag zu einer anderen Uhrzeit stattfindet, ist es hilfreich die Lampe über den Sonnenaufgang bzw Sonnenuntergang zu schalten.

Der Sonnenuntergang / Sonnenaufgang findet nicht nur täglich zu einer zu einer anderen Zeit statt, sondern ist auch noch Ortsabhängig. Damit nun fhem die Aktoren entsprechend schalten kann, muss folgendes in der fhem.cfg folgendes hinterlegt werden.

attr global latitude 53.31698
attr global longitude 7.48216

Die latitude und longitude Informationen können über diverse Seiten im Internet ermittelt werden.

Um letztendlich die Lampe zu schalten reicht folgender Einzeiler.

define LampeFlurAn at *{sunset(0,"17:00","22:00")} set LampeFlur on
define LampeFlurAus at *{sunrise(0,"05:00","07:30")} set LampeFlur off

In der 1. Zeile wird die LampeFlur eingeschaltet, wenn der Sonnenuntergang zwischen 17 Uhr und 20 Uhr liegt. Ausgeschaltet wird LampeFlur wenn der Sonnenaufgang zwischen 05:00 Uhr und 07:30 Uhr liegt.

[Raspbmc] VDR Aufnahmen wieder geben

Hin und wieder nehme ich etwas mit dem Linuxvideorekorder auf. Zum ansehen hatte ich mich dann immer an den Rechner gesetzt auf dem auch der VDR lief. Damit ich die Aufnahmen auf meinem alten Mediapc ansehen konnte, musste die Aufnahmen mit projectx und avidemux bearbeiten.

Nun wollte ich wissen ob der Raspberry Pi in der Lage ist die Aufnahmen wieder zu geben. Hierfür habe ich auf dem VDR eine Samba-Freigabe eingerichtet, die ich in den Raspbmc einbinden konnte. Leider konnte der Raspbmc die ts Dateien zwar wiedergegeben, jedoch nur den Ton. Nach einer kurzen Suche fand ich heraus, das für das abspielen der ts Dateien eine mpeg2 Lizenz benötigt wird.

Die Lizenz kann über die Seite http://www.raspberrypi.com/mpeg-2-license-key/ gekauft werden, hierfür ist jedoch die Seriennummer der CPU erforderlich.

Um die zu ermitteln meldet sich man per ssh auf dem Raspberry Pi an.
ssh pi@"ip adresse"

Das Kennwort ist raspberry

Quelle: http://www.raspbmc.com/wiki/user/using-ssh/

Mit Hilfe von cat kann die Seriennummer ausgelesen werden:
cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 795.44
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7

Hardware : BCM2708
Revision : 000f
Serial : 00000000XXXXXXXX

In diesem Fall wird die Seriennummer 00000000XXXXXXXX für den Kauf der Lizenz benötigt.

Nach dem Kauf erhält man eine Email mit dem benötigtem Lizenzkey. Angeblich kann es ca 72 Stunden dauern kann bis die Lizenz eintrifft, bei mir dauerte es ca 3 Stunden.

Um den Codec zu aktivieren wird der Lizenzkey in der Datei /boot/config.txt wie folgt hinterlegt:
decode_MPG2="Lizenzkey"

Nach einem Neustart des Raspberry Pi´s können mpeg2 Dateien abgespielt werden.