mqtt — Yksinkertainen MQTT-asiakas¶
mqtt-moduuli tarjoaa minimaalisen MQTT v3.1.1 -asiakastoteutuksen, joka soveltuu muistirajoitteisille laitteille. Se tukee yhdistämistä välittäjään (valinnaisella TLS:llä), viestien julkaisemista, aiheiden tilaamista, last-will-määritystä ja keep-alive-pingejä.
Esimerkki:
from mqtt import MQTTClient
def callback(topic, msg):
print(topic, msg)
client = MQTTClient("openmv", "broker.example.com", 1883)
client.set_callback(callback)
client.connect()
client.subscribe(b"openmv/in")
client.publish(b"openmv/out", b"hello")
while True:
client.check_msg()
Poikkeukset¶
- exception mqtt.MQTTException¶
Nostetaan, kun välittäjä hylkää CONNECT-pyynnön tai kun SUBSCRIBE-pyyntö evätään. Ainoa argumentti on välittäjän tarjoama numeerinen paluukoodi.
Luokat¶
- class mqtt.MQTTClient(client_id: bytes | str, server: str, port: int, ssl_params: dict | None = None, user: bytes | str | None = None, password: bytes | str | None = None, keepalive: int = 0, callback: callable | None = None)¶
Rakentaa MQTT-asiakkaan.
Argumentit:
client_id – yksilöllinen asiakastunniste, joka lähetetään välittäjälle.
server – välittäjän isäntänimi tai IP-osoite (selvitetään
socket.getaddrinfo()-funktiolla).port – välittäjän TCP-portti (tyypillisesti
1883salaamattomana tai8883TLS:lle).ssl_params – jos ei
None, soketti kääritäänssl.wrap_socket()-funktiolla ja ssl_params välitetään edelleen avainsana-argumentteina. Anna{}ottaaksesi TLS:n käyttöön oletusasetuksilla.user – valinnainen käyttäjätunnus välittäjän todennusta varten. Jos annettu, myös password on annettava.
password – valinnainen salasana, jota käytetään yhdessä user-arvon kanssa.
keepalive – keep-alive-väli sekunteina (
0poistaa käytöstä). On oltava pienempi kuin65536.callback – kutsuttava, joka kutsutaan muodossa
callback(topic, msg)jokaiselle välittäjältä toimitetulle PUBLISH-viestille. Voidaan asettaa myös myöhemminset_callback()-metodilla.
Metodit¶
- set_callback(f: callable) None¶
Asettaa takaisinkutsun, jonka
wait_msg()jacheck_msg()kutsuvat, kun PUBLISH-viesti vastaanotetaan. Takaisinkutsu kutsutaan muodossaf(topic, msg), jossa molemmat argumentit ovatbytes.
- set_last_will(topic: bytes | str, msg: bytes | str, retain: bool = False, qos: int = 0) None¶
Määrittää MQTT Last Will and Testament -toiminnon. Välittäjä julkaisee msg-viestin topic-aiheeseen, jos asiakas katkaisee yhteyden epäsiististi. On kutsuttava ennen
connect()-metodia.Argumentit:
topic – last-will-aihe (ei saa olla tyhjä).
msg – last-will-hyötykuorma.
retain – jos
True, välittäjä tallentaa will-viestin säilytettynä viestinä.qos – last-will-QoS-taso. On oltava
0,1tai2.
- connect(clean_session: bool = True, timeout: float = 5.0) int¶
Avaa TCP- (ja valinnaisesti TLS-) yhteyden välittäjään ja lähettää CONNECT-paketin.
Argumentit:
clean_session – jos
True, pyytää puhdasta istuntoa; muutoin välittäjä jatkaa mahdollista aiempaa istuntotilaa.timeout – sokettiin sovellettava soketin aikakatkaisu sekunteina.
Palauttaa välittäjän session present -lipun (
0tai1). NostaaMQTTException-poikkeuksen, jos välittäjä palauttaa nollasta poikkeavan CONNACK-paluukoodin.
- ping() None¶
Lähettää PINGREQ-paketin välittäjälle. Tulisi kutsua säännöllisesti, jos keepalive on nollasta poikkeava, jottei välittäjä katkaise yhteyttä.
- publish(topic: bytes | str, msg: bytes | str, retain: bool = False, qos: int = 0) None¶
Julkaisee msg-viestin topic-aiheeseen.
Argumentit:
topic – aiheen nimi, johon julkaistaan.
msg – hyötykuormatavut.
retain – jos
True, ohjeistaa välittäjää säilyttämään viestin uusia tilaajia varten.qos – palvelutaso.
0(lähetä ja unohda) ja1(kuitattu) ovat tuettuja.2ei ole toteutettu ja nostaaAssertionError-poikkeuksen.
qos-tasolla
1kutsu estyy, kunnes vastaava PUBACK vastaanotetaan. Paketin kokonaiskoon on oltava pienempi kuin2097152tavua.
- subscribe(topic: bytes | str, qos: int = 0) None¶
Tilaa topic-aiheen annetulla qos-tasolla. Takaisinkutsu on täytynyt rekisteröidä
set_callback()-metodilla tai antaa konstruktorille; muutoin nostetaanAssertionError.Estyy, kunnes vastaava SUBACK vastaanotetaan. Nostaa
MQTTException-poikkeuksen, jos välittäjä epää tilauksen (paluukoodi0x80).
- wait_msg() int | None¶
Estyy odottaen yhtä saapuvaa MQTT-pakettia ja käsittelee sen. PUBLISH-paketit toimitetaan rekisteröidylle takaisinkutsulle. PINGRESP-paketit kulutetaan hiljaisesti. Muiden ohjauspakettien osalta palautetaan raaka ensimmäinen tavu. Palauttaa
None, jos dataa ei ole saatavilla tai jos PINGRESP käsiteltiin.
- check_msg() int | None¶
wait_msg()-metodin estämätön muunnelma. Pollaa sokettia enintään ~50 ms ajanselect.select()-funktiolla; jos dataa on odottamassa, se suorittaa saman käsittelyn kuinwait_msg(), muutoin palauttaaNone.