Bluetooth Pairing

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
    - Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
    -> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
    - Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
    - Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

    Danke...

    • Bluetooth Pairing

      Habe hier mal ein Bluetooth Pairing mit einen RaspberryPi2 mit Bluetooth Dongle dokumentiert.
      Sobald das Gerät in Reichweite/außer Reichweite wird eine URL aufgerufen.

      Bluetooth Namen vergeben
      nano /etc/machine-info
      PRETTY_HOSTNAME=DoorPi
      service bluetooth restart

      Pairing (Bluetooth MAC Beispielhaft!)
      sudo bluetoothctl
      [bluetooth]# agent on
      [bluetooth]# default-agent
      [bluetooth]# scan on

      Gerät koppeln
      Ausgabe: [NEW] Device AA:BB:CC:DD:EE:FF

      [bluetooth]# pair AA:BB:CC:DD:EE:FF
      [agent] Confirm passkey 641018 (yes/no): yes

      Gerät vertrauen
      [bluetooth]# trust AA:BB:CC:DD:EE:FF



      Bluetooth RSSI Script

      Das RSSI Script, versucht eine Verbindung zur jeweiligen Bluetooth MAC Adresse.
      Für die "in Range" Funktion benutze ich den RSSI Level. Sobald dieser dauerhaft >= 0 ist wird ein DoorPi
      Web Event ausgelöst.
      Wird der Wert -9 (sobald eine Mauer dazwischen) unterschritten wird ein weiteres Event im DoorPi ausgelöst.
      Auch hier entsprechend die Device Adresse beispielhaft.
      Folgendes an Deine Umgebung anpassen:
      doorpikeyboard, keylesstaste,user & Password (door:pi), Port(@127.0.0.1:8080)

      Source Code

      1. #Global VARS:
      2. device="AA:BB:CC:DD:EE:FF"
      3. doorpikeyboard=bluetooth
      4. keylesstaste="keyless1"
      5. btconnected=0
      6. btcurrent=-1
      7. counter=0
      8. notconnected="0"
      9. connected="1"
      10. rssi=-1
      11. reichweite=0
      12. togreichweite=5
      13. sendreichweite=5
      14. ausserReichweite=-9
      15. #Command loop:
      16. while [ 1 ]; do
      17. cmdout=$(hcitool rssi $device)
      18. btcurrent=$(echo $cmdout | grep -c "RSSI return value") 2> /dev/null
      19. rssi=$(echo $cmdout | sed -e 's/RSSI return value: //g')
      20. if [ $btcurrent = $notconnected ]; then
      21. echo "Attempting connection..."
      22. rfcomm connect 0 $device 1 2> /dev/null >/dev/null &
      23. sleep 1
      24. fi
      25. if [ $btcurrent = $connected ]; then
      26. echo "Device connected. RSSI: "$rssi
      27. if [ $rssi -ge 0 -a $togreichweite -ge 0 ]; then
      28. reichweite=1
      29. fi
      30. if [ $rssi -le $ausserReichweite ]; then
      31. reichweite=0
      32. fi
      33. togreichweite=$rssi
      34. fi
      35. if [ $reichweite -ne $sendreichweite ]; then
      36. curl "http://door:pi@127.0.0.1:8080/control/trigger_event?event_name=OnKeyDown_{$doorpikeyboard}.{$keylesstaste}$
      37. sendreichweite=$reichweite
      38. fi
      39. if [ $btconnected -ne $btcurrent ]; then
      40. if [ $btcurrent -eq 0 ]; then
      41. echo "GONE!"
      42. reichweite=0
      43. fi
      44. if [ $btcurrent -eq 1 ]; then
      45. echo "HERE!"
      46. fi
      47. btconnected=$btcurrent
      48. fi
      49. sleep 1
      50. done
      Display All

      nur ein Beispiel wie es bei mir funktioniert.
    • Hallo,

      hat nu etwas länger gedauert bis ich es ausprobieren konnte.
      Leider funktioniert irgendwas nicht.
      Ich habe mein Telefon gepairt und das Script in eine bluetooth.sh Datei gesteckt die ich ausführbar gemacht habe und die beim Start von DoorPi gestartet wird.
      Aber es tut sich nichts.
      Danach habe ich angefangen das Script zu entschlacken und an meine Bedürfnisse anzupassen. Haut immernoch nicht hin. Hast du noch einen Tip für mich?
      Muss die Datei eine andere Endung haben?

      The post was edited 1 time, last by Indigo ().

    • Ok. Läuft jetzt!!
      Wer sich beim Passwort vertippt ist selber Schuld. Wenn ich das gestern bemerkt hätte hätt ich mir viel Zeit sparen können.


      Wie es aussieht muss ich mein iPhone entsperren damit es funktioniert. Feintuning kommt noch.
      Für zwei Telefone habe ich jetzt zwei Skripte angelegt. Mal sehen ob ich es auch in eins bekomme.

      Fazit:
      Läuft mit meinem iPhone genial. Wenn das Telefon in der Hosentasche ist und ich mich auf 1,5 - 2m dem DoorPi annähere entriegelt er mir das Hoftor. Perfekt.
      Komischerweise funktioniert es mit dem Baugleichen iPhone meiner Freundin nur sehr schlecht. Sie muss ihr Telefon direkt an die Abdeckung halten.

      The post was edited 2 times, last by Indigo ().

    • Muss hier nochmal nachhaken.
      Mein Eindruck, dass es beim zweiten Device schlechter funktioniert war leider falsch. Es geht einfach nur bei Einem.
      Wenn ich einfach zwei Skripte anlege funktioniert das ganze nur mit dem Device dessen Skript zuerst gestartet wird. Mit dem Anderen garnicht.
      Daraufhin habe ich im zweiten Skript einfach mal alle Variablen umbenannt. Das hat leider nicht geholfen. Nächster Versuch wird sein alles in ein Skript zu verwursten, aber:

      Ausserdem funktioniert der SIP Call auch nicht mehr wenn ich zwei von den Skripten laufen habe. Kann das zu viel sein für einen Pi3?
    • Ich hab es jetzt seit ein paar Tagen alles am Laufen.
      Funktioniert so weit.
      Mein setup sieht nun so aus:
      2 Skripte (für jeden Device eines). Dabei muss wohl im zweiten Skript nur die andere MAC Adresse eingetragen werden (logisch) und ich habe noch in dieser Zeile des Skipts

      Source Code

      1. rfcomm connect 0 $device 1 2> /dev/null >/dev/null &
      aus der 0 eine 1 gemacht.

      Zuerst habe ich die beiden Skipte beim Start von Doorpi als EVENT_OnStartup gestartet. Das hat nicht funktioniert. Dabei klappt dann irgendwie die SIP Anmeldung an der Fritzbox nicht richtig und es funktioniert nur das zuerst aufgerufene Skript.
      Nun starte ich die Skripte über die rc.local wenn der Pi bootet. Damit läuft es jetzt.

      Eine höhere Prozesserauslastung kann ich nicht erkennen. Aber es scheint den einen oder anderen Prozess etwas zu verlangsamen. z.B. kommen Bilder die ich mir beim Klingeln über Telegram schicken lasse nun teilweise ein paar Sekunden verzögert an. Damit kann ich aber gut leben.
      Ab und zu muss ich mein iPhone entsperren damit es erkannt wird, meist geht es aber automatisch.

      Mein nächster Schritt wird sein statt dem Telefon den Fitnesstracker zu nehmen. Dann kämen auch die Kinder alleine ins Haus. zumindest der Pi scheint Fitbit Devices auch gut zu erkennen.