私はMQTTブローカー(Ubuntuのサーバ)上でこのコードを実行しようとすると、かかる 例外TypeError:on_connect()は正確に3つの引数(与えられた4)
出版社からの取得データはUDP_IPに送信されます
。マイコード:
import json
import socket
import paho.mqtt.client as mqtt
# MQTT Settings
MQTT_Broker = "192.168.0.106"
MQTT_Topic = "#"
MQTT_Port = 1883
Keep_Alive_Interval = 45
UDP_IP = "192.168.0.108"
UDP_RAW_PORT = 5567
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
def on_connect(mosq, obj, rc):
mqttc.subscribe(MQTT_Topic, 0)
def on_message(mosq, obj, msg):
gps_handler(msg.topic, msg.payload)
def gps_handler(Topic, jsonData):
jsonData = jsonData[1:-1]
sock.sendto(jsonData, (UDP_IP, UDP_RAW_PORT))
print jsonData
def on_subscribe(mosq, obj, mid, granted_qos):
pass
mqttc = mqtt.Client()
# Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
# Connect
mqttc.connect(MQTT_Broker, int(MQTT_Port), int(Keep_Alive_Interval))
# Continue the network loop
mqttc.loop_forever()
私は実行するとUbuntuのサーバー上でこのエラーを取得して、なぜ私にはわからない
Traceback (most recent call last):
File "port_5567.py", line 38, in <module>
mqttc.loop_forever()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1470, in loop_forever
rc = self.loop(timeout, max_packets)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 995, in loop
rc = self.loop_read(max_packets)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1273, in loop_read
rc = self._packet_read()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1838, in _packet_read
rc = self._packet_handle()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2291, in _packet_handle
return self._handle_connack()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2349, in _handle_connack
self.on_connect(self, self._userdata, flags_dict, result)
TypeError: on_connect() takes exactly 3 arguments (4 given)
、ラズベリーパイ(Debianの)上
ことができます作業。
'mqttc.on_connect'はインスタンスメソッドです。暗黙的にインスタンスをメソッドの最初の引数として渡します(通常は 'self'とも呼ばれます) – Li357
ありがとう!それは便利ですが、なぜラズベリーパイに自分を必要としないのですか? – Link
両方のマシンでどちらのバージョンのPythonを使用していますか(また、どのバージョンのPython MQTTライブラリ)ですか? – hardillb