国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

4G MQTT采集RS485協(xié)議傳感器到數(shù)據(jù)庫

這篇具有很好參考價(jià)值的文章主要介紹了4G MQTT采集RS485協(xié)議傳感器到數(shù)據(jù)庫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

image.png

1、Modbus slave設(shè)置從機(jī)Modbus TCP參數(shù)

設(shè)置Modbus TCP協(xié)議和地址

模擬軟件設(shè)置的是 當(dāng)前電腦的,所以后面 配置Modbus TCP的從機(jī)時(shí),就要填當(dāng)前電腦的ip地址,不要寫 bl系列設(shè)備的ip地址
image.png

設(shè)置數(shù)據(jù)參數(shù)

設(shè)備地址:22
功能碼:04
數(shù)據(jù)類型:16
起始地址:0
數(shù)量:5個
image.png

2、設(shè)置BL102將Modbus slave從機(jī)數(shù)據(jù)點(diǎn)映射

設(shè)置WAN口為Modbus TCP Master模式

image.png

設(shè)置bl102設(shè)備和從機(jī)同個網(wǎng)段

image.png

添加從機(jī)

從機(jī)的ip地址,需要填寫Modbus slave軟件的所在電腦的ip地址,不要填了 bl網(wǎng)關(guān)的ip地址
image.png

添加數(shù)據(jù)點(diǎn)

image.png

設(shè)置MQTT broker(MQTT服務(wù)器)信息

image.png

查看設(shè)備上下行狀態(tài)

查看下行連接設(shè)備和上行連接MQTT服務(wù)器狀態(tài)
image.png

3、MQTT客戶端設(shè)置訂閱

客戶端設(shè)置連接MQTT服務(wù)器參數(shù)

服務(wù)器ip、端口、ID、心跳等。
image.png

設(shè)置訂閱BL102設(shè)備的主題

剛才設(shè)置BL102設(shè)備的發(fā)布主題是 test,那么訂閱也是 test
image.png
image.png

查看已收到BL102設(shè)備的數(shù)據(jù)

image.png

4、Python采集并寫入數(shù)據(jù)庫

其他語言也有對應(yīng)MQTT客戶端庫,根據(jù)對應(yīng)語言查找即可,這里演示用python。文章來源地址http://www.zghlxwxcb.cn/news/detail-433342.html

# python3.6
import json
import sqlite3

import random
from datetime import datetime

from paho.mqtt import client as mqtt_client


broker = '192.168.1.165'
#broker = 'broker-cn.emqx.io'
port = 1883
topic = "test"
# generate client ID with pub prefix randomly
client_id = f'python-mqtt-{random.randint(0, 100)}'


def connect_mqtt() -> mqtt_client:
    def on_connect(client, userdata, flags, rc):
        if rc == 0:
            print("Connected to MQTT Broker!")
        else:
            print("Failed to connect, return code %d\n", rc)

    client = mqtt_client.Client(client_id)
    client.on_connect = on_connect
    client.connect(broker, port)
    return client


#將數(shù)據(jù)出入數(shù)據(jù)庫
def create_table():
    #連接數(shù)據(jù)庫,沒有則創(chuàng)建
    conn = sqlite3.connect('plcdata') 
    print('連接數(shù)據(jù)庫成功')
    
    #判斷iot表是否存在,不存在則新建。 CREATE TABLE IF NOT EXISTS iot
    try:
        create_tb_cmd='''
        CREATE TABLE IF NOT EXISTS iot
        (lat TEXT,
        lng TEXT,
        signal_strength  INT,
        REG001 INT,
        REG002 INT,
        REG003 INT,
        REG004 INT,
        REG005 INT);
        '''
        #執(zhí)行創(chuàng)建數(shù)據(jù)表語句
        conn.execute(create_tb_cmd)
    except:
        print("Create table failed")
        return False
    
    insert_dt_cmd='INSERT INTO iot (lat,lng,signal_strength,REG001,REG002,REG003,REG004,REG005) VALUES '+ strlist + ';'
    print(insert_dt_cmd)
