I think it's pretty cool to post a annotations to grafana with something. To make some one life easy ear. I'm sharing it with you.
Read info node!
[
{
"id": "0f3990356594599b",
"type": "tab",
"label": "Graf annotat",
"disabled": false,
"info": "",
"env": []
},
{
"id": "b481d84ae887617a",
"type": "function",
"z": "0f3990356594599b",
"name": "send annotation to grafana",
"func": "tn = new Date().getTime();\n\ntags=[\"from node-red\"];\nif( msg.tags != undefined ){\n for( var t=0,tc=msg.tags.length; t<tc; t++)\n tags.push( msg.tags[t] );\n}\n\nmsgTs = {\n \"payload\": \n //JSON.stringify(\n {\n\"dashboardId\": msg.dashboardId,\n\"panelId\": msg.panelId,\n\"time\": tn,\n\"inRegion\": true,\n\"timeEnd\": tn,\n\"text\": msg.txt,\n\"tags\": tags\n }\n //)\n\n};\n\nif( msg[\"patch\"] ){\n node.status({text:\"add patch:\"+JSON.stringify(msg[\"patch\"])});\n pa = msg[\"patch\"];\n for (const [key, value] of Object.entries(pa)) {\n msgTs.payload[key] = value;\n }\n}else{\n //node.status({text:\"no patch\"});\n \n\n}\n\n\nnode.send(msgTs);\n//node.status({ text:JSON.stringify( msg ) });",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 340,
"y": 480,
"wires": [
[
"582b616768db1a4d",
"bdb3c1a8c406f504"
]
]
},
{
"id": "bdb3c1a8c406f504",
"type": "debug",
"z": "0f3990356594599b",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 750,
"y": 180,
"wires": []
},
{
"id": "6f7847275c5e6b76",
"type": "http request",
"z": "0f3990356594599b",
"name": "",
"method": "POST",
"ret": "obj",
"paytoqs": "body",
"url": "http://admin:admin@localhost:3000/api/annotations",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": true,
"x": 790,
"y": 520,
"wires": [
[
"bdb3c1a8c406f504"
]
]
},
{
"id": "582b616768db1a4d",
"type": "change",
"z": "0f3990356594599b",
"name": "Set Headers",
"rules": [
{
"t": "set",
"p": "headers",
"pt": "msg",
"to": "{}",
"tot": "json"
},
{
"t": "set",
"p": "headers.content-type",
"pt": "msg",
"to": "application/json",
"tot": "str"
},
{
"t": "set",
"p": "headers.accept",
"pt": "msg",
"to": "application/json",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 670,
"y": 420,
"wires": [
[
"6f7847275c5e6b76"
]
]
},
{
"id": "9a02d7d30eafbbaa",
"type": "link in",
"z": "0f3990356594599b",
"name": "send grafana annotation",
"links": [
"f4a11268fee11b69"
],
"x": 175,
"y": 380,
"wires": [
[
"b481d84ae887617a",
"bdb3c1a8c406f504"
]
]
},
{
"id": "30fad9aefc47480e",
"type": "comment",
"z": "0f3990356594599b",
"name": "Use info",
"info": "Examples if it will get:\n\n> msg = {\n> \"dashboardId\": 7,\n> \"panelId\": 3,\n> \"txt\": \"abcd\",\n> \"tags\": [ \"huawaii plug / unplug\" ]\n> };\n> node.send(msg);\n\nregular annotation will be added.\n\n\n \n> msg = {\n> \"dashboardId\": 7,\n> \"panelId\": 3,\n> \"patch\":{\n> \"time\": global.get(\"hu_plug_t\"),\n> \"timeEnd\": new Date().getTime()\n> },\n> \"txt\": \"huawaii was charging\",\n> \"tags\": [ \"huawaii charging\" ]\n> };\n> node.send(msg);\n\nannotation with overrite time and timeEnd will be post'ed\n\n\n\n\n",
"x": 220,
"y": 300,
"wires": []
}
]