view mod_pubsub_mqtt/README.markdown @ 4931:13070c6a7ce8

mod_http_muc_log: Fix exception on lack of trailing slash in room path A request to /room leads to the match call returning nil which in turn calls nodeprep(nil). In Prosody 0.11.x this does nothing and simply returns the nil, while in 0.12 it is an error. Now it redirects to the calendar view at /room/ - even for non-existant rooms. Discovered at a deployment with http_paths = { muc_log = "/" } and requests to /robots.txt and similar, which now result in a uses redirect before returning 404.
author Kim Alvefur <zash@zash.se>
date Fri, 22 Apr 2022 14:29:32 +0200
parents 2333e384409d
children 58df53eefa28
line wrap: on
line source

---
labels:
- 'Stage-Beta'
summary: 'MQTT interface to Prosody''s pubsub'
...

Introduction
------------

[MQTT](http://mqtt.org/) is a lightweight binary pubsub protocol suited
to embedded devices. This module provides a way for MQTT clients to
connect to Prosody and publish or subscribe to local pubsub nodes.

Details
-------

MQTT has the concept of 'topics' (similar to XMPP's pubsub 'nodes').
mod\_pubsub\_mqtt maps pubsub nodes to MQTT topics of the form
`HOST/NODE`, e.g.`pubsub.example.org/mynode`.

### Limitations

The current implementation is quite basic, and in particular:

-   Authentication is not supported
-   SSL/TLS is not supported
-   Only QoS level 0 is supported

### Payloads

XMPP payloads are always XML, but MQTT does not define a payload format.
Therefore mod\_pubsub\_mqtt will attempt to convert data of certain
recognised payload types. Currently supported:

-   JSON (see [XEP-0335](http://xmpp.org/extensions/xep-0335.html) for
    the format)
-   Plain UTF-8 text (wrapped inside
    `<data xmlns="https://prosody.im/protocol/mqtt"/>`)

All other XMPP payload types are sent to the client directly as XML.
Data published by MQTT clients is currently never translated, and always
treated as UTF-8 text.

Configuration
-------------

There is no special configuration for this module. Simply load it on
your pubsub host like so:

    Component "pubsub.example.org" "pubsub"
        modules_enabled = { "pubsub_mqtt" }

You may also configure which port(s) mod\_pubsub\_mqtt listens on using
Prosody's standard config directives, such as `mqtt_ports`. Network
settings **must** be specified in the global section of the config file,
not under any particular pubsub component. The default port is 1883
(MQTT's standard port number).

Compatibility
-------------

  ------- --------------
  trunk   Works
  0.9     Works
  0.8     Doesn't work
  ------- --------------