INT 21h

Hi, I am Vladimir Smagin, SysAdmin, DevOps and barely good guy. Telegram Email / GIT / Микроблог / Thingiverse / GPG

MQTT operator for Kubernetes

№ 10248 В разделах: Programming Sysadmin от August 23rd, 2019,
В подшивках: , , , ,

Run multiple MQTT instances in your Kubernetes cluster. Can store persistent database.

Documentation and download here https://git.blindage.org/21h/mqtt-operator

Нет комментариев »

Prometheus: MQTT data exporter

№ 9328. В разделах: Electronics Sysadmin от September 2nd, 2018

В подшивках: , ,

Взаимодействие с MQTT из Python

№ 8455 В разделах: Electronics Programming от September 8th, 2017,
В подшивках: , ,

Так уж случилось, что я стал крутым пацаном и начал делать интернет вещей 😀 В общем, для начала необходимо установить модуль paho-mqtt. А еще лучше сначала сделать виртуальное окружение и уже потом туда установить всё нужное.

sudo apt install python3-venv
cd /opt && pyvenv mymqtt
source mymqtt/bin/activate
pip install wheel
pip install paho-mqtt

Ну вот вроде и всё. Теперь можно приступать к работе 🙂 Открываем документацию и читаем. На этом запись можно заканчивать, но я всё-таки покажу вам пару примеров. Я люблю разносить все в разные файлы поэтому некоторые вещи будут работать через библиотеки в поддиректориях.

Итак, я создал директорию с проектом, где есть поддиректория libs и именно в нее я положу свою библиотечку для работы с mqtt.

import sys 
sys.path.append("..")

import paho.mqtt.subscribe as subscribe
import paho.mqtt.publish as publish
import config

def pub(topic, msg, retained=False):
    print("Connecting {}".format(config.mqtt_cred["hostname"]))
    publish.single(topic,msg,hostname=config.mqtt_cred["hostname"],
        port=config.mqtt_cred["port"],auth=config.mqtt_cred["auth"],retain=retained)

def sub(callback_function, topic, wait=False):
    subscribe.callback(callback_function, topic, hostname=config.mqtt_cred["hostname"],
        port=config.mqtt_cred["port"],auth=config.mqtt_cred["auth"])

Сразу же заметна вторая строка. Прикол в том, что у меня на уровне выше лежит конфигурационный файл и я просто добавил в PYTHON_PATH его местоположение. В функции sub я сделал передачу callback функции через параметры, а сама функция описана в файле основной программы. Конечно, я мог ее написать прямо тут, но тогда бы я считал это говнокодом 🙂

Теперь можно поугарать в файле основной программы

from libs import libmqtt

def any_message_received(client, userdata, message):
    '''Callback function on_message, catch any message and process it'''
    topic=message.topic
    value = message.payload.decode("utf-8")
    print(topic, value)
libmqtt.sub(any_message_received, "#")

any_message_received и есть та самая callback функция. На нее я возложил парсинг всего, что приходит из шины. Муторно, но зато делает то, что мне нужно 🙂

А теперь вишенка! Конфиг

'''Config module'''

mqtt_cred={
    "hostname": "myserver",
    "port": 5883,
    "auth": {"username":"mymqtt","password":"longlongpen1s"}
    }

Нет комментариев »

Микроблог перейти

# 2019-12-23 09:14:01

Очень интересная концепция, docker-compose для kubernetes kompose.io/ #devops #kubernetes #docker

# 2019-12-16 17:21:18

Надо будет почитать для общего развития как оживить кластер в случае проеба сертов habr.com/ru/company/southbridg #kubernetes #devops

# 2019-12-12 17:33:46

js bootstrap с интерфейсом как в DOS github.com/kristopolous/BOOTST


© Vladimir Smagin, 2005-2019. Копирование материалов без разрешения запрещено. GPG DA4CD0F5E222EA727D6A40C413BCE12E5618F071 *
Яндекс.Метрика

Fortune cookie: Today's spam: Ashamed? Shy? Too small to please women?