Skip to content

Instantly share code, notes, and snippets.

@bisand
Created September 16, 2019 07:14
Show Gist options
  • Save bisand/dbde2c730af52e90c8058ea6d73f324b to your computer and use it in GitHub Desktop.
Save bisand/dbde2c730af52e90c8058ea6d73f324b to your computer and use it in GitHub Desktop.
Tibber Pulse - Home energy monitor
[
{
"id": "683fd7.e63da028",
"type": "tab",
"label": "Home Energy",
"disabled": false,
"info": ""
},
{
"id": "b970f3b0.3ff74",
"type": "tibber-feed",
"z": "683fd7.e63da028",
"name": "",
"active": true,
"apiEndpointRef": "8a80f84f.0cbd98",
"homeId": "c70dcbe5-4485-4821-933d-a8a86452737b",
"timestamp": "1",
"power": "1",
"lastMeterConsumption": "1",
"accumulatedConsumption": "1",
"accumulatedProduction": "1",
"accumulatedCost": "1",
"accumulatedReward": "1",
"currency": "1",
"minPower": "1",
"averagePower": "1",
"maxPower": "1",
"powerProduction": "1",
"minPowerProduction": "1",
"maxPowerProduction": "1",
"lastMeterProduction": "1",
"powerFactor": "1",
"voltagePhase1": "1",
"voltagePhase2": "1",
"voltagePhase3": "1",
"currentPhase1": "1",
"currentPhase2": "1",
"currentPhase3": "1",
"x": 140,
"y": 300,
"wires": [["1491f46.f317b0c"]]
},
{
"id": "4d0b020a.94fbac",
"type": "debug",
"z": "683fd7.e63da028",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 590,
"y": 360,
"wires": []
},
{
"id": "2773a5f1.d99aca",
"type": "tibber-query",
"z": "683fd7.e63da028",
"name": "",
"active": true,
"apiEndpointRef": "8a80f84f.0cbd98",
"x": 370,
"y": 100,
"wires": [["4a25248d.5e506c"]]
},
{
"id": "983cd36.d80383",
"type": "inject",
"z": "683fd7.e63da028",
"name": "Get Home Id",
"topic": "",
"payload": "{ viewer { homes { id address { address1 address2 address3 postalCode city country latitude longitude } } } }",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 150,
"y": 100,
"wires": [["2773a5f1.d99aca"]]
},
{
"id": "4a25248d.5e506c",
"type": "debug",
"z": "683fd7.e63da028",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 550,
"y": 100,
"wires": []
},
{
"id": "e0404127.1a2f8",
"type": "http request",
"z": "683fd7.e63da028",
"name": "",
"method": "POST",
"ret": "txt",
"paytoqs": false,
"url": "http://influxdb:8086/write?precision=s&consistency=any&db=test",
"tls": "",
"proxy": "",
"authType": "",
"x": 590,
"y": 300,
"wires": [["4d0b020a.94fbac"]]
},
{
"id": "1491f46.f317b0c",
"type": "function",
"z": "683fd7.e63da028",
"name": "Transform payload",
"func": "let p = msg.payload;\n\nif (!p.voltagePhase1)\n return null;\n\nfor (var prop in p) {\n if (!p[prop])\n p[prop] = 0;\n}\n\n// Meassurement\nlet data = \"power\";\n\n// Tag set\ndata += \",location=test\";\ndata += \",currency=\" + p.currency;\n\n// Field set\ndata += \" power=\" + p.power;\ndata += \",lastMeterConsumption=\" + p.lastMeterConsumption;\ndata += \",accumulatedConsumption=\" + p.accumulatedConsumption;\ndata += \",accumulatedProduction=\" + p.accumulatedProduction;\ndata += \",accumulatedCost=\" + p.accumulatedCost;\ndata += \",accumulatedReward=\" + p.accumulatedReward;\ndata += \",minPower=\" + p.minPower;\ndata += \",averagePower=\" + p.averagePower;\ndata += \",maxPower=\" + p.maxPower;\ndata += \",powerProduction=\" + p.powerProduction;\ndata += \",minPowerProduction=\" + p.minPowerProduction;\ndata += \",maxPowerProduction=\" + p.maxPowerProduction;\ndata += \",lastMeterProduction=\" + p.lastMeterProduction;\ndata += \",powerFactor=\" + p.powerFactor;\ndata += \",voltagePhase1=\" + p.voltagePhase1;\ndata += \",voltagePhase2=\" + p.voltagePhase2;\ndata += \",voltagePhase3=\" + p.voltagePhase3;\ndata += \",currentPhase1=\" + p.currentPhase1;\ndata += \",currentPhase2=\" + p.currentPhase2;\ndata += \",currentPhase3=\" + p.currentPhase3;\n\nmsg.payload = data;\n\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"x": 390,
"y": 300,
"wires": [["e0404127.1a2f8"]]
},
{
"id": "4286466c.a02e08",
"type": "http request",
"z": "683fd7.e63da028",
"name": "",
"method": "POST",
"ret": "txt",
"paytoqs": false,
"url": "http://influxdb:8086/query?q=CREATE%20DATABASE%20%22test%22",
"tls": "",
"proxy": "",
"authType": "",
"x": 370,
"y": 40,
"wires": [["d102d972.8fb0c8"]]
},
{
"id": "b24ffef4.c3ca",
"type": "inject",
"z": "683fd7.e63da028",
"name": "Create test database",
"topic": "",
"payload": "",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 170,
"y": 40,
"wires": [["4286466c.a02e08"]]
},
{
"id": "d102d972.8fb0c8",
"type": "debug",
"z": "683fd7.e63da028",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 550,
"y": 40,
"wires": []
},
{
"id": "165b29ab.c7bef6",
"type": "tibber-query",
"z": "683fd7.e63da028",
"name": "",
"active": true,
"apiEndpointRef": "8a80f84f.0cbd98",
"x": 370,
"y": 180,
"wires": [["9f49c320.526db"]]
},
{
"id": "425b3d0d.8f10d4",
"type": "inject",
"z": "683fd7.e63da028",
"name": "Daily energy prices",
"topic": "",
"payload": "{ viewer { homes { currentSubscription { priceInfo { today { total energy tax startsAt currency level } } } } } }",
"payloadType": "str",
"repeat": "",
"crontab": "30 00 * * *",
"once": false,
"onceDelay": 0.1,
"x": 180,
"y": 180,
"wires": [["165b29ab.c7bef6"]]
},
{
"id": "810b8faa.9656a",
"type": "debug",
"z": "683fd7.e63da028",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"x": 550,
"y": 240,
"wires": []
},
{
"id": "9f49c320.526db",
"type": "function",
"z": "683fd7.e63da028",
"name": "Transform energy price",
"func": "let pl = msg.payload;\n\nlet prices = pl.viewer.homes[0].currentSubscription.priceInfo.today;\n\n// Meassurement\nlet data = \"\";\n\nfor(let i = 0; i < prices.length; i++)\n{\n let p = prices[i];\n data += \"energy\";\n\n // Tag set\n data += \",location=test\";\n data += \",currency=\" + p.currency;\n \n // Field set\n data += \" total=\" + p.total;\n data += \",energy=\" + p.energy;\n data += \",tax=\" + p.tax;\n data += \",level=\\\"\" + p.level + \"\\\"\";\n data += \" \" + new Date(p.startsAt).getTime() / 1000 + \"\";\n data += \"\\n\";\n}\n\nmsg.payload = data;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 590,
"y": 180,
"wires": [["c478abbd.5715e8"]]
},
{
"id": "c478abbd.5715e8",
"type": "http request",
"z": "683fd7.e63da028",
"name": "",
"method": "POST",
"ret": "txt",
"paytoqs": false,
"url": "http://influxdb:8086/write?precision=s&consistency=any&db=test",
"tls": "",
"proxy": "",
"authType": "",
"x": 370,
"y": 240,
"wires": [["810b8faa.9656a"]]
},
{
"id": "8a80f84f.0cbd98",
"type": "tibber-api-endpoint",
"z": "",
"feedUrl": "wss://api.tibber.com/v1-beta/gql/subscriptions",
"queryUrl": "https://api.tibber.com/v1-beta/gql",
"apiKey": "d1007ead2dc84a2b82f0de19451c5fb22112f7ae11d19bf2bedb224a003ff74a",
"name": "Demo"
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment