HM-10 mit Key Finder / BLE Beacons

Hi Leute,
ich versuche gerade herauszufinden, wie ich mit dem HM-10 ermitteln kann, ob sich ein BLE Gerät, wie zB ein KeyFinder in der Nähe befindet.

Weiß jemand, was für Kommandos ich senden muss und wie ich die erhaltenen Daten auslese? Bekomme ich irgendeinen Namen oder eine MAC-Adresse? Kann man auch die Feldstärke auslesen? Wenn ja, wie?

Ich hab recht lange herum gegoogelt und sehr wenig gefunden. Die bisher beste Spur gibt mir folgendes Kommando:

Serial1.write("AT+DISI?");

Damit bekomme ich - so vermute ich - die MAC und einen Namen. Jedoch nur einmal beim Setup(). In der Loop klappt das nicht. Und ich bekomme dieses auch nur angezeigt, wenn ich beim KeyFinder den Knopf drücke und er damit in den pairing-Modus geht (ich teste momentan mit diesem hier).

Als Arduino habe ich den Mega im Einsatz, aber das habt ihr euch vermutlich schon gedacht.

Vollständiger momentaner Scratch (von hier gemopst)

#define baud 9600

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(baud);
  Serial1.begin(baud);
  
  at("AT"); // check if working, always returns OK
  at("AT+ROLE1"); // select master = central
  at("AT+RESET"); // actually more a restart than a reset .. needed after ROLE
  at("AT+SHOW1"); // include Bluetooth name in response
  at("AT+IMME1"); // "work immediately", not sure what this does
  at("AT+DISI?");
  //at("AT+FILT0"); // show all BLE devices, not only HM ones
  delay(1000); // wait a bit, NECESSARY!!
  Serial1.print("AT+DISC?"); // here comes the magic
  
}

void at(char* cmd) {
  Serial1.write(cmd);
  Serial.print(cmd);
  while(!Serial1.find("OK")) Serial.print(".");
  
  Serial.println(" .. OK");
}

void loop() // run over and over
{
  
  if (Serial1.available())
    Serial.write(Serial1.read());
    
  if (Serial.available())
    Serial1.write(Serial.read());   
}

Ziel ist es, alle x Minuten/Sekunden zu prüfen, ob sich der KeyFinder in der Nähe befindet. Optimal wäre zu wissen, wie weit er weg ist.

Möglicherweise muß man das Modul erst über einen Pin (BRK?) in den Kommando-Modus zurückschalten, bevor man in loop() weitere AT-Kommandos eingeben kann. Mehr kann ich dazu nicht sagen, habe selbst nur ein Slave Modul (HM-06).