Я в настоящее время реализую протокол MQTT, который будет использоваться между двумя малиновыми писами.Первый - это Pi 0, к которому будет подключена камера.Он будет преобразовывать каждый захваченный кадр в массив numpy, а затем публиковать его на главном Pi, который затем преобразует массив numpy в изображение, используя PIL.Я делаю это таким образом, так как я хочу, чтобы основные операции по обработке изображений выполнялись на главном Pi.
Моя проблема в том, что мастер Пи не получает никаких сообщений.Я выполнил предварительную отладку, и все работает нормально на сценарии слуги.Но по какой-то причине мастер Пи ничего не получает.
Вот оба сценария:
servant.py:
import paho.mqtt.client as mqtt
import time
import cv2
import numpy
import json
MQTT_SERVER = "iot.eclipse.org"
MQTT_PATH = "test_channel"
mqttc = mqtt.Client()
mqttc.connect(MQTT_SERVER, 1883, 60)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
frame_list = frame.tolist()
MQTT_MESSAGE = json.dumps(frame_list)
mqttc.publish(MQTT_PATH, MQTT_MESSAGE)
time.sleep(1)
master.py:
import paho.mqtt.client as mqtt
import numpy as np
import json
import PIL
MQTT_SERVER = "iot.eclipse.org"
MQTT_PATH = "test_channel"
def on_connect(client, userdata, flags, rc):
print("connected with result code " + str(rc))
client.subscribe(MQTT_PATH)
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
array = np.array(data)
img = PIL.Image.fromarray(array)
cv2.imshow('image', img)
cv2.waitKey()
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_SERVER, 1883, 60)
client.loop_forever()