Brennenstuhl RC CE1 4001 433MHz kein Vorankommen

Guten Morgen zusammen,

seit einigen Tagen versuche ich mich nun daran meine Funksteckdosen via 433MHz Modul mit meinem Uno zu steuern FS1000A

Mein Code zum auslesen der Fernbedienung besteht aus der RC-Switch DemoReciveAdvance

/*
  Example for receiving
  
  https://github.com/sui77/rc-switch/
  
  If you want to visualize a telegram copy the raw data and 
  paste it into http://test.sui.li/oszi/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

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

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}

Empfangene Daten wurden von mir soweit ausgewertet, dass ich Folgendes aus der SendDemo gebaut habe

#include <RCSwitch.h>
RCSwitch sender = RCSwitch();

void setup() {
  Serial.begin(9600);
  sender.enableTransmit(3);  // An Pin 3

  sender.setProtocol(5);
  sender.setPulseLength(520);
  //sender.setRepeatTransmit(15);

 // pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {


     // digitalWrite(LED_BUILTIN, HIGH);
      
      sender.send(2999239,24); 
      delay(500);
      sender.send(2800279,24);
      delay(500);
      sender.send(2455255,24);
      delay(500);
      sender.send(2723399,24);
      
      

      delay(1000);
}

Rumgespielt habe ich mit dem Protokoll welches auch mal als Protokoll 3 Erkannt wurde und mit der Pulslänge. Selbst wenn nun das Gesendete vom Arduino genauso aussieht wie das was ich von der Fernbedienung Empfangen habe, passiert genau gar nichts.
Aber ab und an funktioniert es zufällig dann doch. :roll_eyes:
Die Decimalzaheln sind nur die für den einschalter. Von dem Empfange ich immer genau diese 4 Zahlen (reproduzierbar).

2999239
2800279
2455255
2723399

Sende ich allerdings das ganze als Binärcode passiert das einschalten nichtmal zufällig…

Da es sich offensichtlich bei den Brennenstuhl RC CE1 4001 Funksteckdosen offensichtlich um ein neues Modell Handelt, finde ich nichts im WWW was mir irgendwie weitergeholfen hat…

Daher hoffe ich nun, dass hier jemand eine Idee oder gar eine Lösung hat die mir hier weiterhelfen könnte.

Meine alten Funksteckdosen (Welche leider nicht mehr funktionieren) habe ich mit gleichem Vorgehen einmal getestet. Hier funktionierte alles auf anhieb.

Ganz liebe Grüße und schon mal Danke

Kitti90

Das es jetzt immer 4 Codes sind, ist schon seltsam.
Aber daran schein es zu liegen.

Poste doch mal den kompletten empfangenen Code.

Wie werden denn die Steckdosen codiert ?

Da ich Aktuell auf der Arbeit bin kann ich dir nur das hier geben... Die anderen 3 Codes sehen genauso aus von der Art her. Beim Empfang variiert allerdings das Protokoll und die Zeit (Ich schicke es wenn ich zu Hause bin)

Poste doch mal den kompletten empfangenen Code

Decimal: 2455255 (24Bit) Binary: 001001010111011011010111 Tri-State: not applicable PulseLength: 515 microseconds Protocol: 5
Raw data: 7216,388,1156,348,1168,856,704,324,1168,372,1160,872,656,368,1164,868,660,364,1164,872,660,864,664,860,664,364,1164,868,660,860,664,356,1172,860,664,864,660,364,1164,860,660,364,1160,864,656,860,668,860,660,

Wie werden denn die Steckdosen codiert ?

Durch anlernen. Nur wie gesagt die FB sendet immer den gleichen Code.

Das es jetzt immer 4 Codes sind, ist schon seltsam.
Aber daran schein es zu liegen.

Was ich eigenartig finde, ist dass immer nur einmal pro drücken ein Code gesendet wird. Beim Nächsten Druck auf die Fernbedienung wird der nächste Code gesendet...

Ja ich verzweifel tatsächlich aktuell...

Danke dir schon Mal, dass du dich meinem Problem angenommen hast :wink:

Kitti90:
Was ich eigenartig finde, ist dass immer nur einmal pro drücken ein Code gesendet wird. Beim Nächsten Druck auf die Fernbedienung wird der nächste Code gesendet...

Dann sieht es nach einem "rolling Code" aus.

Da solltest du genau so verfahren und immer den nächsten Code senden.

Ob das sicher funktioniert, kann ich nur hoffen.
Da fehlt mir aktuell die Erfahrung.

Wenn es nicht klappt, notfalls die Dinger zurückgeben und die Brennenstuhl RC1000N nehmen.
Die funktionieren sicher.

Da solltest du genau so verfahren und immer den nächsten Code senden.

Ich denke genau das tut mein Code :wink: korrigiert mich bitte wenn ich da falsch denke.

Wenn es nicht klappt, notfalls die Dinger zurückgeben und die Brennenstuhl RC1000N nehmen.
Die funktionieren sicher.

Leider waren die Funkdosen vor dem Projekt da :wink: folglich ist ein zurücksenden nicht mehr möglich :-\

Aber auch dir danke ich, für das Interesse und die Teilnahme an der Lösungsfindung :slight_smile:

Kitti90:
Ich denke genau das tut mein Code :wink: korrigiert mich bitte wenn ich da falsch denke.

Nicht ganz.
Du solltest immer nur einen Code senden, so wie die Fernbedienung auch.
Und danach immer den nächsten.

HotSystems:
Nicht ganz.
Du solltest immer nur einen Code senden, so wie die Fernbedienung auch.
Und danach immer den nächsten.

Also ein längeres Delay dazwischen? so eine Sekunde und mehr?

Wo wir gerade dabei sind, wenn ich setRepeatTransmit(1); setze dann passiert am Empfänger den ich nebenher laufen lasse nichts. Heißt also es wird offensichtlich nichts gesendet. Ist im Code mit drin allerdings auskommentiert.

Wenn ich normal sende wiederholt der Sender automatisch den zu sendenden Code 3 mal das könnte durchaus auch ein Problem darstellen, leider bekomme ich das nicht weg... Einer eine Idee was ich falsch mache an dieser Stelle?

Kitti90:
Also ein längeres Delay dazwischen? so eine Sekunde und mehr?

NEIN, du musst bei jeder erneuten Aussendung den nächsten Code nehmen.

Also Beispiel:

  1. mal einschalten Code1.
  2. mal einschalten Code2 usw...

Wo wir gerade dabei sind, wenn ich setRepeatTransmit(1); setze dann passiert am Empfänger den ich nebenher laufen lasse nichts. Heißt also es wird offensichtlich nichts gesendet. Ist im Code mit drin allerdings auskommentiert.

Wenn ich normal sende wiederholt der Sender automatisch den zu sendenden Code 3 mal das könnte durchaus auch ein Problem darstellen, leider bekomme ich das nicht weg... Einer eine Idee was ich falsch mache an dieser Stelle?

Standard ist immer "1".
Versuche es mal mit "0".

Falsch machst du nichts, nur es kann durchaus sein, dass deine Funksteckdosen nicht ohne weitere Anpassungen vom Arduino gesteuert werden können.

  1. mal einschalten Code1.
  2. mal einschalten Code2 usw...

Würde ich jetzt so verstehen

sender.enableTransmit(3);
Sende.Code
sender.disableTransmit(3);

okay dann werde ich es später mal versuchen mit "0"

Was mich halt stutzig macht, dass die Steckdose ab und an auf das Gesendete reagiert.

Kitti90:
Würde ich jetzt so verstehen

sender.enableTransmit(3);

Sende.Code
sender.disableTransmit(3);

NEIN...NEIN...

Für jedes erneute Schalten muss der Code geändert (auf den nächsten Codewert) werden.

Jetzt schalten: Code1
In einer Stunde schalten: Code2
Morgen schalten: Code3
usw.

Du musst immer mitzählen, welchen Code du gesendet hast.

Ob das so wirklich sicher funktioniert, kann ich nicht sagen.
Ein Versuch ist es Wert.

Was mich halt stutzig macht, dass die Steckdose ab und an auf das Gesendete reagiert.

Weil du zufällig den richtigen Code getroffen hast.

Hallo,

vielleicht hilft dir der folgende Thread weiter: Funksteckdosen ansteuern merkwürdige Signale - Deutsch - Arduino Forum

Das Protokoll deiner Steckdosen wird augenscheinlich noch in einer Reihe anderer Funksteckdosen genutzt. Vielleicht gibt es noch neuere Erkenntnisse als in dem obigen Thread.

vielleicht hilft dir der folgende Thread weiter: https://forum.arduino.cc/index.php?topic=438354.0

Das hat mir in der Tat weitergeholfen und nun funktioniert es scheinbar. Ich bin noch dabei es zu testen aber bis jetzt gehts.

Was habe ich getan?

#include <RCSwitch.h>
RCSwitch sender = RCSwitch();

int i =0; //Testvariable für das Protokoll beginnend bei 0

void setup() {
  Serial.begin(9600);
  sender.enableTransmit(3);  // An Pin 3

 
  sender.setPulseLength(520);
 
}

void loop() {

 sender.setProtocol(i);
  Serial.println(i);
     // digitalWrite(LED_BUILTIN, HIGH);
      
      sender.send(2999239,24); 
      Serial.println("2999239");  //das hatte ich für alle möglichen Codes es reicht aber einer

i=i+1; 
  
  
}

Ergebnis ist nun, dass es das Protokoll 4 ist und nicht 3 oder 5 wie reciveDemoSimple/Advance immer angezeigt haben.

Code wie ich nun später die Dosen schalte folgt wenn ich soweit bin. Hier schon mal eine Vorabversion

#include <RCSwitch.h>
RCSwitch sender = RCSwitch();

int i =4;

void setup() {
  Serial.begin(9600);
  sender.enableTransmit(3);  // An Pin 3

 //sender.setProtocol(4);
  sender.setPulseLength(520);
 // sender.setRepeatTransmit(0);
 // pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {

  setIVon();
  
}

void setIVon(){ //Steckdose 4 wird hier geschaltet( IV on )
  
  sender.setProtocol(i);  //Protokoll wird hier auf 4 gesetzt weil es oben nicht mehr geht...
  Serial.println(i);
     // digitalWrite(LED_BUILTIN, HIGH);
      
      sender.send(2999239,24); 
      Serial.println("2999239");

}

Warum auch immer funktioniert jetzt aber das setzen des Protokolls nicht mehr oben in der void setup… vielleicht sehe ich aber einfach wegen meines Zustandes (Männergrippe) das Problem nicht.

Vielen Dank für die Hilfe und die Hinweise :slight_smile: ich hoffe wir können so anderen mit selbigen Problem helfen. Ich halte euch auf dem neusten Stand was meinen Code angeht.

Dann ist wohl der Hauptgrund das falsche Protokoll.

Aber die hattest du doch durchgespielt ?

ehrlich gesagt nur 3 und 5 welche mir das reciveDemo auch ausgegeben hatte... aber jetzt geht es konstant mit dem Protokoll 4

:slight_smile:

Kitti90:
ehrlich gesagt nur 3 und 5 welche mir das reciveDemo auch ausgegeben hatte... aber jetzt geht es konstant mit dem Protokoll 4

:slight_smile:

OK...danke für die Rückmeldung.