Endgeräte mit dem Raspberry via Infrarot fernsteuern
Aus „Gründen“ suchte ich vor einiger Zeit eine örtliche Filiale eines bekannten, in orangenen Farbtönen gehaltenen Baumarktes auf. Dort wurde ich Opfer einer arglistigen Marketingkampagne. Im Eingangsbereich wurde im unmittelbaren Sichtbereich die Stirnseite eines Regals mit halbwegs günstigen RGB-LED-Lichtleisten angereichert und mit einem geringen Preis beworben. Ich nahm mir vor, dieser Versuchung zu widerstehen, jedoch bemerkte ich an der Kasse, dass sich dieser Artikel dennoch in meinen Besitzstand geschlichen hat. Nun besaß ich also 5 meter dieses technischen Wunderwerks, nebst Controller und einer der Preisklasse enstprechenden Fernbedienung.
Dieses LED-Band ist einfach angeschlossen und noch einfacher bedient. Doch „Einfach“ kann natürlich jeder der beabsichtigten Käufergruppe. Ich möchte dieses LED-Band via Linux-Konsole und darauf basierend später auch mit meinem Hausautomatisierungssystem (eingesetzt wird openHAB) integrieren. Wie das umgesetzt wurde und welche weiteren Bauteile und Schritte dazu notwendig sind, zeigt dieser Artikel. Analog zum LED-Band kann mit diesen Methoden jedes erdenkliche Gerät mit einem Raspberry Pi gesteuert werden, das seine Befehle via Infrarot erwartet.
System aktualisieren
Zunächst aktualsieren wir unseren Raspberry Pi. Für die Anwendungszwecke dieser Anleitung ist dieser Schritt besonders wichtig, da ich mit einem zweiten Exemplar massive Probleme hatte, die notwendigen Kernel-Module zu laden. Wie alle Befehle in diesem Artikel führen wir auch die folgenden als Nutzer „root“ aus. Aktualisieren wir zunächst die Firmware der Himbeere mit
rpi-update
Nachdem der Vorgang erfolgreich abgeschlossen wurde, aktualisieren wir unsere gesamte Raspbian-Distribution mittels
apt-get dist-upgrade -y
Nach längerer Wartezeit und den daraus resultierten Tassen Kaffee aktualisieren wir die Paketbibliotheken und direkt im Anschluss die verfügbaren, zu erneuernden Pakete:
apt-get update -y && apt-get upgrade -y
Nun wird es Zeit, das System neu zu starten:
shutdown -r now
Der Infrarot-Empfänger
Bevor wir das neu erworbene LED-Band mit unserem Raspberry steuern können, muss dieser natürlich zunächst die Steuerbefehle der mitgelieferten Fernbedienung erlernen. Dazu benötigen wir ein Infrarot-Empfangsmodul, beispielsweise das in diesem Artikel eingesetzte TSOP4838.
Empfänger anschließen
Die später eingesetzte Software erwartet den Infrarot-Empfänger grundsätzlich auf dem GPIO-Port 18. Daher wollen auch wir diesen nutzen und ggf. dort bereits angeschlossene Dinge auf andere, freie GPIO-Ports verschieben. Bitte zunächst unbedingt das Datenblatt des TSOP beachten, da in diesem Artikel natürlich nur der beschrieben und skizziert werden kann, der sich im persönlichen Einsatz befindet. Für meinen Empfänger nutzte ich dafür das passende Datenblatt. Wenn die PIN-Belegung in Erfahrung gebracht wurde, können wir nun den Empfänger am Raspberry Pi anschließen. Die Orientierung wird durch den kleinen „Knubbel“ auf der Oberseite des Empfängers erleichtert und für den von mir erworbenen gestalten sich die Verbindungen wie folgt (vorher System herunterfahren und von der Spannungsversorgung trennen!):
Installieren
Softwareseitig nutzen wir für unsere Zwecke das Programm „Linux Infrared Remote Control„, kurz LIRC. Dieses befindet sich glücklicherweise in den Repositories und kann daher mit
apt-get install lirc -y
installiert werden.
Im nächsten Schritt konfigurieren wir die Datei „/boot/config.txt„. Dort fügen wir folgende Zeile ein:
dtoverlay=lirc-rpi,gpio_in_pin=17,gpio_out_pin=18
Dabei ist darauf zu achten, bei der Nummerierung die GPIO-Ports anzugeben (nicht die wiringPi-Ports oder physikalischen Ports!)
Konfigurieren
LIRC benötigt nun Angaben über die Hardware, die wir einsetzen wollen. Dazu editieren wir mit einem Editor der persönlichen Vorliebe (nano!) die Konfigurationsdatei „/etc/lirc/hardware.conf“ wie folgt. In der ersten Zeile tragen wir in den Anführungszeichen die Methode der Eingabe ein:
LIRCD_ARGS="--uinput"
Die beiden Zeilen, in denen Startparameter gesetzt werden können, lassen wir auskommentiert (#).
# START_LIRCMD=false # START_IREXEC=false
Wir weisen LIRC an, beim Starten entsprechende Module zu laden:
LOAD_MODULES=true
Der „default„-Treiber spricht in unserem Fall das Gerät „/dev/lirc0“ an und nutzt dazu das Modul „lirc_rpi„:
DRIVER="default" DEVICE="/dev/lirc0" MODULES="lirc_rpi"
Die letzten beiden Konfigurationen belassen wir bei nicht ausgefüllten Anführungszeichen:
LIRCD_CONF="" LIRCMD_CONF=""
Nun wird es abermals Zeit, unseren Raspberry Pi neu zu starten:
shutdown -r now
Testen
Nach dem erfolgten Neustart des Systems prüfen wir direkt, ob die Kernel-Module ordnungsgemäß geladen wurden. Dazu betrachten wir den Kernelringpuffer mit dem Befehl
dmesg
Nun sollte auch der Dienst LIRC beim Systemstart erfolgreich gestartet worden sein. Für unseren ersten Test jedoch würde der Dienst stören und daher stoppen wir diesen via
/etc/init.d/lirc stop
Nun starten wir ein Tool, das sämtliche empfangenen Infrarot-Signale im „Rohformat“ (RAW) auf dem Bildschirm ausgibt. Richten wir also eine Infrarot-Fernbedienung auf den Empfänger und drücken verschiedene Tasten. Ist bis zu diesem Punkt alles erfolgreich verlaufen, erscheinen nun die Infrarot-Befehle auf der Konsole.
mode2 -d /dev/lirc0
Dieses Tool lässt sich mit der Tastenkombination „STRG“ und „c“ wieder beenden.
Fernbedienungsbefehle erlernen
Aus leidlicher Erfahrung kann ich berichten, dass selbst zwei vom identischen Hersteller beschaffte LED-Bänder auf unterschiedliche IR-Codes reagieren, eine mitgelieferte Fernbedienung also nicht zwangsläufig auch für andere LED-Bänder des gleichen Typs verwendet werden können. Daher ist es zumindest für die erste Fernbedienung notwendig, dessen ausgesendete Codes unserem LIRC bekannt zu machen. Der LIRC-Dienst ist aus dem vorherigen Schritt noch beendet, falls nicht, holen wir dies an dieser Stelle nach.
Wissenswert bei LIRC ist für unsere Zwecke, dass der zu erlenenden Fernbedienung sowie allen Tasten jeweils eine Bezeichnung zugewiesen wird. In unserem Beispiel nennen wir die Fernbedienung zweckmäßig „ledband_SZ„. Die Bezeichnungen der einzelnen Tasten sind seitens LIRC vorgebeben und wir suchen uns aus dem Pool der vorgegebenen Bezeichnung eine möglichst passende aus. Eine Auflistung der Möglichkeiten erreicht man mit dem Befehl:
irrecord --list-namespace
Zum aktuellen Stand (03/2015) existieren folgende Benennungsmöglichkeiten:
KEY_0 | KEY_F21 | KEY_MEDIA_REPEAT | KEY_TAPE |
KEY_102ND | KEY_F22 | KEY_MEMO | KEY_TEEN |
KEY_1 | KEY_F23 | KEY_MENU | KEY_TEXT |
KEY_2 | KEY_F24 | KEY_MESSENGER | KEY_TIME |
KEY_3 | KEY_F2 | KEY_MHP | KEY_TITLE |
KEY_4 | KEY_F | KEY_MINUS | KEY_TUNER |
KEY_5 | KEY_F3 | KEY_MODE | KEY_TV |
KEY_6 | KEY_F4 | KEY_MOVE | KEY_TV2 |
KEY_7 | KEY_F5 | KEY_MP3 | KEY_TWEN |
KEY_8 | KEY_F6 | KEY_MSDOS | KEY_U |
KEY_9 | KEY_F7 | KEY_MUHENKAN | KEY_UNDO |
KEY_A | KEY_F8 | KEY_MUTE | KEY_UNKNOWN |
KEY_AB | KEY_F9 | KEY_N | KEY_UP |
KEY_ADDRESSBOOK | KEY_FASTFORWARD | KEY_NEW | KEY_UWB |
KEY_AGAIN | KEY_FAVORITES | KEY_NEWS | KEY_V |
KEY_ALTERASE | KEY_FILE | KEY_NEXT | KEY_VCR |
KEY_ANGLE | KEY_FINANCE | KEY_NEXTSONG | KEY_VCR2 |
KEY_APOSTROPHE | KEY_FIND | KEY_NUMERIC_0 | KEY_VENDOR |
KEY_ARCHIVE | KEY_FIRST | KEY_NUMERIC_1 | KEY_VIDEO |
KEY_AUDIO | KEY_FN | KEY_NUMERIC_2 | KEY_VIDEO_NEXT |
KEY_AUX | KEY_FN_1 | KEY_NUMERIC_3 | KEY_VIDEOPHONE |
KEY_B | KEY_FN_2 | KEY_NUMERIC_4 | KEY_VIDEO_PREV |
KEY_BACK | KEY_FN_B | KEY_NUMERIC_5 | KEY_VOICEMAIL |
KEY_BACKSLASH | KEY_FN_D | KEY_NUMERIC_6 | KEY_VOLUMEDOWN |
KEY_BACKSPACE | KEY_FN_E | KEY_NUMERIC_7 | KEY_VOLUMEUP |
KEY_BASSBOOST | KEY_FN_ESC | KEY_NUMERIC_8 | KEY_W |
KEY_BATTERY | KEY_FN_F | KEY_NUMERIC_9 | KEY_WAKEUP |
KEY_BLUE | KEY_FN_F10 | KEY_NUMERIC_POUND | KEY_WIMAX |
KEY_BLUETOOTH | KEY_FN_F1 | KEY_NUMERIC_STAR | KEY_WLAN |
KEY_BOOKMARKS | KEY_FN_F11 | KEY_NUMLOCK | KEY_WORDPROCESSOR |
KEY_BREAK | KEY_FN_F12 | KEY_O | KEY_WWW |
KEY_BRIGHTNESS_CYCLE | KEY_FN_F2 | KEY_OK | KEY_X |
KEY_BRIGHTNESSDOWN | KEY_FN_F3 | KEY_OPEN | KEY_XFER |
KEY_BRIGHTNESSUP | KEY_FN_F4 | KEY_OPTION | KEY_Y |
KEY_BRIGHTNESS_ZERO | KEY_FN_F5 | KEY_P | KEY_YELLOW |
KEY_BRL_DOT10 | KEY_FN_F6 | KEY_PAGEDOWN | KEY_YEN |
KEY_BRL_DOT1 | KEY_FN_F7 | KEY_PAGEUP | KEY_Z |
KEY_BRL_DOT2 | KEY_FN_F8 | KEY_PASTE | KEY_ZENKAKUHANKAKU |
KEY_BRL_DOT3 | KEY_FN_F9 | KEY_PAUSE | KEY_ZOOM |
KEY_BRL_DOT4 | KEY_FN_S | KEY_PAUSECD | KEY_ZOOMIN |
KEY_BRL_DOT5 | KEY_FORWARD | KEY_PC | KEY_ZOOMOUT |
KEY_BRL_DOT6 | KEY_FORWARDMAIL | KEY_PHONE | KEY_ZOOMRESET |
KEY_BRL_DOT7 | KEY_FRAMEBACK | KEY_PLAY | BTN_0 |
KEY_BRL_DOT8 | KEY_FRAMEFORWARD | KEY_PLAYCD | BTN_1 |
KEY_BRL_DOT9 | KEY_FRONT | KEY_PLAYER | BTN_2 |
KEY_C | KEY_G | KEY_PLAYPAUSE | BTN_3 |
KEY_CALC | KEY_GAMES | KEY_POWER | BTN_4 |
KEY_CALENDAR | KEY_GOTO | KEY_POWER2 | BTN_5 |
KEY_CAMERA | KEY_GRAPHICSEDITOR | KEY_PRESENTATION | BTN_6 |
KEY_CANCEL | KEY_GRAVE | KEY_PREVIOUS | BTN_7 |
KEY_CAPSLOCK | KEY_GREEN | KEY_PREVIOUSSONG | BTN_8 |
KEY_CD | KEY_H | KEY_PRINT | BTN_9 |
KEY_CHANNEL | KEY_HANGEUL | KEY_PROG1 | BTN_A |
KEY_CHANNELDOWN | KEY_HANJA | KEY_PROG2 | BTN_B |
KEY_CHANNELUP | KEY_HELP | KEY_PROG3 | BTN_BACK |
KEY_CHAT | KEY_HENKAN | KEY_PROG4 | BTN_BASE |
KEY_CLEAR | KEY_HIRAGANA | KEY_PROGRAM | BTN_BASE2 |
KEY_CLOSE | KEY_HOME | KEY_PROPS | BTN_BASE3 |
KEY_CLOSECD | KEY_HOMEPAGE | KEY_PVR | BTN_BASE4 |
KEY_COFFEE | KEY_HP | KEY_Q | BTN_BASE5 |
KEY_COMMA | KEY_I | KEY_QUESTION | BTN_BASE6 |
KEY_COMPOSE | KEY_INFO | KEY_R | BTN_C |
KEY_COMPUTER | KEY_INSERT | KEY_RADIO | BTN_DEAD |
KEY_CONFIG | KEY_INS_LINE | KEY_RECORD | BTN_DIGI |
KEY_CONNECT | KEY_ISO | KEY_RED | BTN_EXTRA |
KEY_CONTEXT_MENU | KEY_J | KEY_REDO | BTN_FORWARD |
KEY_COPY | KEY_K | KEY_REFRESH | BTN_GAMEPAD |
KEY_CUT | KEY_KATAKANA | KEY_REPLY | BTN_GEAR_DOWN |
KEY_CYCLEWINDOWS | KEY_KATAKANAHIRAGANA | KEY_RESERVED | BTN_GEAR_UP |
KEY_D | KEY_KBDILLUMDOWN | KEY_RESTART | BTN_JOYSTICK |
KEY_DASHBOARD | KEY_KBDILLUMTOGGLE | KEY_REWIND | BTN_LEFT |
KEY_DATABASE | KEY_KBDILLUMUP | KEY_RFKILL | BTN_MIDDLE |
KEY_DEL_EOL | KEY_KEYBOARD | KEY_RIGHT | BTN_MISC |
KEY_DEL_EOS | KEY_KP0 | KEY_RIGHTALT | BTN_MODE |
KEY_DELETE | KEY_KP1 | KEY_RIGHTBRACE | BTN_MOUSE |
KEY_DELETEFILE | KEY_KP2 | KEY_RIGHTCTRL | BTN_PINKIE |
KEY_DEL_LINE | KEY_KP3 | KEY_RIGHTMETA | BTN_RIGHT |
KEY_DIGITS | KEY_KP4 | KEY_RIGHTSHIFT | BTN_SELECT |
KEY_DIRECTION | KEY_KP5 | KEY_RO | BTN_SIDE |
KEY_DIRECTORY | KEY_KP6 | KEY_S | BTN_START |
KEY_DISPLAY_OFF | KEY_KP7 | KEY_SAT | BTN_STYLUS |
KEY_DISPLAYTOGGLE | KEY_KP8 | KEY_SAT2 | BTN_STYLUS2 |
KEY_DOCUMENTS | KEY_KP9 | KEY_SAVE | BTN_TASK |
KEY_DOLLAR | KEY_KPASTERISK | KEY_SCALE | BTN_THUMB |
KEY_DOT | KEY_KPCOMMA | KEY_SCREEN | BTN_THUMB2 |
KEY_DOWN | KEY_KPDOT | KEY_SCROLLDOWN | BTN_THUMBL |
KEY_DVD | KEY_KPENTER | KEY_SCROLLLOCK | BTN_THUMBR |
KEY_E | KEY_KPEQUAL | KEY_SCROLLUP | BTN_TL |
KEY_EDIT | KEY_KPJPCOMMA | KEY_SEARCH | BTN_TL2 |
KEY_EDITOR | KEY_KPLEFTPAREN | KEY_SELECT | BTN_TOOL_AIRBRUSH |
KEY_EJECTCD | KEY_KPMINUS | KEY_SEMICOLON | BTN_TOOL_BRUSH |
KEY_EJECTCLOSECD | KEY_KPPLUS | KEY_SEND | BTN_TOOL_DOUBLETAP |
KEY_EMAIL | KEY_KPPLUSMINUS | KEY_SENDFILE | BTN_TOOL_FINGER |
KEY_END | KEY_KPRIGHTPAREN | KEY_SETUP | BTN_TOOL_LENS |
KEY_ENTER | KEY_KPSLASH | KEY_SHOP | BTN_TOOL_MOUSE |
KEY_EPG | KEY_L | KEY_SHUFFLE | BTN_TOOL_PEN |
KEY_EQUAL | KEY_LANGUAGE | KEY_SLASH | BTN_TOOL_PENCIL |
KEY_ESC | KEY_LAST | KEY_SLEEP | BTN_TOOL_QUADTAP |
KEY_EURO | KEY_LEFT | KEY_SLOW | BTN_TOOL_RUBBER |
KEY_EXIT | KEY_LEFTALT | KEY_SOUND | BTN_TOOL_TRIPLETAP |
KEY_F10 | KEY_LEFTBRACE | KEY_SPACE | BTN_TOP |
KEY_F11 | KEY_LEFTCTRL | KEY_SPELLCHECK | BTN_TOP2 |
KEY_F12 | KEY_LEFTMETA | KEY_SPORT | BTN_TOUCH |
KEY_F13 | KEY_LEFTSHIFT | KEY_SPREADSHEET | BTN_TR |
KEY_F14 | KEY_LINEFEED | KEY_STOP | BTN_TR2 |
KEY_F15 | KEY_LIST | KEY_STOPCD | BTN_TRIGGER |
KEY_F1 | KEY_LOGOFF | KEY_SUBTITLE | BTN_WHEEL |
KEY_F16 | KEY_M | KEY_SUSPEND | BTN_X |
KEY_F17 | KEY_MACRO | KEY_SWITCHVIDEOMODE | BTN_Y |
KEY_F18 | KEY_MAIL | KEY_SYSRQ | BTN_Z |
KEY_F19 | KEY_MAX | KEY_T | |
KEY_F20 | KEY_MEDIA | KEY_TAB |
Nun beginnen wir mit dem Lernprozess. Die in den folgenden Schritten generierte Konfigurationsdatei für unsere Fernbedienung wird zunächst im Heimatverzeichnis „/root/“ und dem Dateinamen „ledband_sz.conf“ gespeichert. Sollte beim Lernprozess etwas schief laufen, kann diese Datei mittels
rm ~/ledband_sz.conf
wieder gelöscht und der Prozess von vorne begonnen werden.
Das Anlernen wird gestartet mit:
irrecord -d /dev/lirc0 ~/ledband_sz.conf
Das Programm irrecord teilt uns nun Schritt für Schritt mit, was wir zu tun haben. Ich zeige den Ablauf in gekürzter Form:
root@rbp237:/scripts# /etc/init.d/lirc stop [ ok ] Stopping remote control daemon(s): LIRC:. root@rbp237:/scripts# irrecord -d /dev/lirc0 ~/ledband_sz.conf irrecord - application for recording IR-codes for usage with lirc Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de) This program will record the signals from your remote control and create a config file for lircd. [...] Press RETURN to continue. Now start pressing buttons on your remote control. It is very important that you press many different buttons and hold them down for approximately one second. Each button should generate at least one dot but in no case more than ten dots of output. Don't stop pressing buttons until two lines of dots (2x80) have been generated. Press RETURN now to start recording. ................................................................................ Found const length: 108272 Please keep on pressing buttons like described above. ................................................................................ Space/pulse encoded remote control found. Signal length is 67. Found possible header: 9082 4441 Found trail pulse: 633 Found repeat code: 9083 2197 Signals are space encoded. Signal length is 32 Now enter the names for the buttons. Please enter the name for the next button (press <ENTER> to finish recording) KEY_BRIGHTNESSUP Now hold down button "KEY_BRIGHTNESSUP". [...] Please enter the name for the next button (press <ENTER> to finish recording) Checking for toggle bit mask. Please press an arbitrary button repeatedly as fast as possible. Make sure you keep pressing the SAME button and that you DON'T HOLD the button down!. If you can't see any dots appear, then wait a bit between button presses. Press RETURN to continue. .............................. No toggle bit mask found. Successfully written config file. root@rbp237:/scripts#
Zwei vorgefertigte Konfigurationsdateien
Ich möchte hier die Konfigurationsdatei für zwei LED-Lichtbänder zur Verfügung stellen, die mit der oben gezeigten Methode erstellt wurden. Möglicherweise kann dann der Lernschritt entfallen und eine der Konfigurationsdateien passt zufälligerweise zu dem eigenen LED-Controller.
[ddownload id=“7617″ style=“button“ button=“blue“] FB Typ 1 |
[ddownload id=“7618″ style=“button“ button=“blue“] FB Typ 2 |
Diese können wie folgt der eigenen Konfigurationsdatei hinzugefügt werden:
cd /tmp wget https://klenzel.de/downloads/ledband_WZ.conf wget https://klenzel.de/downloads/ledband_SZ.conf cat /tmp/ledband_WZ.conf >> /etc/lirc/lircd.conf cat /tmp/ledband_SZ.conf >> /etc/lirc/lircd.conf
Konfiguration sichern
Nachdem der Lernprozess abgeschlossen wurde, befindet sich nun die entsprechende Konfigurationsdatei im Ordner, den wir beim Aufruf des Lernprogramms angaben. Um diese zu implementieren, sichern wir zunächst die vorhandene LIRC-Konfigurationsdatei mit
mv /etc/lirc/lircd.conf /etc/lirc/lircd.conf.orig
Dann passen wir zunächst die Konfigurationsdatei der Fernbedienung an…
nano ~/ledband_sz.conf
…und ändern in der mit „name“ beginnenden Zeile den Namen der Fernbedienung, in unserem Beispiel zu „ledband_SZ„.
Den Inhalt der geänderten und gespeicherten Datei fügen wir nun der lirc-Konfigurationsdatei hinzu. Mit dieser Methode werden vorhandene Einträge nicht überschrieben oder gelöscht und es wäre sogar möglich, mehrere Fernbedienungskonfigurationen hinzuzufügen. Lediglich der Name sollte sich, wie oben gezeigt, voneinander unterscheiden.
cat ~/ledband_sz.conf >> /etc/lirc/lircd.conf
Sollte sich in der Datei „lircd.conf“ noch eine Zeile mit „UNCONFIGURED“ befinden, löschen wir diese.
Nun ist es an der Zeit, den LIRC-Dienst wieder zu starten:
/etc/init.d/lirc start
Wir testen, ob die Befehle der Fernbedienung von LIRC richtig interpretiert und der gewünschten Tastenbezeichnung zugeordnet wurde, indem wir das Tool
irw
starten. Dieses Tool zeigt jede auf der physischen Fernbedienung gedrückten Taste mit der entsprechenden Zurodnung auf dem Bildschirm an. Das Tool kann mit der Tastenkombination „STRG“ und „c“ beendet werden.
Infrarot-Befehle empfangen
An dieser Stelle besteht die Möglichkeit, den Raspberry mit der Infrarot-Fernbedienung zu steuern. Im folgenden Beispiel wollen wir erreichen, dass unsere Himbeere beim Druck auf die Taste „KEY_POWER“ ordnungsgemäß heruntergefahren wird. Dazu Nutzen wir das Tool „irexec„, welches mit einer wie folgt gestalteten Konfigurationsdatei gestartet wird. In dieser Konfigurationsdatei können auch mehrere Aktionen für Fernbedienungstasten festgelegt werden. Dazu muss für jede Taste ein Block beginnend mit „begin“ und endend mit „end“ erstellt werden. Erstellen wir nun beispielsweise die Datei „/scripts/irexec.conf„:
begin irexec begin prog = irexec remote = ledband_SZ button = KEY_POWER config = /scripts/shutdown.sh end begin prog = irexec remote = andere_fb button = KEY_POWER config = /scripts/anderes_script.sh end end irexec
Die hier konfigurierte Datei „/scripts/shutdown.sh“ enthält lediglich die Zeilen
#!/bin/bash sudo shutdown -h now
Da dieses Tool zwar im Hintergrund läuft und auf Befehle der realen Fernbedienung wartet, jedoch unabhängig vom eigentlich LIRC zu betrachten ist, muss der Startaufruf
irexec --daemon /scripts/irexec.conf
in einem Start-Script hinterlegt werden, das beim Systemstart ausgeführt wird. Hierfür würde sich unter anderem die Datei „/etc/rc.local“ anbieten, in welche wir die obige Zeile einfügen. Die Zeile kann jedoch unabhängig vom Systemstart jederzeit in der Konsole ausgeführt werden. Zudem sollte erwähnt werden, dass für jede Konfigurationsdatei ein seperater irexec-Prozess gestartet werden muss.
Der Infrarot-Sender
Bis jetzt sind wir in der Lage, auf Infrarot-Kommandos zu reagieren und wissen, welche Taste der realen Fernbedienung welche Bedeutung hat. Diese Kommandos wollen wir nun mit dem Raspberry nachahmen, um so über die Linux-Konsole die jeweiligen Schaltbefehle zu senden und das Endgerät somit zu steuern.
Sender anschließen
Das bereits installierte Programm LIRC erwartet den Infrarot-Sender, der eigentlich nichts weiter als eine IR-Diode darstellt, auf dem GPIO-Port 17. Daher sollten wir zunächst prüfen, ob dieser Port noch frei ist und ggf. die an diesem GPIO-Port angeschlossenen „Geräte“ auf einen anderen, freien Port verlegen.
Für den Infrarotsender benötigen wir folgende Cent-Artikel:
- IR-Diode (kann auch aus einer alten FB ausgebaut werden)
- NPN-Transistor (Bspw. BC547B)
- Widerstand 220 Ohm
- Widerstand 22 Ohm
Wer bereits einen Lötkolben aus der Ferne betrachtet hat, wird hier keine Schwierigkeiten haben, die Bauteile nach dem folgenden Schema zu verlöten:
Hierbei ist wichtig, auf die Polarität der IR-LED zu achten, das obige Bild kann hierbei helfen. Beim Transistor sollte wieder unbedingt das Datenblatt beachtet werden, die hier vorgestellte Anschlussbelegung gilt natürlich nur für den von mir erworbenen.
Installieren und Konfigurieren
Die notwendigen Schritte haben wir bereits bei der Konfiguration des Empfängers erledigt.
Testen
Wir testen, ob diese Schritte erfolgreich waren und lassen LIRC einen Befehl in einer Dauerschleife senden:
irsend SEND_START ledband_SZ KEY_POWER
Ein interessanter Trick hierbei ist die Verwendung einer Digitalkamera. Wenn wir die IR-Diode durch die Kamera betrachten, kann man im Kamerabildschirm erkennen, ob diese leuchtet oder nicht. Für Leute mit einem Sehspektrum im Infrarotbereich entfällt dieser Umweg natürlich.
Stellen wir fest, dass die IR-Diode tatsächlich leuchtet, können wir das Senden beenden:
irsend SEND_STOP ledband_SZ KEY_POWER
Gerät steuern
Alle Lötarbeiten, alle Installationen und alle Konfigurationen sind nun abgeschlossen und wir können nun endlich unser Endgerät steuern. Dafür richten wir den Infrarot-Sender, also die IR-Diode, in die Richtung des Empfängers des zu steuernden Geräts und senden unsere Befehle wie folgt:
irsend SEND_ONCE ledband_SZ KEY_POWER
Dabei sollte „ledband_SZ“ durch den konfigurierten Namen der Fernbedienung und „KEY_POWER“ durch den gewünschten Befehl ersetzt werden.
Extra: Morgendlicher Sonnenaufgang
Aus der Idee, morgens von einem simulierten Sonnenaufgang geweckt zu werden, ist dieses kleine Quick&Dirty-Script entstanden. Dieses wird direkt auf dem jeweiligen Raspberry ausgeführt und beispielsweise unter „/scripts/sonnenaufgang.sh“ gespeichert.
#!/bin/bash TAKT=30 /usr/bin/irsend SEND_ONCE ledband_WZ KEY_POWER2 sleep 2 /usr/bin/irsend SEND_ONCE ledband_WZ KEY_BTN7 sleep 2 for ((i=10;i<=1;i--)); do /usr/bin/irsend SEND_ONCE ledband_WZ KEY_BRIGHTNESSDOWN sleep 2 done /usr/bin/irsend SEND_ONCE ledband_WZ KEY_POWER sleep 2 for ((i=10;i<=1;i--)); do /usr/bin/irsend SEND_ONCE ledband_WZ KEY_BRIGHTNESSUP sleep $TAKT done
Zudem erstellen wir eine zusätzliche Zeile in den Crontabs, welche wir mit
crontab -e
editieren können. Den Aufruf des morgendlichen Sonnenaufgangs realisieren wir mit dem Eintrag:
0 6 * * * /scripts/sonnenaufgang.sh
So startet das Script morgens um sechs Uhr und dauert in etwa fünf Minuten.
Integration in openHAB
Die hauptsächliche Arbeit wäre getan, kümmern wir uns nun in diesem Beitrag um die Integration unserer LED-Lichtstreifen in openHAB.
Alternative GPIO-Ports
Wenn die in diesem Artikel genannten Ports nicht zur Verfügung stehen, könnte man versuchen, Sender und Empfänger an alternativen GPIO-Ports zu betreiben. In unseren Beispielen möchten wir den GPIO-Port 19 für den IR-Empfänger und den GPIO-Port 21 für den IR-Sender nutzen.
Dazu fügen wir der Datei „/boot/config.txt“ folgende Zeile hinzu bzw. ändern die dort vorhandene wie folgt ab:
dtoverlay=lirc-rpi,gpio_out_pin=21,gpio_in_pin=19
Stephan
21.02.2016 @ 22:32
Danke schonmal für die schnelle Antwort.
Aber leider hat mich das noch nicht weiter gebracht.
DT ist ausgeschaltet.
Meine lircd.conf hab ich angehängt.
Immer noch die selben Probleme.
Hier die Datei:
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Sun Feb 21 13:24:31 2016
#
# contributed by
#
# brand: ledband_sz.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name ledband_SZ
bits 16
flags SPACE_ENC
eps 30
aeps 100
header 3659 4445
one 562 1637
zero 562 512
ptrail 577
pre_data_bits 16
pre_data 0xE0E0
gap 46911
toggle_bit_mask 0x0
begin codes
KEY_POWER 0x40BF
KEY_1 0x20DF
KEY_2 0xA05F
KEY_CHANNELUP 0x48B7
KEY_CHANNELDOWN 0x08F7
KEY_VOLUMEUP 0xE01F
KEY_VOLUMEDOWN 0xD02F
KEY_MUTE 0xF00F
KEY_MODE 0x807F
end codes
end remote
Daniel Wenzel
21.02.2016 @ 16:22
Entweder hast du Fehler in der lircd.conf oder vielleicht hindert ein aktiver „Device Tree“ dein Vorankommen.
Überprüfe mal bitte deine lircd.conf und versuche, den devicetree (mit raspi-config unter Advanced) zu deaktivieren (Neustart erforderlich).
Daniel Wenzel
21.02.2016 @ 16:17
Ich selbst setze die im Artikel verlinkten B547-B ein und es funktioniert bei zwei verschiedenen Himbeeren. Wenn man den C irgendwo rumfliegen hat, kann man auch den nutzen, notwendig ist es jedoch nicht.
Stephan
21.02.2016 @ 15:38
Hallo Daniel,
Danke für die gute Erklärung.
Ich hänge derzeit an zwei Sachen.
Mein bisheriger Stand: Ich habe die Datei ledband_sz.conf erfolgreich erstellt (sieht gut aus) und als lircd.conf abgespeichert.
Erstes Problem: Wenn ich dann mit „irw“ teste, kommt einfach gar nichts an.
Zweites Problem: Da ich auf die Lösung nicht gekommen bin, hab ich mal weitergemacht und hab versucht mit meiner Diode das eingespeicherte Signal zu senden. Wenn ich aber den Befehl „irsend“ benutzte bekomme ich folgende Fehlermeldung:
„irsend: command failed: SEND_START ledband_SZ KEY_POWER
irsend: hardware does not support sending“
Wo liegen hier die Probelme?
Danke schon einmal im Voraus!!!
Viele Grüße
Stephan
Anonymous
21.02.2016 @ 15:37
Hallo Daniel,
kann es sein das es mit dem Transistor BC547B der hier glaub ich nicht geht und ich den * C brauche ?? bekomm es auch nicht mit Steckbrett hin :(
Daniel Wenzel
16.02.2016 @ 20:38
Wenn du durch die Kamera kein Signal siehst, ist tatsächlich etwas nicht richtig angeschlossen. Da solltest du nochmal genau die Verkabelung prüfen. Lass es mich wissen, wenn dein Test mit dem Steckbrett was gebracht hat.
Daniel Wenzel
16.02.2016 @ 20:36
Hallo,
leider habe ich erstmal keine weitere Idee. Vielleicht fällt einem anderem Leser ja was dazu ein. Sry
Anonymous
15.02.2016 @ 20:49
Hallo Daniel, ich bekomme einfach kein Signal beim senden… Evt. falsch angeschlossen? Da ich kein Datenblatt vom Transistor habe, habe ich beide Seiten schon versucht… Aber ich Kamera Test sehe ich kein Signal. An den Jumper Kabeln sollte es ja nicht liegen oder? Versuche es morgen nochmal am Steckbrett, das hab ich heute nicht daheim.
Markus
15.02.2016 @ 17:28
Hallo Daniel, bekomme die gleiche Fehlermeldung wenn ich etwas senden will. Beide Vorschläge habe ich bereits umgesetzt. Noch eine Idee??
PS: Mach weiter mit dem Blog, gute Arbeit
Kai K.
10.02.2016 @ 21:57
Vielen Dank für deine Mühe.
Als ich jetzt nochmal Zeit gefunden habe mich dran zu setzten, hat es plötzlich funktioniert.
Jetzt will ich mich mal daran machen, die Infrarot-Befehle per Link zu senden.
Gruß
Christian
09.02.2016 @ 10:47
Hi,
ich habe das Revoltec Backlight (SMD-15) Set daheim, das mit einer (sehr) ähnlichen Fernbedienung gesteuert wird.
Interessanterweise, kann ich beim Revoltec den IR Empfänger ab- und anschließen über ein ganz normales 3,5mm Klinkenkabel!
Kann ich da nicht direkt rangehen, ohne die IR Brücke dazwischen? Hat da jemand bereits Erfahrung? Ich wüsste allerdings nicht, wie ich die Signale faken könnte :-/
Schick (und billiger) wäre es!
Jemand eine Idee??
Daniel Wenzel
07.02.2016 @ 04:52
Hmm, auf den ersten Blick siehts doch ganz gut aus. Die Telefunken funktioniert?
Hast du nach dem Hinzufügen der 2. Fernbedienung den lircd-Dienst neu gestartet?
Die Konfiguration, die du hier gezeigt hast, stammt aus der /etc/lirc/lircd.conf ?
Kai K.
07.02.2016 @ 00:18
Vielen Dank schon mal für die schnelle Antwort.
Hier habe ich mal den Inhalt der Datei kopiert.
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Sat Feb 6 18:10:46 2016
#
# contributed by
#
# brand: /root/Yamaha_amp.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name Yamaha_amp
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 8862 4600
one 622 1643
zero 622 502
ptrail 619
repeat 8863 2157
pre_data_bits 16
pre_data 0x5EA1
gap 107720
toggle_bit_mask 0x0
begin codes
key_power 0xB847
Key_power2 0x7887
key_cd 0xA857
key_tuner 0x6897
key_sleep 0xEA15
Key_dvd 0x837C
Key_tv 0x2AD5
Key_f6 0xE11E
key_vcr 0xF00F
key_vcr2 0xC837
key_1 0x11EE
key_2 0x916E
key_3 0x51AE
key_4 0xD12E
key_5 0x31CE
key_6 0xB14E
key_7 0x718E
key_8 0xF10E
key_9 0x09F6
key_0 0x6996
key_f10 0xE916
key_enter 0x6A95
key_sound 0x6A95
key_up 0x19E6
key_right 0x4AB5
key_left 0xCA35
key_down 0x9966
key_title 0x619E
key_menu 0x39C6
key_play 0xA15E
key_volumeup 0x58A7
key_volumedown 0xD827
key_mute 0x38C7
end codes
end remote
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Sat Feb 6 17:30:29 2016
#
# contributed by
#
# brand: /root/Telefunken.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name Telefunken
bits 13
flags RC5|CONST_LENGTH
eps 30
aeps 100
one 936 841
zero 936 841
plead 944
gap 114268
toggle_bit_mask 0x0
begin codes
Key_power 0x104C
key_record 0x1873
key_play 0x1059
Key_pause 0x1871
key_stop 0x1058
Key_language 0x184F
key_rewind 0x105B
Key_fastforward 0x185C
key_subtitle 0x105F
Key_red 0x1877
key_green 0x1076
key_yellow 0x1872
key_blue 0x1074
Key_1 0x1841
key_2 0x1042
key_3 0x1843
key_4 0x1044
key_5 0x1845
key_6 0x1046
key_7 0x1847
key_8 0x1048
key_9 0x1849
key_0 0x1040
key_list 0x1866
Key_last 0x1862
key_left 0x1055
key_up 0x1854 0x1054
key_right 0x1856
key_down 0x1053
key_ok 0x1875
key_menu 0x1070
key_back 0x184A
key_exit 0x1065
key_setup 0x186B
key_www 0x186E
key_media 0x1879
key_f1 0x187B
key_f2 0x105A
key_epg 0x186F
key_text 0x107C
key_info 0x1852
key_aux 0x1878
key_screen 0x104B
key_volumeup 0x1850
key_volumedown 0x1851
key_channelup 0x1060
key_channeldown 0x1861
Key_mute 0x104D
end codes
end remote
Daniel Wenzel
06.02.2016 @ 23:00
Hallo,
ich gehe davon aus, dass sich in der Konfiguration ein Fehler eingeschlichen hat.
Kannst du bitte mal, gern auch anonymisiert, die entsprechende Konfiguration zur Verfügung stellen?
Kai K.
06.02.2016 @ 19:49
Hallo,
Vielen Dank für diese super Anleitung.
Soweit funktioniert alles, jetzt habe ich aber eine zweite Fernbedienung angelernt, aber kann diese nicht steuern.
Eine Fernbedienung geht, sobald ich etwas mit der anderen senden möchte, wird folgendes ausgegeben:
irsend: unknown remote: „Yamaha_amp“
Ich habe schon versucht beide Fernbedienungen in die lircd.conf einzufügen, aber das hat auch nicht geklappt.
Weiß jemand woran das liegen könnte?
Liebe Grüße
Kai
John
31.01.2016 @ 13:24
Hallo,
vielen Dank das du dir die Mühe gemacht hast und eine so gute Anleitung geschrieben hast! Ich habe auch alles hinbekommen jedoch ein kleines Problem welches ich schon hier gepostet habe.
http://www.forum-raspberrypi.de/Thread-lirc-ir-senden-nicht-alle-geraete-reagieren
Weist du woran das liegen könnte?
Daniel Wenzel
27.01.2016 @ 01:13
Je nachdem ;) Bei manchen Lötkünsten wird die Verbindung dadurch auch nicht besser ;)
Spaß beiseite. Zum Testen reichen die Jumperkabel auf jeden Fall. Ein Wackelkontakt kann bei dünnen Drähten wie die einer LED natürlich auftreten. Da wäre man mit Löten auf der sicheren Seite. Hast du denn schon den Trick mit der Kamera ausprobiert, um zu testen, ob die IR-LED überhaupt funktioniert?
Daniel Wenzel
27.01.2016 @ 01:12
Hallo,
da gehen die Meinungen auseinander. Die einen sagen, dass die IR-LED ja nur kurz aktiviert wird und der hohe Strom daher nicht schadet. Rein rechnerisch sollte man jedoch den Vorwiderstand verwenden. Ich habs bisher nicht ohne Widerstand getestet und rate auch niemanden dazu. Da ich die IR-LED nur für die LED-Leiste verwende, habe ich die LED und den Empfänger mithilfe eines kurzen Stücks 4/6-Aquarienschlauches direkt gegenüber gerichtet.
olli
26.01.2016 @ 22:27
ah hab ich vergessen zu erwähnen oder sollte ich die ganzen sachen einfach mal zusammen löten sprich jumper kabel weglassen dich ich dazwischen habe
olli
26.01.2016 @ 22:25
hey mal ne frage bringt das realtiv was wenn ich den 20ohm wiederstand vom ir weglasse ? weil so ist die reichweite momentan echt nicht gut
Christian
09.01.2016 @ 19:59
VIELEN DANK !!! :)
Vergiss meinen letzten Eintrag wer lesen kann ist klar im Vorteil !
Ich habe das Fragezeichen übersehen ! Dann funktioniert das auch als anfrage ans Script und nicht als Link ?!
PS Meine web prog Erfahrungen stammen noch aus Front Page Zeiten !!
Macht weiter so !!
SUPER BLOG
Christian
09.01.2016 @ 19:29
Sorry ich muss noch mal nerven ich hab dein Script in eine neue PHP Seite gepackt wie meinst du das aber mit dem link ?
Denn wenn ich eine Grafik mit dem Link zu der php Seite belege bekomme ich nur eine leere Seite angezeigt und keine Funktion ausgelöst !
Daniel Wenzel
09.01.2016 @ 18:22
Eigentlich ist es genau so einfach ;)
Verlinke ein Bild, beispielsweise ein Button „On“ mit deineseite.php?geraet=staubsauger&action=on
Dann packst du ins Script:
if ($_GET['action']) {
if ($_GET['geraet'] == "staubsauger") {
if ($_GET['action'] == "on") {
exec('/usr/bin/irsend SEND_ONCE staubsauger_sz Key_Power');
}
elseif ($_GET['action'] == "bla") {
exec('/usr/bin/irsend SEND_ONCE staubsauger_sz Key_Bla');
}
}
}
//der rest deines scripts
Christian
09.01.2016 @ 12:30
Die 2 Volt sollten nicht zu viel sein ! 1. die IR LED wird ja im Puls betrieben bekommt also nur kurz Spannung !
2. Ich habe keinen Wiederstand drin um die Leistung der LED zu erhöhen (Reichweite)
3. Eine IR LED ist technisch gesehen immer noch eine Diode sollte also in eine Richtung durchlassen und in die andere Sperren , kann man ja mal messen (verbessert mich bitte wenn ich falsch liege)
Christian
09.01.2016 @ 11:56
Danke für die schnelle Antwort:
Ich stehe trotzdem noch etwas auf dem Schlauch !
ich verstehe nicht wie ich die exec function einfüge ? Den einfach als link hinter eine Grafik hängen ? wohl kaum ! also wie darstellen ?
Und wie währe die richtige schreibweise im kompletten ? vielleicht kannst du mir für meinen Fall mal bitte ein Beispiel erstellen .
Daniel Wenzel
09.01.2016 @ 04:32
Hallo Christian,
dein Vorhaben ist eigentlich nicht sehr schwer, ich kann dir zunächst diese URL empfehlen:
http://php.net/manual/de/function.exec.php
Falls das aufgrund mangelnder Rechte nicht funktionieren sollte (ich weiß grad nicht, ob apache irsend ausführen darf), schau dir diesen Link an:
https://anb-networkz.de/2011/08/php-shell-scripte-mit-root-rechten-ausfuhren-sudo/
Grüße
Daniel
Christian
08.01.2016 @ 16:08
Hallo Daniel ich habe auf meinem Raspberry raspberry remote laufen und steuere damit div. Steckdosen hab es es mit meinen mikrigen html und php Wissen etwas auf mein Vorstellungen angepasst . Jetzt habe ich vor IR SEND darin einzubinden wie ich einen einfachen Befehl in der Console sende ist klar .
Aber wie unter html einbinden ?
daemon ?
Ich will nur um es einfach mal zu verstehen einen butten oder eine Grafik mit dem befehl : „irsend SEND_ONCE staubsauger_sz Key_Power “ verlinken
Danke schon einmal im voraus :)
Daniel Wenzel
04.01.2016 @ 05:52
Das würde ich als Messtoleranz verzeichnen.
Jonas
03.01.2016 @ 00:03
Mit dem Messgerät habe ich nur 20Ohm ?
Daniel Wenzel
31.12.2015 @ 07:07
Rein rechnerisch sollten aufgrund des 22Ohm-Widerstands in etwa 1,3V an der LED im Betrieb anliegen.
Jonas
30.12.2015 @ 16:01
Richtig genau das geht nicht ich hab die Codes eingescannt das geht auch mit mode2 -d /dev/lirc0.
Aber das senden geht nicht ich weiß nicht ob die LED kaputt ist oder was los ist. Mit ner Kamera hab
ich schon probiert deswegen wollte ich wissen ob die zuviel bekommt weil ich wenn ich starte 2V an der LED bekomme
Christian
30.12.2015 @ 10:53
Vielen dank jetzt funktioniert es!
Es lag nur mal wieder an meiner eigenen unfähigkeit in Sachen Englisch :(
Und das mit den GPIO´s wechseln geht auch da ich auf 17 einen 433mhz sender betreibe! PS ich spreche über das IR meinen Staubsaugerroboter an :)
an der Sprachsteuerung ohne Smartphone arbeite ich noch!
Nochmal DANKE und mach weiter so !!!
Daniel Wenzel
30.12.2015 @ 06:59
Was heißt denn „es geht nicht“ ?
Du kannst mal eine Digitalkamera auf die IR-Diode richten und durch das Display prüfen, ob die IR-Diode blinkt, wenn du einen Sendebefehl ausführst. Wenn nicht, ist entweder was beim Anschließen schief gelaufen oder bei der Installation und Konfiguration von lirc.
Daniel Wenzel
30.12.2015 @ 06:48
Das kann viele Ursachen haben:
1) Andere Infrarotsignal stören beim Lernen
2) Die Kabel sind zu lange oder zu unsauber gelötet
3) Deine Fernbedienung nutzt untypische Codes
Wenn du die Punkte 1 und 2 ausschließen kannst, teste mal mit „mode2“, ob überhaupt Sendebefehle deiner Fernbedienung erkannt werden und ob wirklich keine Ausgabe erzeugt wird, wenn du keine Taste der Fernbedienung drückst.
Daniel Wenzel
30.12.2015 @ 06:42
Ich habe soeben was gefunden, was man mal testen könnte. Ich habe den Artikel dementsprechend angepasst. Ich würde mich über eine Antwort freuen, wenns geklappt hat.
Jonas
29.12.2015 @ 23:53
Wie viel muss denn an der IR rauskommen ? Bei mir kommen da 2V raus aber es geht leider nicht
Christian
28.12.2015 @ 17:39
Hallo erst einmal Danke für diesen Beitrag.
Ich habe aber leider Probleme beim anlernen meiner FB
sie wird erkant aber ich bekomme einen Fehler:
Please enter the name for the next button (….
KEY_POWER
Now hold down button „KEY_POWER“.
Something went wrong. Please try again. (9 retries left)
.
.
.
.
.
.
Somtething went wrong.
Try using the -f option.
root@raspberrypi:~#
die datei wird erstellt ist aber „leer“
David
28.12.2015 @ 15:09
Hi,
ich haben das Problen, dass ich nicht die Standart Pins, die LIRC nutzt, benutzen kann.
WIe müsste die File „/etc/lirc/hardware.conf“ aussehen, dass ich z.B. den Pin 18 BCM 24 als INput nutzen kann?
„LIRCD_ARGS=“–uinput““ wird hier doch das richtige sein, jedoch will dies bei mir einfach nicht klappen :/
modprobe lirc_rpi gpio_in_pin=0 gpio_out_pin=1(http://aron.ws/projects/lirc_rpi/) dies habe ich in gefunden, jedoch weiß ich nicht wo dies einzufügen ist.
Daniel Wenzel
15.12.2015 @ 05:14
Hallo,
mit den neueren Version von Raspbian hat sich ein wenig das Laden der Module geändert, daher muss ich alle Beiträge demnächst mal anpassen.
Für die Lösung deines Problems gibt es zwei Möglichkeiten:
1) Führe „raspi-config“ aus und deaktiviere unter dem Punkt „Advanced Options“ den „Device Tree“.
2) Editiere die Datei „/boot/config.txt“ und entferne das „#“ vor der Zeile „#dtoverlay=lirc-rpi“
In beiden Versionen sollte nun nach einem Neustart das Modul geladen werden.
Palm
14.12.2015 @ 19:39
Hallo,
bekomme die Fehlermeldung, dass lirc0 nicht gefunden wird.
„No such file or directory“
Woran kann das liegen?
Grüße Palm
Daniel Wenzel
19.11.2015 @ 05:29
Hallo,
danke für den Hinweis. Grundsätzlich hast du Recht, ich werde den Artikel korrigieren. Theoretisch bräuchte aber gar kein Widerstand verwendet werden, da die LED nur für kurze Impulse verwendet wird.
Zeebo
18.11.2015 @ 22:53
Vielen Dank erst einmal für diesen detaillierten Beitrag.
Aber wie kommst du auf den Widerstand mit 1,5 Ω? Habe ich mich verrechnet?
Daten der IR-LED:
Durchlassspannung: 1.35 V
Betriebsstrom: 100 mA
Betriebsspannung: 3.3 V
Rechnung: (3.3 V – 1.35 V) / 100 mA = 19.5 Ω, nächst möglicher Widerstand: 22 Ω
Oder sehe ich das falsch?
Steven
18.11.2015 @ 18:07
Hallo Daniel,
Danke für die Hilfe. Es funktioniert jetzt alles ohne Probleme.
Daniel Wenzel
18.11.2015 @ 15:14
Hallo Steven,
dass liegt daran, dass du deine Fernbedienung „/root/ledband_aqua.conf“ genannt hast. Lösche bitte mal aus deiner lircd.conf den Abschnitt der ersten Fernbedienung, so dass nur noch die untere (die ohne /root/) erhalten bleibt.
Steven
18.11.2015 @ 13:17
Es funktioniert jetzt.
Jedoch muss ich bei „irsend SEND_START“ als Datei „/root/ledband_aqua.conf“ angeben obwohl ich den Namen zu „ledband_aqua“ geändert habe. Gebe ich „ledband_aqua“ ein, erscheint die Meldung „unknown remote“. In der lircd.conf sind aber beide Fernbedienungen aufgelistet.
begin remote
name ledband_aqua
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 9051 4447
one 617 1629
zero 617 507
ptrail 609
pre_data_bits 16
pre_data 0xFF
gap 107963
toggle_bit_mask 0x0
begin codes
KEY_POWER 0x02FD
KEY_BRIGHTNESSUP 0x3AC5
KEY_BRIGHTNESSDOWN 0xBA45
KEY_GREEN 0x9A65
KEY_BLUE 0xA25D
KEY_RED 0x1AE5
KEY_W 0x22DD
end codes
end remote
Daniel Wenzel
17.11.2015 @ 21:19
Wenns dann immer noch nicht klappt oder neue Fehler auftreten, einfach nochmal melden.
Steven
17.11.2015 @ 21:05
Hallo,
danke für die schnelle Antwort.
Mir ist eingefallen dass ich alles ohne Root zugriff gemacht habe.
Desegen habe ich jetzt alle Schritte wiederholt ( diesmal mit Root zugriff).
Leider funtioniert jetzt die Erkennung der Fernbedienung bei dem Schritt „mode2 -d /dev/lirc0“ nicht mehr obwohl gestern alles geklappt hat. Ich werde morgen am besten nochmal alles in Ruhe von neu durchführen.
Daniel Wenzel
17.11.2015 @ 20:07
Hallo,
hast du auch die vorherigen Schritte ausgeführt? Also insbesondere die Konfigurationen für die LED-Bänder eingefügt?
Als welcher Nutzer versuchst du, irsend zu starten?
Was ergibt ein „which irsend“
Und was ergibt ein „sudo irsend“ ?
Steven
17.11.2015 @ 19:29
Hallo,
bei dem Befehl
irsend SEND_START ledband_SZ KEY_POWER
erhalte ich die Meldung :
irsend: could not connect to socket
irsend: No such file or directory
Woran kann das liegen?
Daniel Wenzel
23.10.2015 @ 05:33
So, ich habe nun nochmal alles verglichen und überprüft. Auf dem Foto, was ich nun zur Sicherheit entfernt habe, war tatsächlich der Sensor mit 5V versorgt, was er grundsätzlich auch vertragen kann. Im Text habe ich nun auf ein exemplarisches Datenblatt verwiesen und die Schaltskizze hinsichtlich des PINs 1 korrigiert. Ich hoffe, nun passt alles. Es kann, wie im Text erwähnt natürlich sein, dass DEIN Empfänger anders belegt ist oder du einen anderen Typ erwischt hast. Deshalb immer in das Datenblatt schauen.
Henrik
22.10.2015 @ 22:41
Ich schon wieder… ich habe bei mir nun auch alles am laufen und wollte die Gelegenheit nicht auslassen mich hier noch einmal für die super Arbeit zu bedanken! Mir ist im Verlauf meines Bastelvorgangs aufgefallen, dass in dem bereits oben beschriebenen Bild die PINs alle samt exakt spiegelverkehrt gesteckt wurden. Das bedeutet, dass der eigentliche GND auf GPIO15 steckt, der eigentliche GPIO18 PIN steckt auf GPIO17. Ich hoffe ich zerpflücke das eine Bild hier nicht zu sehr, da ich mich an diesem Foto aber eine gewisse Zeit aufgehalten habe, vermute ich, dass es auch anderen so gehen könnte!
Daniel Wenzel
22.10.2015 @ 13:27
Hallo Henrik,
da Sender und Empfänger unterschiedliche GPIO-Ports nutzen, können beide parallel betrieben werden.
Henrik
21.10.2015 @ 19:18
Und noch eine Frage ist aufgetreten. Den Empfänger habe ich nun fertig gestellt. Nun geht es an den Sender… Irgendwie bin ich darüber gestolpert was nun mit dem Empfänger passiert. Bleibt dieser angeschlossen wie bisher? Oder nimmt man den Empfänger ab und baut den Sender dran? Oder kann man die Sender und Empfänger gar kombinieren?
Besten dank schon mal im voraus und natürlich vielen Dank für deine schnelle Antwort zur vorherigen Frage!
Daniel Wenzel
21.10.2015 @ 07:45
Ja, du hast Recht. Ich werde das Foto austauschen, wenn ich dazu komme. Bis dahin kommt ein Hinweis in den Text. Ich kann mir grad nicht erklären, wie es dazu gekommen ist ;) Vielen Dank für den Hinweis. Die 3,3V sind natürlich richtig.
Henrik
20.10.2015 @ 21:32
Kann es sein, dass auf dem Foto der 5V Pin anstatt dem 3.3V Pin verwendet wurde? Ich habe mir das Foto wieder und wieder angeschaut und mit diversen anderen Seiten verglichen um sicher zu sein keinen Fehler gemacht zu haben! Korrigiere mich bitte wenn ich falsch liege! Besten dank außerdem für das super Tutorial!
Gruß der Henrik
Daniel Wenzel
18.09.2015 @ 19:03
Ich muss mich entschuldigen. Die Antwort war auf einen anderen Artikel bezogen. Verstärken lässt sich nur das 433 MHz-Funksignal für die Funksteckdosen. Für den Infrarot-Sender ist mir bisher keine Möglichkeit bekannt.
Torben
18.09.2015 @ 16:40
Hallo, wo finde ich den Beitrag zum Verstärken? Meine Schaltung ist mit 3 m etwas schwachbrüstig :( Danke und Gruß Torben
Torben
18.09.2015 @ 16:20
Hallo, er Test funzt tadellos. Ich will damit Velux-Fenster steuern. Allerdings ist die Reichweite mit 3 m relativ gering. Kann da Abhilfe verschafft werden? Was meinst du mit „verstärken“? Danke und Gruß Torben
Daniel Wenzel
25.06.2015 @ 09:27
Hallo,
wir betreiben die Sender wie im Beitrag beschrieben im „Dreieck“ und unverstärkt. Im etwa 20qm großen Wohnbereich kann damit jede Ecke erreicht werden. Wenn ich schätzen müsste, reicht das Signal bei uns ohne bautechnische Behinderungen etwa 5m. Ich kann mir aber gut vorstellen, dass ohne Hindernisse 10m drin sein sollten, vor allem, wenn der Sender wie in einem anderen Beitrag beschrieben durch ein externes Netzteil verstärkt wird.
Kharim
25.06.2015 @ 09:24
Hallo,
kannst du mir sagen, wie weit die Reichweite des Senders etwa ist?
Danke,
Kharim