Skip to content
/ llama Public

The friendly library for writing MQTT services in python.

License

Notifications You must be signed in to change notification settings

cameliot/llama

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

llama

An opinionated library for writing services on a MQTT message bus.

Why?

Something along the lines of: After implementing DaliQTT I wanted something more generalized to create new services more easily.

Also see Alpaca, the Go implementation of this library.

Installation

The package is available via pypi as llama-mqtt, so for installation just type:

pip3 install llama-mqtt

How to use

Creating a new service in your network is now as easy as:

# Connect to MQTT broker and start dispatch loop
dispatch, receive = mqtt.connect("localhost:1883", {
    "strings": "v1/simple/strings",
})

handle(dispatch, receive())

With a handler like

def handle(dispatch, actions):
    """Process incoming actions"""

    for action in actions:
        if action["type"] == REVERSE_REQUEST:
            dispatch(_handle_reverse(action["payload"]))

The receive function can be used in a blocking and non-blocking fashion by passing a timeout in seconds (e.g. receive(timeout=0.25) and it can be used in a one shot kind of way, by passing once=True.

This way receive(once=True) will block until an action is received, or (if specified) the timeout will occure.

Error handling

In case decoding the MQTT payload failed, an llama.actions.MESSAGE_DECODE_ERROR_RESULT is received.

Example

For a simple working example please checkout the examples/reverser/reverser.py string reversal service.

About

The friendly library for writing MQTT services in python.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages