Geräte per Infrarot steuern - Alternative zu Broadlink ?

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
dergroddi
Beiträge: 18
Registriert: 18. Sep 2017 21:14
Answers: 1

Geräte per Infrarot steuern - Alternative zu Broadlink ?

Beitrag 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

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

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

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

lordslash
Beiträge: 1
Registriert: 14. Aug 2019 08:34

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

Beitrag von lordslash »

Hallo, hast du dein Broadlink benutzt? Wenn nicht, würde ich es gerne von dir kaufen!

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

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

Beitrag 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();
}

Antworten