[42_FTDI.pm] Modul zum Ansteuern von FTDI-USB-Relais (z.B. Sainsmart)

Begonnen von dero, 04 Februar 2016, 01:57:09

Vorheriges Thema - Nächstes Thema

dero

Verifizierte USB-Railsboards

Im 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 setzen

Ubuntu

Auf 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-Moduls

Ubuntu

Auf 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-Moduls

Angehängte 42_FTDI.pm nach fhem kopieren.

Serial des Relais herausfinden

Jedes 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 definieren

Die 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 schalten

Relais 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!

FNT

Hi,

das klingt sehr interessant - kannst Du dazu ein bestimmtest Relais empfehlen?

Danke,
FNT


Jack_n

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.

AmunRe

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

4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs