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-bringt-keine-sicherheit/