Shell-Script gesucht?

...komplette Frage anzeigen

4 Antworten

Hallo

Wobei die "Notification handle..." Nachrichten sekündlich eintreffen

Sowas:?

pi@raspberrypi:~ $ sudo hciconfig hci0 
uppi@raspberrypi:~ $ sudo gatttool -b 50:F1:4a:50:9C:97 -I[50:F1:4a:50:9C:97][LE]> connect
Attempting to connect to 50:F1:4a:50:9C:97
Connection successful
Notification handle = 0x0025 value: 32 30 2e 33 31
Notification handle = 0x0025 value: 32 30 2e 38 30
Notification handle = 0x0025 value: 32 30 2e 33 31
Notification handle = 0x0025 value: 32 30 2e 38 30
[50:F1:4a:50:9C:97][LE]>
  • Was davon ist denn nun der Teil der in eine Variable geschrieben werden soll?

Wäre es beispielsweise die letzte Zahl in der letzten Notfification-Zeile, dann ginge das so:

VAR=$(sudo gatttool -b 50:F1:4a:50:9C:97 -I[50:F1:4a:50:9C:97][LE]> connect | grep "Notification" | awk '{print $9}' | head -n1)

Da Du keine Code-TAGs verwendet hast weiß ich nicht genau wo Dein Befehl beginnt und wo die Ausgabe des Kommandos beginnt, das musst Du halt anpassen (hab es nur versucht in Form zu bringen).

Danach sollte ein:

echo $VAR

Die gewünschte Ausgabe anzeigen:

Linuxhase)

Antwort bewerten Vielen Dank für Deine Bewertung

wer sollte dir denn solche Daten über Bluetooth senden?

Das ist doch kein Code den du empfängst, das ist so etwas wie ein Gemisch von Ein- und Ausgaben, die jemand auf einem anderen Rechner ablaufen lässt und dann dir zusendet  (warum auch immer).

Antwort bewerten Vielen Dank für Deine Bewertung

In was für einem String möchtest du das speichern?

Wie soll die Ausgabe aussehen, nur die fünf hex-Zahlen?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Physikgr
17.07.2017, 22:33

Hallo kernash,

Wenn möglich sollte es ins Dezimalsystem konvertiert werden(32 30 2e 38 30  -> 20,80) und anschließend in eine logfile gespeichert werden. Ist das möglich?

Gruß Physikgr

0
pi@raspberrypi:~ $ sudo hciconfig hci0 up
pi@raspberrypi:~ $ sudo gatttool -b 50:F1:4a:50:9C:97 -I
[50:F1:4a:50:9C:97][LE]> connectAttempting to connect to 50:F1:4a:50:9C:97
Connection successful
Notification handle = 0x0025 value: 32 30 2e 33 31 
Notification handle = 0x0025 value: 32 30 2e 38 30 
Notification handle = 0x0025 value: 32 30 2e 33 31 
Notification handle = 0x0025 value: 32 30 2e 38 30 
[50:F1:4a:50:9C:97][LE]>

Hier nochmal der Code.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Linuxhase
18.07.2017, 20:41

@Physikgr

Hier nochmal der Code.

Also könnte der Weg so aussehen:

VAR=$(sudo gatttool -b 50:F1:4a:50:9C:97 -I |\
grep 'Notification' |\
tail -n1 |\
awk '{print $6" "$7" "$8" "$9" "$10"0a"'} |\
xxd -r -p
)

Dann sollte in $VAR nur noch die Temperatur stehen.

echo $VAR
20.31

Du kannst noch den Punkt gegen ein Komma austauschen; einfach das folgende hinter der awk-Zeile anhängen:

| sed -s '/./,'

prüfen kann ich es nicht weil ich kein xxd  installiert habe.

Linuxhase

0

Was möchtest Du wissen?