Bluetooth RSSI ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TKP
User
Beiträge: 2
Registriert: Freitag 16. November 2018, 09:36

Hallo zusammen,

ich habe mir das Modul Bluetooth importiert und lasse mir in einer Übersicht alle verfügbaren BluetoothGeräte in der Umgebung anzeigen und speichere diese ab.
Wie kann ich mir auch die Signalstärke (RSSI) angeben lassen? Ich will mich mit den Bluetooth-Devices nicht verbinden, es reicht mir vollkommen zu wissen welche Geräte mit welcher Stärke in meiner Nähe sind.

Hier der leicht gekürzte Code dazu. Für Verbesserungen bin ich gern zu haben, ich arbeite mich grad in Python ein und bin sicherlich noch nicht über den Status "Blutiger Anfänger" hinaus.

Code: Alles auswählen

import time
import bluetooth

.....

      while a <= 100000: 
          # Bluetoothscanner aus Modul bluetooth, in Array schreiben.
          nearby_devices = bluetooth.discover_devices() 
          a=a+1
          # If: Nur falls das Scannen mind. eine MacAdresse liefert passiert was, ansonsten nichts.
          if nearby_devices.__len__() == 0:
            nodetection = nodetection+1   
          # Ab hier wird in die Datei geschrieben. 
          else:
             for i in range(len(nearby_devices)):
                 print(datumsstempel(), zeitstempel(),nearby_devices[i-1])
                 f= open(schlogger+".txt", 'a') # Datei öffnen                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (datumsstempel()+ " ; " + zeitstempel() + " ;" + nearby_devices[i-1]
                 f.write(datumsstempel()+ " ; " + zeitstempel()+ " ; " +nearby_devices[i-1])
                 f.write('\n')
                 f.close()
else:
     print("Programm beendet.") 
Beste Grüsse,
Timo
Sirius3
User
Beiträge: 18268
Registriert: Sonntag 21. Oktober 2012, 17:20

Die while-Schleife sieht etwas seltsam aus. Woher kommen die 100000? Magische Methoden wie __len__ sind nicht dazu gedacht, dass man sie direkt aufruft, sondern len(...) benutzt, oder wie hier einfach nur `if not nearby_devices`.

Statt über einen Index iteriert man direkt über die Elemente der Liste. Was soll das -1? Statt in jedem Schleifendurchgang die Datei neu zu öffnen, würde man sie einmal vor der for-Schleife. Was sind das für Funktionen datumsstempel und zeitstempel? Die Enträge für einen Scandurchgang sollten doch alle die selbe Zeit haben. Datum und Zeit sollte man nicht trennen, die gehören zusammen.
TKP
User
Beiträge: 2
Registriert: Freitag 16. November 2018, 09:36

Hallo sirius3,

vielen Dank für deine schnelle Antwort! Ich versuche mich mal in einer Erklärung:
- Die 10.000 sind dafür gedacht, dass ich angeben kann wie viele Scandurchgänge ich möchte. In Zukunft wird es vermutlich darauf hinaus laufen, dass es permanent scannt, solange das Programm läuft, bzw. bis ein Ausschaltbefehl kommt.
- Danke für den Hinweis mit dem if not nearby_devices, ich habe das entsprechend geändert und lese mich als nächstes mal in Magische Methoden ein.
- Das -1 habe ich weg genommen. Ich habe keine Ahnung woher ich das habe...ein wenig peinlich. Ich bin erstaunt das es trotzdem noch das gleiche tut wie zuvor.
- Ich möchte mit dem ständigen öffnen und schliessen sichergehen, dass wenn der Rechner mal ausgeht, abgeschaltet wird, etc. Immer die letzte Version gespeichert ist. Es sollen keine Daten verloren gehen.
- Jede MAC Adresse die gescannt wird, wird in eine Text-Datei geschrieben und zwar in folgendem Format:

