An MQTT client which will send configured MQTT messages to keen IO as events for later analysis.
Project description
`|Build Status| <https://travis-ci.org/ZoetropeLabs/keenmqtt>`_
`|Documentation
Status| <https://readthedocs.org/projects/keenmqtt/?badge=latest>`_
`|Coverage
Status| <https://coveralls.io/github/ZoetropeLabs/keenmqtt?branch=master>`_
keenmqtt
========
A MQTT client which will send configured MQTT messages to keen IO as
events for later analysis.
.. figure:: docs/system_diagram.png
:align: center
:alt: System Diagram of keenmqtt
System Diagram of keenmqtt
The problem
~~~~~~~~~~~
IoT data platforms are often a big investment in time and sometimes
money, so often a simple MQTT set up is used. This should not prevent
one from being able to perform historical analysis of data points.
See the **`blog
article <https://zoetrope.io/tech-blog/simple-mqtt-iot-logging>`_** with
a live example.
The solution
~~~~~~~~~~~~
keenmqtt is a simple bridge which will listen for specified MQTT
messages and log them on your KeenIO project. This complete history of
events will allow you to:
1. Create graphs of old data, such as temperature.
2. Use this data to refine your system.
3. Display this data to your users.
keenmqtt can be run as a standalone daemon, or used in a python program.
Installation
------------
::
pip install keenmqtt
Or clone/download the repo, run ``python setup.py install`` in the root.
Usage
-----
Command Line
~~~~~~~~~~~~
Running the stand alone package requires a config file, see
``example/config.yaml`` for a template.
After installing, run the following to log events:
::
keenmqtt -c config.yaml
In your program
~~~~~~~~~~~~~~~
keenMQTT has been specifically designed so that almost any part of the
pipeline can be overriden or customised.
The source is well documented, `see
readthedocs <http://keenmqtt.readthedocs.org/en/latest/keenmqtt.html#module-keenmqtt.keenmqtt>`_
**Example: Custom payload formats** As an example; if you had a sensor
which publishes an ascii format sensor reading, you can define a custom
payload decoder for topics which match that sensor value as follows:
::
from keenmqtt import KeenMQTT
class CustomDecoder(KeenMQTT):
def decode_payload(self, topic, payload):
"""Decode a plain ASCII format sensor reading"""
if 'humidity' in topic:
event = {
"value": int(payload)
}
else:
#Assume default JSON encoding
event = KeenMQTT.decode_payload(self, topic, payload)
return event
Contributing
------------
1. Fork it!
2. Create your feature branch: ``git checkout -b my-new-feature``
3. Commit your changes: ``git commit -am 'Add some feature'``
4. Push to the branch: ``git push origin my-new-feature``
5. Submit a pull request
History
-------
0.0.1: Working version of the CLI app.
Credits
-------
Written by Ben Howes & Richard Webb of `Zoetrope <https://zoetrope.io>`_
With thanks to:
1. `KeenIO <https://keen.io>`_ for a super service.
2. `Eclipse Paho <https://www.eclipse.org/paho/clients/python/>`_ for a
great MQTT client.
License
-------
MIT Licence
.. |Build
Status| image:: https://travis-ci.org/ZoetropeLabs/keenmqtt.svg?branch=master
.. |Documentation
Status| image:: https://readthedocs.org/projects/keenmqtt/badge/?version=latest
.. |Coverage
Status| image:: https://coveralls.io/repos/ZoetropeLabs/keenmqtt/badge.svg?branch=master&service=github
`|Documentation
Status| <https://readthedocs.org/projects/keenmqtt/?badge=latest>`_
`|Coverage
Status| <https://coveralls.io/github/ZoetropeLabs/keenmqtt?branch=master>`_
keenmqtt
========
A MQTT client which will send configured MQTT messages to keen IO as
events for later analysis.
.. figure:: docs/system_diagram.png
:align: center
:alt: System Diagram of keenmqtt
System Diagram of keenmqtt
The problem
~~~~~~~~~~~
IoT data platforms are often a big investment in time and sometimes
money, so often a simple MQTT set up is used. This should not prevent
one from being able to perform historical analysis of data points.
See the **`blog
article <https://zoetrope.io/tech-blog/simple-mqtt-iot-logging>`_** with
a live example.
The solution
~~~~~~~~~~~~
keenmqtt is a simple bridge which will listen for specified MQTT
messages and log them on your KeenIO project. This complete history of
events will allow you to:
1. Create graphs of old data, such as temperature.
2. Use this data to refine your system.
3. Display this data to your users.
keenmqtt can be run as a standalone daemon, or used in a python program.
Installation
------------
::
pip install keenmqtt
Or clone/download the repo, run ``python setup.py install`` in the root.
Usage
-----
Command Line
~~~~~~~~~~~~
Running the stand alone package requires a config file, see
``example/config.yaml`` for a template.
After installing, run the following to log events:
::
keenmqtt -c config.yaml
In your program
~~~~~~~~~~~~~~~
keenMQTT has been specifically designed so that almost any part of the
pipeline can be overriden or customised.
The source is well documented, `see
readthedocs <http://keenmqtt.readthedocs.org/en/latest/keenmqtt.html#module-keenmqtt.keenmqtt>`_
**Example: Custom payload formats** As an example; if you had a sensor
which publishes an ascii format sensor reading, you can define a custom
payload decoder for topics which match that sensor value as follows:
::
from keenmqtt import KeenMQTT
class CustomDecoder(KeenMQTT):
def decode_payload(self, topic, payload):
"""Decode a plain ASCII format sensor reading"""
if 'humidity' in topic:
event = {
"value": int(payload)
}
else:
#Assume default JSON encoding
event = KeenMQTT.decode_payload(self, topic, payload)
return event
Contributing
------------
1. Fork it!
2. Create your feature branch: ``git checkout -b my-new-feature``
3. Commit your changes: ``git commit -am 'Add some feature'``
4. Push to the branch: ``git push origin my-new-feature``
5. Submit a pull request
History
-------
0.0.1: Working version of the CLI app.
Credits
-------
Written by Ben Howes & Richard Webb of `Zoetrope <https://zoetrope.io>`_
With thanks to:
1. `KeenIO <https://keen.io>`_ for a super service.
2. `Eclipse Paho <https://www.eclipse.org/paho/clients/python/>`_ for a
great MQTT client.
License
-------
MIT Licence
.. |Build
Status| image:: https://travis-ci.org/ZoetropeLabs/keenmqtt.svg?branch=master
.. |Documentation
Status| image:: https://readthedocs.org/projects/keenmqtt/badge/?version=latest
.. |Coverage
Status| image:: https://coveralls.io/repos/ZoetropeLabs/keenmqtt/badge.svg?branch=master&service=github
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
keenmqtt-0.0.10.tar.gz
(6.7 kB
view details)
File details
Details for the file keenmqtt-0.0.10.tar.gz
.
File metadata
- Download URL: keenmqtt-0.0.10.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 098c6ba44b4516cb3193f6e73502aca06f327542d1afae881ed1d94d8349f974 |
|
MD5 | 737884c681328aab39042fc6efe340bf |
|
BLAKE2b-256 | 2a265a046988170bbf7ed3fe00fa937090767463980d97543d96247058b6b476 |