#!/bin/env python3 ''' Example Python config This example demonstrates how you can use Python to generate complex configuration files. To use this configuration, run the following commands: villas node <(python3 etc/python/example.py) Author: Steffen Vogel SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University SPDX-License-Identifier: Apache-2.0 ''' import json import sys N = 10 nodes = { 'raspberry': { 'type': 'socket', 'layer': 'udp', 'format': 'protobuf', 'in': { 'address': '*:12000', }, 'out': { 'address': '1.2.3.4:12000' } } } for i in range(N): name = f'agent{i}' port = 12000 + i nodes[name] = { 'type': 'socket', 'layer': 'udp', 'format': 'protobuf', 'in': { 'address': '*:12000', 'signals': [ { 'name': 'in', 'type': 'float' } ] }, 'out': { 'address': f'5.6.7.8:{port}' } } paths = [ { 'in': [f'agent{i}' for i in range(N)], 'out': 'raspberry', 'mode': 'any', 'hooks': [ { 'type': 'print' } ] }, ] config = { 'nodes': nodes, 'paths': paths } json.dump(config, sys.stdout, indent=2)