diff --git a/etc/examples/nodes/amqp.conf b/etc/examples/nodes/amqp.conf index 44a1b7f5c..e39a3a772 100644 --- a/etc/examples/nodes/amqp.conf +++ b/etc/examples/nodes/amqp.conf @@ -4,7 +4,7 @@ nodes = { format = "json", # Use 'amqps://' to enable SSL/TLS - uri = "amqp://guest:guest@localhost:5672//", + uri = "amqp://username:password@hostname:port/vhost", # Alternatively connection settings can be specified individually username = "guest", @@ -15,11 +15,11 @@ nodes = { exchange = "mytestexchange", routing_key = "abc", - + ssl = { verify_hostname = true, verify_peer = true, - + ca_cert = "/path/to/ca.crt", client_cert = "/path/to/client.crt", client_key = "/path/to/client.key" diff --git a/etc/examples/nodes/comedi.conf b/etc/examples/nodes/comedi.conf index e1cb6c529..e810566c8 100644 --- a/etc/examples/nodes/comedi.conf +++ b/etc/examples/nodes/comedi.conf @@ -1,29 +1,3 @@ -/** Example configuration file for VILLASnode/comedi. - * - * The syntax of this file is similar to JSON. - * A detailed description of the format can be found here: - * http://www.hyperrealm.com/libconfig/libconfig_manual.html#Configuration-Files - * - * @author Daniel Krebs - * @copyright 2014-2019, Institute for Automation of Complex Power Systems, EONERC - * @license GNU General Public License (version 3) - * - * VILLASnode - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - *********************************************************************************/ - nodes = { pcie6259 = { type = "comedi", @@ -32,7 +6,7 @@ nodes = { subdevice = 0, rate = 1000, signals = ( - # note: order in this array defines order in villas sample + # note: order in this array defines order in villas sample { channel = 0, range = 0, aref = 0, name = "temperature_int" }, { channel = 1, range = 0, aref = 0, name = "loopback_ao0" }, { channel = 2, range = 0, aref = 0, name = "loopback_ao1" }, @@ -40,7 +14,7 @@ nodes = { ) }, out = { - subdevice = 1, + subdevice = 1, # Note: buffer size and rate shouldn't be changed at the moment # output sample rate rate = 40000, diff --git a/etc/examples/nodes/ethernet.conf b/etc/examples/nodes/ethernet.conf index 7a3aaf98c..547dcd9b2 100644 --- a/etc/examples/nodes/ethernet.conf +++ b/etc/examples/nodes/ethernet.conf @@ -1,5 +1,5 @@ nodes = { - ethernet_node = { + ethernet_node = { type = "socket", # See above. ### The following settings are specific to the socket node-type!! ### diff --git a/etc/examples/nodes/file.conf b/etc/examples/nodes/file.conf new file mode 100644 index 000000000..5c2ccd44d --- /dev/null +++ b/etc/examples/nodes/file.conf @@ -0,0 +1,27 @@ +nodes = { + file_node = { + type = "file", + + ### The following settings are specific to the file node-type!! ### + buffer_size = 0 # Creates a stream buffer if value is positive + + in = { + uri = "logs/input.log", # These options specify the URI where the the files are stored + mode = "w+", # The mode in which files should be opened (see open(2)) + + epoch_mode = "direct" # One of: direct (default), wait, relative, absolute + epoch = 10 # The interpretation of this value depends on epoch_mode (default is 0). + # Consult the documentation of a full explanation + + rate = 2.0 # A constant rate at which the lines of the input files should be read + # A missing or zero value will use the timestamp in the first column + # of the file to determine the pause between consecutive lines. + eof = "rewind" # Rewind the file and start from the beginning. + }, + out = { + uri = "logs/output_%F_%T.log" # The output URI accepts all format tokens of (see strftime(3)) + mode = "a+" # You might want to use "a+" to append to a file + flush = false # Flush or upload contents of the file every time new samples are sent. + } + } +} diff --git a/etc/examples/nodes/infiniband.conf b/etc/examples/nodes/infiniband.conf index 1ed4830e4..845291cd3 100644 --- a/etc/examples/nodes/infiniband.conf +++ b/etc/examples/nodes/infiniband.conf @@ -1,76 +1,76 @@ logging = { - level = 2, - facilities = "ib", // infiniband node + level = 2, + facilities = "ib", // infiniband node } nodes = { - results = { - type = "file", + results = { + type = "file", - uri = "logs/ib_results-%Y%m%d_%H-%M-%S.log", - }, + uri = "logs/ib_results-%Y%m%d_%H-%M-%S.log", + }, - siggen = { - type = "signal", + siggen = { + type = "signal", - signal = "mixed", - values = 3, - frequency = 3, - rate = 100000, - limit = 100000, - }, + signal = "mixed", + values = 3, + frequency = 3, + rate = 100000, + limit = 100000, + }, - ib_node_source = { - type = "infiniband", + ib_node_source = { + type = "infiniband", - rdma_port_space = "RC", - - in = { - address = "10.0.0.2:1337", + rdma_port_space = "RC", + + in = { + address = "10.0.0.2:1337", - max_wrs = 8192, - cq_size = 8192, + max_wrs = 8192, + cq_size = 8192, - vectorize = 1, + vectorize = 1, - buffer_subtraction = 128, - }, + buffer_subtraction = 128, + }, - out = { - address = "10.0.0.1:1337", - resolution_timeout = 1000, - - max_wrs = 8192, - cq_size = 256, + out = { + address = "10.0.0.1:1337", + resolution_timeout = 1000, + + max_wrs = 8192, + cq_size = 256, - vectorize = 1, + vectorize = 1, - send_inline = true, - max_inline_data = 60, + send_inline = true, + max_inline_data = 60, - use_fallback = true, - } - } + use_fallback = true, + } + } - ib_node_target = { - type = "infiniband", + ib_node_target = { + type = "infiniband", - rdma_port_space = "RC", + rdma_port_space = "RC", - in = { - address = "10.0.0.1:1337", + in = { + address = "10.0.0.1:1337", - max_wrs = 8192, - cq_size = 8192, + max_wrs = 8192, + cq_size = 8192, - vectorize = 1, + vectorize = 1, - buffer_subtraction = 128, + buffer_subtraction = 128, - hooks = ( - { type = "stats", verbose = true } - ) - }, - } + hooks = ( + { type = "stats", verbose = true } + ) + } + } } diff --git a/etc/examples/nodes/mqtt.conf b/etc/examples/nodes/mqtt.conf index 0ead39152..168b4567a 100644 --- a/etc/examples/nodes/mqtt.conf +++ b/etc/examples/nodes/mqtt.conf @@ -17,7 +17,7 @@ nodes = { publish = "test-topic" }, in = { - subscribe = "test-topic" + subscribe = 1 }, ssl = { enabled = false, diff --git a/etc/examples/nodes/multicast.conf b/etc/examples/nodes/multicast.conf new file mode 100644 index 000000000..8ac01b256 --- /dev/null +++ b/etc/examples/nodes/multicast.conf @@ -0,0 +1,23 @@ +nodes = { + udp_node = { # The dictionary is indexed by the name of the node. + type = "socket", # For a list of available node-types run: 'villas-node -h' + + ### The following settings are specific to the socket node-type!! ### + + in = { + address = "127.0.0.1:12001" # This node only received messages on this IP:Port pair + + multicast = { # IGMP multicast is only support for layer = (ip|udp) + enabled = true, + + group = "224.1.2.3", # The multicast group. Must be within 224.0.0.0/4 + interface = "1.2.3.4", # The IP address of the interface which should receive multicast packets. + ttl = 128, # The time to live for outgoing multicast packets. + loop = false, # Whether or not to loopback outgoing multicast packets to the local host. + } + }, + out = { + address = "127.0.0.1:12000", # This node sents outgoing messages to this IP:Port pair + } + } +} diff --git a/etc/examples/nodes/netem.conf b/etc/examples/nodes/netem.conf new file mode 100644 index 000000000..c42386188 --- /dev/null +++ b/etc/examples/nodes/netem.conf @@ -0,0 +1,27 @@ +nodes = { + udp_node = { # The dictionary is indexed by the name of the node. + type = "socket", # For a list of available node-types run: 'villas-node -h' + + ### The following settings are specific to the socket node-type!! ### + + format = "gtnet.fake", # For a list of available node-types run: 'villas-node -h' + + in = { + address = "127.0.0.1:12001" # This node only received messages on this IP:Port pair + }, + out = { + address = "127.0.0.1:12000", # This node sents outgoing messages to this IP:Port pair + + netem = { # Network emulation settings + enabled = true, + # Those settings can be specified for each node invidually! + delay = 100000, # Additional latency in microseconds + jitter = 30000, # Jitter in uS + distribution = "normal", # Distribution of delay: uniform, normal, pareto, paretonormal + loss = 10 # Packet loss in percent + duplicate = 10, # Duplication in percent + corrupt = 10 # Corruption in percent + } + } + } +} diff --git a/etc/examples/nodes/rtp.conf b/etc/examples/nodes/rtp.conf index 227101e33..b9b4116ef 100644 --- a/etc/examples/nodes/rtp.conf +++ b/etc/examples/nodes/rtp.conf @@ -1,38 +1,38 @@ nodes = { - rtp_node = { - type = "rtp" + rtp_node = { + type = "rtp" - rate = 10000, + rate = 10000, - rtcp = { - enabled = false, - - mode = "aimd" - throttle_mode = "decimate" - } + rtcp = { + enabled = false, + + mode = "aimd" + throttle_mode = "decimate" + } - aimd = { - a = 10, - b = 0.5 - } + aimd = { + a = 10, + b = 0.5 + } - in = { - address = "0.0.0.0:12000", - signals = { - count = 3 - type = "float" - } - } + in = { + address = "0.0.0.0:12000", + signals = { + count = 3 + type = "float" + } + } - out = { - address = "127.0.0.1:12000" + out = { + address = "127.0.0.1:12000" - netem = { # Network emulation settings - enabled = false, - - delay = 100000, # Additional latency in microseconds - loss = 10 # Packet loss in percent - } - } - } + netem = { # Network emulation settings + enabled = false, + + delay = 100000, # Additional latency in microseconds + loss = 10 # Packet loss in percent + } + } + } } diff --git a/etc/examples/nodes/signal_generator.conf b/etc/examples/nodes/signal_generator.conf index 0e9dde1cf..21e46ec95 100644 --- a/etc/examples/nodes/signal_generator.conf +++ b/etc/examples/nodes/signal_generator.conf @@ -2,12 +2,15 @@ nodes = { signal_node = { type = "signal", - signal = "sine", # One of: sine, square, ramp, counter, constant, triangle, random, mixed, constant" - values = 4, # Number of values per sample - amplitude = 2.3, # Amplitude of generated signals - frequency = 10, # Frequency of generated signals - stddev = 2, # Standard deviation of random signals (normal distributed) - rate = 10.0, # Sample rate - offset = -4.5 # DC bias / Offset + signal = "sine", # One of "sine", "square", "ramp", "triangle", "random", "mixed", "counter" + values = 4, # Number of values per sample + amplitude = 2.3, # Amplitude of generated signals + frequency = 10, # Frequency of generated signals + stddev = 2, # Standard deviation of random signals (normal distributed) + rate = 10.0, # Sample rate + offset = 1.0, # Constant offset + realtime = true, # Wait between emitting each sample + limit = 1000, # Only emit 1000 samples, then stop + monitor_missed = true # Count and warn about missed steps } } diff --git a/etc/examples/nodes/rtt.conf b/etc/examples/nodes/test_rtt.conf similarity index 100% rename from etc/examples/nodes/rtt.conf rename to etc/examples/nodes/test_rtt.conf diff --git a/etc/examples/nodes/udp.conf b/etc/examples/nodes/udp.conf index ee176c656..4eadd13e3 100644 --- a/etc/examples/nodes/udp.conf +++ b/etc/examples/nodes/udp.conf @@ -10,50 +10,19 @@ nodes = { ### The following settings are specific to the socket node-type!! ### layer = "udp", # Layer can be one of: - # - udp Send / receive L4 UDP packets - # - ip Send / receive L3 IP packets - # - eth Send / receive L2 Ethernet frames (IEEE802.3) + # - udp Send / receive L4 UDP packets + # - ip Send / receive L3 IP packets + # - eth Send / receive L2 Ethernet frames (IEEE802.3) format = "gtnet.fake", # For a list of available node-types run: 'villas-node -h' in = { address = "127.0.0.1:12001" # This node only received messages on this IP:Port pair - verify_source = true, # Check if source address of incoming packets matches the remote address. - - multicast = { # IGMP multicast is only support for layer = (ip|udp) - enabled = true, - - group = "224.1.2.3", # The multicast group. Must be within 224.0.0.0/4 - interface = "1.2.3.4", # The IP address of the interface which should receive multicast packets. - ttl = 128, # The time to live for outgoing multicast packets. - loop = false, # Whether or not to loopback outgoing multicast packets to the local host. - }, - - hooks = ( - { - type = "stats", - - warmup = 100, # The first 100 samples are used to estimate bounds for the histograms - format = "human", # One of: human, json, matlab - bucket = 30, # The number of buckets for the histograms - verbose = true # Plot histograms during shutdown - } - ) + verify_source = true # Check if source address of incoming packets matches the remote address. }, out = { address = "127.0.0.1:12000", # This node sents outgoing messages to this IP:Port pair - - netem = { # Network emulation settings - enabled = true, - # Those settings can be specified for each node invidually! - delay = 100000, # Additional latency in microseconds - jitter = 30000, # Jitter in uS - distribution = "normal", # Distribution of delay: uniform, normal, pareto, paretonormal - loss = 10 # Packet loss in percent - duplicate = 10, # Duplication in percent - corrupt = 10 # Corruption in percent - } } } } diff --git a/etc/examples/nodes/uldaq.conf b/etc/examples/nodes/uldaq.conf index 06ead6346..be817be9c 100644 --- a/etc/examples/nodes/uldaq.conf +++ b/etc/examples/nodes/uldaq.conf @@ -1,50 +1,50 @@ http = { - enabled = false + enabled = false } nodes = { - ul201 = { - type = "uldaq" - interface_type = "usb" - in = { - range = "bipolar-10", - input_mode = "single-ended" - signals = ( - { name = "ch0", type = "float", channel = 0 } - ) + ul201 = { + type = "uldaq" + interface_type = "usb" + in = { + range = "bipolar-10", + input_mode = "single-ended" + signals = ( + { name = "ch0", type = "float", channel = 0 } + ) - sample_rate = 5000, - vectorize = 100 - } - }, + sample_rate = 5000, + vectorize = 100 + } + }, - sigGen = { - type = "signal" - signal = "sine" - frequency = 50 - rate = 1000 - } - vpmu = { - type = "socket", - layer = "udp", + sigGen = { + type = "signal" + signal = "sine" + frequency = 50 + rate = 1000 + } + vpmu = { + type = "socket", + layer = "udp", - format = "raw.32.be", + format = "raw.32.be", - in = { - address = "*:13001" + in = { + address = "*:13001" - signals = () - }, - out = { - vectorize = 100 - address = "10.100.1.125:13000" - } - } + signals = () + }, + out = { + vectorize = 100 + address = "10.100.1.125:13000" + } + } } paths = ( - { - in = "ul201", - out = "vpmu" - } + { + in = "ul201", + out = "vpmu" + } ) diff --git a/etc/examples/nodes/websocket.conf b/etc/examples/nodes/websocket.conf index ac69dd448..012f2879b 100644 --- a/etc/examples/nodes/websocket.conf +++ b/etc/examples/nodes/websocket.conf @@ -1,10 +1,16 @@ nodes = { - websocket_node = { - type = "websocket", + ws = { + type = "websocket" destinations = [ - "http://example.com/node-name1", - "https://example.com/another-node" + "ws://someserver:8080/somenode" ] - } + } +} + +http = { + port = 8080 + htdocs = "/villas/contrib/websocket/" + ssl_cert = "/etc/ssl/certs/mycert.pem" + ssl_private_key= "/etc/ssl/private/mykey.pem" }