MQTT IOS не может отправить сообщение Raspberry pi - PullRequest
0 голосов
/ 26 марта 2020

Я разрабатываю приложение для отправки сообщений на мой Raspberry pi. Я сделал код в XCode и скрипт python на Raspberry Pi. Соединение между iOS и Raspberry Pi с использованием MQTT показывает, что оно работает. В Raspberry pi я использую mosquitto MQTT сервер. А для приложения я использую Cocoapods. Моя проблема в том, что когда я нажал кнопку, чтобы отправить сообщение. Сообщение не получено на Raspberry Pi, даже если приложение подключено к нему.

Ниже приведен код приложения, использующего Xcode. Это простой код для подтверждения концепции.

import UIKit
import CocoaMQTT

class ViewController: UIViewController {

var direction = "forward"
//Instantiate CocoaMQTT as mqttClient
let mqttClient = CocoaMQTT(clientID: "iosApp", host: "192.168.1.22", port: 1883)

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func connectBtnPressed(_ sender: UIButton) {
    mqttClient.connect()
    print("Connection establish")
}

@IBAction func picturePressed(_ sender: UIButton) {
    mqttClient.publish("rover/move", withString: "picture")
}
}

Python код сценария:

import paho.mqtt.client as mqtt

clientName = "rover"
serverAddress = "192.168.1.22"
mqttClient = mqtt.Client(clientName)

def connectionStatus(client, userdata, flags, rc):
    print("subscribing")
    mqttClient.subscribe("rover/move")
    print("subscribed")

def messageDecoder(client, userdata, msg):
    message = msg.payload.decode(encoding='UTF-8')

   if message == "picture":
      file1 = open("passchar.txt","a")
      file1.seek(0)
      file1.truncate()
      file1.write("c")
      file1.close()
      print("Pic time")
   else:
      print("?!? Unknown message?!?")

# Set up calling functions to mqttClient
mqttClient.on_connect = connectionStatus
mqttClient.on_message = messageDecoder

# Connect to the MQTT server & loop forever.
mqttClient.connect(serverAddress)
mqttClient.loop_forever()

Вывод, который я получаю в Raspberry pi

Output which shows the connection between IOS App and Raspberry Pi

Я нажал на своем приложении кнопку для изображения, но она не показывает, что сообщение было получено.

...