Advertisement
kolaCZek

Untitled

Jan 19th, 2025
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 33.44 KB | None | 0 0
  1. {
  2.   "annotations": {
  3.     "list": [
  4.       {
  5.         "builtIn": 1,
  6.         "datasource": {
  7.           "type": "datasource",
  8.           "uid": "grafana"
  9.         },
  10.         "enable": true,
  11.         "hide": true,
  12.         "iconColor": "rgba(0, 211, 255, 1)",
  13.         "name": "Annotations & Alerts",
  14.         "target": {
  15.           "limit": 100,
  16.           "matchAny": false,
  17.           "tags": [],
  18.           "type": "dashboard"
  19.         },
  20.         "type": "dashboard"
  21.       }
  22.     ]
  23.   },
  24.   "editable": true,
  25.   "fiscalYearStartMonth": 0,
  26.   "graphTooltip": 0,
  27.   "id": 88,
  28.   "links": [
  29.     {
  30.       "icon": "dashboard",
  31.       "tags": [],
  32.       "title": "TeslaMate",
  33.       "tooltip": "",
  34.       "type": "link",
  35.       "url": "[[base_url:raw]]"
  36.     },
  37.     {
  38.       "asDropdown": true,
  39.       "icon": "external link",
  40.       "tags": [
  41.         "tesla"
  42.       ],
  43.       "title": "Dashboards",
  44.       "type": "dashboards"
  45.     },
  46.     {
  47.       "asDropdown": true,
  48.       "icon": "external link",
  49.       "includeVars": false,
  50.       "keepTime": false,
  51.       "tags": [
  52.         "TeslamateCustomDashboards"
  53.       ],
  54.       "targetBlank": false,
  55.       "title": "Custom Dashboards",
  56.       "tooltip": "",
  57.       "type": "dashboards",
  58.       "url": ""
  59.     }
  60.   ],
  61.   "panels": [
  62.     {
  63.       "datasource": {
  64.         "type": "postgres",
  65.         "uid": "TeslaMate"
  66.       },
  67.       "fieldConfig": {
  68.         "defaults": {
  69.           "custom": {
  70.             "align": "auto",
  71.             "cellOptions": {
  72.               "type": "auto"
  73.             },
  74.             "filterable": false,
  75.             "inspect": false
  76.           },
  77.           "mappings": [],
  78.           "min": 0,
  79.           "thresholds": {
  80.             "mode": "absolute",
  81.             "steps": [
  82.               {
  83.                 "color": "green",
  84.                 "value": null
  85.               }
  86.             ]
  87.           }
  88.         },
  89.         "overrides": [
  90.           {
  91.             "matcher": {
  92.               "id": "byName",
  93.               "options": "avg_consumption_km"
  94.             },
  95.             "properties": [
  96.               {
  97.                 "id": "displayName",
  98.                 "value": "Avg. Consumption"
  99.               },
  100.               {
  101.                 "id": "unit",
  102.                 "value": "Wh/km"
  103.               },
  104.               {
  105.                 "id": "custom.width",
  106.                 "value": 200
  107.               },
  108.               {
  109.                 "id": "decimals",
  110.                 "value": 0
  111.               }
  112.             ]
  113.           },
  114.           {
  115.             "matcher": {
  116.               "id": "byName",
  117.               "options": "avg_consumption_mi"
  118.             },
  119.             "properties": [
  120.               {
  121.                 "id": "displayName",
  122.                 "value": "Avg. Consumption"
  123.               },
  124.               {
  125.                 "id": "unit",
  126.                 "value": "Wh/mi"
  127.               },
  128.               {
  129.                 "id": "custom.width",
  130.                 "value": 200
  131.               },
  132.               {
  133.                 "id": "decimals",
  134.                 "value": 0
  135.               }
  136.             ]
  137.           },
  138.           {
  139.             "matcher": {
  140.               "id": "byName",
  141.               "options": "avg_distance_km"
  142.             },
  143.             "properties": [
  144.               {
  145.                 "id": "displayName",
  146.                 "value": "Avg. Distance"
  147.               },
  148.               {
  149.                 "id": "unit",
  150.                 "value": "km"
  151.               },
  152.               {
  153.                 "id": "custom.cellOptions",
  154.                 "value": {
  155.                   "mode": "gradient",
  156.                   "type": "gauge"
  157.                 }
  158.               },
  159.               {
  160.                 "id": "color",
  161.                 "value": {
  162.                   "mode": "continuous-GrYlRd"
  163.                 }
  164.               },
  165.               {
  166.                 "id": "min"
  167.               },
  168.               {
  169.                 "id": "max"
  170.               },
  171.               {
  172.                 "id": "decimals",
  173.                 "value": 1
  174.               }
  175.             ]
  176.           },
  177.           {
  178.             "matcher": {
  179.               "id": "byName",
  180.               "options": "avg_distance_mi"
  181.             },
  182.             "properties": [
  183.               {
  184.                 "id": "displayName",
  185.                 "value": "Avg. Distance"
  186.               },
  187.               {
  188.                 "id": "unit",
  189.                 "value": "mi"
  190.               },
  191.               {
  192.                 "id": "custom.cellOptions",
  193.                 "value": {
  194.                   "mode": "gradient",
  195.                   "type": "gauge"
  196.                 }
  197.               },
  198.               {
  199.                 "id": "max"
  200.               },
  201.               {
  202.                 "id": "min"
  203.               },
  204.               {
  205.                 "id": "color",
  206.                 "value": {
  207.                   "mode": "continuous-GrYlRd"
  208.                 }
  209.               },
  210.               {
  211.                 "id": "decimals",
  212.                 "value": 1
  213.               }
  214.             ]
  215.           },
  216.           {
  217.             "matcher": {
  218.               "id": "byName",
  219.               "options": "speed_range_km"
  220.             },
  221.             "properties": [
  222.               {
  223.                 "id": "displayName",
  224.                 "value": "Segment (km/h)"
  225.               },
  226.               {
  227.                 "id": "custom.width",
  228.                 "value": 125
  229.               },
  230.               {
  231.                 "id": "custom.align",
  232.                 "value": "center"
  233.               }
  234.             ]
  235.           },
  236.           {
  237.             "matcher": {
  238.               "id": "byName",
  239.               "options": "speed_range_mi"
  240.             },
  241.             "properties": [
  242.               {
  243.                 "id": "displayName",
  244.                 "value": "Segment (mph)"
  245.               },
  246.               {
  247.                 "id": "custom.width",
  248.                 "value": 125
  249.               },
  250.               {
  251.                 "id": "custom.align",
  252.                 "value": "center"
  253.               }
  254.             ]
  255.           },
  256.           {
  257.             "matcher": {
  258.               "id": "byName",
  259.               "options": "avg_speed_km"
  260.             },
  261.             "properties": [
  262.               {
  263.                 "id": "displayName",
  264.                 "value": "Avg Speed"
  265.               },
  266.               {
  267.                 "id": "unit",
  268.                 "value": "velocitykmh"
  269.               },
  270.               {
  271.                 "id": "custom.width",
  272.                 "value": 120
  273.               },
  274.               {
  275.                 "id": "decimals",
  276.                 "value": 0
  277.               }
  278.             ]
  279.           },
  280.           {
  281.             "matcher": {
  282.               "id": "byName",
  283.               "options": "avg_speed_mi"
  284.             },
  285.             "properties": [
  286.               {
  287.                 "id": "displayName",
  288.                 "value": "Avg. Speed"
  289.               },
  290.               {
  291.                 "id": "unit",
  292.                 "value": "velocitymph"
  293.               },
  294.               {
  295.                 "id": "custom.width",
  296.                 "value": 120
  297.               },
  298.               {
  299.                 "id": "decimals",
  300.                 "value": 0
  301.               }
  302.             ]
  303.           },
  304.           {
  305.             "matcher": {
  306.               "id": "byName",
  307.               "options": "avg_power"
  308.             },
  309.             "properties": [
  310.               {
  311.                 "id": "custom.width",
  312.                 "value": 200
  313.               },
  314.               {
  315.                 "id": "displayName",
  316.                 "value": "Avg. Power"
  317.               },
  318.               {
  319.                 "id": "unit",
  320.                 "value": "kwatt"
  321.               },
  322.               {
  323.                 "id": "decimals",
  324.                 "value": 0
  325.               }
  326.             ]
  327.           }
  328.         ]
  329.       },
  330.       "gridPos": {
  331.         "h": 13,
  332.         "w": 14,
  333.         "x": 0,
  334.         "y": 0
  335.       },
  336.       "id": 2,
  337.       "options": {
  338.         "cellHeight": "sm",
  339.         "footer": {
  340.           "countRows": false,
  341.           "enablePagination": false,
  342.           "fields": "",
  343.           "reducer": [
  344.             "sum"
  345.           ],
  346.           "show": false
  347.         },
  348.         "showHeader": true,
  349.         "sortBy": []
  350.       },
  351.       "pluginVersion": "11.4.0",
  352.       "targets": [
  353.         {
  354.           "datasource": {
  355.             "type": "postgres",
  356.             "uid": "TeslaMate"
  357.           },
  358.           "format": "table",
  359.           "group": [],
  360.           "metricColumn": "none",
  361.           "rawQuery": true,
  362.           "rawSql": "SELECT\r\n    BinnedData.speed_bin AS speed_range_$length_unit,\r\n    convert_km(BinnedData.total_odometer_distance::numeric, '$length_unit') AS avg_distance_$length_unit,\r\n    BinnedData.avg_speed * CASE WHEN '$length_unit' = 'km' THEN 1 WHEN '$length_unit' = 'mi' THEN 0.621371 END AS avg_speed_$length_unit,\r\n    ((BinnedData.total_energy_consumed / (BinnedData.total_distance * CASE WHEN '$length_unit' = 'km' THEN 1 WHEN '$length_unit' = 'mi' THEN 0.621371 END)) * 1000 ) / (BinnedData.avg_speed * CASE WHEN '$length_unit' = 'km' THEN 1 WHEN '$length_unit' = 'mi' THEN 0.621371 END) AS avg_consumption_$length_unit,\r\n    avg_power\r\nFROM\r\n    (SELECT\r\n        CASE\r\n            WHEN elevation_diff >= 1 THEN 'Uphill'\r\n            WHEN elevation_diff <= -1 THEN 'Downhill'\r\n            ELSE 'Flat'\r\n        END AS terrain_type,\r\n        ROUND(speed * CASE WHEN '$length_unit' = 'km' THEN 1 WHEN '$length_unit' = 'mi' THEN 0.621371 END / 10, 0) * 10 AS speed_bin,\r\n        AVG(power) AS avg_power,\r\n        SUM(power::integer * speed::integer / 60.0) AS total_energy_consumed,\r\n        SUM(speed / 60.0) AS total_distance,\r\n        SUM(odometer_distance) AS total_odometer_distance,\r\n        AVG(speed) AS avg_speed,\r\n        car_id\r\n    FROM\r\n        (SELECT\r\n            drives.car_id,\r\n            positions.speed,\r\n            positions.power,\r\n            positions.elevation - LAG(positions.elevation) OVER (PARTITION BY positions.drive_id ORDER BY positions.date) AS elevation_diff,\r\n            positions.odometer - LAG(positions.odometer) OVER (PARTITION BY positions.drive_id ORDER BY positions.date) AS odometer_distance\r\n        FROM\r\n            drives\r\n        JOIN positions ON drives.id = positions.drive_id\r\n        WHERE\r\n            $__timeFilter(drives.start_date)\r\n            AND drives.car_id = $car_id\r\n            AND drives.end_date IS NOT NULL\r\n            AND drives.distance >= convert_km($min_distance::numeric, '$length_unit')\r\n        ) AS DifferentialData\r\n    GROUP BY speed_bin, terrain_type, car_id\r\n    ) AS BinnedData\r\nJOIN cars ON BinnedData.car_id = cars.id\r\nWHERE BinnedData.terrain_type = '$terrain_type'\r\n    AND BinnedData.total_distance > 0 \r\n    AND BinnedData.total_odometer_distance > 0\r\n    AND BinnedData.speed_bin >= $min_speed_segment\r\nORDER BY BinnedData.speed_bin DESC;\r\n",
  363.           "refId": "A",
  364.           "select": [
  365.             [
  366.               {
  367.                 "params": [
  368.                   "latitude"
  369.                 ],
  370.                 "type": "column"
  371.               }
  372.             ]
  373.           ],
  374.           "table": "addresses",
  375.           "timeColumn": "inserted_at",
  376.           "timeColumnType": "timestamp",
  377.           "where": [
  378.             {
  379.               "name": "$__timeFilter",
  380.               "params": [],
  381.               "type": "macro"
  382.             }
  383.           ]
  384.         }
  385.       ],
  386.       "title": "Consumption by speed - $terrain_type Terrain",
  387.       "type": "table"
  388.     },
  389.     {
  390.       "datasource": {
  391.         "type": "postgres",
  392.         "uid": "TeslaMate"
  393.       },
  394.       "fieldConfig": {
  395.         "defaults": {
  396.           "decimals": 0,
  397.           "mappings": [],
  398.           "thresholds": {
  399.             "mode": "absolute",
  400.             "steps": [
  401.               {
  402.                 "color": "#c7d0d9",
  403.                 "value": null
  404.               }
  405.             ]
  406.           },
  407.           "unit": "none"
  408.         },
  409.         "overrides": [
  410.           {
  411.             "matcher": {
  412.               "id": "byName",
  413.               "options": "distance_km"
  414.             },
  415.             "properties": [
  416.               {
  417.                 "id": "unit",
  418.                 "value": "km"
  419.               }
  420.             ]
  421.           },
  422.           {
  423.             "matcher": {
  424.               "id": "byName",
  425.               "options": "distance_mi"
  426.             },
  427.             "properties": [
  428.               {
  429.                 "id": "unit",
  430.                 "value": "mi"
  431.               }
  432.             ]
  433.           }
  434.         ]
  435.       },
  436.       "gridPos": {
  437.         "h": 6,
  438.         "w": 10,
  439.         "x": 14,
  440.         "y": 0
  441.       },
  442.       "id": 6,
  443.       "maxDataPoints": 100,
  444.       "options": {
  445.         "colorMode": "value",
  446.         "fieldOptions": {
  447.           "calcs": [
  448.             "mean"
  449.           ]
  450.         },
  451.         "graphMode": "none",
  452.         "justifyMode": "auto",
  453.         "orientation": "horizontal",
  454.         "percentChangeColorMode": "standard",
  455.         "reduceOptions": {
  456.           "calcs": [
  457.             "mean"
  458.           ],
  459.           "fields": "",
  460.           "values": false
  461.         },
  462.         "showPercentChange": false,
  463.         "textMode": "value",
  464.         "wideLayout": true
  465.       },
  466.       "pluginVersion": "11.4.0",
  467.       "targets": [
  468.         {
  469.           "datasource": {
  470.             "type": "postgres",
  471.             "uid": "TeslaMate"
  472.           },
  473.           "format": "table",
  474.           "group": [],
  475.           "metricColumn": "none",
  476.           "rawQuery": true,
  477.           "rawSql": "select convert_km(sum(distance)::numeric, '$length_unit') as \"distance_$length_unit\" \nfrom drives \nwhere $__timeFilter(end_date) and car_id = $car_id;",
  478.           "refId": "A",
  479.           "select": [
  480.             [
  481.               {
  482.                 "params": [
  483.                   "latitude"
  484.                 ],
  485.                 "type": "column"
  486.               }
  487.             ]
  488.           ],
  489.           "table": "addresses",
  490.           "timeColumn": "inserted_at",
  491.           "timeColumnType": "timestamp",
  492.           "where": [
  493.             {
  494.               "name": "$__timeFilter",
  495.               "params": [],
  496.               "type": "macro"
  497.             }
  498.           ]
  499.         }
  500.       ],
  501.       "title": "Logged Distance",
  502.       "type": "stat"
  503.     },
  504.     {
  505.       "datasource": {
  506.         "type": "postgres",
  507.         "uid": "TeslaMate"
  508.       },
  509.       "fieldConfig": {
  510.         "defaults": {
  511.           "decimals": 0,
  512.           "mappings": [],
  513.           "noValue": "N/A",
  514.           "thresholds": {
  515.             "mode": "absolute",
  516.             "steps": [
  517.               {
  518.                 "color": "#c7d0d9",
  519.                 "value": null
  520.               }
  521.             ]
  522.           },
  523.           "unit": "none"
  524.         },
  525.         "overrides": [
  526.           {
  527.             "matcher": {
  528.               "id": "byName",
  529.               "options": "consumption_km"
  530.             },
  531.             "properties": [
  532.               {
  533.                 "id": "unit",
  534.                 "value": "Wh/km"
  535.               }
  536.             ]
  537.           },
  538.           {
  539.             "matcher": {
  540.               "id": "byName",
  541.               "options": "consumption_mi"
  542.             },
  543.             "properties": [
  544.               {
  545.                 "id": "unit",
  546.                 "value": "Wh/mi"
  547.               }
  548.             ]
  549.           }
  550.         ]
  551.       },
  552.       "gridPos": {
  553.         "h": 7,
  554.         "w": 3,
  555.         "x": 14,
  556.         "y": 6
  557.       },
  558.       "id": 4,
  559.       "maxDataPoints": 100,
  560.       "options": {
  561.         "colorMode": "value",
  562.         "fieldOptions": {
  563.           "calcs": [
  564.             "mean"
  565.           ]
  566.         },
  567.         "graphMode": "none",
  568.         "justifyMode": "auto",
  569.         "orientation": "horizontal",
  570.         "percentChangeColorMode": "standard",
  571.         "reduceOptions": {
  572.           "calcs": [
  573.             "mean"
  574.           ],
  575.           "fields": "",
  576.           "values": false
  577.         },
  578.         "showPercentChange": false,
  579.         "textMode": "value",
  580.         "wideLayout": true
  581.       },
  582.       "pluginVersion": "11.4.0",
  583.       "targets": [
  584.         {
  585.           "datasource": {
  586.             "type": "postgres",
  587.             "uid": "TeslaMate"
  588.           },
  589.           "format": "table",
  590.           "group": [],
  591.           "metricColumn": "none",
  592.           "rawQuery": true,
  593.           "rawSql": "select \n  sum((start_[[preferred_range]]_range_km - end_[[preferred_range]]_range_km) * cars.efficiency) / sum(distance) * 1000 * \n    CASE WHEN '$length_unit' = 'km' THEN 1\n         WHEN '$length_unit' = 'mi' THEN 1.60934\n    END AS \"consumption_$length_unit\"\nfrom drives \ninner join cars on cars.id = car_id\nwhere $__timeFilter(end_date) \n  and distance is not null and\n  start_[[preferred_range]]_range_km - end_[[preferred_range]]_range_km >= 0.1 and\n  car_id = $car_id",
  594.           "refId": "A",
  595.           "select": [
  596.             [
  597.               {
  598.                 "params": [
  599.                   "latitude"
  600.                 ],
  601.                 "type": "column"
  602.               }
  603.             ]
  604.           ],
  605.           "table": "addresses",
  606.           "timeColumn": "inserted_at",
  607.           "timeColumnType": "timestamp",
  608.           "where": [
  609.             {
  610.               "name": "$__timeFilter",
  611.               "params": [],
  612.               "type": "macro"
  613.             }
  614.           ]
  615.         }
  616.       ],
  617.       "title": "Consumption (net)",
  618.       "type": "stat"
  619.     },
  620.     {
  621.       "datasource": {
  622.         "type": "postgres",
  623.         "uid": "TeslaMate"
  624.       },
  625.       "fieldConfig": {
  626.         "defaults": {
  627.           "decimals": 0,
  628.           "mappings": [],
  629.           "noValue": "N/A",
  630.           "thresholds": {
  631.             "mode": "absolute",
  632.             "steps": [
  633.               {
  634.                 "color": "#c7d0d9",
  635.                 "value": null
  636.               }
  637.             ]
  638.           },
  639.           "unit": "none"
  640.         },
  641.         "overrides": [
  642.           {
  643.             "matcher": {
  644.               "id": "byName",
  645.               "options": "consumption_km"
  646.             },
  647.             "properties": [
  648.               {
  649.                 "id": "unit",
  650.                 "value": "Wh/km"
  651.               }
  652.             ]
  653.           },
  654.           {
  655.             "matcher": {
  656.               "id": "byName",
  657.               "options": "consumption_mi"
  658.             },
  659.             "properties": [
  660.               {
  661.                 "id": "unit",
  662.                 "value": "Wh/mi"
  663.               }
  664.             ]
  665.           }
  666.         ]
  667.       },
  668.       "gridPos": {
  669.         "h": 7,
  670.         "w": 3,
  671.         "x": 17,
  672.         "y": 6
  673.       },
  674.       "id": 8,
  675.       "maxDataPoints": 100,
  676.       "options": {
  677.         "colorMode": "value",
  678.         "fieldOptions": {
  679.           "calcs": [
  680.             "mean"
  681.           ]
  682.         },
  683.         "graphMode": "none",
  684.         "justifyMode": "auto",
  685.         "orientation": "horizontal",
  686.         "percentChangeColorMode": "standard",
  687.         "reduceOptions": {
  688.           "calcs": [
  689.             "mean"
  690.           ],
  691.           "fields": "",
  692.           "values": false
  693.         },
  694.         "showPercentChange": false,
  695.         "textMode": "value",
  696.         "wideLayout": true
  697.       },
  698.       "pluginVersion": "11.4.0",
  699.       "targets": [
  700.         {
  701.           "datasource": {
  702.             "type": "postgres",
  703.             "uid": "TeslaMate"
  704.           },
  705.           "format": "table",
  706.           "group": [],
  707.           "metricColumn": "none",
  708.           "rawQuery": true,
  709.           "rawSql": "WITH d1 AS (\n\tSELECT\n\t\tc.car_id,\n\t\tlag(end_[[preferred_range]]_range_km) OVER (ORDER BY start_date) - start_[[preferred_range]]_range_km AS range_loss,\n\t\tp.odometer - lag(p.odometer) OVER (ORDER BY start_date) AS distance\n\tFROM\n\t\tcharging_processes c\n\tLEFT JOIN positions p ON p.id = c.position_id \n\tWHERE\n\t  $__timeFilter(end_date)\n\t  and end_date IS NOT NULL AND\n\t  c.car_id = $car_id\n\tORDER BY\n\t\tstart_date\n),\nd2 AS (\nSELECT\n\tcar_id,\n\tsum(range_loss) AS range_loss,\n\tsum(distance) AS distance\nFROM\n\td1\nWHERE\n\tdistance > 0 AND range_loss >= 0\nGROUP BY\n\tcar_id\n)\nSELECT\nrange_loss * c.efficiency / distance * 1000 *\n  CASE WHEN '$length_unit' = 'km' THEN 1\n       WHEN '$length_unit' = 'mi' THEN 1.60934\n  END AS \"consumption_$length_unit\"\nFROM\n\td2\n\tLEFT JOIN cars c ON c.id = car_id",
  710.           "refId": "A",
  711.           "select": [
  712.             [
  713.               {
  714.                 "params": [
  715.                   "latitude"
  716.                 ],
  717.                 "type": "column"
  718.               }
  719.             ]
  720.           ],
  721.           "table": "addresses",
  722.           "timeColumn": "inserted_at",
  723.           "timeColumnType": "timestamp",
  724.           "where": [
  725.             {
  726.               "name": "$__timeFilter",
  727.               "params": [],
  728.               "type": "macro"
  729.             }
  730.           ]
  731.         }
  732.       ],
  733.       "title": "Consumption (gross) ",
  734.       "type": "stat"
  735.     },
  736.     {
  737.       "datasource": {
  738.         "type": "postgres",
  739.         "uid": "TeslaMate"
  740.       },
  741.       "fieldConfig": {
  742.         "defaults": {
  743.           "color": {
  744.             "mode": "thresholds"
  745.           },
  746.           "decimals": 0,
  747.           "mappings": [],
  748.           "thresholds": {
  749.             "mode": "absolute",
  750.             "steps": [
  751.               {
  752.                 "color": "light-green",
  753.                 "value": null
  754.               }
  755.             ]
  756.           },
  757.           "unit": "short"
  758.         },
  759.         "overrides": [
  760.           {
  761.             "matcher": {
  762.               "id": "byName",
  763.               "options": "efficiency_km"
  764.             },
  765.             "properties": [
  766.               {
  767.                 "id": "unit",
  768.                 "value": "Wh/km"
  769.               }
  770.             ]
  771.           },
  772.           {
  773.             "matcher": {
  774.               "id": "byName",
  775.               "options": "efficiency_mi"
  776.             },
  777.             "properties": [
  778.               {
  779.                 "id": "unit",
  780.                 "value": "Wh/mi"
  781.               }
  782.             ]
  783.           }
  784.         ]
  785.       },
  786.       "gridPos": {
  787.         "h": 7,
  788.         "w": 4,
  789.         "x": 20,
  790.         "y": 6
  791.       },
  792.       "id": 14,
  793.       "maxDataPoints": 100,
  794.       "options": {
  795.         "colorMode": "value",
  796.         "graphMode": "area",
  797.         "justifyMode": "auto",
  798.         "orientation": "horizontal",
  799.         "percentChangeColorMode": "standard",
  800.         "reduceOptions": {
  801.           "calcs": [
  802.             "lastNotNull"
  803.           ],
  804.           "fields": "",
  805.           "values": false
  806.         },
  807.         "showPercentChange": false,
  808.         "textMode": "auto",
  809.         "wideLayout": true
  810.       },
  811.       "pluginVersion": "11.4.0",
  812.       "targets": [
  813.         {
  814.           "datasource": {
  815.             "type": "postgres",
  816.             "uid": "TeslaMate"
  817.           },
  818.           "format": "table",
  819.           "group": [],
  820.           "metricColumn": "none",
  821.           "rawQuery": true,
  822.           "rawSql": "SELECT\n\tCASE WHEN '$length_unit' = 'km' THEN efficiency\n\t     WHEN '$length_unit' = 'mi' THEN efficiency * 1.60934\n\tEND * 1000 as \"efficiency_$length_unit\"\nFROM\n\tcars\nWHERE\n\tid = $car_id;",
  823.           "refId": "A",
  824.           "select": [
  825.             [
  826.               {
  827.                 "params": [
  828.                   "charge_energy_added"
  829.                 ],
  830.                 "type": "column"
  831.               }
  832.             ]
  833.           ],
  834.           "table": "charges",
  835.           "timeColumn": "date",
  836.           "timeColumnType": "timestamp",
  837.           "where": [
  838.             {
  839.               "name": "$__timeFilter",
  840.               "params": [],
  841.               "type": "macro"
  842.             }
  843.           ]
  844.         }
  845.       ],
  846.       "title": "Current $preferred_range efficiency",
  847.       "type": "stat"
  848.     },
  849.     {
  850.       "datasource": {
  851.         "type": "postgres",
  852.         "uid": "TeslaMate"
  853.       },
  854.       "fieldConfig": {
  855.         "defaults": {
  856.           "color": {
  857.             "mode": "continuous-greens"
  858.           },
  859.           "custom": {
  860.             "axisBorderShow": false,
  861.             "axisCenteredZero": false,
  862.             "axisColorMode": "text",
  863.             "axisLabel": "",
  864.             "axisPlacement": "auto",
  865.             "axisSoftMin": 0,
  866.             "fillOpacity": 90,
  867.             "gradientMode": "scheme",
  868.             "hideFrom": {
  869.               "legend": false,
  870.               "tooltip": false,
  871.               "viz": false
  872.             },
  873.             "lineWidth": 1,
  874.             "scaleDistribution": {
  875.               "type": "linear"
  876.             },
  877.             "thresholdsStyle": {
  878.               "mode": "off"
  879.             }
  880.           },
  881.           "mappings": [],
  882.           "noValue": "0",
  883.           "thresholds": {
  884.             "mode": "absolute",
  885.             "steps": [
  886.               {
  887.                 "color": "super-light-green",
  888.                 "value": null
  889.               }
  890.             ]
  891.           }
  892.         },
  893.         "overrides": [
  894.           {
  895.             "matcher": {
  896.               "id": "byName",
  897.               "options": "seconds_elapsed"
  898.             },
  899.             "properties": [
  900.               {
  901.                 "id": "displayName",
  902.                 "value": "Duration"
  903.               },
  904.               {
  905.                 "id": "unit",
  906.                 "value": "s"
  907.               },
  908.               {
  909.                 "id": "custom.axisPlacement",
  910.                 "value": "hidden"
  911.               },
  912.               {
  913.                 "id": "decimals",
  914.                 "value": 1
  915.               }
  916.             ]
  917.           }
  918.         ]
  919.       },
  920.       "gridPos": {
  921.         "h": 11,
  922.         "w": 24,
  923.         "x": 0,
  924.         "y": 13
  925.       },
  926.       "id": 16,
  927.       "options": {
  928.         "barRadius": 0.1,
  929.         "barWidth": 0.98,
  930.         "colorByField": "seconds_elapsed",
  931.         "fullHighlight": false,
  932.         "groupWidth": 0,
  933.         "legend": {
  934.           "calcs": [],
  935.           "displayMode": "list",
  936.           "placement": "bottom",
  937.           "showLegend": false
  938.         },
  939.         "orientation": "horizontal",
  940.         "showValue": "always",
  941.         "stacking": "none",
  942.         "tooltip": {
  943.           "mode": "single",
  944.           "sort": "none"
  945.         },
  946.         "xField": "speed",
  947.         "xTickLabelRotation": 0,
  948.         "xTickLabelSpacing": 0
  949.       },
  950.       "pluginVersion": "11.4.0",
  951.       "targets": [
  952.         {
  953.           "datasource": {
  954.             "type": "postgres",
  955.             "uid": "TeslaMate"
  956.           },
  957.           "editorMode": "code",
  958.           "format": "table",
  959.           "group": [],
  960.           "metricColumn": "none",
  961.           "rawQuery": true,
  962.           "rawSql": "SELECT \r\n    speed_section_$length_unit || CASE WHEN '$length_unit' = 'km' THEN ' km/h' WHEN '$length_unit' = 'mi' THEN ' mph' END AS speed,\r\n    SUM(seconds_elapsed) AS seconds_elapsed\r\nFROM (\r\n    SELECT\r\n        ROUND(convert_km(p.speed::numeric, '$length_unit') / 10,0) * 10 AS speed_section_$length_unit,\r\n        EXTRACT(EPOCH FROM (LEAD(p.\"date\") OVER (ORDER BY p.\"date\") - p.\"date\")) AS seconds_elapsed\r\n    FROM drives d\r\n    INNER JOIN positions p ON p.drive_id = d.id\r\n    WHERE\r\n        $__timeFilter(d.start_date)\r\n        AND d.car_id = $car_id \r\n        AND d.end_date IS NOT NULL\r\n        AND d.distance >= convert_km($min_distance::numeric,'$length_unit')\r\n        AND p.speed > 0.1\r\n) AS drivedata\r\nWHERE speed_section_$length_unit >= $min_speed_segment\r\nGROUP BY speed_section_$length_unit\r\nORDER BY speed_section_$length_unit DESC",
  963.           "refId": "A",
  964.           "select": [
  965.             [
  966.               {
  967.                 "params": [
  968.                   "value"
  969.                 ],
  970.                 "type": "column"
  971.               }
  972.             ]
  973.           ],
  974.           "sql": {
  975.             "columns": [
  976.               {
  977.                 "parameters": [],
  978.                 "type": "function"
  979.               }
  980.             ],
  981.             "groupBy": [
  982.               {
  983.                 "property": {
  984.                   "type": "string"
  985.                 },
  986.                 "type": "groupBy"
  987.               }
  988.             ],
  989.             "limit": 50
  990.           },
  991.           "timeColumn": "time",
  992.           "where": [
  993.             {
  994.               "name": "$__timeFilter",
  995.               "params": [],
  996.               "type": "macro"
  997.             }
  998.           ]
  999.         }
  1000.       ],
  1001.       "title": "Top Speeds",
  1002.       "type": "barchart"
  1003.     }
  1004.   ],
  1005.   "preload": false,
  1006.   "refresh": "",
  1007.   "schemaVersion": 40,
  1008.   "tags": [
  1009.     "TeslamateCustomDashboards"
  1010.   ],
  1011.   "templating": {
  1012.     "list": [
  1013.       {
  1014.         "current": {
  1015.           "text": "Model Y",
  1016.           "value": "1"
  1017.         },
  1018.         "datasource": {
  1019.           "type": "postgres",
  1020.           "uid": "TeslaMate"
  1021.         },
  1022.         "definition": "SELECT name AS __text, id AS __value FROM cars ORDER BY display_priority ASC, name ASC;",
  1023.         "includeAll": false,
  1024.         "label": "Car",
  1025.         "name": "car_id",
  1026.         "options": [],
  1027.         "query": "SELECT name AS __text, id AS __value FROM cars ORDER BY display_priority ASC, name ASC;",
  1028.         "refresh": 1,
  1029.         "regex": "",
  1030.         "type": "query"
  1031.       },
  1032.       {
  1033.         "current": {
  1034.           "text": "km",
  1035.           "value": "km"
  1036.         },
  1037.         "datasource": {
  1038.           "type": "postgres",
  1039.           "uid": "TeslaMate"
  1040.         },
  1041.         "definition": "select unit_of_length from settings limit 1;",
  1042.         "hide": 2,
  1043.         "includeAll": false,
  1044.         "name": "length_unit",
  1045.         "options": [],
  1046.         "query": "select unit_of_length from settings limit 1;",
  1047.         "refresh": 1,
  1048.         "regex": "",
  1049.         "type": "query"
  1050.       },
  1051.       {
  1052.         "current": {
  1053.           "text": "rated",
  1054.           "value": "rated"
  1055.         },
  1056.         "datasource": {
  1057.           "type": "postgres",
  1058.           "uid": "TeslaMate"
  1059.         },
  1060.         "definition": "select preferred_range from settings limit 1;",
  1061.         "hide": 2,
  1062.         "includeAll": false,
  1063.         "name": "preferred_range",
  1064.         "options": [],
  1065.         "query": "select preferred_range from settings limit 1;",
  1066.         "refresh": 1,
  1067.         "regex": "",
  1068.         "type": "query"
  1069.       },
  1070.       {
  1071.         "current": {
  1072.           "text": "30",
  1073.           "value": "30"
  1074.         },
  1075.         "includeAll": false,
  1076.         "label": "Min. speed segment",
  1077.         "name": "min_speed_segment",
  1078.         "options": [
  1079.           {
  1080.             "selected": false,
  1081.             "text": "10",
  1082.             "value": "10"
  1083.           },
  1084.           {
  1085.             "selected": false,
  1086.             "text": "20",
  1087.             "value": "20"
  1088.           },
  1089.           {
  1090.             "selected": true,
  1091.             "text": "30",
  1092.             "value": "30"
  1093.           },
  1094.           {
  1095.             "selected": false,
  1096.             "text": "40",
  1097.             "value": "40"
  1098.           },
  1099.           {
  1100.             "selected": false,
  1101.             "text": "50",
  1102.             "value": "50"
  1103.           }
  1104.         ],
  1105.         "query": "10,20,30,40,50",
  1106.         "type": "custom"
  1107.       },
  1108.       {
  1109.         "current": {
  1110.           "text": "25",
  1111.           "value": "25"
  1112.         },
  1113.         "includeAll": false,
  1114.         "label": "Min. driving distance",
  1115.         "name": "min_distance",
  1116.         "options": [
  1117.           {
  1118.             "selected": false,
  1119.             "text": "1",
  1120.             "value": "1"
  1121.           },
  1122.           {
  1123.             "selected": false,
  1124.             "text": "5",
  1125.             "value": "5"
  1126.           },
  1127.           {
  1128.             "selected": false,
  1129.             "text": "10",
  1130.             "value": "10"
  1131.           },
  1132.           {
  1133.             "selected": true,
  1134.             "text": "25",
  1135.             "value": "25"
  1136.           },
  1137.           {
  1138.             "selected": false,
  1139.             "text": "50",
  1140.             "value": "50"
  1141.           },
  1142.           {
  1143.             "selected": false,
  1144.             "text": "100",
  1145.             "value": "100"
  1146.           },
  1147.           {
  1148.             "selected": false,
  1149.             "text": "150",
  1150.             "value": "150"
  1151.           },
  1152.           {
  1153.             "selected": false,
  1154.             "text": "200",
  1155.             "value": "200"
  1156.           }
  1157.         ],
  1158.         "query": "1,5,10,25,50,100,150,200",
  1159.         "type": "custom"
  1160.       },
  1161.       {
  1162.         "current": {
  1163.           "text": "https://teslamate.kolaczek.cz",
  1164.           "value": "https://teslamate.kolaczek.cz"
  1165.         },
  1166.         "datasource": {
  1167.           "type": "postgres",
  1168.           "uid": "TeslaMate"
  1169.         },
  1170.         "definition": "select base_url from settings limit 1;",
  1171.         "hide": 2,
  1172.         "includeAll": false,
  1173.         "name": "base_url",
  1174.         "options": [],
  1175.         "query": "select base_url from settings limit 1;",
  1176.         "refresh": 1,
  1177.         "regex": "",
  1178.         "type": "query"
  1179.       },
  1180.       {
  1181.         "current": {
  1182.           "text": "Flat",
  1183.           "value": "Flat"
  1184.         },
  1185.         "includeAll": false,
  1186.         "label": "Terrain Type",
  1187.         "name": "terrain_type",
  1188.         "options": [
  1189.           {
  1190.             "selected": true,
  1191.             "text": "Flat",
  1192.             "value": "Flat"
  1193.           },
  1194.           {
  1195.             "selected": false,
  1196.             "text": "Uphill",
  1197.             "value": "Uphill"
  1198.           },
  1199.           {
  1200.             "selected": false,
  1201.             "text": "Downhill",
  1202.             "value": "Downhill"
  1203.           }
  1204.         ],
  1205.         "query": "Flat, Uphill, Downhill",
  1206.         "type": "custom"
  1207.       }
  1208.     ]
  1209.   },
  1210.   "time": {
  1211.     "from": "now-30d",
  1212.     "to": "now"
  1213.   },
  1214.   "timepicker": {},
  1215.   "timezone": "",
  1216.   "title": "Speed Rates",
  1217.   "uid": "jchmfu4SiQgWz",
  1218.   "version": 3,
  1219.   "weekStart": ""
  1220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement