Attached is a flow for a PV widget that shows the remaining PV forecast for the day, as well as the yield today/yesterday.
[
{
"id": "faf92e80713cf54c",
"type": "vrm-api",
"z": "9170653ac436c1aa",
"vrm": "9ff0559f26b37445",
"name": "",
"api_type": "installations",
"idUser": "",
"users": "",
"idSite": "11111",
"installations": "stats",
"attribute": "solar_yield_forecast",
"stats_interval": "days",
"show_instance": false,
"stats_start": "0",
"stats_end": "eod",
"use_utc": false,
"widgets": "",
"instance": "",
"vrm_id": "",
"country": "",
"b_max": "",
"tb_max": "",
"fb_max": "",
"tg_max": "",
"fg_max": "",
"b_cycle_cost": "",
"buy_price_formula": "",
"sell_price_formula": "",
"feed_in_possible": "",
"feed_in_control_on": "",
"store_in_global_context": false,
"verbose": false,
"x": 340,
"y": 440,
"wires": [
[
"c6e2afcf3a79a44a"
]
]
},
{
"id": "6afa84914ed00ffc",
"type": "debug",
"z": "9170653ac436c1aa",
"name": "PV forecast",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 670,
"y": 440,
"wires": []
},
{
"id": "190dbb9176befb0c",
"type": "inject",
"z": "9170653ac436c1aa",
"name": "Run function",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "*/1 5-19 * * *",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 160,
"y": 380,
"wires": [
[
"faf92e80713cf54c",
"baca024c9e4e2456"
]
]
},
{
"id": "c6e2afcf3a79a44a",
"type": "function",
"z": "9170653ac436c1aa",
"name": "Remaining PV",
"func": "var pv = msg.payload.totals.solar_yield_forecast/1000;\nvar result = pv.toFixed(1);\nmsg.payload = result;\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 460,
"y": 380,
"wires": [
[
"6afa84914ed00ffc",
"e3faabc1ef0bd2e5",
"595b4d89c4509364"
]
]
},
{
"id": "e3faabc1ef0bd2e5",
"type": "ui-gauge",
"z": "9170653ac436c1aa",
"name": "PV remaining",
"group": "544125946ced033e",
"order": 3,
"width": "4",
"height": "3",
"gtype": "gauge-half",
"gstyle": "rounded",
"title": "PV remaining",
"units": "kWh",
"icon": "",
"prefix": "",
"suffix": "",
"segments": [
{
"from": "0",
"color": "#ff2600"
},
{
"from": "5",
"color": "#ffc800"
},
{
"from": "10",
"color": "#0061ff"
},
{
"from": "15",
"color": "#00f900"
}
],
"min": 0,
"max": "40",
"sizeThickness": 16,
"sizeGap": 4,
"sizeKeyThickness": 8,
"styleRounded": true,
"styleGlow": false,
"className": "",
"x": 670,
"y": 480,
"wires": []
},
{
"id": "bed817a14be0bcd0",
"type": "ui-text",
"z": "9170653ac436c1aa",
"group": "544125946ced033e",
"order": 4,
"width": 0,
"height": 0,
"name": "Yield Today",
"label": "Yield today (kWh)",
"format": "{{msg.payload}}",
"layout": "row-spread",
"style": false,
"font": "",
"fontSize": 16,
"color": "#717171",
"className": "",
"x": 670,
"y": 560,
"wires": []
},
{
"id": "baca024c9e4e2456",
"type": "vrm-api",
"z": "9170653ac436c1aa",
"vrm": "9ff0559f26b37445",
"name": "",
"api_type": "installations",
"idUser": "",
"users": "",
"idSite": "11111",
"installations": "stats",
"attribute": "solar_yield",
"stats_interval": "hours",
"show_instance": false,
"stats_start": "bod",
"stats_end": "0",
"use_utc": false,
"widgets": "",
"instance": "",
"vrm_id": "",
"country": "",
"b_max": "",
"tb_max": "",
"fb_max": "",
"tg_max": "",
"fg_max": "",
"b_cycle_cost": "",
"buy_price_formula": "",
"sell_price_formula": "",
"feed_in_possible": "",
"feed_in_control_on": "",
"store_in_global_context": false,
"verbose": false,
"x": 290,
"y": 520,
"wires": [
[
"2fe639195e7ac221"
]
]
},
{
"id": "2fe639195e7ac221",
"type": "function",
"z": "9170653ac436c1aa",
"name": "Today PV",
"func": "var pv = msg.payload.totals.solar_yield/1000;\nvar result = pv.toFixed(1);\nflow.set(\"yield\", result); \nmsg.payload = result;\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 480,
"y": 580,
"wires": [
[
"bed817a14be0bcd0",
"6afa84914ed00ffc"
]
]
},
{
"id": "cc6d4f54c00bb7af",
"type": "vrm-api",
"z": "9170653ac436c1aa",
"vrm": "9ff0559f26b37445",
"name": "",
"api_type": "installations",
"idUser": "",
"users": "",
"idSite": "11111",
"installations": "stats",
"attribute": "solar_yield",
"stats_interval": "hours",
"show_instance": false,
"stats_start": "boy",
"stats_end": "eoy",
"use_utc": false,
"widgets": "",
"instance": "",
"vrm_id": "",
"country": "",
"b_max": "",
"tb_max": "",
"fb_max": "",
"tg_max": "",
"fg_max": "",
"b_cycle_cost": "",
"buy_price_formula": "",
"sell_price_formula": "",
"feed_in_possible": "",
"feed_in_control_on": "",
"store_in_global_context": false,
"verbose": false,
"x": 250,
"y": 620,
"wires": [
[
"1ed847d08ef6ef6b"
]
]
},
{
"id": "1ed847d08ef6ef6b",
"type": "function",
"z": "9170653ac436c1aa",
"name": "Yesterday PV",
"func": "var pv = msg.payload.totals.solar_yield/1000;\nvar result = pv.toFixed(1);\nmsg.payload = result;\nreturn msg;",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 490,
"y": 640,
"wires": [
[
"8d52a9a4633fd603"
]
]
},
{
"id": "8d52a9a4633fd603",
"type": "ui-text",
"z": "9170653ac436c1aa",
"group": "544125946ced033e",
"order": 5,
"width": 0,
"height": 0,
"name": "Yield yesterday",
"label": "Yield yesterday (kWh)",
"format": "{{msg.payload}}",
"layout": "row-spread",
"style": false,
"font": "",
"fontSize": 16,
"color": "#717171",
"className": "",
"x": 680,
"y": 640,
"wires": []
},
{
"id": "b76db982e6a19e2b",
"type": "inject",
"z": "9170653ac436c1aa",
"name": "Run function",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "0 5-19 * * *",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 120,
"y": 560,
"wires": [
[
"cc6d4f54c00bb7af"
]
]
},
{
"id": "9ff0559f26b37445",
"type": "config-vrm-api",
"name": "yourVRMconfig"
},
{
"id": "544125946ced033e",
"type": "ui-group",
"name": "PV",
"page": "1f3f6aba836b135f",
"width": "5",
"height": "1",
"order": 2,
"showTitle": true,
"className": "",
"visible": "true",
"disabled": "false"
},
{
"id": "1f3f6aba836b135f",
"type": "ui-page",
"name": "Home",
"ui": "20a0d5584e491036",
"path": "/page1",
"icon": "Home",
"layout": "grid",
"theme": "199c1371468ee29c",
"order": 1,
"className": "",
"visible": true,
"disabled": false
},
{
"id": "20a0d5584e491036",
"type": "ui-base",
"name": "Home",
"path": "/dashboard",
"includeClientData": true,
"acceptsClientConfig": [
"ui-notification",
"ui-control"
],
"showPathInSidebar": false
},
{
"id": "199c1371468ee29c",
"type": "ui-theme",
"name": "Default",
"colors": {
"surface": "#ffffff",
"primary": "#0094ce",
"bgPage": "#eeeeee",
"groupBg": "#ffffff",
"groupOutline": "#cccccc"
},
"sizes": {
"pagePadding": "12px",
"groupGap": "12px",
"groupBorderRadius": "4px",
"widgetGap": "12px"
}
}
]
Configure the VRM API nodes to point to your site and to use your token.
Customise the gauge thresholds to be appropriate for your site.
Should look like this when working: