Remotecontrol: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
Zeile 14: Zeile 14:
  <nowiki>
  <nowiki>
attr rc1 room TestRemote</nowiki>
attr rc1 room TestRemote</nowiki>
 
<br><br>
===Weblink erzeugen und einbinden===
===Weblink erzeugen und einbinden===
Der weblink dient zum Anzeigen der grafischen Fernbedienung.<br>
Der weblink dient zum Anzeigen der grafischen Fernbedienung.<br>
Zeile 26: Zeile 26:
  <nowiki>
  <nowiki>
attr weblink_rc1 room TestRemote</nowiki>
attr weblink_rc1 room TestRemote</nowiki>
 
<br><br>
===Standard-Tastaturlayouts===
===Standard-Tastaturlayouts===
Jedes fhem-Modul kann Tastaturlayouts für das Modul ''remotecontrol'' bereitstellen.<br>
Jedes fhem-Modul kann Tastaturlayouts für das Modul ''remotecontrol'' bereitstellen.<br>
Zeile 38: Zeile 38:
'''Hinweis:''' Ein Standard-Layout wird erst nach dem Laden eines Moduls bereitgestellt. Wenn also erst zu einem späteren Zeitpunkt ein weiteres Modul (z.B. VIERA für Panasonic-TV) in die Konfiguration aufgenommen wird, wird ein ggf. vorhandenes Standard-Layout erst dann angezeigt. Man sollte also auch später ab und zu mit dem o.g. Befehl prüfen, ob für weitere Geräte Standardlayouts vorhanden/hinzugekommen sind.<br>
'''Hinweis:''' Ein Standard-Layout wird erst nach dem Laden eines Moduls bereitgestellt. Wenn also erst zu einem späteren Zeitpunkt ein weiteres Modul (z.B. VIERA für Panasonic-TV) in die Konfiguration aufgenommen wird, wird ein ggf. vorhandenes Standard-Layout erst dann angezeigt. Man sollte also auch später ab und zu mit dem o.g. Befehl prüfen, ob für weitere Geräte Standardlayouts vorhanden/hinzugekommen sind.<br>
Im Modul ''remotecontrol'' selbst sind die Beispiel-Layouts "iTunes" und "samsung" vorhanden.
Im Modul ''remotecontrol'' selbst sind die Beispiel-Layouts "iTunes" und "samsung" vorhanden.
 
<br><br>
===Eigene Tastaturlayouts einrichten===
===Eigene Tastaturlayouts einrichten===
Die Tastatur der Fernbedienung ist aufgeteilt in bis zu 20 Zeilen. Je Zeile können beliebig viele Tasten definiert werden.<br>
Die Tastatur der Fernbedienung ist aufgeteilt in bis zu 20 Zeilen. Je Zeile können beliebig viele Tasten definiert werden.<br>
Zeile 79: Zeile 79:
attr rc1 row00 PLAY  # als Befehl wird PLAY gesendet, als icon wird PLAY verwendet
attr rc1 row00 PLAY  # als Befehl wird PLAY gesendet, als icon wird PLAY verwendet
attr rc1 row06 PLAY,:blank,anhalten:STOP  # auch Mischformen sind möglich</nowiki>
attr rc1 row06 PLAY,:blank,anhalten:STOP  # auch Mischformen sind möglich</nowiki>
 
<br><br>
===Kopplung an das ausführende Gerät===
===Kopplung an das ausführende Gerät===
Bei jedem Tastendruck wird der Befehl (command), der der Taste zugeordnet ist, als STATE des remotecontrol-device angezeigt.<br>
Bei jedem Tastendruck wird der Befehl (command), der der Taste zugeordnet ist, als STATE des remotecontrol-device angezeigt.<br>
Zeile 90: Zeile 90:
  <nowiki>
  <nowiki>
define n_rc1 notify rc1 {MeineRoutine("$EVENT")}</nowiki>
define n_rc1 notify rc1 {MeineRoutine("$EVENT")}</nowiki>
 
<br><br>
==Troubleshooting==
==Troubleshooting==
===Eine Taste wird nicht angezeigt===
===Eine Taste wird nicht angezeigt===
Zeile 101: Zeile 101:
den html-Code der grafischen Fernbedienung anzeigen. Darin suchen nach "<img src" und dann Link und Dateiname prüfen.<br>
den html-Code der grafischen Fernbedienung anzeigen. Darin suchen nach "<img src" und dann Link und Dateiname prüfen.<br>
Soll: <img src="/fhem/icons/remotecontrol/black_btn_PLAY">
Soll: <img src="/fhem/icons/remotecontrol/black_btn_PLAY">
 
<br><br>
===Der rechte Rahmen wird mit Lücken dargestellt===
===Der rechte Rahmen wird mit Lücken dargestellt===
Manche Browser stellen in einer Zeile, in der die letzte Tste gar nicht definiert ist, den Rahmen nicht dar. Füllen Sie in diesem Fall die Tastaturzeile mit :blank soweit auf, dass sie dieselbe Anzahl Tasten aufweist wie die längste Tastaturzeile auf Ihrer Fernbedienung.
Manche Browser stellen in einer Zeile, in der die letzte Tste gar nicht definiert ist, den Rahmen nicht dar. Füllen Sie in diesem Fall die Tastaturzeile mit :blank soweit auf, dass sie dieselbe Anzahl Tasten aufweist wie die längste Tastaturzeile auf Ihrer Fernbedienung.
 
