Seite 1 von 1

Geräte per Infrarot steuern - Alternative zu Broadlink ?

Verfasst: 3. Feb 2019 13:45
von dergroddi
Hallo zusammen,

kürzlich kaufte ich einen BroadLink RM mini 3, um diesen an mein OpenHab anzubinden und damit TV+Receiver etc. schalten zu lassen. Dummerweise habe ich erst hinterher gelernt dass man im WLAN Kennwort KEINE Sonderzeichen verwenden darf, sonst verbindet sich das lustige Broadlink-Teil nämlich gar nicht. Da ich mein Kennwort nicht "unsicherer" machen möchte werde ich somit auf den Broadlink verzichten.

Kennt jemand sinnvolle Alternativen (gekauft oder selbstgebaut) um Infrarot-Befehle vom Raspi zu verschicken?

Danke

Re: Geräte per Infrarot steuern - Alternative zu Broadlink ?

Verfasst: 3. Feb 2019 16:26
von udo1toni
Ein Passwort ohne Sonderzeichen ist nicht weniger sicher als eines mit Sonderzeichen :) Wichtiger ist die Länge des Passwortes.
"Dies ist ein sicheres Passwort" oder "DiesisteintotalsicheresPasswort" ist besser als "P4s5wort!" oder "Pa55!Wor7!" WPA2 gestattet bis zu 63 Zeichen, das sollte auch ohne Sonderzeichen ausreichend sicher sein.

Re: Geräte per Infrarot steuern - Alternative zu Broadlink ?

Verfasst: 14. Aug 2019 08:36
von lordslash
Hallo, hast du dein Broadlink benutzt? Wenn nicht, würde ich es gerne von dir kaufen!

Re: Geräte per Infrarot steuern - Alternative zu Broadlink ?

Verfasst: 17. Aug 2019 02:38
von eiGelbGeek
Ich nutze dazu einen Wemos D1 Mini mit einer IR Diode :-)
Kostenpunkt liegt bei wenigen Euros.
Befehle sende ich per MQTT an den Wemos.

Natürlich kannst du auch einen Raspberry dafür nehmen.... aber ich würde es für OverDressed halten... IR braucht keine "Rechnenpower"

Das z.b. ist mein Arduino Code für einen Teufel Subwoofer, den ich auseinander gebaut habe und den Wemos mit IR Diode direkt im Subwoofer versenkt :-)

PS: Der Code geht bestimmt noch einfacher und sauberer, aber er funktioniert bis dato ohne Aussetzer :-)

Code: Alles auswählen

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

const char* ssid = "SSID";
const char* password = "WLANPASSWORT";

const char* mqtt_server = "IP-DES-MQTT-SERVER";
const char* mqtt_channel = "/MQTT/CHANNEL/subwoofer/ir";

#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) {
  // handle message arrived
  byte* p = (byte*)malloc(length);
  //Byte to String
  std::string message ( reinterpret_cast<char const*>(payload), length ) ;
  Serial.println();
  if (message == "Sub_Init") {
      //Set 140Hz
      irsend.sendNEC(0x1FE9867, 32);
      //80 Times Volume Down
      for (int i=0; i<80; i++){
      irsend.sendNEC(0x1FEE817, 32);
      }
      //60 Times Volume Up
      for (int i=0; i<60; i++){
      irsend.sendNEC(0x1FEC837, 32);
      }
      Serial.println("Sub_Init");
  }
  if (message == "Volume_Up") {
      irsend.sendNEC(0x1FEC837, 32);
      Serial.println("Volume_Up");
  }
  if (message == "Volume_Down") {
      irsend.sendNEC(0x1FEE817, 32);
      Serial.println("Volume_Down");
  }
  if (message == "140Hz") {
      irsend.sendNEC(0x1FE9867, 32);
      Serial.println("140Hz");
  }
  if (message == "110Hz") {
      irsend.sendNEC(0x1FE28D7, 32);
      Serial.println("110Hz");
  }
  if (message == "80Hz") {
      irsend.sendNEC(0x1FE58A7, 32);
      Serial.println("80Hz");
  }
  if (message == "50Hz") {
      irsend.sendNEC(0x1FE38C7, 32);
      Serial.println("50Hz");
  }

}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "WeMos_TeufelSubwoofer_IR";
    // Attempt to connect
    if (client.connect(clientId.c_str())) {
      Serial.println("connected");
      client.subscribe(mqtt_channel);
    } 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();
  //Wait for Subwoofer BootUp
  delay(4000);
  //Sub_Start_Up
  //Set 140Hz
  irsend.sendNEC(0x1FE9867, 32);
  //20 Times Volume Up
  for (int i=0; i<20; i++){
   irsend.sendNEC(0x1FEC837, 32);
  }
  Serial.println("Sub_Start_Up");
  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();
}