Я разрабатываю приложение для отправки сообщений на мой 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
Я нажал на своем приложении кнопку для изображения, но она не показывает, что сообщение было получено.