25.11.18 ; 20:24:01 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:24:12 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:24:12 ; 4C:DD:31:BF:3C:38
25.11.18 ; 20:24:22 ; 4C:DD:31:BF:3C:38
25.11.18 ; 20:24:22 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:24:33 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:24:43 ; 4C:DD:31:BF:3C:38
25.11.18 ; 20:24:43 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:24:53 ; 4C:DD:31:BF:3C:38
25.11.18 ; 20:24:54 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:25:04 ; 4C:DD:31:BF:3C:38
25.11.18 ; 20:25:04 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:25:14 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:25:14 ; 4C:DD:31:BF:3C:38
25.11.18 ; 20:25:25 ; E8:2A:44:FC:1C:C0
25.11.18 ; 20:26:47 ; 4C:DD:31:BF:3C:38

Ich benötige die Semikolons um es später in Excel problemlos einlesen zu können. Ich habe bisher nicht den Weg gewählt (nicht bewusst) alles in eine Liste zu schreiben und diese immer zu erweitern, einfach weil ich auch Angst hatte, dass bei einer entsprechenden Menge an Listeneinträgen es da evtl. zu Problemen kommt. Zudem dachte ich mir, wenn ich es eh in einer Datei gesichert habe, kann die Liste auch weg und immer eine neue angelegt werden. Ich lasse das ganze aktuell Mobil auf einem Raspberry Pi 3+ laufen.

Es kann gut sein, dass meine Überlegungen totaler Unsinn sind. Ich ackere gerade die Python Tutorials auf Youtube durch und habe mir ein Buch "Einstieg in Python" von Gallileo Press gekauft und lese in jeder freien Minute. Aber entweder bin ich zu dämlich oder es ist recht umständlich geschrieben. :/

Hier der gesamte Code, inkl. der Funktionendeklaration:

Code: Alles auswählen

import time
import bluetooth

# --------------------
# -----Funktionen-----
# --------------------


# Datumstempel
def datumsstempel():
    lt = time.localtime()
    return time.strftime("%d.%m.%y", lt)


# Zeitstempel
def zeitstempel():
    lt = time.localtime()
    return time.strftime("%H:%M:%S", lt)

# Diese beiden Funktionen ergeben zusammengesetzt aus Datum und Uhrzeit später den Dateinamen.
# Sie unterscheiden sich von den oberen durch das fehlen der Punkte/Doppelpunkte
def dateinamea():
    lt = time.localtime()
    return time.strftime("%d%m%y", lt)
def dateinameb():
    lt = time.localtime()
    return time.strftime("%H%M%S", lt)

# ------------------------------
# -----Variablendeklaration-----
# ------------------------------

nodetection=0 # Zähler. Wie oft wurde nichts detektiert? Aktuell überflüssig.




# --------------------
# ------Programm------
# --------------------

# Ausgabe nur bei detektierten Mac,Adressen. Nacheinander und mit Uhrzeit und Datum. 
print("Bluetooth Datenlogger Version 1.0 -Programm gestartet-")
start = input("Logbuch anlegen und scannen beginnen? (j/n):")

if start == "j":
      a=1
      dateiname = dateinamea()+dateinameb()
      print(dateiname+".txt wurde erstellt.")
      print("scanning....")

      # Datei anlegen, mit dem Datum und der Uhrzeit als Dateiname
      f= open(dateiname+".txt", 'a')
      f.close()
      
      while a <= 100000: 
          # Bluetoothscanner aus Modul bluetooth, in Array schreiben.
          nearby_devices = bluetooth.discover_devices() 
          a=a+1
          # If: Nur falls das Scannen mind. eine MacAdresse liefert passiert was, ansonsten nichts.
          if not nearby_devices:
            nodetection = nodetection+1
            print (datumsstempel(), zeitstempel(),"Keine Bluetooth-Geräte gefunden")
          # Ab hier wird in die Datei geschrieben. 
          else:
             for i in range(len(nearby_devices)):
                 print(datumsstempel(), zeitstempel(),nearby_devices[i])
                 f= open(dateiname+".txt", 'a') # Datei öffnen                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (datumsstempel()+ " ; " + zeitstempel() + " ;" + nearby_devices[i-1]
                 f.write(datumsstempel()+ " ; " + zeitstempel()+ " ; " +nearby_devices[i-1])
                 f.write('\n')
                 f.close()
else:
     print("Programm beendet.") 
Antworten