Path: csiph.com!weretis.net!feeder8.news.weretis.net!news.szaf.org!fu-berlin.de!uni-berlin.de!not-for-mail From: =?iso-8859-15?Q?Stefan_Clau=DF?= Newsgroups: de.comp.lang.python Subject: =?utf-8?q?=5BPython-de=5D_Re=3A_paho-mqtt_und_vorgegebene_Callback-Funktionen_in_einer_Klasse=2E?= Date: Wed, 21 Jun 2023 14:01:52 +0200 Lines: 82 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed; delsp=yes Content-Transfer-Encoding: Quoted-Printable X-Trace: news.uni-berlin.de wKv/JykKiIVb+09gfc5hmg5EWW9duZUDW6vz5DmL3rBw== Authentication-Results: mail.python.org; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral X-Injected-Via-Gmane: http://gmane.org/ User-Agent: Opera Mail/1.0 (Win32) Message-ID-Hash: 5SRVEXLQZGT4L6J7JKOJQ67SKIKKNJBE X-Message-ID-Hash: 5SRVEXLQZGT4L6J7JKOJQ67SKIKKNJBE X-MailFrom: gcpgg-python-de@m.gmane-mx.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.9b1 Precedence: list List-Id: Die Deutsche Python Mailingliste Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Xref: csiph.com de.comp.lang.python:5991 Hallo, versuche es mit self.on_connect und self.on_message jeweils auf der rech= ten Seite der Zuweisung. VG Stefan Am .06.2023, 19:12 Uhr, schrieb Marc Haber = : > Hallo, > > ich habe hier das abgespeckte, nicht lauff=E4hige Teilprogramm: > > |#!/usr/bin/python > | > |import paho.mqtt.client as mqtt > | > |class ApplianceMonitor: > | """the main ApplianceMonitor object""" > | > | def __init__(self): > | # do something intelligent > | > | def on_connect(self, client, userdata, flags, rcode): > | client.subscribe('tele/wama/SENSOR') > | > | def on_message(self, client, userdata, msg): > | # do something intelligent with msg > | > | def main(self): > | client =3D mqtt.Client() > | client.on_connect =3D on_connect > | client.on_message =3D on_message > | > | client.connect('mqtt.local', 1883, 60) > | > | client.loop_start() > | > | while True: > | time.sleep(30) > | # do something intelligent with the accumulated data > | > | > |if __name__ =3D=3D "__main__": > | amon =3D ApplianceMonitor(args) > | amon.main() > | > |# end of file > > Ich habe die ganze Applikation in eine Klasse ApplianceMonitor > ausgelagert als Ergebnis der Diskussion von vor einem halben Jahr, > weil ich so ohne globale Statusvariablen auskomme und die in der > Klasse verstecken kann (hier nicht sichtbar weil sie der Minimierung > des Codes zum Opfer gefallen sind). > > Leider haben die beiden Callbackfunktionen von paho eine vorgegebene > Signatur und k=F6nnen deswegen keine Methoden des ApplianceMonitor sei= n. > Wenn ich die Initialisierung des MQTT-Moduls ins Hauptprogramm > verlagere, bin ich auf ein einziges Applikationsobjekt limitiert (was > in der Tat bl=F6d ist weil ich vielleicht sp=E4ter das Monitoring mehr= erer > MQTT-Topics mit mehreren Objekten des Applikationstyps machen m=F6chte= . > Oder geht das sowieso nicht weil ich nur eine client.loop pro Programm= > haben kann? > > Ist das paho-Modul bl=F6d oder ich? Oder geht das halt nicht anders? > > Gr=FC=DFe > Marc -- = Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/