Stap 9: BLE gegevens via programmacode schrijven in Python (Raspberry Pi)
In deze laatste stap schrijven we een script in Python programmatisch gebruik van het programma gatttool . Dat betekent dat we onze script op een manier die ons toelaten zal om gatttool te gebruiken zonder te hoeven herhaaldelijk het invoeren van opdrachten in de terminal zal structuur.
Het script is vrij ongecompliceerd, en kan worden uitgebreid door u verschillende animaties van de RGB LED weergeven. Met de RFduino aangedreven en draait de dezelfde firmware zoals in de vorige stap, we gaan naar onze Raspberry Pi en open een teksteditor (bijvoorbeeld Leafpad).
We zullen het maken van ons script gebruiken. We beginnen met het invoeren van een aantal functiedefinities:
MAC = "DC:E2:F4:0B:3A:03"
CHAR = 0X0011
def initialize():
commands.getoutput '(hciconfig hci0 neer')
commands.getoutput '(hciconfig hci0 omhoog')
afdrukken van commands.getoutput ('hciconfig - a')
commands.getoutput ('killall hcitool')
De initialize() functie zorgt voor het configureren van de BLE-interface. Hoewel we dit reeds in een vorige stap deden, is het niet slecht om ervoor te zorgen dat deze beschikbaar is. Deze functie geeft de uitvoer van de opdracht hciconfig aan de Windowwhere van de Terminal het script is uitgevoerd.
def sendColor(c):
opdracht "sudo gatttool -t willekeurige -b {0}--char-schrijven-req - een {1} - n {2}" = .format (MAC, CHAR, c)
p = subproces. Popen(Command.split(), shell = False)
afdrukken van p.communicate() [0]
De sendColor-functie neemt 3-byte string en verzendt het naar het apparaat met het mac-adres MAC met de karakteristieke greep CHAR. U moet deze waarden te vervangen door uw eigen waarden aan het begin van het script.
Als __name__ == '__main__':
Initialize()
sendColor('FF0000')
time.Sleep(1)
sendColor('00FF00')
time.Sleep(1)
sendColor('0000FF')
time.Sleep(1)
sendColor('000000')
Tot slot, wanneer het script is liep het zal draaien de initialize() functie eenmaal, en kies de kleur tot full-helderheid rood, wacht 1 tweede, volledig-helderheid Green, wacht 1 seconde, full-helderheid blauw, wacht 1 seconde en stuurt u een 'geen kleur' (uit) opdracht. Als alles aanwezig is, indien de RFduino blijkt het volgende gedrag: