dummy stuff
This commit is contained in:
73
src/DummyClient.py
Normal file
73
src/DummyClient.py
Normal file
@ -0,0 +1,73 @@
|
||||
from loguru import logger
|
||||
import os
|
||||
import configparser
|
||||
import json
|
||||
import argparse
|
||||
import importlib
|
||||
import sys
|
||||
import paho.mqtt.client as mqtt
|
||||
from time import sleep
|
||||
|
||||
DEFAULT_CONFIG_FILE = './config/dummyClientConfig.ini'
|
||||
|
||||
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description="DummyClient.py")
|
||||
parser.add_argument('--operation', '-o',
|
||||
help='Operation to perform.',
|
||||
required=True)
|
||||
parser.add_argument('--params', '-p',
|
||||
help='JSON string with parameter for the selected operation, default: {}',
|
||||
required=False,
|
||||
default="{}")
|
||||
parser.add_argument('--config', '-c',
|
||||
help='configuration file, default: {}'.format(DEFAULT_CONFIG_FILE),
|
||||
required=False,
|
||||
default=DEFAULT_CONFIG_FILE)
|
||||
parser.add_argument('--verbosity', '-v',
|
||||
help='Minimal log level for output: DEBUG, INFO, WARNING, ..., default: DEBUG',
|
||||
required=False,
|
||||
default="DEBUG")
|
||||
parser.add_argument('--nocolorize', '-n',
|
||||
help='disable colored output (for cron)',
|
||||
required=False,
|
||||
action='store_true',
|
||||
default=False)
|
||||
|
||||
args = parser.parse_args()
|
||||
operation = args.operation
|
||||
params = json.loads(args.params)
|
||||
logLevel = args.verbosity
|
||||
noColorize = args.nocolorize
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read(args.config)
|
||||
|
||||
|
||||
logger.remove()
|
||||
logger.add(sys.stderr, colorize=(not noColorize), level=logLevel)
|
||||
|
||||
logger.info("Start DummyClient")
|
||||
try:
|
||||
client = mqtt.Client()
|
||||
if ("login" in config["mqtt"]) and ("password" in config["mqtt"]):
|
||||
client.username_pw_set(config["mqtt"]["login"], config["mqtt"]["password"])
|
||||
client.connect(config["mqtt"]["broker"])
|
||||
client.loop_start()
|
||||
logger.debug("mqtt loop started")
|
||||
|
||||
opMod = importlib.import_module(operation)
|
||||
logger.info(f"Operation {operation} loaded, about to perform operation")
|
||||
opMod.perform(client, params)
|
||||
logger.info("Operation returned")
|
||||
except Exception as err:
|
||||
logger.error("Exception: {}".format(str(err)))
|
||||
raise err
|
||||
finally:
|
||||
logger.info("About to shutdown mqtt connection")
|
||||
client.disconnect()
|
||||
client.loop_stop()
|
||||
logger.info("mqtt connection down")
|
||||
|
||||
|
64
src/DummyEGM1.py
Normal file
64
src/DummyEGM1.py
Normal file
@ -0,0 +1,64 @@
|
||||
from loguru import logger
|
||||
from datetime import datetime
|
||||
from time import sleep
|
||||
import json
|
||||
from random import random, sample
|
||||
|
||||
TOPIC_PRE = "rd/set01"
|
||||
|
||||
def sendCmd(client, cmd):
|
||||
msg = {
|
||||
"ts": str(datetime.now()),
|
||||
"en": "EGM Test Experiment",
|
||||
"ec": "Lorem ipsum dolor sit amet",
|
||||
"es": cmd
|
||||
}
|
||||
topic = f"{TOPIC_PRE}/rig01/cmd"
|
||||
client.publish(topic, json.dumps(msg))
|
||||
|
||||
def sendLog(client):
|
||||
msg = {
|
||||
"ts": str(datetime.now()),
|
||||
"v": [
|
||||
{ "n": "v1", "v": random() },
|
||||
{ "n": "v2", "v": random() },
|
||||
{ "n": "v3", "v": random() },
|
||||
{ "n": "v4", "v": random() },
|
||||
{ "n": "v5", "v": random() },
|
||||
{ "n": "v6", "v": random() },
|
||||
]
|
||||
}
|
||||
topic = f"{TOPIC_PRE}/rig01/log"
|
||||
client.publish(topic, json.dumps(msg))
|
||||
|
||||
def sendValue(client):
|
||||
msg = {
|
||||
"ts": str(datetime.now()),
|
||||
"dt": 100,
|
||||
"v": sample(range(0xffffffff), 1000)
|
||||
}
|
||||
topic = f"{TOPIC_PRE}/rig01/dev05/md"
|
||||
client.publish(topic, json.dumps(msg))
|
||||
|
||||
|
||||
def perform(client, params):
|
||||
logger.info("Start")
|
||||
sendCmd(client, "start")
|
||||
|
||||
for i in range(10):
|
||||
sendValue(client)
|
||||
sleep(1.0)
|
||||
sendValue(client)
|
||||
sleep(1.0)
|
||||
sendValue(client)
|
||||
sleep(1.0)
|
||||
sendValue(client)
|
||||
sleep(1.0)
|
||||
sendValue(client)
|
||||
sleep(1.0)
|
||||
sendValue(client)
|
||||
sendLog(client)
|
||||
sleep(1.0)
|
||||
|
||||
logger.info("Stop")
|
||||
sendCmd(client, "stop")
|
4
src/config/dummyClientConfig.ini
Normal file
4
src/config/dummyClientConfig.ini
Normal file
@ -0,0 +1,4 @@
|
||||
[mqtt]
|
||||
login=
|
||||
password=
|
||||
broker=172.16.2.16
|
Reference in New Issue
Block a user