433MHz RC Switch 4 Byte Hex Code senden

Hallo, ich Google und google aber bekomme es einfach nicht hin einen Hexadezimalen 4 Byte Code / String über die RC Switch Libary und einem 433Mhz Sender zu senden, und am Raspberry mit 433 Utils und RFSniff wieder zu empfangen. Die myswitch.send() Funktion geht ja anscheinend nur bis zu 24 Bit. Zuerst hatte ich die Idee den Hex Code in Dezimal umzuwandeln und dann zu senden aber sobald die Dezimalzahl 9 und mehr Zahlen hat kommen beim Raspberry nur noch komische Sachen an. Beispiel:

myswitch.send(12345678, 24) // Code wird vom Raspberry als 12345678 Empfangen
myswitch.send(123456789 , 24) // Beim Raspberry kommt an: 6016277

Wenn anstatt den 24 Bit 48 reinschreibe kommt beim Raspberry nichts mehr an.

Wenn ich z.B. den Hex Code: ABEA939B senden will ist das die Dezimalzahl: 2884277147
Wenn ich dann den Code ausführe:

myswitch.send(2884277147, 24)

dann kommt beim Rasperry sowas an:

[ROOT@Raspberry /opt/Projekt/433Utils/RPi_utils]$ ./RFSniffer

Received 15373211

Das Projekt besteht darin die vom NFC Scanner gescannte UID per Funk an den Raspberry zu senden welcher Prüft ob diese Zugangsberechtigt ist und wenn ja soll er eine Lampe angehen.
Hier nochmal der komplette Arduino Programm Code:

#include <KeyDuino.h>
#include <RCSwitch.h>


KeyDuino keyDuino;
RCSwitch mySwitch = RCSwitch();

uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
uint8_t uidLength;




void setup(void) {
  Serial.begin(115200);
  keyDuino.begin();
  mySwitch.enableTransmit(10);  // Der Sender wird an Pin 10 angeschlossen


  Serial.println("KeyDuino is ready, please scan a tag.");

}


void loop(void) {
  
 uint8_t success;
 String readID;
 
 success = keyDuino.readTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
 if (success){
   Serial.print("Tag found: ");
   readID = keyDuino.convertUintToString(uid, uidLength);
   mySwitch.send(2884277147, 24); // Der 433mhz Sender versendet die UID
   Serial.println(readID);
   
   }
 }
}

kann mir irgendjemand helfen ?

Worauf bist du in deinem Projekt festgelegt ?
Funkmodule ?
Library ?
Oder was sonst ?

Sieh dir mal die HC-12 an, da kannst du sicher deine Dinge umsetzen, auch ohne eine Library.

Eine andere Möglichkeit ist die Verwendung von Virtualwire mit den Modulen.

Zuerst hatte ich die Idee den Hex Code in Dezimal umzuwandeln

Ob du Dezimalzahlen oder Hex-Zahlen nimmst ist völlig egal, außer dass du einer Dezimalzahl nicht so leicht ansehen kannst, wie groß sie ist.

Nimm den Windows-Taschenrechner, Modus Programmierer, gib deine "123456789" ein und wechsle nach HEX -> 75BCD15

Das sind aber mehr als 24 Bit, geht also nicht.
0xFFFFFF wäre die größtmögliche 24 Bit Zahl, also 16777215.

Dein 12345678 ist knapp drunter, 87654321 wäre schon nicht mehr gegangen.

Ob RCSwitch tatsächlich nur 24 Bit kann, weiß ich übrigens nicht.

Hallo zusammen,
ich bin jetzt nicht der MySwitch-Spezialist, aber ich hab einfach 28 statt 24 geschrieben und es hat funktioniert.

PS: Auf der Empfängerseite ist auch MySwitch am Werk, das ist vielleicht auch eine wichtige Info. Bei anderen Empfängern kann es anders sein.

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