Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5991

[Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse.

From Stefan Clauß <st_clauss@gmx.de>
Newsgroups de.comp.lang.python
Subject [Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse.
Date 2023-06-21 14:01 +0200
Message-ID <op.16v01ec0q0n66g@desktop-ekoajh9> (permalink)
References <u64v9c$2041$1@news1.tnib.de>

Show all headers | View raw


Hallo,

versuche es mit self.on_connect und self.on_message jeweils auf der rechten
Seite der Zuweisung.

VG
Stefan

Am .06.2023, 19:12 Uhr, schrieb Marc Haber  
<mh+usenetspam1118@zugschl.us>:

> Hallo,
>
> ich habe hier das abgespeckte, nicht lauffähige 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 = mqtt.Client()
> |        client.on_connect = on_connect
> |        client.on_message = 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__ == "__main__":
> |    amon = 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önnen deswegen keine Methoden des ApplianceMonitor sein.
> Wenn ich die Initialisierung des MQTT-Moduls ins Hauptprogramm
> verlagere, bin ich auf ein einziges Applikationsobjekt limitiert (was
> in der Tat blöd ist weil ich vielleicht später das Monitoring mehrerer
> MQTT-Topics mit mehreren Objekten des Applikationstyps machen möchte.
> Oder geht das sowieso nicht weil ich nur eine client.loop pro Programm
> haben kann?
>
> Ist das paho-Modul blöd oder ich? Oder geht das halt nicht anders?
>
> Grüße
> Marc


-- 
Erstellt mit Operas E-Mail-Modul: http://www.opera.com/mail/

Back to de.comp.lang.python | Previous | NextPrevious in thread | Find similar


Thread

paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse. Marc Haber <mh+usenetspam1118@zugschl.us> - 2023-06-11 19:12 +0200
  [Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse. Hartmut Goebel <h.goebel@goebel-consult.de> - 2023-06-11 20:52 +0200
    Re: [Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse. Marc Haber <mh+usenetspam1118@zugschl.us> - 2023-06-11 21:41 +0200
      Re: [Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse. "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2023-06-11 22:06 +0200
      [Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse. Hartmut Goebel <h.goebel@goebel-consult.de> - 2023-06-11 22:09 +0200
  [Python-de] Re: paho-mqtt und vorgegebene Callback-Funktionen in einer Klasse. Stefan Clauß <st_clauss@gmx.de> - 2023-06-21 14:01 +0200

csiph-web