INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

MQTT periodic messages on Microtik

№ 11399 В разделе Sysadmin от December 19th, 2021,
В подшивках: ,

Activate IoT package

Add your MQTT

Create new script

:local broker "home"
:local topic "/router"
:put ("[*] Gathering system info...")
:local cpuLoad [/system resource get cpu-load]
:local freeMemory [/system resource get free-memory]
:local usedMemory ([/system resource get total-memory] - $freeMemory)
:local rosVersion [/system package get value-name=version \
    [/system package find where name ~ "^routeros"]]
:local model [/system routerboard get value-name=model]
:local serialNumber [/system routerboard get value-name=serial-number]
:local upTime [/system resource get uptime]

:local message \
    "{\"model\":\"$model\",\
                \"sn\":\"$serialNumber\",\
                \"ros\":\"$rosVersion\",\
                \"cpu\":$cpuLoad,\
                \"umem\":$usedMemory,\
                \"fmem\":$freeMemory,\
                \"uptime\":\"$upTime\"}"

:log info "$message";
:put ("[*] Total message size: $[:len $message] bytes")
:put ("[*] Sending message to MQTT broker...")
/iot mqtt publish broker=$broker topic=$topic message=$message
:put ("[*] Done")

Now create new schedule

Now check out your MQTT messages

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

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"}
    }

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

Яндекс.Метрика

Fortune cookie: A hearty young fellow named Yost Once had an affair with a ghost. At the height of the spasm The poor ectoplasm Cried, "Goodie, I feel it ... almost."