#     insert_dt_cmd='''
#     INSERT INTO iot (lat,lng,signal_strength,REG001,REG002,REG003,REG004,REG005) VALUES (0.000000,0.000000,0,33,8538,234,22,9046);
#     '''
    
    conn.execute(insert_dt_cmd)
    print('寫入數(shù)據(jù)庫成功')
    conn.commit()
    conn.close()

strlist = ''
def subscribe(client: mqtt_client):
    def on_message(client, userdata, msg):
        t = datetime.now()
        print('當(dāng)前時(shí)間:',t)
        #print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
        json_data = msg.payload.decode() #解析訂閱主題信息,
#         print(type(json_data)) #判斷data類型,是json字符串
        dict_json = json.loads(json_data)
        #print(type(dict_json))
        #print(dict_json)
        
        sensordatas = dict_json['sensorDatas']
        list_data =[]
        for i in sensordatas:
            #print(type(i),i)
            #print(i['flag'],type(i['flag']))


            if i['flag'] == 'GPS':
                list_data.append(i['lat'])
                list_data.append(i['lng'])
                #print(list_data)

            else:
                #print(i['flag'],i['value']) 
                list_data.append(i['value'])
                #print(list_data)
        global strlist
        strlist = str(tuple(list_data))
        print(strlist)
        create_table()
        
        
    client.subscribe(topic)
    client.on_message = on_message


def run():
    client = connect_mqtt()
    subscribe(client)
    client.loop_forever()


if __name__ == '__main__':
    run()

其他:python發(fā)布和訂閱

發(fā)布
# python 3.6

import random
import time

from paho.mqtt import client as mqtt_client


#broker = '192.168.1.165'
broker = 'broker-cn.emqx.io'
port = 1883
topic = "test"
# generate client ID with pub prefix randomly
client_id = f'python-mqtt-{random.randint(0, 1000)}'


def connect_mqtt():
    def on_connect(client, userdata, flags, rc):
        if rc == 0:
            print("Connected to MQTT Broker!")
        else:
            print("Failed to connect, return code %d\n", rc)

    client = mqtt_client.Client(client_id)
    client.on_connect = on_connect
    client.connect(broker, port)
    return client


def publish(client):
    msg_count = 0
    while True:
        time.sleep(1)
        msg = f"messages: {msg_count}"
        result = client.publish(topic, msg)
        # result: [0, 1]
        status = result[0]
        if status == 0:
            print(f"Send `{msg}` to topic `{topic}`")
        else:
            print(f"Failed to send message to topic {topic}")
        msg_count += 1


def run():
    client = connect_mqtt()
    client.loop_start()
    publish(client)


if __name__ == '__main__':
    run()

訂閱
# python3.6

import random
from datetime import datetime

from paho.mqtt import client as mqtt_client


#broker = '192.168.1.165'
broker = 'broker-cn.emqx.io'
port = 1883
topic = "test"
# generate client ID with pub prefix randomly
client_id = f'python-mqtt-{random.randint(0, 100)}'


def connect_mqtt() -> mqtt_client:
    def on_connect(client, userdata, flags, rc):
        if rc == 0:
            print("Connected to MQTT Broker!")
        else:
            print("Failed to connect, return code %d\n", rc)

    client = mqtt_client.Client(client_id)
    client.on_connect = on_connect
    client.connect(broker, port)
    return client


def subscribe(client: mqtt_client):
    def on_message(client, userdata, msg):
        t = datetime.now()
        print('當(dāng)前時(shí)間:',t)
        print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
        

    client.subscribe(topic)
    client.on_message = on_message


def run():
    client = connect_mqtt()
    subscribe(client)
    client.loop_forever()


if __name__ == '__main__':
    run()

