FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: dreche am 09 Oktober 2017, 16:22:20

Titel: Bluetoothverbindung über bash-skript
Beitrag von: dreche am 09 Oktober 2017, 16:22:20
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...
[bluetooth]# connect F8:34:F2:EA:44:D7
No default controller available
[bluetooth]#  quit
[bluetooth]#
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
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 09 Oktober 2017, 16:31:39
Was genau soll denn Deiner Erfahrung nach passieren?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 09 Oktober 2017, 21:05:38
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
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 09 Oktober 2017, 21:55:24
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.
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 10 Oktober 2017, 17:57:06
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?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 10 Oktober 2017, 18:05:55
Eventuell hat fhem nicht die Rechte. Wie sind denn die Rechte von fhem und wie von pi?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 10 Oktober 2017, 19:31:18
Welche Berechtigungen denn (für welche Dateien) oder was meinst du?

Das Programm scheint schon zu funktionieren.
Wenn ich select Mac-Adresseeingebe (Mac-Adresse vom Controller der mir bei pi angezeigt wird), bekomme ich not available zurück.
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: Otto123 am 10 Oktober 2017, 19:44:05
Hi,

ich denke es ist ein Rechteproblem
mach mal als pi groups pigibt 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
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 10 Oktober 2017, 19:53:22
Wie Otto schon sagt ist interessant zu wissen in welche. Gruppen fhem und in welchen pi ist.
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: Wernieman am 10 Oktober 2017, 19:59:32
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
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 10 Oktober 2017, 20:05:40
Ist keine gute Idee fhem eine Shell zu geben. fhem ist immer noch ein Systemuser.
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 10 Oktober 2017, 20:21:40
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.
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: Wernieman am 10 Oktober 2017, 20:23:20
@CoolTux:
Es geht ums debuggen und da ist genau dieses manchmal sinnvoll ....

@dreche:
Wie meldest Du Dich als fhem-User an?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 10 Oktober 2017, 20:29:41
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] >
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 10 Oktober 2017, 21:09:06
@Wernieman:
so wie du es beschrieben hattest

@CoolTux:
kannst du mir kurz deinen Code erklären? Wo hast du was eingegebn?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 11 Oktober 2017, 08:33:26
Das habe ich ganz normal in der Shell eingegeben.

su = switch User und die entsprechende Syntax/Optionen
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: Wernieman am 11 Oktober 2017, 08:39:22
in welchen Gruppen ist denn Dein fhem-User?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 11 Oktober 2017, 08:45:48

[08:45 root@pi-fhem01] > groups fhem
fhem : dialout
[08:45 root@pi-fhem01] >
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 11 Oktober 2017, 10:14:00
Die Gruppen in denen fhem ist:
pi@raspberrypi:~ $ groups fhem
fhem : dialout gpio
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 17 Oktober 2017, 22:00:54
@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?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 17 Oktober 2017, 22:08:24
Ich habe einen Dongle.
Wie sieht die Ausgabe denn aus?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: Otto123 am 17 Oktober 2017, 22:13:15
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
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 17 Oktober 2017, 22:27:39
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?
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: CoolTux am 17 Oktober 2017, 22:38:57
Kann ich Dir leider nicht sagen. Ich kenne das Programm nicht.
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: Otto123 am 17 Oktober 2017, 22:42:12
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
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 17 Oktober 2017, 22:52:09
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)
Titel: Antw:Bluetoothverbindung über bash-skript
Beitrag von: dreche am 17 Oktober 2017, 22:54:32
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.