
Hallo, ich kenne die Diskussion von vor einem halbe Jahr nicht, aber mir fällt folgendes auf: Am 11.06.23 um 19:12 schrieb Marc Haber:
| def on_connect(self, client, userdata, flags, rcode): | client.subscribe('tele/wama/SENSOR') [_] | client = mqtt.Client() | client.on_connect = on_connect
Diese Zeile muss lauten: client.on_connect =*self.*on_connect Es wundert mich, dass Dein Code überhaupt funktioniert, denn "on_connect" ist nicht definiert. Oder hast Du das nur zu viel gekürzt?!
Leider haben die beiden Callbackfunktionen von paho eine vorgegebene Signatur und können deswegen keine Methoden des ApplianceMonitor sein.
Hmm, Ich habe eben folgendes probiert, und das klappt (X.on_connect wird wie erwartet mit der Instanz von ApplianceMonitor als ersten Argument und den anderen vier danach aufgerufen): class Client: def doit(self): self.on_connect(self, 2, 3, 4) class ApplianceMonitor: def on_connect(self, client, userdata, flags, rcode): print(self, client, userdata, flags, rcode) def main(self): c = Client() c.on_connect = self.on_connect c.doit() ApplianceMonitor().main() Andernfalls verstehe ich nicht, was Deine Frage ist. -- Schönen Gruß Hartmut Goebel Dipl.-Informatiker (univ), CISSP, CSSLP, ISO 27001 Lead Implementer Information Security Management, Security Governance, Secure Software Development Goebel Consult, Landshut http://www.goebel-consult.de Blog: https://www.goebel-consult.de/blog/2021/debugging-python-_frozen_importlib/ Kolumne: https://www.goebel-consult.de/blog/cissp-gefluester/2012-04-compliance-bring...