Skip to content
Snippets Groups Projects
Commit 72d1b03b authored by Sreejith Pananchickal Sajeev's avatar Sreejith Pananchickal Sajeev
Browse files

Sim modified

parent 328439d6
Branches
No related tags found
No related merge requests found
.venv/
logs/
......@@ -16,7 +16,7 @@ def on_connect(client, userdata, flags, rc):
def connect(client_name, broker_address, port=1883):
mqttc = mqtt.Client(client_id=client_name, clean_session=True)
# IMPORTANT: Set credentials before connecting
# Set credentials before connecting
mqttc.username_pw_set(MQTT_USER, MQTT_PASS)
mqttc.on_connect = on_connect
mqttc.connect(broker_address, port)
......@@ -24,41 +24,6 @@ def connect(client_name, broker_address, port=1883):
time.sleep(4)
return mqttc
def flatten_payload(payload):
"""
Expects payload to be a dict with keys:
- "ts": timestamp information
- "sequence": measurement sequence
- "data": a list of sensor measurements, arranged as pairs: [v1, phase1, v2, phase2, ...]
If payload is a list, use the first element.
Returns a flattened dict with:
- ts, sequence (unchanged)
- sensor values as: v_1, phase_1, v_2, phase_2, etc.
"""
# If payload is a list, take the first element.
if isinstance(payload, list):
if len(payload) > 0:
payload = payload[0]
else:
return {}
flattened = {}
# Copy timestamp and sequence as-is
if "ts" in payload:
flattened["ts"] = payload["ts"]
if "sequence" in payload:
flattened["sequence"] = payload["sequence"]
# Process the "data" field
data = payload.get("data")
if data and isinstance(data, list):
for i in range(0, len(data), 2):
sensor_num = (i // 2) + 1
flattened[f"v_{sensor_num}"] = data[i]
if i + 1 < len(data):
flattened[f"phase_{sensor_num}"] = data[i + 1]
return flattened
# Parse CLI args
parser = argparse.ArgumentParser()
parser.add_argument("-q", "--quiet", action="store_true", help="switch off output")
......@@ -81,17 +46,14 @@ mqttc = connect(client_name, broker_address, port)
data_file = "./sample_data/dpsim_powerflow_record_cigre.txt"
# Read and flatten each JSON payload from file
# Read each JSON payload from file without flattening
data_payloads = []
with open(data_file) as f:
for line in f:
try:
# Parse the JSON object from the line
obj = json.loads(line)
# Flatten the payload, handling if it's a list
flat_obj = flatten_payload(obj)
# Convert back to JSON string for publishing
data_payloads.append(json.dumps(flat_obj))
# Validate that the line is valid JSON and re-dump it
json_obj = json.loads(line)
data_payloads.append(json.dumps(json_obj))
except Exception as e:
print(f"Error processing line: {line}\n{e}")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment