2017-03-05 14 views
0

これはPythonスクリプティングには比較的新しいので、ラズベリーとスマートデバイスの間でBluetooth経由で無線LANを設定することになっています。残念ながら、私はタイトルに記載されているエラーを実行し続けます。誰かがコードをコピーして実行し、私がこのエラーに遭遇し続ける理由を教えてくれることを願っていました。すべての助けが大変ありがとう!RPi 3 Python Script - NameError:name 'BluetoothSocket'が定義されていません

#!/usr/bin/env python 

import os 

from bluetooth import * 

from wifi import Cell, Scheme 

import subprocess 

import time 




wpa_supplicant_conf = "/etc/wpa_supplicant/wpa_supplicant.conf" 

sudo_mode = "sudo " 


def wifi_connect(ssid, psk): 

    # write wifi config to file 
    f = open('wifi.conf', 'w') 
    f.write('country=GB\n') 
    f.write('ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev\n') 
    f.write('update_config=1\n') 
    f.write('\n') 
    f.write('network={\n') 
    f.write(' ssid="' + ssid + '"\n') 
    f.write(' psk="' + psk + '"\n') 
    f.write('}\n') 
    f.close() 

    cmd = 'mv wifi.conf ' + wpa_supplicant_conf 
    cmd_result = "" 
    cmd_result = os.system(cmd) 
    print cmd + " - " + str(cmd_result) 


    # restart wifi adapter 
    cmd = sudo_mode + 'ifdown wlan0' 
    cmd_result = os.system(cmd) 
    print cmd + " - " + str(cmd_result) 

    time.sleep(2) 

    cmd = sudo_mode + 'ifup wlan0' 
    cmd_result = os.system(cmd) 
    print cmd + " - " + str(cmd_result) 

    time.sleep(10) 

    cmd = 'iwconfig wlan0' 
    cmd_result = os.system(cmd) 
    print cmd + " - " + str(cmd_result) 

    cmd = 'ifconfig wlan0' 
    cmd_result = os.system(cmd) 
    print cmd + " - " + str(cmd_result) 

    p = subprocess.Popen(['ifconfig', 'wlan0'], stdout=subprocess.PIPE, 
          stderr=subprocess.PIPE) 

    out, err = p.communicate() 

    ip_address = "<Not Set>" 

    for l in out.split('\n'): 
     if l.strip().startswith("inet addr:"): 
      ip_address = l.strip().split(' ')[1].split(':')[1] 

    return ip_address 



def ssid_discovered(): 

    Cells = Cell.all('wlan0') 

    wifi_info = 'Found ssid : \n' 

    for current in range(len(Cells)): 
     wifi_info += Cells[current].ssid + "\n" 


    wifi_info+="!" 

    print wifi_info 
    return wifi_info 


def handle_client(client_sock) : 

    # get ssid 
    client_sock.send(ssid_discovered()) 
    print "Waiting for SSID..." 


    ssid = client_sock.recv(1024) 
    if ssid == '' : 
     return 

    print "ssid received" 
    print ssid 

    # get psk 
    client_sock.send("waiting-psk!") 
    print "Waiting for PSK..." 


    psk = client_sock.recv(1024) 
    if psk == '' : 
     return 

    print "psk received" 

    print psk 

    ip_address = wifi_connect(ssid, psk) 

    print "ip address: " + ip_address 

    client_sock.send("ip-addres:" + ip_address + "!") 

    return 



try: 
    while True: 

     server_sock=BluetoothSocket(RFCOMM) 
     server_sock,bind(("",PORT_ANY)) 
     server_sock.listen(1) 

     port = server_sock.getsockname()[1] 

     uuid = "815425a5-bfac-47bf-9321-c5ff980b5e11" 

     advertise_service(server_sock, "RaspberryPiServer", 
          service_id = uuid, 
          service_classes = [ uuid, SERIAL_PORT_CLASS ], 
          profiles = [ SERIAL_PORT_PROFILE ], 
          protocols = [ OBEX_UUID ] 
          ) 

     print("Waiting for connection on RFCOMM channel %d" % port) 

     client_sock, client_info = server_sock.accept() 
     print "Accepted connection from ", client_info 

     handle_client(client_sock) 

     client_sock.close() 
     server_sock.close() 

     # finished config 
     print 'Finished configuration\n' 


except (KeyboardInterrupt, SystemExit): 

    print '\nExiting\n' 

は、このコードの出力

Traceback (most recent call last): File "test.py", line 128, in <module> 
    server_sock=BluetoothSocket(RFCOMM) 

NameError: name 'BluetoothSocket' is not defined 
+0

おかげで、私はそれを正しくフォーマットする方法を知らなかったをインストールしてみてください。それはなぜそのエラーを生成している任意のアイデアですか? – syrj2112

+0

申し訳ありません。私はBluetoothプログラミングをしたことはありません。しかし、標準ライブラリには 'bluetooth'モジュールはありません。おそらくあなたの質問を編集して、あなたが使用しているライブラリ、おそらくあなたのOSを教えてください。BluetoothのサポートはおそらくOS固有のものでしょうから。 – Chris

+0

Raspberry Pi 3がインストールされているBluetoothライブラリがあるプロジェクトです。私はこのプロジェクトに関わるすべての図書館を確信していませんが、スクリプトの最上位に組み込まれています。 – syrj2112

答えて

0

あなたは私達にあなたのpythonのバージョンを表示することができますか?

ジャストタイプ:

$ python --version 

bluetooth libに存在しているようです。しかしないBluetoothSocket:これにかなり新しいもの@クリスのためのbluezとのpython-のbluez

$ sudo apt-get install bluez 
$ sudo apt-get install python-bluez 
関連する問題