Hallo zusammen,
ich würde gerne eine Bluetoothverbindung zu einem BLE-Shield aufbauen.
Ich habe ein bash-skript, welches dies für mich erledigt.
#!/bin/bash
echo -e 'connect Mac-Adresse \n quit' | bluetoothctl
Wenn ich das über die Konsole ausführe funktioniert alles einwandfrei.
Nun möchte ich, dass es über ein Notify ausgeführt wird.
Dazu gebe ich im Notify "/home/pi/Programme/Test.sh" an.
Wenn ich nun über einen Dummy das notify aktiviere bekomme ich folgendes zurück:
ZitatWaiting to connect to bluetoothd...
[0;94m[bluetooth][0m# connect F8:34:F2:EA:44:D7
No default controller available
[0;94m[bluetooth][0m# quit
[0;94m[bluetooth][0m#
Waiting to connect to bluetoothd...
Sieht doch so aus als ob der Aufruf der Bash ersteinmal erfolgreich ist und nur die Verbindung nicht aufgebaut werden kann oder?
Hat mein Problem mit irgendwelchen fehlenden Rechten zu tun? (war oft ein Problem bei anderen Aufrufen von Bash im Forum)
Im Vorraus schon einmal vielen Dank für Hinweise
Was genau soll denn Deiner Erfahrung nach passieren?
Beim Ausführen in der Konsole bekomme ich folgendes zurück:
[NEW] Controller 00:1A:7D:DA:71:12 raspberrypi [default]
[NEW] Device F8:34:F2:EA:44:D7 Arduino
[NEW] Primary Service
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service000a
19b10000-e8f2-537e-4f6c-d104768a1214
Vendor specific
[NEW] Characteristic
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service000a/char000d
19b10002-e8f2-537e-4f6c-d104768a1214
Vendor specific
[NEW] Characteristic
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service000a/char000b
19b10001-e8f2-537e-4f6c-d104768a1214
Vendor specific
[NEW] Primary Service
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service0006
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[NEW] Characteristic
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service0006/char0007
00002a05-0000-1000-8000-00805f9b34fb
Service Changed
[NEW] Descriptor
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service0006/char0007/desc0009
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[bluetooth]# connect F8:34:F2:EA:44:D7
Attempting to connect to F8:34:F2:EA:44:D7
[bluetooth]# quit
[DEL] Controller 00:1A:7D:DA:71:12 raspberrypi [default]
[DEL] Primary Service
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service000a
19b10000-e8f2-537e-4f6c-d104768a1214
Vendor specific
[DEL] Characteristic
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service000a/char000d
19b10002-e8f2-537e-4f6c-d104768a1214
Vendor specific
[DEL] Characteristic
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service000a/char000b
19b10001-e8f2-537e-4f6c-d104768a1214
Vendor specific
[DEL] Primary Service
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service0006
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[DEL] Characteristic
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service0006/char0007
00002a05-0000-1000-8000-00805f9b34fb
Service Changed
[DEL] Descriptor
/org/bluez/hci0/dev_F8_34_F2_EA_44_D7/service0006/char0007/desc0009
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
Zudem erscheint im seriellen Monitor der Arduino IDE
ZitatConnected event, central: 00:1a:7d:da:71:12
So funktioniert das nicht. Wenn du eine Ausgabe haben möchtest musst Du das Ergebnis Deines Aufrufs in eine Variable einlesen und dann ausgeben.
Eine 99_myUtils wäre hier besser.
Ich brauche nicht zwingend eine Ausgabe, außer dass im seriellen Monitor ein connected erscheint.
Ich habe eine Tipp bekommen was ich testen könnte ich weiß allerdings nicht wie man das nennt und ob das so gut ist, habe aber etwas herausgefunden.
- in etc/passwd den user fhem anpassen, dass man sich als fhem user über putty anmelden kann
- als fhem anmelden
- das bluetooth-Programm (bluetoothctl) starten welches ich nutzen möchte
Wie man nun sieht scheint der Benutzer fhem Probleme zu haben dieses auszuführen:
pi@raspberrypi:~ $ sudo su - fhem
fhem@raspberrypi:~$ bluetoothctl
[bluetooth]# nnect to bluetoothd...
Im Vergleich zu pi:
pi@raspberrypi:~ $ bluetoothctl
[NEW] Controller 00:1A:7D:DA:71:12 raspberrypi [default]
[NEW] Device F8:34:F2:EA:44:D7 Arduino
[bluetooth]#
fhem führt das Programm zwar aus aber hat anschließend damit Probleme.
Da das Programm ja läuft was mit über htop bestätigt wird kann es doch nicht an Rechten liegen oder?
Eventuell hat fhem nicht die Rechte. Wie sind denn die Rechte von fhem und wie von pi?
Welche Berechtigungen denn (für welche Dateien) oder was meinst du?
Das Programm scheint schon zu funktionieren.
Wenn ich select Mac-Adresse
eingebe (Mac-Adresse vom Controller der mir bei pi angezeigt wird), bekomme ich not available zurück.
Hi,
ich denke es ist ein Rechteproblem
mach mal als pi groups pi
gibt es da eine Gruppe bluetooth?
wenn ja sudo usermod -aG bluetooth fhem
Neustart
mal sehen ob es dann geht ....
Alles nur geraten ;) wir haben da mal gekämpft -> https://forum.fhem.de/index.php?topic=50967.0
Gruß Otto
Wie Otto schon sagt ist interessant zu wissen in welche. Gruppen fhem und in welchen pi ist.
1. ein Neustart des Pis nach Gruppenänderung nicht nötig. Nur aus/einloggen des Users (bzw. bei einem Demoan: Stop/Start des Dienstes)
2. Einloggen als fhem nicht nötig, geht auch über "Umweg (und security besser):
- dem user fhem eine Shell Zuweisen:
in /etc/passwd beim user fhem als Shell ein /bin/bash
soll so (in etwa, die IDS können/sollten anders aussehen) aussehen:
grep fhem /etc/passwd
fhem:x:1000:1000::/opt/fhem:/bin/bash
- jetzt über root als User fhem Dich anmelden:
sudo su - fhem
Ist keine gute Idee fhem eine Shell zu geben. fhem ist immer noch ein Systemuser.
Die Gruppen in denen pi ist:pi@raspberrypi:~ $ groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio
Die Gruppen in denen fhem ist:pi@raspberrypi:~ $ groups fhem
fhem : dialout gpio
Ich habe nur zum testen fhem in alle Gruppen hinzugefügt, in denen auch pi ist.
Wenn ich mich nun mit fhem anmelde und bluetoothctl ausführe hat sich nichts geändert.
Schade sonst hätte ich nach und nach diese wieder rausnehmen können um zu sehen an welcher es liegt.
Schnell alles wieder rückgängig gemacht.
In das Thema auf das verwiesen wurde konnte ich mich jetzt noch nicht einlesen.
@CoolTux:
Es geht ums debuggen und da ist genau dieses manchmal sinnvoll ....
@dreche:
Wie meldest Du Dich als fhem-User an?
Klappt bei mir als fhem gut. Habe keine Gruppen angepasst oder so
[20:25 root@pi-fhem01] > su -c 'bluetoothctl' -s /bin/bash fhem
[NEW] Controller 00:1A:7D:DA:71:14 pi-fhem01.tuxnet.local [default]
[bluetooth]# exit
[DEL] Controller 00:1A:7D:DA:71:14 pi-fhem01.tuxnet.local [default]
[20:26 root@pi-fhem01] >
@Wernieman:
so wie du es beschrieben hattest
@CoolTux:
kannst du mir kurz deinen Code erklären? Wo hast du was eingegebn?
Das habe ich ganz normal in der Shell eingegeben.
su = switch User und die entsprechende Syntax/Optionen
in welchen Gruppen ist denn Dein fhem-User?
[08:45 root@pi-fhem01] > groups fhem
fhem : dialout
[08:45 root@pi-fhem01] >
Die Gruppen in denen fhem ist:
pi@raspberrypi:~ $ groups fhem
fhem : dialout gpio
@CoolTux:
Ich habe genau das selbe eingegeben wie du allerdings bleibt der Erfolg weiterhin aus.
Wenn ich fhem der Gruppe sudo hinzufüge, funktioniert bluetoothctl solange ich sudo davor setze. So hat fhem aber doch im Prinzip root Rechte was nicht sein sollte oder?
Das Programm ansich läuft auch nur die Einbindung des Bluetoothdongles funktioniert nicht. (glaube ich zumindest)
@CoolTux:
Hast du einen Bluetoothdongle oder einen Pi3 mit integriertem Bluetooth?
Ich habe einen Dongle.
Wie sieht die Ausgabe denn aus?
Du kannst sudo dediziert auf dieses Tool setzen. Ich habe das hier am Anfang (https://heinz-otto.blogspot.de/2017/08/raspberry-ausschalten-mit-fhem.html) mal für mich aufgeschrieben.
Vielleicht kannst Du das adaptieren.
Gruß Otto
Danke für eure schnellen Antworten:
@Otto:
Wenn ich es nicht anders hinbekomme werde ich es wohl so machen.
@CoolTux:
Die Ausgabe von was möchtest du haben?
fhem@raspberrypi:~$ bluetoothctl
[bluetooth]# nnect to bluetoothd...
Bedeutet das nnect to bluetoothd...
, dass der zu bluetoothd die Verbindung nicht herstellen kann?
Kann ich Dir leider nicht sagen. Ich kenne das Programm nicht.
Ich erinnere mich irgendwie gerade, ich habe mit dem Tool auch schon mit Pi3 intern BT und einem externen Dongle experimentiert und bin schier verzweifelt! Die Reaktionen waren irgendwie immer unlogisch und nicht vorhersehbar.
Ich hatte damals den Verdacht, es liegt an den BT Treibern.
Gruß Otto
Ich kann mir ja meinen dongle anzeigen lassen:
fhem@raspberrypi:~$ hcitool dev
Devices:
hci0 00:1A:7D:DA:71:12
Jetzt versuche ich dem Programm zu sagen, dass sein default Controller diese Mac-Adresse hat:
[bluetooth]# select 00:1A:7D:DA:71:12
Antwort ist:
Controller 00:1A:7D:DA:71:12 not available
Der Befehl mit select ist hier erläutert:https://wiki.archlinux.org/index.php/Bluetooth#Configuration_via_the_CLI (https://wiki.archlinux.org/index.php/Bluetooth#Configuration_via_the_CLI)
Was mich verwundert ist, dass es mit dem Benutzer pi problemlos funktioniert, ich mit fhem aber sudo vorsetzen muss selbst wenn fhem in den gleichen Gruppen ist wie pi.