{
    "annotations": {
        "list": [
            {
                "$$hashKey": "object:15",
                "builtIn": 1,
                "datasource": "-- Grafana --",
                "enable": true,
                "hide": true,
                "iconColor": "rgba(0, 211, 255, 1)",
                "name": "Annotations & Alerts",
                "target": {
                    "limit": 100,
                    "matchAny": false,
                    "tags": [],
                    "type": "dashboard"
                },
                "type": "dashboard"
            }
        ]
    },
    "editable": true,
    "fiscalYearStartMonth": 0,
    "graphTooltip": 0,
    "iteration": 1643273221821,
    "links": [
        {
            "icon": "dashboard",
            "tags": [],
            "title": "TeslaMate",
            "tooltip": "",
            "type": "link",
            "url": "[[base_url:raw]]"
        },
        {
            "asDropdown": true,
            "icon": "external link",
            "tags": ["tesla"],
            "title": "Dashboards",
            "type": "dashboards"
        }
    ],
    "liveNow": false,
    "panels": [
        {
            "datasource": "TeslaMate",
            "gridPos": {
                "h": 1,
                "w": 24,
                "x": 0,
                "y": 0
            },
            "id": 4,
            "panels": [],
            "repeat": "car_id",
            "title": "$car_id",
            "type": "row"
        },
        {
            "datasource": "TeslaMate",
            "fieldConfig": {
                "defaults": {
                    "mappings": [],
                    "thresholds": {
                        "mode": "absolute",
                        "steps": [
                            {
                                "color": "#c7d0d9",
                                "value": null
                            }
                        ]
                    }
                },
                "overrides": []
            },
            "gridPos": {
                "h": 3,
                "w": 8,
                "x": 0,
                "y": 1
            },
            "id": 8,
            "options": {
                "colorMode": "value",
                "graphMode": "none",
                "justifyMode": "auto",
                "orientation": "auto",
                "reduceOptions": {
                    "calcs": ["count"],
                    "fields": "",
                    "values": true
                },
                "textMode": "value"
            },
            "pluginVersion": "8.3.4",
            "targets": [
                {
                    "format": "table",
                    "group": [],
                    "metricColumn": "none",
                    "rawQuery": true,
                    "rawSql": "SELECT count(*)\nFROM updates\nWHERE $__timeFilter(start_date) AND car_id = $car_id",
                    "refId": "A",
                    "select": [
                        [
                            {
                                "params": ["start_km"],
                                "type": "column"
                            }
                        ]
                    ],
                    "table": "drives",
                    "timeColumn": "start_date",
                    "timeColumnType": "timestamp",
                    "where": [
                        {
                            "name": "$__timeFilter",
                            "params": [],
                            "type": "macro"
                        }
                    ]
                }
            ],
            "title": "Updates",
            "type": "stat"
        },
        {
            "datasource": "TeslaMate",
            "fieldConfig": {
                "defaults": {
                    "decimals": 1,
                    "mappings": [],
                    "thresholds": {
                        "mode": "absolute",
                        "steps": [
                            {
                                "color": "#c7d0d9",
                                "value": null
                            }
                        ]
                    },
                    "unit": "dtdurations"
                },
                "overrides": []
            },
            "gridPos": {
                "h": 3,
                "w": 16,
                "x": 8,
                "y": 1
            },
            "id": 6,
            "options": {
                "colorMode": "value",
                "graphMode": "none",
                "justifyMode": "auto",
                "orientation": "auto",
                "reduceOptions": {
                    "calcs": ["mean"],
                    "fields": "",
                    "values": true
                },
                "textMode": "value"
            },
            "pluginVersion": "8.3.4",
            "targets": [
                {
                    "format": "table",
                    "group": [],
                    "metricColumn": "none",
                    "rawQuery": true,
                    "rawSql": "SELECT percentile_disc(0.5) WITHIN GROUP (ORDER BY since_last_update) FROM (\n\tSELECT extract(EPOCH FROM start_date - lag(start_date) OVER (ORDER BY start_date)) AS since_last_update\n\tFROM updates\n\tWHERE $__timeFilter(start_date) AND car_id = $car_id\n) d;",
                    "refId": "A",
                    "select": [
                        [
                            {
                                "params": ["start_km"],
                                "type": "column"
                            }
                        ]
                    ],
                    "table": "drives",
                    "timeColumn": "start_date",
                    "timeColumnType": "timestamp",
                    "where": [
                        {
                            "name": "$__timeFilter",
                            "params": [],
                            "type": "macro"
                        }
                    ]
                }
            ],
            "title": "Median time between updates",
            "type": "stat"
        },
        {
            "fieldConfig": {
                "defaults": {
                    "custom": {
                        "align": "auto",
                        "displayMode": "auto",
                        "filterable": false
                    },
                    "mappings": [],
                    "thresholds": {
                        "mode": "absolute",
                        "steps": [
                            {
                                "color": "green",
                                "value": null
                            },
                            {
                                "color": "red",
                                "value": 80
                            }
                        ]
                    }
                },
                "overrides": [
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "time"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 200
                            },
                            {
                                "id": "displayName",
                                "value": "Date"
                            },
                            {
                                "id": "unit",
                                "value": "dateTimeAsLocal"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "update_duration"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 100
                            },
                            {
                                "id": "displayName",
                                "value": "Duration"
                            },
                            {
                                "id": "unit",
                                "value": "dtdurations"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "since_last_update"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 160
                            },
                            {
                                "id": "displayName",
                                "value": "Since Previous Update"
                            },
                            {
                                "id": "unit",
                                "value": "dtdurations"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "version"
                        },
                        "properties": [
                            {
                                "id": "displayName",
                                "value": "Installed Version"
                            },
                            {
                                "id": "custom.align",
                                "value": "right"
                            },
                            {
                                "id": "decimals",
                                "value": 2
                            },
                            {
                                "id": "links",
                                "value": [
                                    {
                                        "targetBlank": true,
                                        "title": "${__data.fields[version]} release notes",
                                        "url": "https://www.notateslaapp.com/software-updates/version/${__data.fields[version]}/release-notes"
                                    }
                                ]
                            },
                            {
                                "id": "unit",
                                "value": "string"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "chg_ct"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 100
                            },
                            {
                                "id": "displayName",
                                "value": "# of Charges"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "avg_ideal_range_km"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 150
                            },
                            {
                                "id": "decimals",
                                "value": 1
                            },
                            {
                                "id": "unit",
                                "value": "lengthkm"
                            },
                            {
                                "id": "displayName",
                                "value": "Avg ideal range"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "avg_rated_range_km"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 150
                            },
                            {
                                "id": "decimals",
                                "value": 1
                            },
                            {
                                "id": "unit",
                                "value": "lengthkm"
                            },
                            {
                                "id": "displayName",
                                "value": "Avg rated range"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "avg_ideal_range_mi"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 150
                            },
                            {
                                "id": "decimals",
                                "value": 1
                            },
                            {
                                "id": "unit",
                                "value": "lengthmi"
                            },
                            {
                                "id": "displayName",
                                "value": "Avg ideal range"
                            }
                        ]
                    },
                    {
                        "matcher": {
                            "id": "byName",
                            "options": "avg_rated_range_mi"
                        },
                        "properties": [
                            {
                                "id": "custom.width",
                                "value": 150
                            },
                            {
                                "id": "decimals",
                                "value": 1
                            },
                            {
                                "id": "unit",
                                "value": "lengthmi"
                            },
                            {
                                "id": "displayName",
                                "value": "Avg rated range"
                            }
                        ]
                    }
                ]
            },
            "gridPos": {
                "h": 28,
                "w": 24,
                "x": 0,
                "y": 4
            },
            "id": 2,
            "links": [],
            "options": {
                "footer": {
                    "fields": "",
                    "reducer": ["sum"],
                    "show": false
                },
                "showHeader": true,
                "sortBy": [
                    {
                        "desc": true,
                        "displayName": "Date"
                    }
                ]
            },
            "pluginVersion": "8.3.4",
            "scroll": true,
            "showHeader": true,
            "sort": {
                "col": 0,
                "desc": true
            },
            "styles": [
                {
                    "$$hashKey": "object:68",
                    "alias": "Date",
                    "align": "auto",
                    "dateFormat": "YYYY-MM-DD HH:mm:ss",
                    "pattern": "start_date",
                    "type": "date"
                },
                {
                    "$$hashKey": "object:69",
                    "alias": "End Date",
                    "align": "auto",
                    "colors": [
                        "rgba(245, 54, 54, 0.9)",
                        "rgba(237, 129, 40, 0.89)",
                        "rgba(50, 172, 45, 0.97)"
                    ],
                    "dateFormat": "YYYY-MM-DD HH:mm:ss",
                    "decimals": 2,
                    "mappingType": 1,
                    "pattern": "end_date",
                    "thresholds": [],
                    "type": "hidden",
                    "unit": "short"
                },
                {
                    "$$hashKey": "object:70",
                    "alias": "Installed Version",
                    "align": "auto",
                    "colors": [
                        "rgba(245, 54, 54, 0.9)",
                        "rgba(237, 129, 40, 0.89)",
                        "rgba(50, 172, 45, 0.97)"
                    ],
                    "dateFormat": "YYYY-MM-DD HH:mm:ss",
                    "decimals": 2,
                    "link": true,
                    "linkTargetBlank": true,
                    "linkTooltip": "${__cell} release info",
                    "linkUrl": "https://www.notateslaapp.com/software-updates/version/${__cell}/release-notes",
                    "mappingType": 1,
                    "pattern": "version",
                    "thresholds": [],
                    "type": "string",
                    "unit": "short"
                },
                {
                    "$$hashKey": "object:202",
                    "alias": "Duration",
                    "align": "auto",
                    "colors": [
                        "rgba(245, 54, 54, 0.9)",
                        "rgba(237, 129, 40, 0.89)",
                        "rgba(50, 172, 45, 0.97)"
                    ],
                    "dateFormat": "YYYY-MM-DD HH:mm:ss",
                    "decimals": 0,
                    "mappingType": 1,
                    "pattern": "update_duration",
                    "thresholds": [],
                    "type": "number",
                    "unit": "dtdurations"
                },
                {
                    "$$hashKey": "object:392",
                    "alias": "Since Previous Update",
                    "align": "auto",
                    "colors": [
                        "rgba(245, 54, 54, 0.9)",
                        "rgba(237, 129, 40, 0.89)",
                        "rgba(50, 172, 45, 0.97)"
                    ],
                    "dateFormat": "YYYY-MM-DD HH:mm:ss",
                    "decimals": 0,
                    "mappingType": 1,
                    "pattern": "since_last_update",
                    "thresholds": [],
                    "type": "number",
                    "unit": "dtdurations"
                },
                {
                    "$$hashKey": "object:71",
                    "alias": "# of Charges",
                    "align": "auto",
                    "colors": [
                        "rgba(245, 54, 54, 0.9)",
                        "rgba(237, 129, 40, 0.89)",
                        "rgba(50, 172, 45, 0.97)"
                    ],
                    "decimals": 0,
                    "pattern": "chg_ct",
                    "thresholds": [],
                    "type": "number",
                    "unit": "short"
                }
            ],
            "targets": [
                {
                    "datasource": "TeslaMate",
                    "format": "table",
                    "group": [],
                    "metricColumn": "none",
                    "rawQuery": true,
                    "rawSql": "with u as (\r\n  select *, coalesce(lag(start_date) over(order by start_date desc), now()) as next_start_date \r\n  from updates\r\n  where car_id = $car_id and $__timeFilter(start_date)\r\n),\r\nrng as (\r\n  SELECT\r\n\t  to_timestamp(floor(extract(epoch from date)/21600)*21600) AS date,\r\n\t  (sum([[preferred_range]]_battery_range_km) / nullif(sum(coalesce(usable_battery_level,battery_level)),0) * 100 ) AS \"battery_rng\"\r\n  FROM (\r\n    select battery_level, usable_battery_level, date, rated_battery_range_km, ideal_battery_range_km\r\n    from positions\r\n    where car_id = $car_id and $__timeFilter(date) and ideal_battery_range_km is not null\r\n    union all\r\n    select battery_level, coalesce(usable_battery_level,battery_level) as usable_battery_level, date, rated_battery_range_km, ideal_battery_range_km\r\n    from charges c\r\n    join charging_processes p ON p.id = c.charging_process_id \r\n    where $__timeFilter(date) and p.car_id = $car_id\r\n  ) as data\r\n  GROUP BY 1\r\n)\r\n\r\nselect\t\r\n  u.start_date as time,\r\n\textract(EPOCH FROM u.end_date - u.start_date) AS update_duration,\r\n\textract(EPOCH FROM u.start_date - lag(u.start_date) OVER (ORDER BY u.start_date)) AS since_last_update,\r\n\tsplit_part(u.version, ' ', 1) as version,\r\n\tcount(distinct cp.id) as chg_ct,\r\n\tconvert_km(avg(r.battery_rng), '$length_unit')::numeric(6,2) AS avg_[[preferred_range]]_range_[[length_unit]]\r\nfrom u u\r\nleft join charging_processes cp\r\n\tON u.car_id = cp.car_id\r\n \tand cp.start_date between u.start_date and u.next_start_date\r\nleft join rng r\r\n\tON r.date between u.start_date and u.next_start_date\r\ngroup by u.car_id,\r\n\tu.start_date,\r\n\tu.end_date,\r\n\tnext_start_date,\r\n\tsplit_part(u.version, ' ', 1)",
                    "refId": "A",
                    "select": [
                        [
                            {
                                "params": ["efficiency"],
                                "type": "column"
                            }
                        ]
                    ],
                    "table": "cars",
                    "timeColumn": "inserted_at",
                    "timeColumnType": "timestamp",
                    "where": [
                        {
                            "name": "$__timeFilter",
                            "params": [],
                            "type": "macro"
                        }
                    ]
                }
            ],
            "datasource": "TeslaMate",
            "title": "Updates",
            "type": "table"
        }
    ],
    "schemaVersion": 36,
    "style": "dark",
    "tags": ["tesla"],
    "templating": {
        "list": [
            {
                "current": {
                    "selected": false,
                    "text": "All",
                    "value": "$__all"
                },
                "datasource": "TeslaMate",
                "definition": "SELECT name AS __text, id AS __value FROM cars ORDER BY display_priority ASC, name ASC;",
                "hide": 2,
                "includeAll": true,
                "label": "Car",
                "multi": false,
                "name": "car_id",
                "options": [],
                "query": "SELECT name AS __text, id AS __value FROM cars ORDER BY display_priority ASC, name ASC;",
                "refresh": 1,
                "regex": "",
                "skipUrlSync": false,
                "sort": 0,
                "tagValuesQuery": "",
                "tagsQuery": "",
                "type": "query",
                "useTags": false
            },
            {
                "current": {
                    "selected": false,
                    "text": "ideal",
                    "value": "ideal"
                },
                "datasource": "TeslaMate",
                "definition": "select preferred_range from settings limit 1;",
                "hide": 2,
                "includeAll": false,
                "multi": false,
                "name": "preferred_range",
                "options": [],
                "query": "select preferred_range from settings limit 1;",
                "refresh": 1,
                "regex": "",
                "skipUrlSync": false,
                "sort": 0,
                "tagValuesQuery": "",
                "tagsQuery": "",
                "type": "query",
                "useTags": false
            },
            {
                "current": {
                    "selected": false,
                    "text": "km",
                    "value": "km"
                },
                "datasource": "TeslaMate",
                "definition": "select unit_of_length from settings limit 1;",
                "hide": 2,
                "includeAll": false,
                "multi": false,
                "name": "length_unit",
                "options": [],
                "query": "select unit_of_length from settings limit 1;",
                "refresh": 1,
                "regex": "",
                "skipUrlSync": false,
                "sort": 0,
                "tagValuesQuery": "",
                "tagsQuery": "",
                "type": "query",
                "useTags": false
            },
            {
                "current": {
                    "selected": false,
                    "text": "http://localhost:4000",
                    "value": "http://localhost:4000"
                },
                "datasource": "TeslaMate",
                "definition": "select base_url from settings limit 1;",
                "hide": 2,
                "includeAll": false,
                "label": "",
                "multi": false,
                "name": "base_url",
                "options": [],
                "query": "select base_url from settings limit 1;",
                "refresh": 1,
                "regex": "",
                "skipUrlSync": false,
                "sort": 0,
                "tagValuesQuery": "",
                "tagsQuery": "",
                "type": "query",
                "useTags": false
            }
        ]
    },
    "time": {
        "from": "now-10y",
        "to": "now"
    },
    "timepicker": {
        "refresh_intervals": [
            "10s",
            "30s",
            "1m",
            "5m",
            "15m",
            "30m",
            "1h",
            "2h",
            "1d"
        ],
        "time_options": [
            "5m",
            "15m",
            "1h",
            "6h",
            "12h",
            "24h",
            "2d",
            "7d",
            "30d"
        ]
    },
    "timezone": "",
    "title": "Updates",
    "uid": "IiC07mgWz",
    "version": 1,
    "weekStart": ""
}
