Categories
VSCP

vscpl2drv-logger release 15.0.0

VSCP level II driver for diagnostic logging. It makes it possible to log VSCP events from a source to a file. Three formats of the log file is currently supported. Either a standard text string i logged for for each event or logging entries can be logged on XML or JSON format. The advantage of the later is that it can be read by VSCP works and further analyzed there. Several drivers can be used to write logging data to different output files and using different filter/masks for complex logging.

Also this is the first level II driver that implement the HLO configuration interface (shown in the picture above).

Binaries can be downloaded from https://github.com/grodansparadis/vscpl2drv-logger/releases/tag/v15.0.0

Docs are here https://docs.vscp.org/#level2drv

Repository is here https://github.com/grodansparadis/vscpl2drv-logger

Categories
VSCP

vscpl2drv-websrv release 15.0.0

VSCP level II driver that implements implements a full web-server, VSCP websocket ws1 and ws2 interfaces, and a VSCP REST interface. Server side LUA and Javascript is supported among many other techniques are fully supported in the same way that was part of the VSCP daemon in releases pre 15.0.0.

Binaries can be downloaded from https://github.com/grodansparadis/vscpl2drv-websrv/releases/tag/v15.0.0

Docs are here https://docs.vscp.org/#level2drv

Repository is here https://github.com/grodansparadis/vscpl2drv-websrv

Categories
VSCP

vscpl2drv-tcpipsrv version 15.0.0

VSCP level II driver that implements the VSCP tcp/ip link protocol server in the same way as the server that was part of VSCP daemon in releases pre 15.0.0.

Binaries can be downloaded from https://github.com/grodansparadis/vscpl2drv-tcpipsrv/releases/tag/v15.0.0

Docs are here https://docs.vscp.org/#level2drv

Repository is here https://github.com/grodansparadis/vscpl2drv-tcpipsrv

Categories
VSCP

vscpl2drv-tcpiplink version 15.0.0

VSCP level II driver that implements the VSCP client side tcp/ip link protocol.

Binaries can be downloaded from https://github.com/grodansparadis/vscpl2drv-tcpiplink/releases/tag/v15.0.0

Docs are here https://docs.vscp.org/#level2drv

Repository is here https://github.com/grodansparadis/vscpl2drv-tcpiplink

Categories
VSCP

Auto generated #VSCP files

Auto generated VSCP files has been added to the VSCP docs collection page.

Categories
VSCP

Phosphorus 15.0.0

The VSCP Daemon Phosphorus 15.0.0

It is my pleasure to announce that it is now time for release 15.0.0 Phosphorus of the VSCP & Friends package. From version 15 each component will be shipped separately and first out is the VSCP daemon, the server for the VSCP IoT system.

The code for the full VSCP software framework has been fully rewritten and is now C++ standard based. There is no dependencies on external frameworks at all anymore. License is MIT.

The goals for the software part of the project has changed.

First: node-red and similar high level tools will be used for user interface and scheduling tasks.

Secondly: MQTT is now a central part of VSCP and the VSCP daemon is dependent on it to work. VSCP is a good fit for MQTT.

Third: much of the functionality that previously was built into the VSCP daemon is now available as drivers. This is true for the tcp/ip interface, the web server, the two websocket servers and the rest interface and some other functionality like remote variables that will follow.

This release in fact make the VSCP daemon a low level interface to a MQTT based system. A low end driver can be hooked on to the VSCP daemon and the nodes handled by it (if any), or driver embedded functionality, can connect through the VSCP daemon and interface to a MQTT based system.

VSCP stands for the Very Simple Control Protocol, but is nowadays, with it’s existence for more than two decades, more of an IoT/m2m framework. The most important part is still to make sure that a measurement, command etc, is interpreted at the source the same way as it was expected to be by the originator.

The VSCP daemon can be downloaded here. Packages for Debian based systems (also Raspberry Pi) is available. Windows install files will be available later.

If you want to know more about the VSCP framework the project home page is a good start. Most docs are here and especially for the VSCP daemon here. If you want to discuss VSCP this is the place to do so. If you find bugs or problems issue a ticket here

Of course I need to thank my sponsors at this stage. Your support has been a great help.

Enjoy!
/Ake Hedman

Categories
VSCP

New release of the VSCP helper library

New release of the VSCP Helper library 15.0.0

The helper library is a C library for the VSCP IoT/m2m framework. See the repository main page for installation information and links to full documentation.

This is a full rewrite and update of the VSCP helper library to be compliant with the new 15.0.0 release.

Binaries for Debian/Ubuntu and Raspberry Pi is available. Windows binaries will follow. Also the Python, node-red, none.js bindings will be updated soon.

https://github.com/grodansparadis/vscp-helper-lib

Categories
VSCP

1-Wire temps. to VSCP daemon

This is an oldie that now got it’s own repository. It is a python script that send temperatures from any number of digitemp sensors to a remote VSCP daemons tcp/ip link interface. It works with both python 2 and python3

Info and repository is here https://github.com/grodansparadis/vscp-python-digitemp

