python 接收藍牙網關代碼(已解決)

這是mqtt的代碼  可以爲後面寫http通信的數據解析做參考 

完全可以測通的(是因爲防火牆的問題)

原因:開啓了防火牆在本地是可以測通的  外面的機器是訪問不了我的電腦的

解決辦法:關閉防火牆就可以了

輸入:

import time
import paho.mqtt.client as mqtt
import msgpack

def on_subscribe(mosq, obj, mid, granted_qos):
    print("Subscribed: " + str(mid))

def on_message(mosq, obj, msg):
    for d in msgpack.unpackb(msg.payload)[b'devices']:
        print("=============================================")
        # adv type
        print( "type:", ord(d[0]))
        print( "mac:{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}".format(ord(d[1]), ord(d[2]), ord(d[3]), ord(d[4]), ord(d[5]), ord(d[6])))
        print( "rssi:", ord(d[7]) - 256)
        hex_chars = map(hex,map(ord,d))
        del hex_chars[:8]
        print( "adv:", hex_chars)

def on_connect(mosq, obj,flags, rc):
    print("Connected with result code "+str(rc))
    mqttc.subscribe("hello", 0)
    print("Connected")
    

mqttc = mqtt.Client()
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.on_message = on_message
mqttc.connect("10.33.4.31", 60000, 60)
mqttc.loop_forever()

輸出:

Traceback (most recent call last):
  File "D:\F\eclipse-workspace\UDP\src\78.py", line 29, in <module>
    mqttc.connect("10.33.4.31", 60000, 60)
  File "D:\F\Anaconda3\lib\site-packages\paho\mqtt\client.py", line 839, in connect
    return self.reconnect()
  File "D:\F\Anaconda3\lib\site-packages\paho\mqtt\client.py", line 962, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "D:\F\Anaconda3\lib\socket.py", line 722, in create_connection
    raise err
  File "D:\F\Anaconda3\lib\socket.py", line 713, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] 由於目標計算機積極拒絕,無法連接。

 有用的代碼

 初級版

import tornado.ioloop
import tornado.web
import msgpack
from binascii import *
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        print('get')
        self.write("Hello, get")
        
    def post(self):
        #print(payloads);
        print('post')
#         package=self.request.files['chunk'][0]['body'];
        package =  self.request.body
        data = msgpack.unpackb(package,use_list=False, raw=False)
        brocast_data = data['devices']

        outData={'header':"",'payload':[]}

        for b in brocast_data:
            record={};
            data_bro={};
            try:
                print(b)
                record=b2a_hex(b)

                print(int(record[:2],16))
                print(hex(int(record[:2],16)))
                data_bro['type']=hex(int(record[:2],16))
                data_bro['mac']=hex(int(record[2:14],16))
                data_bro['rssi']=hex(int(record[14:16],16))
                data_bro['broadcast_data']=hex(int(record[16:],16))
                 
            except:
                pass;
            outData['payload'].append(data_bro);
        print(outData)
#         
#         info = str(data['devices'],'utf-8')
#         print(info)
        
    
application = tornado.web.Application([
    (r"/", MainHandler),])
 
if __name__ == "__main__":
    application.listen(1883,'10.33.4.31')
    tornado.ioloop.IOLoop.instance().start()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章