0

Sim808 GPS モジュールを使用して緯度経度を送信し、MQTT を使用してサブスクライバーに送信しています。hereのチュートリアルに従って、Sim808 経由で MQTT メッセージを発行しましたが、まだ運がありません。ここに私のサンプルコードがあります:

def cmd(cmd, ser):
    out = b''; prev = b"101001011"
    ser.flushInput(); ser.flushOutput()
    ser.write(cmd + b'\r');

    while True :
        out += ser.read(1)
        if prev == out:
            return out
        prev = out
    return out

def gprs():
    command1 = cmd(b'AT', ser)  # Check module status
    print(str(command1.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    sleep(1)

    command2 = cmd(b'AT+CPIN?', ser)    # Check if module ready for sms, call,gps, etc.
    print(str(command2.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    sleep(1)

    command3 = cmd(b'AT+CFUN=1', ser)   # Activate GPRS
    print(str(command3.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    sleep(1)

    command4 = cmd(b'AT+CSTT="Internet","",""', ser)    # Setting APN
    print(str(command4.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    while b"ERROR" in command4:
    sleep(3)

    command5 = cmd(b'AT+CIICR', ser)    # Start connection with GPRS
    print(str(command5.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    sleep(1)

    command6 = cmd(b'AT+CIFSR', ser)    # IP Adress from carrier
    print(str(command6.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    sleep(1)

    command7 = cmd(b'AT+CIPSTART="TCP","test.mosquitto.org","1883"', ser)
    print(str(command7.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))

def gprs_send(pub):
    command = cmd(b'AT+CIPSEND', ser)
    print(str(command.replace(b"\r", b"").replace(b"\n", b' '), 'utf-8'))
    if b">" in command:
        pub = cmd(pub, ser)
        return pub

main(動作するかどうかを確認するためにダミーデータを作成しましhex-byteた):

if __name__ == '__main__' :
    gprs()
    sleep(3)
    pub_msg = b'\x10\x0F\x00\x04\x4D\x51\x54\x54\x04\x02\x00\x3C\x00\x03\x41\x42\x43\x30\x18\x00\x0F\x77\x70\x2D\x69\x6F\x74\x2F\x6F\x62\x64\x32\x2F\x72\x70\x6D\x00\x04\x38\x38\x38\x38\x1A'

    print(gprs_send(pub_msg))

そして出力:

AT OK 
AT+CPIN? +CPIN: READY  OK  
AT+CFUN=1 OK
AT+CSTT="Internet","","" OK 
AT+CIICR
AT+CIFSR 10.241.141.152 
AT+CIPSTART="TCP","test.mosquitto.org","1883" OK 
AT+CIPSEND > 
b'\x10\x0f\x00\x04MQTT\x04\x02\x00<\x00\x03ABC0\x18\x00\x0fwp-iot/obd2/rpm\x00\x048888\x1a\r'

サブスクライバー側ではこれのみが表示されますが、パブリッシャーからのメッセージは表示されません (Connected with result code 0メッセージが発行された後に表示されます):

Connecting to broker..
Connected with result code 0

この事件に詳しい人いますか?どんな助けでも大歓迎です。ありがとうございました。

4

0 に答える 0