到了這里,關(guān)于4G MQTT采集RS485協(xié)議傳感器到數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • # 項(xiàng)目一:???STM32+串口DMA+RS485+MODBUS+傳感器實(shí)現(xiàn)SO2的測試

    # 項(xiàng)目一:???STM32+串口DMA+RS485+MODBUS+傳感器實(shí)現(xiàn)SO2的測試

    通過STM32控制傳感器實(shí)現(xiàn)氣體濃度的測量:RS485+MODBUS+串口DMA+定時(shí)器。 其中,USART2負(fù)責(zé)控制數(shù)據(jù)的發(fā)送和接受,USART3負(fù)責(zé)將詢問幀、應(yīng)答幀以及處理后數(shù)據(jù)打印出來,TIM1負(fù)責(zé)每隔1秒發(fā)送一次詢問幀。 持續(xù)更新手中的項(xiàng)目(導(dǎo)師給的活)經(jīng)驗(yàn)。。。 打工人加油??????????

    2024年02月11日
    瀏覽(26)
  • MFC+Modbus-Tcp協(xié)議實(shí)現(xiàn)溫濕度傳感器采集
二、libmodbus驅(qū)動庫

    MFC+Modbus-Tcp協(xié)議實(shí)現(xiàn)溫濕度傳感器采集 二、libmodbus驅(qū)動庫

    本文簡單介紹 MFC 使用 Modbus -Tcp通信實(shí)現(xiàn) RS-WS-ETH-6 系列 MODBUSTCP 型溫濕度傳感器采集數(shù)據(jù)。 ?一文看懂Modbus協(xié)議:一文看懂Modbus協(xié)議 ?libmodbus驅(qū)動庫的使用:Modbus驅(qū)動庫—libmodbus驅(qū)動庫的使用_whik1194的博客-CSDN博客_libmodbus ?modbus 中文手冊: libmodbus官方手冊中文翻譯_躍動的風(fēng)

    2024年02月02日
    瀏覽(75)
  • STM32教學(xué)——JQ8900語音模塊+光照傳感器+4G模塊數(shù)據(jù)上傳阿里云物聯(lián)網(wǎng)

    STM32教學(xué)——JQ8900語音模塊+光照傳感器+4G模塊數(shù)據(jù)上傳阿里云物聯(lián)網(wǎng)

    原理圖 PCB 實(shí)物圖 選用EC200U模塊,集成4g和GPS以及藍(lán)牙功能 通過串口2與4G模塊串口連接,串口傳輸數(shù)據(jù)指令。 這個時(shí)候4g模塊已經(jīng)成功啟動,下一步注冊進(jìn)阿里云物聯(lián)網(wǎng)平臺 然后就是上發(fā)數(shù)據(jù)給阿里云平臺 上發(fā)了之后阿里云就可以收到這些數(shù)據(jù) 根據(jù)廠家提供的手冊資料,可

    2024年03月14日
    瀏覽(22)
  • Java采集傳感器數(shù)據(jù),親測有效!

    Java采集傳感器數(shù)據(jù),親測有效!

    先說背景 , 最近公司項(xiàng)目需要用到傳感器,采集設(shè)備溫濕度,傾斜角,電流…,公司采購采購了一個溫濕度傳感器給我們開發(fā)測試使用,如下圖: 看著還挺精致有沒有。 有了這個溫濕度傳感器,我們?nèi)绾巫x取其采集到的數(shù)據(jù)呢。需要一個 RS485轉(zhuǎn)串口工具 ,下面這個藍(lán)色的

    2024年01月15日
    瀏覽(29)
  • 柔性陣列壓阻式傳感器采集電路

    柔性陣列壓阻式傳感器采集電路

    以4*4陣列式傳感器為例,等效電路如下圖: 其中第一行傳感器的行線是共享的,然后每個傳感器又單獨(dú)接列線。 Tekscan推薦電路如下: Multisim仿真電路如下: 傳感器需要單片機(jī)控制逐列掃描,例如,看上圖掃描第2列時(shí),需要控制其他3列的電源開關(guān)斷開,只保證第二列傳感器

    2024年02月05日
    瀏覽(35)
  • LabVIEW-模擬傳感器采集數(shù)據(jù)并預(yù)測數(shù)據(jù)

    LabVIEW-模擬傳感器采集數(shù)據(jù)并預(yù)測數(shù)據(jù)

    已知某傳感器過去的一段時(shí)間內(nèi)采集的數(shù)據(jù)為d1,d2,d3,......,dn,現(xiàn)欲以m點(diǎn)的數(shù)據(jù)寬度,預(yù)測 tao 步后的數(shù)據(jù)值,即將一維的時(shí)間序列數(shù)據(jù)重構(gòu)為如下m+1列的形式: d(1)? ? d(2?)? ?.......????d(m),????????d(m+tao) d(2)? ? d(3 )? ?.......????d(m+1),????d(m+tao+1) ......................

    2024年02月16日
    瀏覽(19)
  • homeassistant配置MQTT集成以及傳感器實(shí)體(STM32連接進(jìn)入homeassistant)

    homeassistant配置MQTT集成以及傳感器實(shí)體(STM32連接進(jìn)入homeassistant)

    大家可以看作者的小破站教學(xué)視頻(如果喜歡的話可以點(diǎn)個關(guān)注,給個三聯(lián)!啊哈哈哈哈哈哈): 【homeassistant配置MQTT集成以及傳感器實(shí)體(STM32連接進(jìn)入homeassistant)】 最近homeassistan更新之后,傳統(tǒng)的MQTT服務(wù)器配置是完全不適用的 目前(2023.4.16)的教程都沒有找到特別適用

    2024年02月10日
    瀏覽(25)
  • 單片機(jī)采集傳感器數(shù)據(jù)(整形,浮點(diǎn)型)modbus上傳

    單片機(jī)采集傳感器數(shù)據(jù)(整形,浮點(diǎn)型)modbus上傳

    浮點(diǎn)型數(shù)據(jù) 占兩個寄存器(四個字節(jié)) short 整形 占一個寄存器 (兩個字節(jié)) 注意?。。。?stm32 是小端模式,而modbus解析數(shù)據(jù)是大端模式 所以先發(fā)送高字節(jié) 如int a=16777220,化為十六進(jìn)制是0x01?00 00 04, 則04屬于低字節(jié),01屬于高字節(jié) 例如float a=125.6? ? ?十六進(jìn)制0x42 fb 33 3

    2024年02月09日
    瀏覽(25)
  • STM32+DHT11采集溫濕度傳感器數(shù)據(jù)

    STM32+DHT11采集溫濕度傳感器數(shù)據(jù)

    ????????DHT11 是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個電阻式測濕元件和一個 NTC 測溫元件,并與一個高性能 8 位單片機(jī)相連接。通過單片機(jī)等微處理器簡單的電路連接就能夠 實(shí)時(shí)的采集本地濕度和溫度。 DHT11 與單片機(jī)之間能采用簡單的單總線進(jìn)行通信,僅

    2024年02月07日
    瀏覽(39)
  • 車載測試:詳解ADAS傳感器(相機(jī))標(biāo)定數(shù)據(jù)采集方法

    車載測試:詳解ADAS傳感器(相機(jī))標(biāo)定數(shù)據(jù)采集方法

    1.基本原理 相機(jī)外參標(biāo)定,通過拍攝多角度棋盤格標(biāo)定相機(jī)外參。 2.外參標(biāo)定板設(shè)計(jì) 標(biāo)定板分為垂直標(biāo)定板和水平標(biāo)定板,由于地面的水平標(biāo)定板不容易被檢測到,本文采用垂直標(biāo)定板進(jìn)行相機(jī)標(biāo)定。 在標(biāo)定過程中標(biāo)定板需要和車身坐標(biāo)成正交狀態(tài),也就是標(biāo)定板垂直邊需

    2024年02月13日
    瀏覽(78)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包