Raspberry Pi als Zahlenschloss: Unterschied zwischen den Versionen
K (Kategorisiert; weitere kleine Änderungen) |
|||
Zeile 1: | Zeile 1: | ||
So ein [Raspberry Pi] (RPi) ist ein klasse Universalgerät. In Kombination mit diversen Dingen, wie hier einer Zahlentastatur, wird das ein fertiges FHEM-fähiges '''Zahlenschloss'''. Die Gesamtkosten sind sicherlich nicht höher als ein fertiges Gerät kosten würde -- wenn es denn zu kaufen wäre. | |||
So | |||
Die Gesamtkosten sind sicherlich nicht höher als ein fertiges Gerät kosten würde -- wenn es denn zu kaufen wäre. | |||
Diese Zahlentastatur kann man nicht nur als Schloss, sondern auch zum beliebigen Schalten von Aufgaben verwenden. | Diese Zahlentastatur kann man nicht nur als Schloss, sondern auch zum beliebigen Schalten von Aufgaben verwenden. | ||
== Überblick über die Vorgehensweise == | |||
= Überblick über die Vorgehensweise = | |||
* Eine RPi unter Debian Wheezy wird ohne Monitor z.B. an der Haustüre montiert. | * Eine RPi unter Debian Wheezy wird ohne Monitor z.B. an der Haustüre montiert. | ||
* Eine wetterfeste USB-Zahlen-Tastatur wird nach außen geführt. | * Eine wetterfeste USB-Zahlen-Tastatur wird nach außen geführt. | ||
Zeile 15: | Zeile 11: | ||
* FHEM schaltet mit dem als dummy-Device angelegten Zahlencode über notify beliebige Anwendungen/Logiken. | * FHEM schaltet mit dem als dummy-Device angelegten Zahlencode über notify beliebige Anwendungen/Logiken. | ||
== Sicherheit == | |||
= Sicherheit = | |||
Für professionelle Aufgaben ist das nicht der Standard, den man erwarten würde. | Für professionelle Aufgaben ist das nicht der Standard, den man erwarten würde. | ||
* eine RPi ist auch nur ein Rechner und kann abstürzen | * eine RPi ist auch nur ein Rechner und kann abstürzen | ||
* eine USB-Tastatur vor die | * eine USB-Tastatur vor die Haustür zu verlegen ist auch nicht jedermanns Sache. Eine USB-Buchse sollte auf jeden Fall nicht erreichbar sein, ein USB-Keylogger wäre sonst schnell installiert. | ||
* wenn man diese Lösung zum Schalten von sicherheitskritischen Dingen, wie der | * wenn man diese Lösung zum Schalten von sicherheitskritischen Dingen, wie der [[HM-SEC-KEY KeyMatic|Keymatic]] (Haustüre) oder der Alarmanlage verwendet, sollte man wissen, was man tut. | ||
== Benötigte Hardware == | |||
Analog zur NFC-Variante [[Raspberry Pi & NFC]] benötigt man anstatt NFC nur eine 8-Euro USB-Zahlentastatur. Für diesen Einsatzzweck eignet sich die '''Keysonic ACK-118 BK Numpad'''. Sie ist komplett in Silikon eingearbeitet und somit für den Außenbereich geeignet. Bei der Bestellung darauf achten, dass es sie in grau und in schwarz gibt. | |||
Natürlich kann man auch edle wetterfeste Edelstahl-Tastaturen (möglichst mit Eingabe-Taste) verbauen - sie kosten aber auch gleich ein Vermögen. | |||
= Betriebssystem/Shell-Skript auf RPi = | == Betriebssystem/Shell-Skript auf RPi == | ||
== Zusätzliche Software == | === Zusätzliche Software === | ||
Aufbauend auf der oben genannten NFC-Variante (ohne NFC-Teil) wird nur das Paket mingetty benötigt | Aufbauend auf der oben genannten NFC-Variante (ohne NFC-Teil) wird nur das Paket mingetty benötigt | ||
:<code>sudo apt-get install mingetty</code> | |||
=== Tastaturprellschutz (optional) === | |||
Bei der Zahleneingabe lösen Anfänger schnell ein Tastaturprellen aus. Wir setzen die Tastatur auf maximalen Delay-Wert. Da dies in der Praxis trotzdem evtl. nicht ausreicht, wird ein Tastaturprellen im Skript (s.u.) selbst abgefangen. Insofern ist diese Einstellung hier nur noch optional und für den Fall gedacht, dass man das Skript abändern möchte. | |||
== Tastaturprellschutz (optional) == | |||
Bei der Zahleneingabe lösen Anfänger schnell ein Tastaturprellen aus. Wir setzen die Tastatur auf maximalen Delay-Wert. | |||
Da dies in der Praxis trotzdem evtl. nicht ausreicht, wird ein Tastaturprellen im Skript (s.u.) selbst abgefangen. Insofern ist diese Einstellung hier nur noch optional und für den Fall gedacht, dass man das Skript abändern möchte. | |||
Eingabe in ''/etc/rc.local'' in der vorletzten Zeile (vor exit 0) | |||
exit 0</ | :<code>kbdrate -d 1000 /dev/tty1</code> | ||
:<code>exit 0</code> | |||
=== Neuer nicht privilegierter User === | |||
== Neuer nicht privilegierter User == | |||
Es werden nicht viele Rechte benötigt. Ein einfacher User, der keinen besonderen Gruppen angehört, reicht aus. | Es werden nicht viele Rechte benötigt. Ein einfacher User, der keinen besonderen Gruppen angehört, reicht aus. | ||
:<code>sudo useradd -m rpi</code> | |||
=== Automatisches Login === | |||
== Automatisches Login == | |||
Beim Standard-Loginprogramm kann man sich nicht automatisch einloggen. Daher wird in der /etc/inittab das Standard getty gegen mingetty für tty1 ausgetauscht. | Beim Standard-Loginprogramm kann man sich nicht automatisch einloggen. Daher wird in der /etc/inittab das Standard getty gegen mingetty für tty1 ausgetauscht. | ||
alt | alt | ||
:<code>1:2345:respawn:/sbin/getty --noclear 38400 tty1</code> | |||
neu | neu | ||
:<code>1:2345:respawn:/sbin/mingetty --autologin rpi --noclear tty1</code> | |||
=== Starten des Einlese-Skriptes === | |||
== Starten des Einlese-Skriptes == | |||
Am einfachsten ändern wir die /home/rpi/.bashrc | Am einfachsten ändern wir die /home/rpi/.bashrc | ||
Einfach am Ende folgende Zeilen einfügen: | Einfach am Ende folgende Zeilen einfügen: | ||
:<code># Codeschloss fuer fhem</code> | |||
:<code>/usr/local/bin/kbd2fhem.sh</code> | |||
=== Einleseskript kbd2fhem.sh === | |||
== Einleseskript kbd2fhem.sh == | |||
/usr/local/bin/kbd2fhem.sh | /usr/local/bin/kbd2fhem.sh | ||
Zeile 127: | Zeile 103: | ||
done</nowiki> | done</nowiki> | ||
Das Skript muss ausführbar sein | Das Skript muss ausführbar sein | ||
:<code>sudo chmod +x /usr/local/bin/kbd2fhem.sh</code> | |||
Nach dem nächsten Booten ist die RPi bereit Zahlencodes an FHEM zu schicken. | Nach dem nächsten Booten ist die RPi bereit Zahlencodes an FHEM zu schicken. | ||
== FHEM vorbereiten == | |||
=== Zahlencode einem Dummy zuordnen === | |||
= FHEM vorbereiten = | |||
== Zahlencode einem Dummy zuordnen == | |||
Beispiel Eintrag in der fhem.cfg | Beispiel Eintrag in der fhem.cfg | ||
Zeile 141: | Zeile 114: | ||
define kbdnot01 notify kbd12345 set lampe toggle</nowiki> | define kbdnot01 notify kbd12345 set lampe toggle</nowiki> | ||
=== FHEM-Zugriff von extern === | |||
== FHEM-Zugriff von extern == | |||
Sollte auf der RPi nicht auch FHEM laufen, so muss FHEM den Remote-Zugriff erlauben: | Sollte auf der RPi nicht auch FHEM laufen, so muss FHEM den Remote-Zugriff erlauben: | ||
Eintrag in fhem.cfg | Eintrag in fhem.cfg | ||
:<code>define telnetPort telnet 7072 '''global'''</code> | |||
== Hilfe/Support == | |||
* Fragen werden gerne im FHEM-Forum auf [http://forum.fhem.de http://forum.fhem.de] beantwortet. | |||
= Hilfe/Support = | * Für Feedback ist [http://forum.fhem.de/index.php?t=msg&th=11521&goto=67529&rid=196#msg_67529 dieser Beitrag] im Forum vorgesehen. | ||
Fragen werden gerne im FHEM-Forum auf [http://forum.fhem.de http://forum.fhem.de] beantwortet. | |||
[[Kategorie:HOWTOS]] | [[Kategorie:HOWTOS]] | ||
[[Kategorie:Raspberry Pi]] |
Version vom 23. September 2013, 08:22 Uhr
So ein [Raspberry Pi] (RPi) ist ein klasse Universalgerät. In Kombination mit diversen Dingen, wie hier einer Zahlentastatur, wird das ein fertiges FHEM-fähiges Zahlenschloss. Die Gesamtkosten sind sicherlich nicht höher als ein fertiges Gerät kosten würde -- wenn es denn zu kaufen wäre.
Diese Zahlentastatur kann man nicht nur als Schloss, sondern auch zum beliebigen Schalten von Aufgaben verwenden.
Überblick über die Vorgehensweise
- Eine RPi unter Debian Wheezy wird ohne Monitor z.B. an der Haustüre montiert.
- Eine wetterfeste USB-Zahlen-Tastatur wird nach außen geführt.
- Die RPi ist so eingestellt, dass nach dem Booten keine Desktop-Umgebung (Grafik) gestartet wird, sie daher mit der Konsole (/dev/tty1) startet.
- tty1 wird so eingestellt, dass sich automatisch ein nicht privilegierter User einloggt.
- Mit dem Einloggen startet sich ein Shell-Skript, das in einer Endlosschleife Zahlencodes einliest und das Ergebnis an FHEM schickt (FHEM muss nicht auf dem selben Rechner laufen)
- FHEM schaltet mit dem als dummy-Device angelegten Zahlencode über notify beliebige Anwendungen/Logiken.
Sicherheit
Für professionelle Aufgaben ist das nicht der Standard, den man erwarten würde.
- eine RPi ist auch nur ein Rechner und kann abstürzen
- eine USB-Tastatur vor die Haustür zu verlegen ist auch nicht jedermanns Sache. Eine USB-Buchse sollte auf jeden Fall nicht erreichbar sein, ein USB-Keylogger wäre sonst schnell installiert.
- wenn man diese Lösung zum Schalten von sicherheitskritischen Dingen, wie der Keymatic (Haustüre) oder der Alarmanlage verwendet, sollte man wissen, was man tut.
Benötigte Hardware
Analog zur NFC-Variante Raspberry Pi & NFC benötigt man anstatt NFC nur eine 8-Euro USB-Zahlentastatur. Für diesen Einsatzzweck eignet sich die Keysonic ACK-118 BK Numpad. Sie ist komplett in Silikon eingearbeitet und somit für den Außenbereich geeignet. Bei der Bestellung darauf achten, dass es sie in grau und in schwarz gibt.
Natürlich kann man auch edle wetterfeste Edelstahl-Tastaturen (möglichst mit Eingabe-Taste) verbauen - sie kosten aber auch gleich ein Vermögen.
Betriebssystem/Shell-Skript auf RPi
Zusätzliche Software
Aufbauend auf der oben genannten NFC-Variante (ohne NFC-Teil) wird nur das Paket mingetty benötigt
sudo apt-get install mingetty
Tastaturprellschutz (optional)
Bei der Zahleneingabe lösen Anfänger schnell ein Tastaturprellen aus. Wir setzen die Tastatur auf maximalen Delay-Wert. Da dies in der Praxis trotzdem evtl. nicht ausreicht, wird ein Tastaturprellen im Skript (s.u.) selbst abgefangen. Insofern ist diese Einstellung hier nur noch optional und für den Fall gedacht, dass man das Skript abändern möchte.
Eingabe in /etc/rc.local in der vorletzten Zeile (vor exit 0)
kbdrate -d 1000 /dev/tty1
exit 0
Neuer nicht privilegierter User
Es werden nicht viele Rechte benötigt. Ein einfacher User, der keinen besonderen Gruppen angehört, reicht aus.
sudo useradd -m rpi
Automatisches Login
Beim Standard-Loginprogramm kann man sich nicht automatisch einloggen. Daher wird in der /etc/inittab das Standard getty gegen mingetty für tty1 ausgetauscht.
alt
1:2345:respawn:/sbin/getty --noclear 38400 tty1
neu
1:2345:respawn:/sbin/mingetty --autologin rpi --noclear tty1
Starten des Einlese-Skriptes
Am einfachsten ändern wir die /home/rpi/.bashrc
Einfach am Ende folgende Zeilen einfügen:
# Codeschloss fuer fhem
/usr/local/bin/kbd2fhem.sh
Einleseskript kbd2fhem.sh
/usr/local/bin/kbd2fhem.sh
#!/bin/bash # provided by Martin Haas 3/2013 # Skript, um Zahleneingaben von Tastatur an FHEM zu schicken FhemIP="192.168.0.x" LogFile="/home/rpi/kbd2fhem.log" while true do # NumLock vorsorglich aktivieren /usr/bin/setleds -D +num < /dev/tty1 # Zahlencode einlesen printf "Zahlencode: " read code # Eingabe echo 'Eingabe: '$code # nur Zahlen zulassen (nicht alles wird abgefangen) code=$(echo $code | tr -d "[:alpha:][:space:][:cntrl:][:punct:]äüöß") echo 'Verwendeter Zahlencode: '$code # Um prellende Tastaturen auszuschliessen, wird keine Doppelzahl # akzeptiert. Beispiel: aus 3333553311 wird 3531 finalcode=${code:0:1} while [[ ${#code} -gt '' ]] do last=${code:0:1} code=${code/${code:0:1}} next=${code:0:1} [[ $next != $last ]] && finalcode=$finalcode${code:0:1} done # fuer FHEM vorbereiten code='kbd'$finalcode # nur bei erkanntem Zahlencode verschicken [[ $finalcode != '' ]] && echo "set $code irgendwas" | nc -w5 $FhemIP 7072 # ...aber alles loggen echo "`date`: $code detected" >>$LogFile # optisches Feedback /usr/bin/setleds -D -num < /dev/tty1 #NumLock-LED kurz ausschalten sleep 1 done
Das Skript muss ausführbar sein
sudo chmod +x /usr/local/bin/kbd2fhem.sh
Nach dem nächsten Booten ist die RPi bereit Zahlencodes an FHEM zu schicken.
FHEM vorbereiten
Zahlencode einem Dummy zuordnen
Beispiel Eintrag in der fhem.cfg
# Keyboard. Eingegebener Zahlencode: 12345 (Beispiel) define kbd12345 dummy define kbdnot01 notify kbd12345 set lampe toggle
FHEM-Zugriff von extern
Sollte auf der RPi nicht auch FHEM laufen, so muss FHEM den Remote-Zugriff erlauben: Eintrag in fhem.cfg
define telnetPort telnet 7072 global
Hilfe/Support
- Fragen werden gerne im FHEM-Forum auf http://forum.fhem.de beantwortet.
- Für Feedback ist dieser Beitrag im Forum vorgesehen.