TXT4.0 MQTT publisher base code

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
vleeuwen
Beiträge: 1557
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

TXT4.0 MQTT publisher base code

Beitrag von vleeuwen » 06 Jan 2022, 16:05

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) 857 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) 857 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.
software enigineer/teacher/advisor
Google translate
http://tescaweb.nl/Carel/?p=713

Antworten