Verifizierte USB-RailsboardsIm Prinzip müssten alle USB-Relaisboards funktionieren, die per FTDI ansteuerbar sind. Verifiziert sind:
- SainSmart 5V 4 Channel kanal USB Relais Relay Module Board For Arduino DSP AVR, ~20 EUR in der Bucht
FTDI-Device-Rechte setzenUbuntuAuf der Shell die Datei /etc/udev/rules.d/44-my.rules als Sudo anlegen (oder editieren):
sudo nano /etc/udev/rules.d/44-my.rules
Folgende Zeile hinzufügen.
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="dialout", MODE="0666"
Damit sollte FHEM Zugriff auf das FTDI-USB-Gerät bekommen.
Installation des Device::FTDI-Perl-ModulsUbuntuAuf der Shell als Sudo build-essential, libusb-dev und libftdi-dev installieren:
sudo apt-get install build-essential libusb-dev libftdi-dev
Als Sudo das Perl-Modul "Device::FTDI" installieren:
sudo perl -MCPAN -e install "Device::FTDI"
Installation des FTDI-FHEM-ModulsAngehängte 42_FTDI.pm nach fhem kopieren.
Serial des Relais herausfindenJedes FTDI-Device hat eine eigene Serial. Um das richtige Device anzusprechen, müsst Ihr erst einmal die Serial des Relais herausfinden. Dazu auf der Shell eingeben:
perl -e "use Device::FTDI; Device::FTDI::find_all();"
Beispielsausgabe:
Serial: A4002DL4
Serial: A1WRS9LY
Mein Relais hat die Serial A4002DL4. Die andere Serial bezieht sich auf den RFXTRX433, der auch an einem USB-Port hängt.
Um sicher zu gehen, dass Ihr die richtige Serial bekommt, solltet Ihr alle anderen USB-Geräte vorher abziehen!
Gerät für Relais definierenDie Schaltkarte enthält vermutlich mehrere Ralais. <index> bestimmt die Nummer für das Relais, wobei mit 0 angefangen wird. Welche Nummer für welches Relais steht, muss man ausprobieren...
define <device> FTDI <serial> <index>
Beispiel:
define Relais0 FTDI A4002DL4 0
define Relais1 FTDI A4002DL4 1
Relais schaltenRelais anschalten:
set <device> on
Relais ausschalten:
set <device> off
Versionen
- 2016-02-04: erste Version
- 2016-02-05:
- Bei Exceptions wird nun geloggt.
- get implementiert, um den Status des Relais in state zu screiben
- get wird beim define aufgerufen, damit der state initialisiert wird
Viel Glück!
Zitat von: Jack_n am 05 November 2016, 08:06:04
Hallo,
ich habe versucht das nach der Anleitung auf einem Raspberry Pi zu machen scheitere aber leider.
Habt Ihr bitte einen Tip:
pi@raspberrypi:~ $ perl -e "use Device::FTDI; Device::FTDI::find_all();"
Can't locate Device/FTDI.pm in @INC (you may need to install the Device::FTDI module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Der Vollständigkeit halber hier eine mögliche Lösung (so hat es bei mir geklappt):
sudo cpan install Device::FTDI