{
    "interface": "socketcan",
    "channel": "vcan0",
    "backend": {
      "fd": true
    },
    "reconnectPeriod": 5,
    "devices": [
      {
        "name": "Car",
        "sendDataOnlyOnChange": false,
        "enableUnknownRpc": true,
        "strictEval": false,
        "attributes": [
          {
            "key": "isDriverDoorOpened",
            "nodeId": 41,
            "command": "2:2:big:8717",
            "value": "4:1:int",
            "expression": "bool(value & 0b00000100)",
            "polling": {
              "type": "once",
              "dataInHex": "AB CD AB CD"
            }
          }
        ],
        "timeseries": [
          {
            "key": "rpm",
            "nodeId": 1918,
            "isExtendedId": true,
            "command": "2:2:big:48059",
            "value": "4:2:big:int",
            "expression": "value / 4",
            "polling": {
              "type": "always",
              "period": 5,
              "dataInHex": "aaaa bbbb aaaa bbbb"
            }
          },
          {
            "key": "milliage",
            "nodeId": 1918,
            "isExtendedId": true,
            "value": "4:2:little:int",
            "expression": "value * 10",
            "polling": {
              "type": "always",
              "period": 30,
              "dataInHex": "aa bb cc dd ee ff aa bb"
            }
          }
        ],
        "attributeUpdates": [
          {
            "attributeOnThingsBoard": "softwareVersion",
            "nodeId": 64,
            "isExtendedId": true,
            "dataLength": 4,
            "dataExpression": "value + 5",
            "dataByteorder": "little"
          }
        ],
        "serverSideRpc": [
          {
            "method": "sendSameData",
            "nodeId": 4,
            "isExtendedId": true,
            "isFd": true,
            "bitrateSwitch": true,
            "dataInHex": "aa bb cc dd ee ff    aa bb aa bb cc d ee ff"
          },
          {
            "method": "setLightLevel",
            "nodeId": 5,
            "dataLength": 2,
            "dataByteorder": "little",
            "dataBefore": "00AA"
          },
          {
            "method": "setSpeed",
            "nodeId": 16,
            "dataAfter": "0102",
            "dataExpression": "userSpeed if maxAllowedSpeed > userSpeed else maxAllowedSpeed"
          }
        ]
      }
    ]
  }