Unzuverlässigkeit beim Senden von 433 MHz signalen an Funksteckdose

Hallo Zusammen,
Ich weiß dieses Thema gab es schon 1000x, jedoch konnte ich bis jetzt noch keinen thread finden der mir helfen konnte daher sehe ich mich leider gezwungen einen eigenen zu eröffnen.
Ich habe folgendes vor:
Ich will ganz klassisch über einen 433 MHz transmitter (2008-8 FS1000A/XLC-FST FS1000A) ein Einschalt-/Ausschaltsignal senden und damit die zum Signal zugehörige Funksteckdose ansteuern.
Dafür habe ich zunächst zwei verschiedene Empfänger (MX-RM-5V und RF-5V) an den Arduino Uno R3 angeschlossen und bei beiden Empfängern habe ich die selben dezimal-Codes erhalten. Deshalb gehe ich davon aus, das diese Werte die richtigen sind.
Code:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}

Die ausgelesenen Codes habe ich dann genommen und im Sender-Sketch eingefügt.
Code:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  Serial.begin(9600);
  mySwitch.enableTransmit(14); // Connect To GPIO0 (D5)
  mySwitch.setProtocol(3);
}

void loop() {
  // Steckdose A einschalten
  mySwitch.send(14033008, 24);          //Für A: 14591040,13811248,14033008,14501552
  //Für B: 14033012, 14591044, 13811252, 14501556,
  //Für C: 13811260, 14501564, 14033020, 14591052
  Serial.print("Steckdose A EIN durch 14033008\n"); 
  delay(5000);  
//___________________________________________________________________________________________
  // Steckdose A ausschalten
  mySwitch.send(14157072, 24);          //Für A: 14157072, 14129296, 14641568, 13726240
  //Für B: 14129300, 14157076, 13726244, 14641572
  //Für C: 14641580, 14129308, 14157084, 13726252
Serial.print("Steckdose A AUS durch 14157072\n");
  delay(5000); 
}



Wie man sehen kann habe ich an beide Sender eine Antenne angelötet, am einen eine 17,4 cm Antenne (Von einem alten Radio) und bei dem anderen die Mitgelieferte. (Leider macht das alles keinen Unterschied bei meinem Problem ob mit oder ohne Antenne) Den Sender habe ich übrigens an einem ESP6288 angeschlossen ist aber eigentlich meines Wissens nach nicht relevant, auch da ich es mit beiden (Arduino und ESP) ausprobiert habe und das selbe Ergebnis resultierte.
Hier kommt das Problem:
Die Funksteckdose wird in den meisten Fällen nicht angesteuert, sondern nur sehr selten und nach keinem bestimmten Muster, also zufällig. Es ist auch egal welche der drei Steckdosen ich verwende alle werden mit der gleichen Unzuverlässigkeit angesteuert.

Meine Schlussfolgerungen bis jetzt:

  • Da die Steckdosen allerdings ab und zu doch angesteuert werden, schließe ich ein Fehler im Programm aus.
  • Auch die vom Sender ausgehenden dezimal-Codes sind korrekt (Hab ich getestet in dem ich den Empfänger-Sketch auf den Arduino geladen habe und mit dem ESP den Sender-Sketch abspielte
  • Ich habe das ganze auch, möglichst weit weg von möglichen Störquellen, in einem Raum in dem außer Lampen keine elektrischen Geräte angeschlossen sind, ausprobiert. Auch hier konnte keine Verbesserung festgestellt werden.

Und jetzt nach dem ich etliche Beiträge gelesen habe, die mir alle nicht helfen konnten und ich mit meinem technischen Wissen am Ende bin, hoffe ich dass jemand schonmal ein selbes Problem hatte und eine zuverlässige Lösung finden konnte. Ich freue mich auch über neue Versuche die ich unternehmen könnte, falls ich eine Fehlerquelle noch nicht abgedeckt haben sollte.

Liebe Grüße Hannes

Hallo @lokatiha,

Zeige mal Links deiner Funksteckdosen.
Meine Erfahrung mit RCSwitch war bisher, diese Zeile "mySwitch.setProtocol" im Sendersketch zu entfernen.

Wichtig ist auch, keine Störquellen in der Nähe der Empfänger (Steckdosen) zu habe.
Auch dürfen die Steckdosen im Betrieb nicht dicht beieinander sein.

Hallo @HotSystems
Das hier sind die Steckdosen:

Hab die Zeile mal auskommentiert. Hat leider nichts geändert.
Momentan teste ich nur noch mit einer Funksteckdose. Die Möglichen Störquellen hatte ich getestet in einem Raum ohne elektrische Geräte möglichst weit weg von möglichen Störquellen.
Ach und ich arbeite mit der RCSwitch lib von sui77 GitHub - sui77/rc-switch: Arduino lib to operate 433/315Mhz devices like power outlet sockets.
Kannst du mir vielleicht noch sagen wofür genau das Protokoll gut ist?

Es gibt Systeme mit unterschiedlichen Protokollen. Bisher sind mir da aber keine anderen unter gekommen.
Evtl. hilft es, den gesendeten Code häufiger zu senden. Da gibt es auch einen Befehl zu.
Oder mit der Pulslänge spielen.

Wenn Du Englisch verstehst, könnte dieser Artikel möglicherweise bei der Protokollanalyse hilfreich sein.

Okay Danke!
Ich habe die Signale sowieso immer mehrmals gesendet. Aber auch einzeln, habe mehrere Variationen ausprobiert.
Einen Befehl dafür habe ich noch nicht gefunden, ich habe die Zeile einfach mehrmals kopiert.
Bzgl. der Pulslänge habe 212 und 102 ausprobiert, hab gerade noch einmal die Fernbedienung ausgelesen die hat 102.

In den Beispielen der Lib zum Senden ist der entsprechende Befehl aufgeführt.

Ja Englisch ist kein Problem, leider hilft der Artikel nicht wirklich weiter auch wenn er sehr interessant ist, aber er Beschäftigt sich mit weitaus Komplexeren Systemen als einer simplen RF-Fernbedienung mit 8 Tasten. Bei meiner Fernbedingung ist es so, dass für jede Taste 4 Dezimal Signale festgelegt sind und diese beim Drücken der Taste immer einen der 4 Signale sendet. Der Empfänger in der Steckdose wird wahrscheinlich auf diese 4 Werte eingestellt sein.

Ah hab ihn gefunden. mySwitch.setRepeatTransmit(15);

Leider weiß Ich nicht was das bedeutet. Kannst Du ein Beispeil order grafische Darstellungen posten?


Also wenn ich die Taste A Ein drücke dann kommt immer eine der 4 Dezimal-Signale 14591040,13811248,14033008 oder14501552 diese Dezimal-Signale sende ich über den RF-Transmitter und empfange sie auch korrekt durch die beiden RF-Reciever, aber die Funksteckdose Schalter nur ab und zu mal auf ein bzw. aus.
Btw binäre Signale habe ich auch schon ausprobiert.

Verstehe ich das richtig, die Taste A sendet immer unterschiedliche (eine der 4 Codes) Zahlen ?

Ja und die Reihenfolge ist fest. Ein Zusammenspiel zwischen ein und aus Signalen gibt es nicht. Also auf ein bestimmtes Ein-Signal kommt kein bestimmtes Aus-Signal, sondern die Reihenfolge wird immer beibehalten. Ich habe auch schon alle 4 Signale hintereinander gesendet in der richtigen Reihenfolge. Das hat aber leider auch nichts verändert.

Das wäre jetzt mein Tipp gewesen.
Das evtl. noch mal wiederholen und mit den übrigen Parametern spielen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.