Seite 1 von 1

TXT4.0 MQTT publisher base code

Verfasst: 06 Jan 2022, 16:05
von vleeuwen
Hereby the basic (Blockly) example about publishing MQTT topic's to your broker.
In this example the MQTT broker runs on 192.168.20.136, change this into your MQTT Broker IP address.

Links:
Links into the MQTT documentation:
https://pypi.org/project/paho-mqtt/
https://pypi.org/project/paho-mqtt/#single
https://pypi.org/project/paho-mqtt/#multiple

Notes:
Python object can only assign to an in Blockly defined variable in a Python code Blockly.

The Blockly structure:
The Blockly code
The Blockly code
mqttPublisher.JPG (136.7 KiB) 1179 mal betrachtet
The code development in MS Visual Studio Code remotely on the TXT4.0:
The development of the Python code in MS-VSC
The development of the Python code in MS-VSC
mqttPublisherVSC.JPG (112.12 KiB) 1179 mal betrachtet
The Python code in the ROBO Pro Coding (RPC) Python pane:

Code: Alles auswählen

#(c) 2022 C. van Leeuwen Enschede
import paho.mqtt.publish as publish

from lib.controller import *

Payload = None
Topic = None
MsgsList = None
mqttPort = None
mqttBroker = None
mqttTopic = None
mqttPld = None
mqttMesgs = None
result = None
mesg2 = None
mesg1 = None
mesg3 = None

def mqttPubSingle(Payload, Topic):
    global MsgsList, mqttPort, mqttBroker, mqttTopic, mqttPld, mqttMesgs, result, mesg2, mesg1, mesg3
    #(c) 2022 C v Leeuwen
    publish.single(topic=Topic, payload=Payload, qos=0, retain=False, auth=mqttAuth , hostname=mqttBroker, port=mqttPort )
    return True

def mqttPubMulti(MsgsList):
    global Payload, Topic, mqttPort, mqttBroker, mqttTopic, mqttPld, mqttMesgs, result, mesg2, mesg1, mesg3
    #(c) 2022 C v Leeuwen
    publish.multiple(msgs=MsgsList, auth=mqttAuth , hostname=mqttBroker, port=mqttPort )
    return True

# (c) 2022 C.v.Leeuwen
# Example about the use of MQTT
#mqttBroker = '192.168.20.136'
#mqttPort=1883
mqttUser = 'carel'
mqttPsw = 'carel'
mqttAuth={'username':"carel",'password':"carel"}
mqttPort = 1883
mqttBroker = '192.168.20.136'
#single
#mqttTopic = 'carel/0/'
#mqttPld = 'simpelxxx'
mqttTopic = 'carel/10/'
mqttPld = 'zomaar iets'
#multi
mesg1={ 'topic': "carel/1/", 'payload':"This" , 'qos':0, 'retain':False}
mesg2={ 'topic': "carel/2/", 'payload':"is" , 'qos':0, 'retain':False}
mesg3={ 'topic': "carel/3/", 'payload':"data" , 'qos':0, 'retain':False}
#mqttMesgs =  [mesg1,mesg2,mesg3]
mqttMesgs = [mesg3, mesg2, mesg1]
result = mqttPubSingle(mqttPld, mqttTopic)
result = mqttPubMulti(mqttMesgs)
The code from the MS-VS code:

Code: Alles auswählen

#(c) 2022 C. van Leeuwen Enschede
import paho.mqtt.publish as publish
import asyncio
from json import JSONDecodeError
import json

mqttTopic = None
mqttBroker = None
mqttPsw = None
mqttMesg = None
mqttUser = None
mqttBroker = '192.168.20.136'
mqttPort=1883
#single
mqttTopic = 'carel/0/' 
mqttPld = 'simpelxxx' 
#multi
mesg1={ 'topic': "carel/1/", 'payload':"This" , 'qos':0, 'retain':False}
mesg2={ 'topic': "carel/2/", 'payload':"is" , 'qos':0, 'retain':False}
mesg3={ 'topic': "carel/3/", 'payload':"data" , 'qos':0, 'retain':False}
mqttMesgs =  [mesg1,mesg2,mesg3]
mqttAuth={'username':"carel",'password':"carel"}

def mqttPublisherSingle(Topic, Payload):
    global mqttBroker, mqttPsw, mqttMesg, mqttUser
    #your python code
    publish.single(topic=Topic, payload=Payload, qos=0, retain=False, auth=mqttAuth , hostname=mqttBroker, port=mqttPort )
  
def mqttPublisherMulti(Mesgs):
    global mqttBroker, mqttPsw, mqttMesg, mqttUser
    #your python code
    publish.multiple(msgs=Mesgs, auth=mqttAuth , hostname=mqttBroker, port=mqttPort )

mqttPublisherSingle(mqttTopic,mqttPld)
mqttPublisherMulti(mqttMesgs)
Have fun, stay healthy.