dummy stuff

This commit is contained in:
2021-11-05 18:15:32 +01:00
parent f8f7f32b25
commit 49bdeb9938
3 changed files with 141 additions and 0 deletions

73
src/DummyClient.py Normal file
View 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
View 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")

View File

@ -0,0 +1,4 @@
[mqtt]
login=
password=
broker=172.16.2.16