Hallo,
als Nebenbei-Musiker erwäge ich gerade die Anschaffung eines MIDI-Controllers wie z.B. einem http://www.akaipro.de/apc-mini (http://www.akaipro.de/apc-mini) oder http://novationmusic.de/midi-controllers-digital-dj/launchpad (http://novationmusic.de/midi-controllers-digital-dj/launchpad). Diese Dinger dienen eigentlich zum Musikmachen, aber ich habe einige Ideen, was man damit auch mit FHEM anstellen könnte.
Letztendlich bestehen sie aus z.B. 8x8 Tasten (oft mit übermittelter Anschlagsstärke, meistens verschiedenfarbig beleuchtbar) und ggf. noch ein paar Reglern. Es gibt aber auch viele andere Varianten. Sie sind per USB angebunden, wobei über die USB-Schnittstelle MIDI-Signale gesendet werden; wenn eine Taste gedrückt wird, kommt z.B. ein Note-On per USB an.
Nun haben wir also ein Kästchen mit 64 beleuchteten Tasten und ein paar Reglern. Damit könnte man prächtig eine ausgedehnte Beleuchtung steuern, gerne auch stockwerkbezogen. Eine Spalte könnte man als 'Alles Aus' definieren. Die Regler kann man zum Dimmen von Lampen verwenden. Oder oder oder...
64 farbige Lampen lassen sich auch für viele Dinge einsetzen. Von der einfachen Statusleuchte (z.B. Lampe an/aus, Person an/abwesend) über komplexere Statusmeldungen (z.B. Rollo oben/unten/läuft, Temperatur niedrig/mittel/hoch) kann man auch mehrere LEDs kombinieren (z.B. linke Spalte: Füllstand eines Wassertanks).
Die prinzipielle Ansteuerung ist wie gesagt nicht schwierig; die MIDI-Befehle kann man einfach über USB senden und empfangen. Nur für die Abwicklung, wenn ein Gerät ausgesteckt oder eingesteckt wird, sollte man sich etwas Gedanken machen, wie das abgefangen wird.
Grundsätzlich erscheint ein Device unter /dev/snd (z.B. midiC1D0), wenn man das Gerät ansteckt. Über ALSA ist es wohl auch möglich, eine Zuordnung des Gerätenamens zum Device zu bekommen; da bin ich aber noch nicht allzu weit. Hat zufällig schon mal jemand mit ALSA programmiert? Womöglich sogar mit MIDI::ALSA?
Das andere Problem, das ich noch habe, ist die Strukturierung in FHEM. Die einfachste Variante wäre, Readings für jeden möglichen Taster und Regler zu definieren. Da das aber jeweils 128 Stück sind (genaugenommen multipliziert mit 16 möglichen Kanälen), würde das sehr unübersichtlich. Sinnvoller wäre es vermutlich, ein MIDI-Gerät für die Kommunikation und dann zusätzliche Geräte für die einzelnen Anwendungen zu definieren. Oder vielleicht vordefinierte Geräte für jeden Controller, den es so gibt?
Was meint ihr? Wie könnte man sowas am sinnvollsten umsetzen?