Categories
the VSCP Daemon VSCP

VSCP driver MQTT topics

For the new VSCP daemon drivers uses mustach escaped topics. It is possible to use this in many ways. For a driver publish config as this one

where the last to topic defines is of interest here.

The first of the two publish events on JSON format. Driver guid/event class/event type/and node nickname is dynamically put into the topic when an event is received by the driver (vscp/…).

This looks like this for events from the VSCP socketcan driver

If we instead want the symbolic names for the vscp-class and vscp-type the second configuration line can be used. This will be published as the last topic in the picture above (vscp2/…).

Of course it is possible to use many other escapes and even set up your own.

Also look at the vscp-daemon topic. At this location VSCP server information is displayed. This is information like available interfaces, discovered nodes etc. You can see that drivers are actually running and alive here.

Just a teaser…

Categories
the VSCP Daemon VSCP

VERY SIMPLE Control Protocol

Sitting here and documenting the VSCP daemon configuration file i must smile for myself. Even the simplest tools need a quite complex configuration file.

VERY SIMPLE? Sure.

Don’t be afraid. There are many options. Most people just need a few of them.

{
    "runasuser" : "vscp",
    "debug" : 0,		
    "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:00:00:00:00:00:00:00:01",
    "servername" : "The VSCP daemon",
    "classtypedb" : "/var/lib/vscp/vscpd/vscp_events.sqlite3",
    "maindb" : "/var/lib/vscp/vscpd/vscp.sqlite3",
    "discoverydb" : "/var/lib/vscp/vscpd/vscp.sqlite3",
    "vscpkey" : "/etc/vscp/vscp.key",
    "logging" : {
        "file-enable-log": true,
        "file-log-level" : "info",
        "file-pattern" : "[vscp] [%^%l%$] %v",
        "file-path" : "/var/log/vscp/vscpd.log",
        "file-max-size" : 5242880,
        "file-max-files" : 7,
        "console-enable-log": false,
        "console-log-level" : "info",
        "console-pattern" : "[vscp] [%^%l%$] %v"
    },

    "mqtt" : {
        "bind" : "",   
        "host" : "192.168.1.7",
        "port" : 1883,
        "mqtt-options" : {
            "tcp-nodelay" : true,
            "protocol-version": 311,
            "receive-maximum": 20,
            "send-maximum": 20,
            "ssl-ctx-with-defaults": 0,
            "tls-ocsp-required": 0,
            "tls-use-os-certs" : 0
        },
        "user" : "vscp",
        "password": "secret",
        "clientid" : "the-vscp-daemon",  
        "publish-format" : "json",
        "subscribe-format" : "auto",
        "qos" : 1,
        "bcleansession" : false,
        "bretain" : false,      
        "keepalive" : 60,
        "reconnect" : {
          "delay" : 2,
          "delay-max" : 10,
          "exponential-backoff" : false
        },
        "tls" : {
            "cafile" : "",
            "capath" : "",
            "certfile" : "",
            "keyfile" : "",
            "pwkeyfile" : "",
            "no-hostname-checking" : true,
            "cert-reqs" : 0,
            "version": "",
            "ciphers": "",
            "psk": "",
            "psk-identity" : ""
        },
        "will": {
            "topic": "Last Will",
            "qos": 0,
            "retain": false,
            "payload": "This is the end"
        },
        "subscribe": [
            {
                "topic": "test1/topic/A",
                "qos": 0,
                "v5-options": 0,
                "format": "auto"
            },
            {
                "topic": "test2/topic/B",
                "qos": 0,
                "v5-options": 0,
                "format": "auto"
            },
            {
                "topic": "test/#",
                "qos": 0,
                "v5-options": 0,
                "format": "auto"
            },
            {
                "topic": "test2/#",
                "qos": 0,
                "v5-options": 0,
                "format": "auto"
            }
        ],
        "bescape-pub-topics": true,
        "user-escapes": {
            "escape1": "valu1",
            "escape2": "valu2"
        },
        "publish": [
            {
                "topic" : "publish/topic/json",
                "qos" : 0,
                "retain" : false,
                "format": "json"
            },
            {
                "topic" : "publish/topic/xml",
                "qos" : 0,
                "retain" : false,
                "format": "xml"
            },
            {
                "topic" : "publish/topic/string",
                "qos" : 0,
                "retain" : false,
                "format": "string"
            },
            {
                "topic" : "publish/topic/binary",
                "qos" : 0,
                "retain" : false,
                "format": "binary"
            },
            {
                "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                "qos" : 0,
                "retain" : false,
                "format": "json"
            }    
        ],      
        "v5" : {
            "user-properties": {
                "prop1" : "value",
                "prop2" : "value"    
            } 
        }
    },

    "drivers" : {
        "level1" : [
            {
                "enable" : false,
                "name" : "logger",
                "config" : "/tmp/canallog.txt",
                "flags" : 1,
                "translation" : 2,
                "path" : "/var/lib/vscp/drivers/level1/vscpl1drv-logger.so",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:01:00:00:00:00:00:00:01",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level1-logger-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "can4vscp",
                "config" : "/dev/ttyUSB0",
                "flags" : 0,
                "translation" : 2,
                "path" : "/var/lib/vscp/drivers/level1/vscpl1drv-can4vscp.so",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:01:00:00:00:00:00:00:02",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level1-can4vscp-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : true,
                "name" : "socketcanl1",
                "config" : "can0",
                "flags" : 0,
                "translation" : 2,
                "path" : "/var/lib/vscp/drivers/level1/vscpl1drv-socketcan.so.1.1.1",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:01:00:00:00:00:00:00:03",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level1-socketcan-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "can232",
                "config" : "/dev/ttyS0;19200;0;0;125",
                "flags" : 0,
                "translation" : 2,
                "path" : "/var/lib/vscp/drivers/level1/vscpl1drv-can232.so",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:01:00:00:00:00:00:00:04",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level1-can232-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            }
        ],
        "level2" : [
            {
                "enable" : false,
                "name" : "Logger",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-logger.so",
                "path-config" : "/var/lib/vscp/vscpd/logger2.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:02:00:00:00:00:00:00:01",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-logger-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "lmsensors",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-lmsensors.so",
                "path-config" : "/var/lib/vscp/vscpd/lmsensors.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:06:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-lmsensors-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "socketcan",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-socketcan.so",
                "path-config" : "/var/lib/vscp/vscpd/socketcan.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:07:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-socketcan-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "mqtt",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-mqtt.so",
                "path-config" : "/var/lib/vscp/vscpd/mqtt.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:08:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-mqtt-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "tcpiplink",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-tcpiplink.so",
                "path-config" : "/var/lib/vscp/vscpd/tcpiplink.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:09:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-tcpiplink-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "rawethernet",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-raweth.so",
                "path-config" : "/var/lib/vscp/vscpd/raweth.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:0A:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-rawethernet-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "sim",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-sim.so",
                "path-config" : "/var/lib/vscp/vscpd/sim.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:0B:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-simulation-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            },
            {
                "enable" : false,
                "name" : "1-wire",
                "path-driver" : "/var/lib/vscp/drivers/level2/vscpl2drv-wire1.so",
                "path-config" : "/var/lib/vscp/vscpd/wire1.conf",
                "guid" : "FF:FF:FF:FF:FF:FF:FF:F5:0C:00:00:00:00:00:00:00",

                "mqtt" : {
                    "bind" : "",   
                    "host" : "192.168.1.7",
                    "port" : 1883,
                    "mqtt-options" : {
                        "tcp-nodelay" : true,
                        "protocol-version": 311,
                        "receive-maximum": 20,
                        "send-maximum": 20,
                        "ssl-ctx-with-defaults": 0,
                        "tls-ocsp-required": 0,
                        "tls-use-os-certs" : 0
                    },
                    "user" : "vscp",
                    "password": "secret",
                    "clientid" : "vscp-level2-one-wire-driver",  
                    "publish-format" : "json",
                    "subscribe-format" : "auto",
                    "qos" : 1,
                    "bcleansession" : false,
                    "bretain" : false,      
                    "keepalive" : 60,
                    "reconnect" : {
                      "delay" : 2,
                      "delay-max" : 10,
                      "exponential-backoff" : false
                    },
                    "tls" : {
                        "cafile" : "",
                        "capath" : "",
                        "certfile" : "",
                        "keyfile" : "",
                        "pwkeyfile" : "",
                        "no-hostname-checking" : true,
                        "cert-reqs" : 0,
                        "version": "",
                        "ciphers": "",
                        "psk": "",
                        "psk-identity" : ""
                    },
                    "will": {
                        "topic": "Last Will",
                        "qos": 0,
                        "retain": false,
                        "payload": "This is the end"
                    },
                    "subscribe": [
                        {
                            "topic": "test1/topic/A",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/topic/B",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        },
                        {
                            "topic": "test2/#",
                            "qos": 0,
                            "v5-options": 0,
                            "format": "auto"
                        }
                    ],
                    "bescape-pub-topics": true,
                    "user-escapes": {
                        "escape1": "valu1",
                        "escape2": "valu2"
                    },
                    "publish": [
                        {
                            "topic" : "publish/topic/json",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        },
                        {
                            "topic" : "publish/topic/xml",
                            "qos" : 0,
                            "retain" : false,
                            "format": "xml"
                        },
                        {
                            "topic" : "publish/topic/string",
                            "qos" : 0,
                            "retain" : false,
                            "format": "string"
                        },
                        {
                            "topic" : "publish/topic/binary",
                            "qos" : 0,
                            "retain" : false,
                            "format": "binary"
                        },
                        {
                            "topic" : "publish/topic/{{datetime}}/{{user}}/C",
                            "qos" : 0,
                            "retain" : false,
                            "format": "json"
                        }    
                    ],      
                    "v5" : {
                        "user-properties": {
                            "prop1" : "value",
                            "prop2" : "value"    
                        } 
                    }
                },
            }
        ]
    }
}