Bluetoothverbindung über bash-skript

Begonnen von dreche, 09 Oktober 2017, 16:22:20

Vorheriges Thema - Nächstes Thema

dreche

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

CoolTux

Was genau soll denn Deiner Erfahrung nach passieren?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dreche

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dreche

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?

CoolTux

Eventuell hat fhem nicht die Rechte. Wie sind denn die Rechte von fhem und wie von pi?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dreche

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.

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

Wie Otto schon sagt ist interessant zu wissen in welche. Gruppen fhem und in welchen pi ist.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Wernieman

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
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

CoolTux

Ist keine gute Idee fhem eine Shell zu geben. fhem ist immer noch ein Systemuser.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dreche

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.

Wernieman

@CoolTux:
Es geht ums debuggen und da ist genau dieses manchmal sinnvoll ....

@dreche:
Wie meldest Du Dich als fhem-User an?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

CoolTux

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] >
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dreche

@Wernieman:
so wie du es beschrieben hattest

@CoolTux:
kannst du mir kurz deinen Code erklären? Wo hast du was eingegebn?