Skip to content

Instantly share code, notes, and snippets.

@joepavitt
Last active December 10, 2023 16:11
Show Gist options
  • Save joepavitt/ec39fe4e3187a7c41153488d4e0abbf3 to your computer and use it in GitHub Desktop.
Save joepavitt/ec39fe4e3187a7c41153488d4e0abbf3 to your computer and use it in GitHub Desktop.
Key Mapping in Dashboard 2.0

An example of how to use key-mapping with Dashboard 2.0's ui-chart node. It provides the option to parse data such as:

[
    {
        "time": "2023-11-14T19:00Z",
        "screenTemperature": 10.03,
        "maxScreenAirTemp": 10.4,
        "minScreenAirTemp": 9.99,
        "screenDewPointTemperature": 7.56,
        "feelsLikeTemperature": 8.09,
        "windSpeed10m": 3.86,
        "windDirectionFrom10m": 263,
        "windGustSpeed10m": 7.72,
        "max10mWindGust": 10.13,
        "visibility": 16258,
        "screenRelativeHumidity": 84.48,
        "mslp": 100360,
        "uvIndex": 0,
        "significantWeatherCode": 0,
        "precipitationRate": 0,
        "totalPrecipAmount": 0,
        "totalSnowAmount": 0,
        "probOfPrecipitation": 0
    }, ...
]

Without the need for data manipulation before rendering, as we can use the built-in "key" properties for the x/y axes.

For example in the first chart we render, we set:

Which will render each point of the array using (time, feelsLikeTemperature) as coordinates.

[
{
"id": "fce77c1a380e8201",
"type": "inject",
"z": "e80e76260ef9846b",
"name": "Sample Met Office Data",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "[{\"time\":\"2023-11-14T19:00Z\",\"screenTemperature\":10.03,\"maxScreenAirTemp\":10.4,\"minScreenAirTemp\":9.99,\"screenDewPointTemperature\":7.56,\"feelsLikeTemperature\":8.09,\"windSpeed10m\":3.86,\"windDirectionFrom10m\":263,\"windGustSpeed10m\":7.72,\"max10mWindGust\":10.13,\"visibility\":16258,\"screenRelativeHumidity\":84.48,\"mslp\":100360,\"uvIndex\":0,\"significantWeatherCode\":0,\"precipitationRate\":0,\"totalPrecipAmount\":0,\"totalSnowAmount\":0,\"probOfPrecipitation\":0},{\"time\":\"2023-11-15T19:00Z\",\"screenTemperature\":12.13,\"maxScreenAirTemp\":13.2,\"minScreenAirTemp\":9.9,\"screenDewPointTemperature\":7.56,\"feelsLikeTemperature\":10.1,\"windSpeed10m\":4.53,\"windDirectionFrom10m\":254,\"windGustSpeed10m\":8.4,\"max10mWindGust\":11.1,\"visibility\":16365,\"screenRelativeHumidity\":75.36,\"mslp\":100372,\"uvIndex\":0.1,\"significantWeatherCode\":0,\"precipitationRate\":0,\"totalPrecipAmount\":0,\"totalSnowAmount\":0,\"probOfPrecipitation\":0}]",
"payloadType": "json",
"x": 160,
"y": 60,
"wires": [
[
"c6624545f4820893",
"eb1eb4ae3f46518e"
]
]
},
{
"id": "c6624545f4820893",
"type": "ui-chart",
"z": "e80e76260ef9846b",
"group": "e23512b61ee4b0a2",
"name": "",
"label": "Feel Like Temperature",
"order": 9007199254740991,
"chartType": "line",
"category": "feels-like",
"categoryType": "str",
"xAxisProperty": "time",
"xAxisPropertyType": "msg",
"xAxisType": "time",
"yAxisProperty": "feelsLikeTemperature",
"ymin": "",
"ymax": "",
"showLegend": false,
"removeOlder": 1,
"removeOlderUnit": "3600",
"removeOlderPoints": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"width": 6,
"height": 8,
"className": "",
"x": 480,
"y": 60,
"wires": [
[]
]
},
{
"id": "eb1eb4ae3f46518e",
"type": "ui-chart",
"z": "e80e76260ef9846b",
"group": "e23512b61ee4b0a2",
"name": "",
"label": "Multiple Lines Example",
"order": 9007199254740991,
"chartType": "line",
"category": "[\"screenTemperature\", \"feelsLikeTemperature\"]",
"categoryType": "json",
"xAxisProperty": "time",
"xAxisPropertyType": "msg",
"xAxisType": "time",
"yAxisProperty": "",
"ymin": "",
"ymax": "",
"showLegend": true,
"removeOlder": 1,
"removeOlderUnit": "3600",
"removeOlderPoints": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"width": 6,
"height": 8,
"className": "",
"x": 490,
"y": 100,
"wires": [
[]
]
},
{
"id": "8864477d6b15168d",
"type": "inject",
"z": "e80e76260ef9846b",
"name": "Clear",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "[]",
"payloadType": "json",
"x": 210,
"y": 100,
"wires": [
[
"c6624545f4820893",
"eb1eb4ae3f46518e"
]
]
},
{
"id": "e23512b61ee4b0a2",
"type": "ui-group",
"name": "Chart Examples",
"page": "22b5519aa675ad88",
"width": "6",
"height": "1",
"order": -1,
"showTitle": true,
"className": ""
},
{
"id": "22b5519aa675ad88",
"type": "ui-page",
"name": "Discourse Forums",
"ui": "c2e1aa56f50f03bd",
"path": "/discourse",
"layout": "grid",
"theme": "129e99574def90a3",
"order": -1,
"className": ""
},
{
"id": "c2e1aa56f50f03bd",
"type": "ui-base",
"name": "UI Name",
"path": "/dashboard"
},
{
"id": "129e99574def90a3",
"type": "ui-theme",
"name": "Another Theme",
"colors": {
"surface": "#ffffff",
"primary": "#0094ce",
"bgPage": "#eeeeee",
"groupBg": "#ffffff",
"groupOutline": "#cccccc"
}
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment