MCE IR USB Receiver + IR Transmitter per GPIO

  • Hallo,

    weiß von euch jemand, ob sich das RC5 und RC6 Protokoll zusammen nicht verträgt?

    Ich habe im Wohnzimmer ein RPi2 (mit Libreelec) und einen MCE IR USB Receiver und eine Harmony Volksfernbedienung, die auf RC6 MCE programiert ist. Das funktioniert so weit auch.

    Dazu habe ich per GPIO ein IR Transmitter angeschlossen. Der IR Transmitter soll beim booten via autostart.sh einfach nur ein Einschalt Signal an den TV Senden.
    Allerdings funktioniert dies nicht im Zusammenhang mit der MCE Fernbedienung. Klemme ich den MCE USB Receiver ab, funktioniert der Transmitter.
    Ich habe schon eine gemeinsame Config für die MCE Fernbedienung und dem Transmitter erstellt, wo beide Protokolle RC6 und RC5 Zeitgleich drin sind, aber das funktioniert einfach nicht.

    Ich habe ein ähnliches Setup in der Küche. Allerdings mit einer X10 (Medion) Funk Fernbedienung und ein IR Transmitter per GPIO angeschlossen, dort funktioniert beides Zeitgleich. Dort gibt es allerdings nur eine LIRC Config für den Transmitter.

    Hat jemand ein Idee wie ich das lösen könnte?

  • Ich denke, dass es eher daran liegt, dass die Signale zu schnell nacheinander gesendet werden und es dank des Inter-Device Delays dann ignoriert wird. Hier mal ein Auszug aus dem Logitech blog:

    Inter-Device Delay:

    Inter-Device Delay: When an infrared command is sent for a particular device, every device in your system receives the command, but only one will respond to it. The other devices ignore the command. Sometimes, a device will ignore the command and then stop accepting any of its own infrared commands for a period of time. This period of time is known as the Inter-Device delay.

    Vielleicht einfach mal einen "sleep 1s" in deine autostart.sh vor einem der IR-Befehle setzen.

    Als weiteres Debugging:
    Hast du mal mit der eingeschalteten Smartphohne Camera auf deinen Transmitter geschaut, ob er überhaupt ein Signal aussendet, wenn er es soll? Also in dem Fall, wo der MCE USB IR angeschlosen ist und das Skript ausgeführt wird. Mit so einer Smartphone Cam, kann man Infrarot-signale von Fernbedienungen sehr gut sehen.

    Warum lässt du das Signal nicht eigentlich durch deine Harmony schicken, wozu der Transmitter?

  • Ich denke, dass es eher daran liegt, dass die Signale zu schnell nacheinander gesendet werden und es dank des Inter-Device Delays dann ignoriert wird. Hier mal ein Auszug aus dem Logitech blog:

    Danke erstmal für deine Hilfe. :thumbup:

    Ich habe das über die Console bzw. per SSH eingerichtet und darüber mehrfach den irsend Befehl gesendet. Daher muss das Problem irgendwo anders liegen.

    Ich bin heute leider nicht bei den Gerätschaften, ich werde morgen mehr Informationen online stellen. Da es auch schon etwas her ist, wo ich das versucht habe einzurichten.

    Ich habe gelesen, das bei bekannten Fernbedienungen Libreelec es auch gar nicht mehr direkt über Lirc abwickelt, sondern über den Kernel per inputlirc?
    https://wiki.ubuntuusers.de/Kodi_Remote/

    Ich vermute, sobald ich eine Lirc Config für den Transmitter erstelle, switcht er auf Lirc um und dann beginnen die Probleme.
    Dann habe ich eine Lirc Config für die Harmony per irrecord erstellt und das inkl. den Befehlen für den Transmitter. Aber das hat nicht geklappt.

    Warum lässt du das Signal nicht eigentlich durch deine Harmony schicken, wozu der Transmitter?

    Das mache ich derzeit so. Aber das hat bei dem RPI in der Küche so gut geklappt, da wollte ich das für das Wohnzimmer auch so bequem haben.
    Ist eine kleine Spielerei, man spart sich 3 Tastendrücke :)

  • Ich habe es heute noch mal ausprobiert. Es ist jetzt so, dass wenn ich eine lircd.conf in /storange/.config ablege die Harmony Fernbedienung gar nicht mehr funktioniert. :( Ohne die lircd.conf funktioniert die Harmony Fernbedienung.

    Der Transmitter geht mit meiner jetzigen Libreelec Version (Libreelec Alpha Version 18 von Indrix mit Zattoo Dash Patch) gar nicht mehr, auch wenn ich den MCE Receiver abklemme. Wenn ich ein irsend Befehl absetzte, passiert nichts, weder auf lircd-lirc0 so wie lircd-lirc01.
    # /usr/bin/irsend -d /run/lirc/lircd-lirc0 SEND_ONCE MedionTV KEY_POWER

    Es sieht so aus, als ob es einfriert. Die zwei lircd Dienste sind gestartet, jedoch werden diese nach ca. 5 Minuten Zeit von alleine beendet.

    [cbox]
    LibreELEC:~ # ps aux |grep lirc
    242 root 0:00 /usr/sbin/eventlircd -f --evmap=/etc/eventlircd.d --socket=/run/lirc/lircd
    464 root 0:00 {lircd_helper} /bin/sh /usr/lib/libreelec/lircd_helper lirc1:default:lircd.conf.rpi
    495 root 0:20 /usr/sbin/lircd --driver=default --device=/dev/lirc1 --output=/run/lirc/lircd-lirc1 --pidfile=/run/lirc/lircd-lirc1.pid --release=_LIRCUP /storage/.config/lircd.conf
    543 root 0:00 {lircd_helper} /bin/sh /usr/lib/libreelec/lircd_helper lirc0:default:lircd.conf
    564 root 0:20 /usr/sbin/lircd --driver=default --device=/dev/lirc0 --output=/run/lirc/lircd-lirc0 --pidfile=/run/lirc/lircd-lirc0.pid --release=_LIRCUP /storage/.config/lircd.conf
    598 root 0:00 {kodi.sh} /bin/sh /usr/lib/kodi/kodi.sh --standalone -fs --lircdev /run/lirc/lircd

    602 root 0:15 /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd
    [/cbox]

    [cbox]
    LibreELEC:~ # cat /flash/config.txt
    dtoverlay=lirc-rpi
    dtparam=gpio_out_pin=18
    [/cbox]


    Der Transmitter wird korrekt erkannt, dmesg Output:
    [cbox]
    [ 4.156200] lirc_dev: IR Remote Control driver registered, major 244
    [ 4.199408] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
    [ 4.314666] Console: switching to colour dummy device 80x30
    [ 4.368036] usb 1-1.3.1: reset high-speed USB device number 6 using dwc_otg
    [ 4.701310] Registered IR [definition=10,0][definition='3','0']keymap[/definition][/definition] rc-rc6-mce
    [ 4.701920] input: Media Center Ed. eHome Infrared Remote Transceiver (0471:0815) as /devices/platform/soc/http://3f980000.usb/usb1/1-1/1-1.3…0/rc/rc0/input2
    [ 4.708624] rc rc0: Media Center Ed. eHome Infrared Remote Transceiver (0471:0815) as /devices/platform/soc/http://3f980000.usb/usb1/1-1/1-1.3….3.3:1.0/rc/rc0
    [ 4.775931] rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0
    [ 4.775947] IR LIRC bridge handler initialized
    [ 4.814270] IR RC6 protocol handler initialized
    [ 5.057991] mceusb 1-1.3.3:1.0: Registered Philips eHome Infrared Transceiver with mce emulator interface version 1
    [ 5.058017] mceusb 1-1.3.3:1.0: 2 tx ports (0x3 cabled) and 2 rx sensors (0x1 active)
    [ 5.058402] usbcore: registered new interface driver mceusb
    [ 5.137976] lirc_rpi: auto-detected active high receiver on GPIO pin 18
    [ 5.138295] lirc_rpi lirc_rpi: lirc_dev: driver lirc_rpi registered at minor = 1
    [ 5.138302] lirc_rpi: driver registered!
    [ 5.150820] IR NEC protocol handler initialized
    [/cbox]

    Ich habe dann eine andere Libreelec Version eingespielt: LibreELEC-RPi2.arm-9.0-Milhouse-20170712213855-#0712-gc9585fb.tar
    Damit hat der Transmitter funktioniert, jedoch ging dann die Harmony FB nicht mehr, auch nicht mit den passender Config:

    LibreELEC:~/.config # cat lircd.conf

    Spoiler anzeigen


    begin remote

    name MedionTV
    bits 12
    flags RC5|CONST_LENGTH
    eps 30
    aeps 100

    one 917 866
    zero 917 866
    plead 942
    gap 114269
    toggle_bit_mask 0x0

    begin codes
    KEY_TV 0x878 0x000
    KEY_POWER 0x84C 0x000
    KEY_POWER2 0x84C 0x000
    KEY_VOLUMEDOWN 0x851 0x000
    KEY_VOLUMEUP 0x850 0x000
    KEY_SLEEP 0x86A 0x000
    KEY_MUTE 0x04D 0x000
    KEY_CHANNELDOWN 0x061 0x000
    KEY_CHANNELUP 0x060 0x000
    KEY_OK 0x075 0x000
    end codes

    end remote

    begin remote

    name mcetest
    bits 16
    flags RC6|CONST_LENGTH
    eps 30
    aeps 100

    header 2624 897
    one 425 459
    zero 425 459
    pre_data_bits 21
    pre_data 0x37FF0
    gap 105611
    min_repeat 2
    # suppress_repeat 2
    # uncomment to suppress unwanted repeats
    toggle_bit_mask 0x8000
    rc6_mask 0x100000000
    frequency 38000

    begin codes
    KEY_OK 0x7BDD
    KEY_BACK 0x7BDC
    KEY_MUTE 0x7BF1
    end codes

    end remote

    Dazu wird bei der Libreelec Version mein Wlan Stick nicht mehr erkannt, bzw. die Firmware (rt2870.bin) wurde nicht gefunden. :(

  • Das sollte man nicht mehr verwenden !! Das fällt mit K18 dann weg.dtoverlay=gpio-ir ist der weg den man heute nehmen sollte

    https://www.msldigital.com/pages/support-for-remote

    Wenn ich das in der config.txt ersetzte, findet er den GPIO Transmitter glaube ich nicht mehr.
    Ich habe das mit dem RPi2 in der Küche ausprobiert, wo das beides vorher mit dtoverlay=lirc-rpi funktionierte, also Transmitter und die X10 Fernbedienung.

    Hier der dmesg Output:
    [cbox]
    LibreELEC:~ # dmesg | grep lirc
    [ 12.067034] lirc_dev: IR Remote Control driver registered, major 244
    [ 12.148400] rc rc1: lirc_dev: driver ir-lirc-codec (gpio-rc-recv) registered at minor = 0
    [ 12.887789] input: lircd-uinput as /devices/virtual/input/input4
    [ 13.081116] input: eventlircd as /devices/virtual/input/input5
    [/cbox]

    [cbox]
    LibreELEC:~ # /usr/bin/irsend -d /run/lirc/lircd.socket SEND_ONCE jtc KEY_POWER

    hardware does not support sending
    Error running command: Input/output error
    [/cbox]

    [cbox]
    LibreELEC:~ # cat /flash/config.txt
    #dtoverlay=lirc-rpi
    dtoverlay=gpio-ir
    dtparam=gpio_out_pin=23
    [/cbox]

    [cbox]
    LibreELEC:~ # ps aux | grep lirc
    262 root 0:00 /usr/sbin/eventlircd -f --evmap=/etc/eventlircd.d --socket=/run/lirc/lircd
    367 root 0:00 /usr/sbin/lircd --nodaemon /storage/.config/lircd.conf
    369 root 0:00 /usr/sbin/lircd-uinput --add-release-events
    430 root 0:00 {kodi.sh} /bin/sh /usr/lib/kodi/kodi.sh --standalone -fs --lircdev /run/lirc/lircd
    435 root 4:46 /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd
    [/cbox]

    Im Wohnzimmer, also dort wo der Transmitter gar nicht funktioniert, friert irsend einfach ein, also mit gpio-ir und auch dtoverlay=lirc-rpi
    Das kann man nur mit strg + c abbrechen.

    Einmal editiert, zuletzt von v00dy (13. August 2017 um 17:08)

  • Viele Informationen habe ich nicht gefunden, aber es ließt sich so, als ob gpio-ir nur für den Empfang zuständig ist:

    [cbox]
    Name: gpio-ir
    Info: Use GPIO pin as rc-core style infrared receiver input. The rc-core-
    based gpio_ir_recv driver maps received keys directly to a
    /dev/input/event* device, all decoding is done by the kernel - LIRC is
    not required! The key mapping and other decoding parameters can be
    configured by "ir-keytable" tool.
    Load: dtoverlay=gpio-ir,<param>=<val>
    Params: gpio_pin Input pin number. Default is 18.

    gpio_pull Desired pull-up/down state (off, down, up)
    Default is "down".

    rc-map-name Default rc [definition=10,0][definition='3','0']keymap[/definition][/definition] (can also be changed by

    ir-keytable), defaults to "rc-rc6-mce"

    [/cbox]
    Quelle: https://github.com/raspberrypi/fi…overlays/README

    Fragt sich nur, wenn lirc-rpi raus fliegt, wie man dann den Transmitter ansteuert.

    Ich gebe erstmal auf... :evil: ist ja auch nicht so wichtig und wenn ich mal wieder lust habe, probiere ich das über ein esp8266 zu lösen.

  • Ich habe jetzt was einfacheres für mich gefunden. Nachdem irsend nach einen Libreelec Update (Millhouse Kodi 18) auch in der Küche ausgefallen ist, habe ich das mit einem ESP8266 und der Software http IR Blaster umgesetzt: https://github.com/mdhiggins/ESP8266-HTTP-IR-Blaster

    Das funktioniert sehr gut, der ESP stellt per Wifi ein Webinterface zu Verfügung wo man die IR Codes (NEC, Sony, Panasonic, JVC, Samsung, Sharp, Coolix, Dish, Wynter, Roomba, RC5/RC6, RAW) mittels IR Empfänger anlernen bzw. empfangen kann.
    Diese werden im Webinterface geloggt und die IR Codes können dort abgerufen werden und per http Befehl auch wieder an z.B. ein TV Gerät gesendet werden, mittels der IR Transmitter LED.

    Ich habe es so konfiguriert, das beim RPi mittels autostart.sh beim Systemstart mittels wget, ein http Befehl an den ESP gesendet wird und dieser den TV einschaltet.

    Mittels alexa und habridge geht das auch per Sprachbefehl.

    Ich habe zwei IR Blaster gebaut, einen mit einem NodeMCU für die Küche, der klebt unter dem Küchentisch. :)
    Zu sehen auf Bild 1-2, ganz rechts: https://www.dropbox.com/sh/wwtf24cpoyz…hR7ywEM_XGnNJ7a

    Diesen würde ich Anfängern auch sehr empfehlen. Da man praktisch alles mit Steckbrücken ohne Löten stecken kann.
    Zudem wichtig: der NodeMCU hat einen 5 Volt USB Anschluss, für die Stromversorgung und man kann ihn damit auch direkt mit der Arduino Software bespielen.

    Und noch einen für das Wohnzimmer im Gehäuse, mit einem ESP07, Bild 3-5 (dieser muss mit 3,3v gespeist werden und man benötigt einen Seriellen Adapter zum flashen).

    Ich habe die beiden IR Dioden ohne Widerstände und Transistor angeschlossen, das funktioniert bei meiner Entfernung auch so zuverlässig.

    2 Mal editiert, zuletzt von v00dy (17. September 2017 um 18:09)

  • Kann ich die Tage gerne machen, so profitieren auch andere davon :)

    Ich habe noch andere Sachen mit einem ESP8266... unter anderem:
    Ein Briefkastenwächter, der mich per Pushbullet oder eMail benachrichtigt wenn Post eingeworfen wird: https://github.com/8n1/briefkaste…und-ipcam-event

    Ein paar Sonoffs Relays umgeflasht, auf die ESPeasy Software. Diese können per Fhem und Alexa gesteuert werden (noch in der Lernphase).

    Und derzeit versuche ich mich an ein Fenster Sensor mit einem ESP07, der den Zustand an ein MQTT Server sendet. Das soll mal später als Heizkörpersteuerung dienen: https://github.com/8n1/ESP8266-Tiny-Door-and-Window-Sensor

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!