<br><br>
==Beispiel-Layouts mit screenshots==
==Beispiel-Layouts mit screenshots==
===iTunes===
===iTunes===
Zeile 113: Zeile 113:
row00      play:PLAY,pause:PAUSE,prev:REWIND,next:FF,louder:VOLUP,quieter:VOLDOWN
row00      play:PLAY,pause:PAUSE,prev:REWIND,next:FF,louder:VOLUP,quieter:VOLDOWN
</nowiki>
</nowiki>
<br><br>
===Samsung===
===Samsung===
[[Datei:remotecontrol_samsung.jpg]]
[[Datei:remotecontrol_samsung.jpg]]

Version vom 18. Juni 2013, 09:23 Uhr

Das Modul "remotecontrol" stellt einen weblink bereit, der eine grafische Abbildung einer physischen Fernbedienung anzeigt. Dieser weblink kann in fhem-Frontends wie FHEMWEB oder FLOORPLAN verwendet werden. Die Tastenbelegung ("Layout") ist frei wählbar. Standard-Layouts sind für unterschiedliche Geräte verfügbar. Das remotecontrol-device wird per notify an das fhem-device gekoppelt, das nach einem Tastendruck den Befehl an das physische Gerät sendet.

Einrichtung

Define

Das define erfolgt nach der üblichen fhem-Syntax:

define <name> remotecontrol

also z.B.

define rc1 remotecontrol

Damit ist eine leere Fernbedienung (zunächst noch ohne Tasten) angelegt.
Zu Testzwecken kann man sein device zunächst einem Testraum zuordnen, zB

attr rc1 room TestRemote



Weblink erzeugen und einbinden

Der weblink dient zum Anzeigen der grafischen Fernbedienung.
Beim Erzeugen des Weblinks kann man einen Namen angeben. Wird kein Name angegeben, wird der default-Name "weblink_<name>" verwendet.

set rc1 makeweblink             # erzeugt Weblink mit dem Namen weblink_rc1
set rc1 makeweblink w_rc1       # erzeugt Weblink mit dem Namen w_rc1

Zu Testzwecken kann man auch den Weblink einem Testraum zuordnen, zB

attr weblink_rc1 room TestRemote



Standard-Tastaturlayouts

Jedes fhem-Modul kann Tastaturlayouts für das Modul remotecontrol bereitstellen.
Die Liste der vorhandenen Tastaturlayouts wird angezeigt mit

get <name> layout

also z.B.

get rc1 layout

Hinweis: Ein Standard-Layout wird erst nach dem Laden eines Moduls bereitgestellt. Wenn also erst zu einem späteren Zeitpunkt ein weiteres Modul (z.B. VIERA für Panasonic-TV) in die Konfiguration aufgenommen wird, wird ein ggf. vorhandenes Standard-Layout erst dann angezeigt. Man sollte also auch später ab und zu mit dem o.g. Befehl prüfen, ob für weitere Geräte Standardlayouts vorhanden/hinzugekommen sind.
Im Modul remotecontrol selbst sind die Beispiel-Layouts "iTunes" und "samsung" vorhanden.

Eigene Tastaturlayouts einrichten

Die Tastatur der Fernbedienung ist aufgeteilt in bis zu 20 Zeilen. Je Zeile können beliebig viele Tasten definiert werden.
Jede Taste auf der Fernbedienung wird definiert durch

  • den Befehl, der nach einem Tastendruck ausgeführt werden soll
  • das icon, das als Taste erscheinen soll

Man muss also je Taste diese beiden Werte festlegen.
Mehrere Tasten in einer Zeile werden durch Kommata getrennt.

Vorgehensweise:

Icon-Pfad festlegen

Einmalig ermitteln, in welchem Ordner die icons liegen, die für die Tastatur verwendet werden sollen. Die Standard-icons liegen im Ordner www/images/default/remotecontrol. Um dies nicht bei jeder Taste angeben zu müssen, setzt man

attr <name> rc_iconpath icons/remotecontrol

Icon-Prefix festlegen

Ggf. einmalig einen prefix für Dateinamen festlegen. Die Standard-icons folgen der Namenskonvention black_btn_<Beschreibung>. Um den Teil vor der Beschreibung nicht bei jeder Taste mit angeben zu müssen, setzt man

attr <name> rc_iconprefix black_btn

Tasten definieren

  1. ermitteln, welcher Befehl an das ausführende fhem-Gerät gesendet werden soll. Als Beispiel soll der Befehl "play" dienen. Groß/Kleinschreibung ist zu beachten.
  2. ermitteln, welches icon zur Darstellung der Taste verwendet werden soll. Unter den Standardicons gibt es ein icon mit dem Dateinamen black_btn_PLAY.png
    . Der vordere Teil ist bereits als prefix hinterlegt, die Datei-Endung muss nicht angegeben werden. Als icon für die Tastaturdefinition kann man also einfach PLAY angeben. Groß/Kleinschreibung ist zu beachten.

Nachdem nun der Befehl (play) und der icon-Name (PLAY) ermittelt sind, können diese als Definition einer Taste hinterlegt werden.
Syntax: attr <name> rowXX <command>:<icon>

attr rc1 row00 play:PLAY  # als Befehl wird play gesendet, als icon wird PLAY verwendet

Sollten weitere Tasten definiert werden, hängt man sie durch Komma getrennt an.
Syntax: attr <name> rowXX <command>:<icon>[,<command>:<icon>][,....]

attr rc1 row00 play:PLAY,anhalten:STOP

Sollen auf der Tastatur Leer-Räume abgebildet werden, gibt man als Tastendefinition :blank an (also kein Befehl, icon blank). Das icon mit dem Namen 'blank' ist vorhanden, hat ein Drittel der regulären Tastenhöhe und ist 100% transparent.

attr rc1 row00 play:PLAY,:blank,anhalten:STOP

Eine "Trennzeile" lässt sich einfügen durch

attr rc1 row00 :blank,:blank,:blank

Hinweis: Manche Browser stellen in einer Zeile, in der die letzte Tste gar nicht definiert ist, den Rahmen nicht dar. Füllen Sie in diesem Fall die Tastaturzeile mit :blank soweit auf, dass sie dieselbe Anzahl Tasten aufweist wie die längste Tastaturzeile auf Ihrer Fernbedienung.

Für den Fall, dass der Befehl und der icon-Name identisch sind (incl. Groß/Kleinschreibung) besteht zur Vereinfachung die Möglichkeit, nur das Kommando anzugeben. Dieses wird dann auch als icon-Name verwendet.
Syntax: attr <name> rowXX [<command>:<icon>|<command_icon>][,[<command>:<icon>|<command_icon>]]...

attr rc1 row00 PLAY  # als Befehl wird PLAY gesendet, als icon wird PLAY verwendet
attr rc1 row06 PLAY,:blank,anhalten:STOP  # auch Mischformen sind möglich



Kopplung an das ausführende Gerät

Bei jedem Tastendruck wird der Befehl (command), der der Taste zugeordnet ist, als STATE des remotecontrol-device angezeigt.
Ausserdem wird ein entsprechendes System-Event erzeugt. Dieses kann mit notify geprüft und an das ausführende Gerät weitergegeben werden.

Als Beispiel soll wie oben gezeigt eine Fernbedienung mit dem Namen rc1 bereits erstellt worden sein. Tastendrücke sollen zur Ausführung an das bereits vorhandene fhem-device myTV weitergegeben werden.

define n_rc1 notify rc1 set myTV $EVENT

Bei jedem Tastendruck löst die Fernbedienung rc1 ein event aus. Dieses wird als set-Befehl an das Gerät myTV zur Ausführung weitergegeben.
Es können auch eigene scripts (z.B. in 99_myUtils.pm) aufgerufen werden. Wenn es z.B. dort eine Routine MeineRoutine($) gibt, kann diese mit der Fernbedieung gesteuert werden durch

define n_rc1 notify rc1 {MeineRoutine("$EVENT")}



Troubleshooting

Eine Taste wird nicht angezeigt

  • Groß/Kleinschreibung icon-Namens prüfen
  • Nach dem Anlegen neuer icons muss ausgeführt werden
set WEB rereadicons
  • Mit dem Befehl
get <name> htmlcode

den html-Code der grafischen Fernbedienung anzeigen. Darin suchen nach "<img src" und dann Link und Dateiname prüfen.
Soll: <img src="/fhem/icons/remotecontrol/black_btn_PLAY">

Der rechte Rahmen wird mit Lücken dargestellt

Manche Browser stellen in einer Zeile, in der die letzte Tste gar nicht definiert ist, den Rahmen nicht dar. Füllen Sie in diesem Fall die Tastaturzeile mit :blank soweit auf, dass sie dieselbe Anzahl Tasten aufweist wie die längste Tastaturzeile auf Ihrer Fernbedienung.

Beispiel-Layouts mit screenshots

iTunes

Remotecontrol iTunes.jpg

rc_iconpath icons/remotecontrol
rc_iconprefix black_btn_
row00      play:PLAY,pause:PAUSE,prev:REWIND,next:FF,louder:VOLUP,quieter:VOLDOWN



Samsung

Remotecontrol samsung.jpg

rc_iconpath icons/remotecontrol
rc_iconprefix black_btn_
row00      POWEROFF,TV,HDMI
row01      :blank,:blank,:blank
row02      1,2,3
row03      4,5,6
row04      7,8,9
row05      :blank,0,PRECH
row06      :blank,:blank,:blank
row07      VOLUP,MUTE,CHUP
row08      VOLDOWN,CH_LIST,CHDOWN
row09      MENU,:blank,GUIDE
row10      :blank,:blank,:blank
row11      TOOLS,UP,INFO
row12      LEFT,ENTER,RIGHT
row13      RETURN,DOWN,EXIT