Created
February 11, 2020 17:19
-
-
Save mgottholsen/7c677118521046185f5024d6996c3701 to your computer and use it in GitHub Desktop.
AutoPi / Node Red - https://community.autopi.io/t/node-red-and-autopi-api/1138/9
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"id": "207111fc.39d516", | |
"type": "http request", | |
"z": "de854356.27206", | |
"name": "login", | |
"method": "POST", | |
"ret": "obj", | |
"url": "https://api.autopi.io/auth/login/", | |
"tls": "", | |
"x": 310, | |
"y": 760, | |
"wires": [ | |
[ | |
"377eeb2a.982804" | |
] | |
] | |
}, | |
{ | |
"id": "be7c6baa.bdb1f8", | |
"type": "inject", | |
"z": "de854356.27206", | |
"name": "send login data", | |
"topic": "", | |
"payload": "{\"email\":\"<your e-mail>\",\"password\":\"<your password>\"}", | |
"payloadType": "json", | |
"repeat": "14400", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"x": 130, | |
"y": 760, | |
"wires": [ | |
[ | |
"207111fc.39d516" | |
] | |
] | |
}, | |
{ | |
"id": "377eeb2a.982804", | |
"type": "function", | |
"z": "de854356.27206", | |
"name": "saveLoginInfo", | |
"func": "var token = { payload: msg.payload.token };\nflow.set(\"currentToken\", token.payload);\nvar deviceid = { payload: msg.payload.user.devices[0].id };\nflow.set(\"device_id\", deviceid.payload);\nvar unitid = { payload: msg.payload.user.devices[0].unit_id };\nflow.set(\"unit_id\", unitid.payload);\nreturn [token, deviceid, unitid];", | |
"outputs": 3, | |
"noerr": 0, | |
"x": 460, | |
"y": 760, | |
"wires": [ | |
[ | |
"c615b916.6045" | |
], | |
[ | |
"162f9b50.f8c3a5" | |
], | |
[ | |
"d15b94d.563ad68" | |
] | |
], | |
"outputLabels": [ | |
"token", | |
"device_id", | |
"unit_id" | |
] | |
}, | |
{ | |
"id": "c615b916.6045", | |
"type": "debug", | |
"z": "de854356.27206", | |
"name": "token", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "true", | |
"targetType": "full", | |
"x": 650, | |
"y": 700, | |
"wires": [] | |
}, | |
{ | |
"id": "162f9b50.f8c3a5", | |
"type": "debug", | |
"z": "de854356.27206", | |
"name": "device_id", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "true", | |
"targetType": "full", | |
"x": 660, | |
"y": 740, | |
"wires": [] | |
}, | |
{ | |
"id": "d15b94d.563ad68", | |
"type": "debug", | |
"z": "de854356.27206", | |
"name": "unit_id", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "true", | |
"targetType": "full", | |
"x": 650, | |
"y": 780, | |
"wires": [] | |
}, | |
{ | |
"id": "b46446ff.a25058", | |
"type": "moment", | |
"z": "de854356.27206", | |
"name": "-1h", | |
"topic": "", | |
"input": "", | |
"inputType": "date", | |
"inTz": "Europe/Ljubljana", | |
"adjAmount": "1", | |
"adjType": "hours", | |
"adjDir": "subtract", | |
"format": "ISO8601", | |
"locale": "C", | |
"output": "from_utc", | |
"outputType": "msg", | |
"outTz": "Europe/Ljubljana", | |
"x": 610, | |
"y": 860, | |
"wires": [ | |
[ | |
"24d252b1.194726" | |
] | |
] | |
}, | |
{ | |
"id": "bc886b32.2beae8", | |
"type": "inject", | |
"z": "de854356.27206", | |
"name": "batt_power+current+volts", | |
"topic": "", | |
"payload": "soc_display!batt_power!batt_current!batt_volts", | |
"payloadType": "str", | |
"repeat": "5", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"x": 160, | |
"y": 880, | |
"wires": [ | |
[ | |
"72f326f4.de27a" | |
] | |
] | |
}, | |
{ | |
"id": "88629479.a89ca", | |
"type": "www-request", | |
"z": "de854356.27206", | |
"name": "get data", | |
"method": "GET", | |
"ret": "obj", | |
"url": "", | |
"follow-redirects": true, | |
"tls": "", | |
"x": 360, | |
"y": 980, | |
"wires": [ | |
[ | |
"d9540f9e.84663" | |
] | |
] | |
}, | |
{ | |
"id": "24d252b1.194726", | |
"type": "function", | |
"z": "de854356.27206", | |
"name": "storage > read > list (get PID)", | |
"func": "msg.headers = {};\nmsg.headers['Authorization'] = 'bearer '+flow.get(\"currentToken\");\nmsg.device_id = flow.get(\"device_id\");\nmsg.url = \"https://api.autopi.io/logbook/storage/read/?from_utc=\"+msg.from_utc+\"&\"+\"field=obd.\"+msg.pid_id+\".value\"+\"&\"+\"field_type=json\"+\"&\"+\"device_id=\"+flow.get(\"device_id\")+\"&\"+\"interval=1s\"+\"&\"+\"end_utc=now\";\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"x": 550, | |
"y": 920, | |
"wires": [ | |
[ | |
"88629479.a89ca" | |
] | |
] | |
}, | |
{ | |
"id": "d9540f9e.84663", | |
"type": "function", | |
"z": "de854356.27206", | |
"name": "dataProcessor", | |
"func": "// poglej če ima array vsaj 1 podatek, če ne, vrni null\nvar outraw = {}\nvar textout = {}\nif (msg.payload.length >= 1){\n // battery power v kW (V*A)\n if (msg.pid_id == \"batt_power\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // battery tok v A\n else if (msg.pid_id == \"batt_current\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // battery tok v V\n else if (msg.pid_id == \"batt_volts\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // SOC display\n else if (msg.pid_id == \"soc_display\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = { payload: \"Stanje akumulatorja: \" + msg.payload[msg.payload.length-1].value.toFixed(2) + \" %\" };\n }\n // battery SOH\n else if (msg.pid_id == \"soh\"){\n outraw.payload = Number(msg.payload[msg.payload.length-1].value.toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 1\n else if (msg.pid_id == \"batt_temp1\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 2\n else if (msg.pid_id == \"batt_temp2\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 3\n else if (msg.pid_id == \"batt_temp3\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 4\n else if (msg.pid_id == \"batt_temp4\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 5\n else if (msg.pid_id == \"batt_temp5\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 6\n else if (msg.pid_id == \"batt_temp6\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 7\n else if (msg.pid_id == \"batt_temp7\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 8\n else if (msg.pid_id == \"batt_temp8\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 9\n else if (msg.pid_id == \"batt_temp9\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 10\n else if (msg.pid_id == \"batt_temp10\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 22\n else if (msg.pid_id == \"batt_temp11\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n // temperatura sklopa 23\n else if (msg.pid_id == \"batt_temp12\"){\n outraw.payload = Number((msg.payload[msg.payload.length-1].value).toFixed(2));\n outraw.topic = \"stat/autopi/\"+msg.pid_id;\n textout = null;\n }\n else {\n outraw = null;\n textout = null;\n }\n}\nelse {\n outraw = null;\n textout = null;\n}\nreturn [outraw, textout]", | |
"outputs": 2, | |
"noerr": 0, | |
"x": 560, | |
"y": 980, | |
"wires": [ | |
[ | |
"56aad096.3322c8", | |
"720b7c4d.3962b4" | |
], | |
[ | |
"4182ad79.fe7c4c", | |
"865643df.82c22" | |
] | |
], | |
"outputLabels": [ | |
"outRaw", | |
"TelegramOut" | |
] | |
}, | |
{ | |
"id": "720b7c4d.3962b4", | |
"type": "mqtt out", | |
"z": "de854356.27206", | |
"name": "AutoPi out", | |
"topic": "", | |
"qos": "0", | |
"retain": "false", | |
"broker": "9c9e2d3f.25de88", | |
"x": 950, | |
"y": 960, | |
"wires": [] | |
}, | |
{ | |
"id": "56aad096.3322c8", | |
"type": "debug", | |
"z": "de854356.27206", | |
"name": "", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "true", | |
"targetType": "full", | |
"x": 770, | |
"y": 920, | |
"wires": [] | |
}, | |
{ | |
"id": "bc11f57a.a03c5", | |
"type": "change", | |
"z": "de854356.27206", | |
"name": "move to pid_id", | |
"rules": [ | |
{ | |
"t": "move", | |
"p": "payload", | |
"pt": "msg", | |
"to": "pid_id", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 420, | |
"y": 860, | |
"wires": [ | |
[ | |
"b46446ff.a25058" | |
] | |
] | |
}, | |
{ | |
"id": "316b2d84.64e75a", | |
"type": "telegrambot-notify", | |
"z": "de854356.27206", | |
"name": "IoniqBot", | |
"bot": "6776ad8c.1cf8e4", | |
"chatId": "128829131", | |
"message": "", | |
"parseMode": "", | |
"x": 940, | |
"y": 1020, | |
"wires": [] | |
}, | |
{ | |
"id": "4182ad79.fe7c4c", | |
"type": "rbe", | |
"z": "de854356.27206", | |
"name": "", | |
"func": "rbei", | |
"gap": "", | |
"start": "", | |
"inout": "out", | |
"property": "payload", | |
"x": 770, | |
"y": 1020, | |
"wires": [ | |
[ | |
"316b2d84.64e75a" | |
] | |
] | |
}, | |
{ | |
"id": "8ff29e2.7c3876", | |
"type": "inject", | |
"z": "de854356.27206", | |
"name": "", | |
"topic": "", | |
"payload": "soh", | |
"payloadType": "str", | |
"repeat": "3600", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"x": 90, | |
"y": 960, | |
"wires": [ | |
[ | |
"bc11f57a.a03c5" | |
] | |
] | |
}, | |
{ | |
"id": "865643df.82c22", | |
"type": "debug", | |
"z": "de854356.27206", | |
"name": "", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "true", | |
"targetType": "full", | |
"x": 770, | |
"y": 1060, | |
"wires": [] | |
}, | |
{ | |
"id": "12770b91.f25e04", | |
"type": "inject", | |
"z": "de854356.27206", | |
"name": "batt_temp1-12", | |
"topic": "", | |
"payload": "batt_temp1!batt_temp2!batt_temp3!batt_temp4!batt_temp5!batt_temp6!batt_temp7!batt_temp8!batt_temp9!batt_temp10!batt_temp11!batt_temp12", | |
"payloadType": "str", | |
"repeat": "30", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"x": 120, | |
"y": 920, | |
"wires": [ | |
[ | |
"72f326f4.de27a" | |
] | |
] | |
}, | |
{ | |
"id": "72f326f4.de27a", | |
"type": "split", | |
"z": "de854356.27206", | |
"name": "", | |
"splt": "!", | |
"spltType": "str", | |
"arraySplt": 1, | |
"arraySpltType": "len", | |
"stream": false, | |
"addname": "", | |
"x": 290, | |
"y": 920, | |
"wires": [ | |
[ | |
"bc11f57a.a03c5" | |
] | |
] | |
}, | |
{ | |
"id": "9c9e2d3f.25de88", | |
"type": "mqtt-broker", | |
"z": "", | |
"name": "HASS", | |
"broker": "localhost", | |
"port": "1883", | |
"clientid": "node-red", | |
"usetls": false, | |
"compatmode": true, | |
"keepalive": "60", | |
"cleansession": true, | |
"birthTopic": "", | |
"birthQos": "0", | |
"birthPayload": "", | |
"closeTopic": "", | |
"closeQos": "0", | |
"closePayload": "", | |
"willTopic": "", | |
"willQos": "0", | |
"willPayload": "" | |
}, | |
{ | |
"id": "6776ad8c.1cf8e4", | |
"type": "telegrambot-config", | |
"z": "", | |
"botname": "IoniqBot", | |
"usernames": "", | |
"chatIds": "", | |
"pollInterval": "300" | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment