MQTT2 IR-Codes senden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

PJH
Beiträge: 104
Registriert: 23. Mai 2017 08:32
Wohnort: Duisburg
Kontaktdaten:

MQTT2 IR-Codes senden

Beitrag von PJH »

Hallo miteinander,

ich benutze openHAB2, 2.5.0.M2 mit eingebautem MQTT-Binding (David Graeff).

Wer kann mir wohl sagen, wie ich IR-Codes direkt zu einem Gerät (YTF IR Bridge Modul, mit Tasmota als Sonoff geflasht (von Pearl)) senden kann.

Mit MQTT.fx bekomme ich das hin, weiß aber nicht wie mit openHAB.

Vielen Dank und einen schönen Gruß.

PJH

PJH
Beiträge: 104
Registriert: 23. Mai 2017 08:32
Wohnort: Duisburg
Kontaktdaten:

Re: MQTT2 IR-Codes senden

Beitrag von PJH »

Kann mir denn niemand eine Hinweis geben?

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: MQTT2 IR-Codes senden

Beitrag von sihui »

PJH hat geschrieben: 29. Sep 2019 18:30 Kann mir denn niemand eine Hinweis geben?
https://community.openhab.org/t/solved- ... v2-5/64419
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

PJH
Beiträge: 104
Registriert: 23. Mai 2017 08:32
Wohnort: Duisburg
Kontaktdaten:

Re: MQTT2 IR-Codes senden

Beitrag von PJH »

Danke.

Ich schließe aus den Beiträgen, dass man den IR-Code mit Openhab-MQTT(2) nicht direkt senden kann?

Schöne Grüße. PJH

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: MQTT2 IR-Codes senden

Beitrag von eiGelbGeek »

PJH hat geschrieben: 4. Okt 2019 19:59 Danke.

Ich schließe aus den Beiträgen, dass man den IR-Code mit Openhab-MQTT(2) nicht direkt senden kann?

Schöne Grüße. PJH
Ja aber die Lösung steht doch direkt im 2ten Post des Links .... ;-)

Wenn du ein Lötkolben hast, kannst du dir das Dingen aber auch sehr einfach selbst bauen ..... WeMos Mini D1 und eine IR Diode und paar Zeilen Arduino Code :-) Man könnte auch gucken ob man den Code nicht sogar direkt auf dein vorhandenes Gerät flashen kann.... müsste man sich mal genauer anschauen ... denke schon das das gehen würde.

Hier mal ein Beispiel (für einen Teufel Subwoofer) Den Code kann man ganz bestimmt noch optimieren und besser schreiben :ugeek:
Ich habe einen WeMos direkt in den Subwoofer eingebaut und die IR Diode vor dem IR Empfänger geklebt (Heißkleber und natürlich direkt im Gehäuse) und schon ist der Subwoofer "Smart"

Code: Alles auswählen

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>

const char* ssid = "DEINE-WLAN-SSID";
const char* password = "WLAN-PASSWORT";

const char* mqtt_server = "192.168.1.200";

#define IR_LED 4  // (D2)

IRsend irsend(IR_LED);

WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.println();
  //Message
  byte* p = (byte*)malloc(length);
  std::string message ( reinterpret_cast<char const*>(payload), length ) ;
  if (strcmp(topic,"/mqtt_topic/wohnzimmer/subwoofer/ir/Volume_Up/command")==0){
    if (message == "1") {
      irsend.sendNEC(IRCODE, 32);
      client.publish("/mqtt_topic/wohnzimmer/subwoofer/ir/Volume_Up/state","0");
      Serial.println("Volume_Up");
    }
  }
  if (strcmp(topic,"/mqtt_topic/wohnzimmer/subwoofer/ir/Volume_Down/command")==0){
    if (message == "1") {
      irsend.sendNEC(IRCODE, 32);
      client.publish("/mqtt_topic/wohnzimmer/subwoofer/ir/Volume_Down/state","0");
      Serial.println("Volume_Down");
    }
  }
  if (strcmp(topic,"/mqtt_topic/wohnzimmer/subwoofer/ir/140Hz/command")==0){
    if (message == "1") {
      irsend.sendNEC(IRCODE, 32);
      client.publish("/mqtt_topic/wohnzimmer/subwoofer/ir/140Hz/state","0");
      Serial.println("140Hz");
    }
  }
  if (strcmp(topic,"/mqtt_topic/wohnzimmer/subwoofer/ir/110Hz/command")==0){
    if (message == "1") {
      irsend.sendNEC(IRCODE, 32);
      client.publish("/mqtt_topic/wohnzimmer/subwoofer/ir/110Hz/state","0");
      Serial.println("110Hz");
    }
  }
  if (strcmp(topic,"/mqtt_topic/wohnzimmer/subwoofer/ir/80Hz/command")==0){
    if (message == "1") {
      irsend.sendNEC(IRCODE, 32);
      client.publish("/mqtt_topic/wohnzimmer/subwoofer/ir/80Hz/state","0");
      Serial.println("80Hz");
    }
  }
  if (strcmp(topic,"/mqtt_topic/wohnzimmer/subwoofer/ir/50Hz/command")==0){
    if (message == "1") {
      irsend.sendNEC(IRCODE, 32);
      client.publish("/mqtt_topic/wohnzimmer/subwoofer/ir/50Hz/state","0");
      Serial.println("50Hz");
    }
  }
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    String clientId = "WeMos_TeufelSubwoofer_IR";
    // Attempt to connect
    if (client.connect(clientId.c_str())) {
      Serial.println("connected");
      client.subscribe("/mqtt_topic/wohnzimmer/subwoofer/ir/Volume_Up/command");
      client.subscribe("/mqtt_topic/wohnzimmer/subwoofer/ir/Volume_Down/command");
      client.subscribe("/mqtt_topic/wohnzimmer/subwoofer/ir/140Hz/command");
      client.subscribe("/mqtt_topic/wohnzimmer/subwoofer/ir/110Hz/command");
      client.subscribe("/mqtt_topic/wohnzimmer/subwoofer/ir/80Hz/command");
      client.subscribe("/mqtt_topic/wohnzimmer/subwoofer/ir/50Hz/command");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  irsend.begin();
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {
  if (WiFi.status() != WL_CONNECTED) {
      setup_wifi();
  }
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: MQTT2 IR-Codes senden

Beitrag von eiGelbGeek »

Sollte gehen... letzter Satz in diesen Artikel xD

https://www.heise.de/ct/artikel/Pearls- ... 05906.html

Kostet derzeit 19,95 bei Pearl ... ist mir aber zu teuer um es nur für dich zu testen... ich habe ja kein Anwendungsfall dafür. :mrgreen:

madmike
Beiträge: 272
Registriert: 15. Apr 2018 17:09

Re: MQTT2 IR-Codes senden

Beitrag von madmike »

Ich nutze den Broadlink black bean, der ist super und läßt sich wunderbar in Openhab intrigieren.
https://www.amazon.de/gp/product/B07DPH ... UTF8&psc=1
mfg
Madmike

Mowgli
Beiträge: 27
Registriert: 30. Jan 2019 13:47

Re: MQTT2 IR-Codes senden

Beitrag von Mowgli »

Hallo,

ich habe das in 2 Post vorher erwähnte Pearl Teil. Habe Tasmota auf den ESP 8266 gepackt und sende jetzt damit beliebige IR Codes per MQTT raus.
Funktionert perfekt.

Grüße

Mowgli

PJH
Beiträge: 104
Registriert: 23. Mai 2017 08:32
Wohnort: Duisburg
Kontaktdaten:

Re: MQTT2 IR-Codes senden

Beitrag von PJH »

Hallo, danke erst einmal für die nun regen Antworten.
Ich bin noch nicht dazu gekommen, mir alles anzuschauen oder gar auszuprobieren.
Aber @Mowgli, per MQTT(.fx) aussenden kann ich die Codes auch, aber wie aus openHAB2?

Mein Problems ist folgendes. Ich möchte die batteriebetriebenen Krinner-Kerzen gerne per openHab2 an- und ausschalten.

Ebenso möchte ich meine (ältere) Revox Anlage über openHAB steuern.

Daran hat sich bereits Logitec (mit der Fernbedienung Harmony Elite) die Zähne ausgebissen. Sie bekommen die Codes nicht auf ihre Fernbedienung, da der Krinner-Kerzenhersteller (China), als auch Revox ein unbekanntes Protokoll verwendet.

Ich habe mir nun gedacht, das mit der Pearl-IR-Fernbedienung zu realisieren, da ich darüber in der c'T gelesen habe (habe auch Kontakt aufgenommen, aber viel kommt da auch nicht), aber auch die erkennt die verwendeten Protokolle nicht.

@eiGelbGeek, @madmike: Ich muss mir eure Vorschläge erst noch anschauen, bin noch nicht dazu gekommen.

Danke nochmals und schöne Grüße. PJH

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT2 IR-Codes senden

Beitrag von udo1toni »

Eine kurze Recherche im Internet bringt den Begriff ITT-Protokoll für Revox zutage, weiterhin die Information, dass auch andere Systeme damit Probleme haben :)

Es gäbe eine pragmatische Bastellösung, nämlich (z.B. über ebay) eine Zweitfernbedienung zu kaufen und diese so zu ertüchtigen, dass sie z.B. mittels MQTT alle Befehle per Hardware senden kann.
Zumindest für die Krinner Weihnachtsbeleuchtung wird das auf jeden Fall funktionieren, da dort nur eine Taste "gedrückt" werden muss, es reicht ein ESP8266 plus evtl. noch ein paar Transistoren und Widerstände.

Bei Revox wird es vermutlich aufwändig werden, diesen Weg zu gehen, dort sind es ja erheblich mehr Tasten.
Früher (TM) gab es bei Revox oftmals auch eine Schnittstelle, um die Geräte mit Kabel zu steuern. Falls Deine Anlage entsprechende Anschlüsse bietet, wäre das vielleicht leichter zu realisieren.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten