ich hoffe, ich bin in diesem Forum richtig mit meinem Anliegen.
Obwohl ich absoluter Programmierneuling bin, funktioniert der jetzige Stand nach stundenlanger Recherche und tagelangem Probieren einwandfrei.
Mit den 2 unten angehängten SL4A Scripts sende ich von der Android App Tasker Daten über ein Bluetooth Modul HC-05 an einen Mikroprozessor.
BTSend.py (wird von Tasker mit Parameter %par1 gestartet)
Code: Alles auswählen
import socket
import android
droid = android.Android()
command=droid.getIntent().result[u'extras'][u'%par1']
Ziel='127.0.0.1'
Port=5005
s_udp_sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
def sende(Nachricht):
s_udp_sock.sendto( Nachricht, (Ziel,Port) )
sende(command)
BTServer.py (läuft permanent in Endlosscheife und hält Verbindung mit BT Modul HC-05)
Code: Alles auswählen
import socket
import android
import time
droid = android.Android()
uuid='00001101-0000-1000-8000-00805F9B34FB'
mac='xx:xx:xx:xx:xx:xx'
Quelle='127.0.0.1'
Port=5005
BTVerify=1
e_udp_sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
e_udp_sock.bind( (Quelle,Port) )
print '########Dies ist der Empfaenger########'
print 'Neue Verbindung:'
print 'Quelle',Quelle
print 'Port=',Port
while 1:
if (len(droid.bluetoothActiveConnections().result) == 0):
print 'Verbinde mit ClockRadioBT'
connID=droid.bluetoothConnect(uuid,mac).result
while (len(droid.bluetoothActiveConnections().result) == 0):
time.sleep(0.10)
print ''
print 'Warte auf Daten'
data, addr = e_udp_sock.recvfrom(16)
if (len(data) == 1):
# A = Amp On
# a = Amp Off
# B = Start charging
# b = Stop charging
droid.bluetoothWrite(data, connID)
if (BTVerify == 1):
if droid.bluetoothReadReady():
res= droid.bluetoothRead(1, connID).result
if (res == data):
task_name='BTCallback'
extras={'task_name':task_name}
taskIntent = droid.makeIntent('net.dinglisch.android.tasker.ACTION_TASK', None, None, extras).result
droid.sendBroadcastIntent(taskIntent)
print 'Processed ', data, ', Res = ', res
else:
print 'Processed ', data, ', Res = ? (VerifyOff)'
elif (data == 'VerifyOn'):
BTVerify = 1
print 'Set BTVerify = 1'
elif (data == 'VerifyOff'):
BTVerify = 0
print 'Set BTVerify = 0'
elif (data == 'Exit'):
droid.exit()
sys.exit
print 'Processed ', data
else:
print 'Unknown command'
Würde evtl. mit einem 2. Script und res= droid.bluetoothRead(1, connID).result in Endlosschleife funktionieren, wenn ich 2x mit dem BT-Modul verbinden könnte - geht aber nicht.
Und im BTServer.py oben wartet das Script ja bei data, addr = e_udp_sock.recvfrom(16) auf Socket Daten.
Ich hoffe, ich habe mich einigermassen verständlich ausgedrückt und würde mich freuen, wenn jemand mir Newbie weiterhelfen kann
Danke für alle Antworten
Kloeppi