Day 16: Universal Remote-Control

The door today reveals the counterpart to yesterday’s component, namely an IR diode. Now you can build a real remote-control for your TV and control it conveniently via smartphone and website.  We will use the following setup.

Der Aufbau der Fernbedienungen mit IR-Empfänger und Sendediode

Setup of remote controls with IR receiver and transmitter diode

Select the program for today. The board will start again in headless mode; the board’s website will not be available but you will have the board’s MQTT feature. To switch to default mode, remove the jumper on pin 23 and restart the board.

Der Flow des heutigen Tages

The flow today

Our flow today looks rather complicated; however, basically these are just all UI buttons writing to the same topic. But before you import and start the flow, rewrite all topics to your personal topic using the "Replace all" trick. Again, disable all previous flows. Now start the flow and switch to the UI page. You will see a bunch of buttons that are not yet calibrated to your TV. Go to the second tab labelled Day16 Receive IR Codes. The page looks a bit unexciting because it has only a text box, but it is very useful. Point now a remote control at the receiver and press a key and a text will appear in the window that may look like this:

{"cmd":"ir_send","type":3,"value":551494365,"length":32}

The text was received by NodeESP/[PID]/ir/recv/out and contains the data of the received code. Very few small things were changed by the flow. On the one hand repetition codes are filtered out and on the other hand, the command was changed from ir_recv to ir_send. This allows you to basically just copy the text and insert it into the payload area of  a button. If pressed, the button sends the command with the data of the code to the board at once, which will send the code via IR diode to the TV. Like that you are able to hardcode and create your own remote code by code.

So werden die Kommandos als Payload des Buttons gespeichert

Commands are saved as payload of the button

Note: The GUI layout is based on an average modern remote. Icons on the buttons indicate its function. You can find a list of useful buttons on the website https://klarsys.github.io/angular-material-icons/.

Das User Interface

The UI

34 Comments

  1. paulaner

    Hallo f.k.,
    warum wurden nicht die vorhanden Pins und Funktionen genutzt?

    Zitat:
    4.8.
    IR Remote Control
    ESP8266EX currently supports one infrared remote control interface. For detailed pin
    definitions, please see Table 4-8 below.

    MTMS 9 IO14 IR TX
    GPIO5 24 IO 5 IR Rx

    The functionality of Infrared remote control interface can be implemented via software
    programming. NEC coding, modulation, and demodulation are supported by this interface.
    The frequency of modulated carrier signal is 38 kHz, while the duty ratio of the square wave
    is 1/3. The transmission range is around 1m which is determined by two factors: one is the
    maximum current drive output, the other is internal current-limiting resistance value in the
    infrared receiver. The larger the resistance value, the lower the current, so is the power, and
    vice versa.

    Reply
  2. paulaner

    Hallo,
    ich bin bestimmt nicht der Einzige der an Weinachtsbaumbeleuchtung gedacht hat.

    Nach vielen Jahren mit einer 'herkömmlichen' elektrischen Weihnachtsbaumbeleuchtung wurd es Zeit eine 'Wireless'
    Beleuchtung anzuschaffen. Nun hatten wir seit ein paar Jahren so eine, mir IR Ferbedienung.

    Der Adventskalender mit seinem IR-Ferbedienungs Experiment kam gerade Recht.

    Meine FB ist sehr einfach. On/Off fertig, wärend es noch verschiedene Codes, die während des Einschaltens gesendet werden gibt, somit erhält man verschiedene Effekte der Beleuchtung, Stetig oder Flackern in verschiedenen Abstufungen usw..

    Hier mal mein Flow, UI, Steckplatine

    Reply
  3. Kai

    Samsung-TVs gehen scheinbar auch nicht: Es wird Typ 7 mit 32 bit? Länge erkannt. Etwas mehr Dokumentation zur Codenotation wäre angebracht…

    Reply
    1. paulaner

      stachelt es nicht an, selber danach zu suchen?
      Muss man denn alles vorgeworfen bekommen?

      Reply
    2. paulaner

      Die wichtigsten Protokolle und Codeverfahren im Bereich der Unterhaltungselektronik sind der RC5-Code, der RC6-Code und der RECS80-Code (alle von Philips), der NEC-Code, der Sharp-Code, der Sony-Code, der RCMM-Code und das Toshiba-Micom-Format. Alle diese Codeverfahren und auch ähnlich aufgebaute Protokolle werden vom IRE8 unterstützt. Damit dürfte nahezu jede handelsübliche IR-Fernbedienung anlernbar sein.

      Das werden die Typen sein, wie die Zuordnung erfolgt entzieht sich auch meiner Kenntnis, ohne einen Blick in den Code.

      Reply
      1. mKenfenheuer

        Leider funktioniert weder die Fernbedienung für ein Panasonic Soundsystem SA-PT160, noch eine XBoxOne Fernbedienung.
        Beide liefern als Ausgabe type -1. Ich nehme mal an das bedeutet der IR-Code konnte nicht decodiert werden?

        Bsp:
        {"cmd":"ir_send","type":-1,"value":3685739007,"length":32}

        Denn wenn ich diesen Payload in einen Button lege, tut sich bei der IR-Diode nichts.

        Reply
  4. Daniel G

    Hallo Fabian,

    Danke für das Experiment heute, ich finde, das ist eines der Interessantesten der letzten Jahre.

    \()/

    Reply
  5. Bernd

    Meine Erfahrungen:

    – Der Tipp hier mit dem "2. Tab" (127.0.0.1:1880/ui/#/1) war sehr gut, das hat langes Suchen erspart und war aus dem Begleittext nicht ersichtlich.

    – Bei meinem Panasonic Fernseher hat gar nichts funktioniert. Der NodeESP kennt den Code wahrscheinlich nicht, es wird bei "Type" immer "-1" erkannt und gesendet ("type":-1), was anscheinend nicht funktioniert. Auch bei der Power-Taste.

    – Beim billigen DVD-Player war es dann wieder "type":3 und es hat alles funktioniert, allerdings nur, wenn die IR-Diode sehr zielgerichtet sendet. Ein Vergleich mit der Handy-Kamera zwischen Original-FB und NodeESP IR-Diode zeigt einen enormen Unterschied in der Sendeleistung ("blendender" Strahl vs. schwaches, kurzes Flackern).

    – Da ich bei diesem Experiment zum 1. Mal auch den Batteriebetrieb getestet habe, ist mir aufgefallen, dass Akkus (1,2V statt 1,5V) nicht funktionieren! Anscheinend sind 3,6 V für den Board-Spannungswandler zu wenig, die 4,5 V mit Batterien hat dann funktioniert. (War da vielleicht irgendwann mal ein Hinweis dazu, den ich überlesen habe?) Bei den Akkus hat die Onboard-LED nur kurz grün aufgeleuchtet, bei den Batterien leuchtet die LED dann wieder dauerhaft, so wie im Netzteilbetrieb. Am Anfang dachte ich, dies wäre so gewollt, aber als gar nichts funktionierte, bin ich der Sache dann nachgegangen.

    Reply
    1. paulaner
      1. Bernd

        Super, danke Dir. Die Seite ist sehr hilfreich auch bei anderen Fragen. Da haben mir anscheinend nur 0,1V gefehlt. Ab einer Spannung von 3,7V hätte es wohl laut den Specs funktioniert. Also keine 3 Akkus sondern 3 Batterien verwenden, dann geht es auch sicher.

        Reply
        1. paulaner

          Hallo Bernd,
          laß dich nicht täuschen, LiPo Akku werden so angegeben, 3,7V … mA oder W.
          Aber geladen, haben diese 4,2V Schlußspannung und die werden lange Zeit gehalten.

          Auf dem Board ist ein Spannungswandler drauf, xxx1117, dieser macht 3.3V.
          Wo sollen die herkommen? Es muß höher reingepowert werden.
          Von dem Spannungsabfall darüber rede ich nicht einmal, aber dieser Baustein um richtig arbeiten/regeln zu können braucht etwas mehr Spannung, Reseve halt.

          Dann gibt es ja noch den 5V Pin auf dem Board, wo sollen die herkommen? Bei USB Anschluß wäre das nicht das Problem, dieser liefert ja 5V. Gemessen hab ich noch nicht im Batteriebetrieb. Step-Up Wandler benötigen immer noch Kapazitäten und/oder Induktivitäten.
          Hab ich auch keine gesehen.

          Reply
          1. paulaner

            Batterie 4,55V Leerlauf
            4,34V Belastung/Board

            Pin 5V 4,28V
            Pin 3v3 3,18V

  6. Neuling

    Hallo in die Gemeinde.
    Die Versuche bis heute konnte ich bis auf Tag 14 nachvollziehen und funktionieren soweit auch.
    Mein Problem liegt bei Tag 14 : Nach Aufbau des Versuchs kann ich die LEDs über die Hardware als auch über das Node-Red Dashboard steuern. Soweit i.o. Jedoch werden die Steuerbefehle über HIVEMQ nicht vom Board umgesetzt. Welches Topic muss ich in Publish genau einstellen? NodeESP/[PID]/pwm/state/set ( wobei PID natürlich angepasst ist ) funktioniert bei mir nicht. Unter Subscriptions habe ich NodeESP/[PID]/# und kann somit sämtliche Meldungen mitlesen.

    Reply
    1. paulaner

      Hallo,

      im Flow bei Node-Red sind alle Topics mit [PID], persönliche ID des Boards, anzupassen!!!

      Reply
      1. Neuling

        Hallo paulaner,
        wie du vielleicht in meiner obigen Problembeschreibung überlesen hast, habe ich natürlich im Flow bei Node-Red alle Topics mit meiner persönlichen Board-ID angepasst.
        Mein Problem liegt beim Senden über HIVEMQ : unter Connection bin ich mit dem Host broker.fkainka.de Port 8000 verbunden.
        Bei Subscriptions habe ich NodeESP/xxxyyyzzz/# eingestellt und bekomme sämtliche Meldungen angezeigt. (xyz ist pers.ID)
        Wenn ich unter Publish den Topic NodeESP/xxxyyyzzz/pwm/state/set einstelle und {„cmd“:“set_pwm_state“, „LED1“:255} senden will, ändert sich an der Leuchtkraft der über das Node-Red Dashboard eingestellten 10% nichts. Die LED 1 müsste dann doch 100% leuchten, oder ??????
        Deshalb meine Frage, welches Topic einzustellen ist, um über HIVEMQ die LED zu beeinflussen?

        Reply
        1. paulaner

          der Port des Brokers ist aber 1883!

          Reply
  7. finerich

    Bei mir funktioniert alles…bis auf das senden. Selbst wenn ich mit dem Handy filme ist nichts zu erkennen. Kann mir bitte jemand weiterhelfen(bin am verzweifeln:))

    Reply
  8. Heinz

    Guten Tag Zusammen,

    Bei mir funktioniert das senden mit der IR Diode leider nicht. Habe schon vieles versucht. Ich sehe auch kein flackern, wenn ich mit der Handy Kamera in die IR Diode schaue. Der Empfang geht prima, aber eben das senden nicht.
    Event. ist die IR Diode defekt? Habe schon versucht das Programm nochmals zu laden. Aber es geht nicht. IR Diode ist richtig angeschlossen gemäss Bild.

    Hat jemand noch eine Idee?

    Gruss
    Heinz

    Reply
    1. fk (Post author)

      Hallo, mit einer digitalen Kamera, z.B. von einem Smartphone, kannst du sehen, ob die Diode überhaupt funktioniert, indem du die Diode durch die Kamera betrachtest und einen Befehl sendest.

      Reply
      1. Heinz

        Hallo Fabian,

        Das habe ich auch schon gemacht, mit meiner Handy Kamera. Ich sehe keine aktivität im Kamara Bild.
        Schaue ich aber mit dem Handy in die IR Diode der Fernbedienung, dann sehe ich ein pulsierendes Licht auf dem Handy Display. Im Bild unten , wie ich es verkabelt habe.

        Reply
        1. Chris

          +1/Ist bei mir ganz genau das Gleiche.

          Sehe in meiner Handy Kamera bei Knopfdruck meine FB gleissend hell, bei der Diode keinen Unterschied.
          Und wenn ich das Kommando publishe, das meine FB absetzt, tut sich ebensowenig.
          Hell wird sie auch nicht.

          Was nun? Pech gehabt? VG Chris

          Reply
        2. Marco81

          Bist du dir sicher dass es die Sendediode ist? Es sieht aus wie der Fototransistor.
          Die IR-Diode ist dunkler, zumindest bei mir.

          Reply
          1. Chris

            Hi, der Fototransistor hat drei Beine. Empfangen, der Transistor, funktioniert bei mir.
            Als Sender funktionieren bzw. leuchten bei mir gar keine Diode. #$@…

          2. Bernd

            Marco81 hat vielleicht recht. Der Fototransistor von Tag 9 hat auch nur 2 Beine, genauso wie die IR-Diode von Tag 16. Eine Verwechslung ist durchaus möglich. Der Fototransistor ist weiß, die IR-Diode ist bläulich. Laut dem Foto würde ich auch auf eine Verwechslung tippen.

        3. Jan Jacob

          Du hast einen Phototransistor benutzt. Du musst die blaue (dei so wie eine diode aussieht) nehmen.
          Viel Glück.
          Mfg Jan Jacob

          Reply
    2. paulaner

      Hallo,

      teste mal mit einem Multimeter die IR-Diode. Diodentest.
      Langes Bein Minus.
      Bei Beleuchtung kleiner Widerstand (>100 Ohm), bei Verdunklung groß (>500 Ohm).

      Reply
      1. Chris

        Hi – Danke für den Tipp!

        Wenn ich mit der Taschenlampe ganz kräftig draufleuchte, fällt der Widerstand.
        Im Aufbau leuchtet allerdings überhaupt nix, im Gegensatz zur Fernbedienung, die im Handy stark strahlt.
        Empfangen geht, mit dem Subscriber sieht man Messages von node-red und mit dem Multimeter ein klein wenig Spannungszunahme im Rasterplatinenaufbau.

        Hast Du noch eine Idee oder ist das Ding einfach doch defekt?

        TIA Chris

        Reply
        1. paulaner

          Hallo,

          wie auf dem Bild weiter oben von Heinz? ist die IR-Diode das glasige runde mit zwei Anschlüssen.
          Ich brauche nur mit der Hand das Ding etwas bedecken und schon geht der Widerstand hoch.

          Ich teste morgen mal noch mehr, habe 100te davon, und werde sehen was dabei rauskommt.

          Aber auch der 2.Test, mit einer IR-Diode aus dem Advendskalender 2017 hat funktioniert.
          Am Abend, vor dem Monitor, ohne Licht großer Widerstand, mit Taschenlampe kleiner Widerstand.

          Die IR-Diode bitte nicht verwechseln mit einer Fernbedienung.

          Die FB sendet Impulse an die Diode (FB Code), die Impulse, da sehr kurz, also mit hoher Frequenz, sind höher als normalerweise die Ströme die für diese Diode ausgelegt sind.

          Batterie dran und ins Handy schauen hat keinen Sinn, höchstens die IR-Diode geht davon kaputt!!!
          Es ist keine LED!!!

          Reply
          1. Marco81

            Dass es keine LED ist kann ich nicht zustimmen, es ist nur ein für uns unsichtbares Lichtspektrum. Es gibt ja auch Infrarotscheinwerfer auf Basis von IR-LEDs. Unter 100mA sollten es bei Dauerbetrieb sein, mit 20mA (wie bei LEDs meist Maximum) ist man meist auf der sicheren Seite.
            Sichere Idee ob man einen Transistor oder LED hat:
            In Reihe mit einer LED und dem 1k-Widerstand zwischen GND und 5v, ist es ein Transistor dann wird sich bei Helligkeitsänderung was tun, ist es eine IR-LED dann sollte man es in der Kamera sehen.

  9. paulaner

    Hallo, funktionierte auch auf Anhieb.
    Aber bei dem Satz,
    Zitat:
    Deswegen gehen Sie zunächst auf den zweiten Tab mit …

    Es gab kein zweiten Tab, ich arbeite mit Win 8.1 und Firefox.
    127.0.0.1:1880/ui/#0 bringt die UI Fernbedienung.
    127.0.0.1:1880/ui/#1 bringt was der Tab 2, 'Day16 Receive IR Codes' sein soll.
    Hier kann man den Code der FB auslesen.

    Mit meinem TV, Marke Panasonic und der FB hat es nicht geklappt, nur der 'Power' Befehl, Fehlanzeige.
    Der Aufbau funktioniert, übertragung der Codes, senden per UI, Infraratdiode sendet, sichtbar da gleichzeitig die IR Empfangsdiode mitläuft, ich habe außerdem Debugger gesetzt.

    Habe es dann mit einer China FB versucht, einlesen, kopieren, senden ok.
    Nun noch der Feldtest.

    Reply
    1. paulaner

      127.0.0.1:1880/ui/#/0 bringt die UI Fernbedienung.
      127.0.0.1:1880/ui/#/1 bringt was der Tab 2, 'Day16 Receive IR Codes' sein soll.

      Das sind die richtigen Links, habe ein Schräger vergessen, sorry.

      Reply
    2. Frank

      Schon probiert auf die drei Striche links oben zu klicken? Da sollte das Menü für die Tabs erscheinen.

      Reply
  10. jue

    Hmm, bei mir war heute ein Teil mit vier Beinen drin. Sieht eher nach RGB-LED aus als nach IR-Sender. Jetzt muss ich wohl die anderen Türen öffnen, um den Sender zu suchen!? Ärgerlich.

    Reply
  11. Marco81

    Funktioniert leider (wie erwartet) nicht mit jeder Fernbedienung, dafür müsste schon eine Analyse wie bei Lirc geschehen, aber zumindest mit dem Fernseher funktioniert es.
    Mit dem Sat-Receiver leider nicht.
    Mit den Codes muss man testen, der erste ist nicht immer der richtige.

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.