Sponsored

Yellow Buddy

Well-Known Member
Joined
Apr 10, 2022
Threads
22
Messages
847
Reaction score
1,273
Location
Behind You
Vehicles
Rivian R1T, F-150 Lightning Pro, Model S, Model X
Occupation
Smart Ass
This looks great.
Any idea if https://smartcar.com/rivian/ would work for those of us that aren’t as computer literate?
This was my thinking exactly...here's what I found out today.

1) Found smartcar via google, it supports it! :)
https://smartcar.com/blog/october-2022/

2) There's a FREE version!! :like:

3) There's even "Brand Specific APIs" prebuilt into it!!!! :clap:

3) But you need to upgrade to a paid version to get it :(, but there's a free trial.:whew:

4) After registering, logging in and seeing the dashboard....:surprised:

5) 15 minutes later of trying to read documentation...:headbang:

6) Led me to this Youtube Demo:
To which I got about 10 minutes in and had as much clarity as I've gotten from this thread, actually probably more from @mindstormsguy

7) I closed the video, clicked around some more. Was able to confirm via a simulation that a Rivian is indeed supported:
Rivian R1T R1S Rivian ABRP integration working (if you're motivated 🙂) 1674914749124


8) Spent 15 more minutes trying to figure out how to connect my car. Unsubscribed, closed the account and made this post. o_O

9) Googling how to install home assistant.

TLDR Conclusion: I thought it was an app to allow me to see my vehicle. It's not.
It's an app, that requires me to have an app so that I can connect my app to the Rivian app using this app to make the app connection easier...I think.
Sponsored

 

Churrodecoco

Active Member
First Name
Frank
Joined
Dec 5, 2020
Threads
0
Messages
25
Reaction score
43
Location
Minnesota
Vehicles
Audi eTron
Occupation
IT Manager
Clubs
 
I successfully connected my Rivian telemetry to ABRP for live charge tracking and prediction. I can't take a ton of credit for it really, as I'm just piggybacking on the Home Assistant plugin for the most part, but it works! I had this "working" about a week ago, but of course Rivian shut down the old API on Friday night and I couldn't test it until the HA plugin was updated to match.

Now I just need to go on a couple trips to "train" ABRP to be better calibrated for the Rivian :).

1673583050104.png


1673583241923.png


I'm using Node Red to really quickly and easily build the HTTP GET that the ABRP API wants. It's messy, and I could have probably just wrote code instead, but not having to worry about any infrastructure when you have Node Red already set up just makes these things so much easier to achieve.

1673583345572.png
Thanks for doing this. I'm assuming ABRP would use your data to make better predictions even for those of us that don't do this integration?
 

Blakeney

Well-Known Member
First Name
Jeremy
Joined
Jan 25, 2022
Threads
11
Messages
99
Reaction score
61
Location
Orem Utah
Vehicles
2021 Ram 1500 Limited, 2020 Kia Telluride SX
Sorry for the delay. It has been a busy day or two. Here's the JSON for my Node-RED automation.

Code:
[
    {
        "id": "0a240ace5f73b97b",
        "type": "tab",
        "label": "Rivian HA to ABRP",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "c454216dc2556369",
        "type": "debug",
        "z": "0a240ace5f73b97b",
        "name": "debug 1",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1080,
        "y": 1200,
        "wires": []
    },
    {
        "id": "14022a8a7c8ddd12",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "0",
        "halt_if_type": "num",
        "halt_if_compare": "is_not",
        "entity_id": "sensor.rivian_energy_storage_charger_adjusted_soc",
        "state_type": "num",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "soc",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 300,
        "y": 220,
        "wires": [
            [
                "a440d83de0c8e2af"
            ],
            [
                "a440d83de0c8e2af"
            ]
        ]
    },
    {
        "id": "7a1610ae1d247444",
        "type": "inject",
        "z": "0a240ace5f73b97b",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 100,
        "y": 40,
        "wires": [
            [
                "4ead270d32eb384d"
            ]
        ]
    },
    {
        "id": "b05ee18031c7316a",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "0",
        "halt_if_type": "num",
        "halt_if_compare": "is_not",
        "entity_id": "device_tracker.rivian_telematics_gnss_position",
        "state_type": "num",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "gnss_pos",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 280,
        "y": 320,
        "wires": [
            [
                "90d82bfaaf202136"
            ],
            [
                "90d82bfaaf202136"
            ]
        ]
    },
    {
        "id": "7a5419607ca5a690",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "entity_id": "binary_sensor.rivian_energy_storage_charger_vehicle_charger_state",
        "state_type": "str",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "charger_state",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 350,
        "y": 420,
        "wires": [
            [
                "2b541098e215ebf0"
            ],
            [
                "f351f1c74cba3687"
            ]
        ]
    },
    {
        "id": "2bbdf70f71bf9e1f",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "park",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "entity_id": "sensor.rivian_dynamics_propulsion_status_prndl",
        "state_type": "str",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "pndrl",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 370,
        "y": 800,
        "wires": [
            [
                "b167da69e56601b9"
            ],
            [
                "528037b5d00342c8"
            ]
        ]
    },
    {
        "id": "2e84984fea4471cd",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "0",
        "halt_if_type": "num",
        "halt_if_compare": "is_not",
        "entity_id": "sensor.rivian_dynamics_odometer_value",
        "state_type": "num",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "odometer",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 340,
        "y": 900,
        "wires": [
            [
                "75ef08d69eb660a2"
            ],
            [
                "75ef08d69eb660a2"
            ]
        ]
    },
    {
        "id": "e4c6f1202963fef4",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "0",
        "halt_if_type": "num",
        "halt_if_compare": "is_not",
        "entity_id": "sensor.rivian_energy_storage_vehicle_energy_vehicle_range",
        "state_type": "num",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "range",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 410,
        "y": 1000,
        "wires": [
            [
                "0c3d67e44a777549"
            ],
            [
                "0c3d67e44a777549"
            ]
        ]
    },
    {
        "id": "a440d83de0c8e2af",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "abrp.soc",
                "pt": "msg",
                "to": "soc.state",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 750,
        "y": 220,
        "wires": [
            [
                "b05ee18031c7316a"
            ]
        ]
    },
    {
        "id": "90d82bfaaf202136",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "abrp.lat",
                "pt": "msg",
                "to": "gnss_pos.attributes.latitude",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "abrp.lon",
                "pt": "msg",
                "to": "gnss_pos.attributes.longitude",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 740,
        "y": 320,
        "wires": [
            [
                "7a5419607ca5a690"
            ]
        ]
    },
    {
        "id": "2b541098e215ebf0",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "abrp.is_charging true",
        "rules": [
            {
                "t": "set",
                "p": "abrp.is_charging",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 800,
        "y": 400,
        "wires": [
            [
                "cfe681d3b9c224e6"
            ]
        ]
    },
    {
        "id": "f351f1c74cba3687",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "abrp.is_charging flase",
        "rules": [
            {
                "t": "set",
                "p": "abrp.is_charging",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 180,
        "y": 700,
        "wires": [
            [
                "c4716e5dedb1f833"
            ]
        ]
    },
    {
        "id": "b167da69e56601b9",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "abrp.is_parked",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 910,
        "y": 780,
        "wires": [
            [
                "2e84984fea4471cd"
            ]
        ]
    },
    {
        "id": "528037b5d00342c8",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "abrp.is_parked",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 910,
        "y": 820,
        "wires": [
            [
                "2e84984fea4471cd"
            ]
        ]
    },
    {
        "id": "75ef08d69eb660a2",
        "type": "function",
        "z": "0a240ace5f73b97b",
        "name": "mi to km (odo)",
        "func": "msg.abrp.odometer = 1.60934 * msg.odometer.state;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 880,
        "y": 900,
        "wires": [
            [
                "e4c6f1202963fef4"
            ]
        ]
    },
    {
        "id": "0c3d67e44a777549",
        "type": "function",
        "z": "0a240ace5f73b97b",
        "name": "mi to km (range)",
        "func": "msg.abrp.est_battery_range = 1.60934 * msg.range.state;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 880,
        "y": 1000,
        "wires": [
            [
                "e796a7b0516dfeee"
            ]
        ]
    },
    {
        "id": "abd7d01f161fbb41",
        "type": "function",
        "z": "0a240ace5f73b97b",
        "name": "Set time",
        "func": "msg.abrp.utc = parseInt(msg.payload / 1000);\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 700,
        "y": 100,
        "wires": [
            [
                "b1d22d718b934e36"
            ]
        ]
    },
    {
        "id": "e796a7b0516dfeee",
        "type": "json",
        "z": "0a240ace5f73b97b",
        "name": "build json",
        "property": "abrp",
        "action": "str",
        "pretty": false,
        "x": 180,
        "y": 1120,
        "wires": [
            [
                "59e29f544e2021e1"
            ]
        ]
    },
    {
        "id": "5530d4dedffbb2c1",
        "type": "function",
        "z": "0a240ace5f73b97b",
        "name": "build request",
        "func": "msg.method = \"get\";\nmsg.url = \"https://api.iternio.com/1/tlm/send?api_key=\" + msg.api_key + \"&token=\" + msg.token + \"&tlm=\" + msg.abrp;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 650,
        "y": 1120,
        "wires": [
            [
                "d451af60021e9b68"
            ]
        ]
    },
    {
        "id": "d451af60021e9b68",
        "type": "http request",
        "z": "0a240ace5f73b97b",
        "name": "",
        "method": "use",
        "ret": "txt",
        "paytoqs": "ignore",
        "url": "",
        "tls": "",
        "persist": false,
        "proxy": "",
        "insecureHTTPParser": false,
        "authType": "",
        "senderr": false,
        "headers": [],
        "x": 870,
        "y": 1120,
        "wires": [
            [
                "c454216dc2556369"
            ]
        ]
    },
    {
        "id": "c3d9961fc33c39af",
        "type": "server-state-changed",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 4,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityidfilter": "rivian",
        "entityidfiltertype": "substring",
        "outputinitially": true,
        "state_type": "str",
        "haltifstate": "",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 1,
        "output_only_on_state_change": false,
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "ignorePrevStateNull": false,
        "ignorePrevStateUnknown": false,
        "ignorePrevStateUnavailable": false,
        "ignoreCurrentStateUnknown": false,
        "ignoreCurrentStateUnavailable": false,
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "",
                "valueType": "date"
            },
            {
                "property": "data",
                "propertyType": "msg",
                "value": "",
                "valueType": "eventData"
            },
            {
                "property": "topic",
                "propertyType": "msg",
                "value": "",
                "valueType": "triggerId"
            }
        ],
        "x": 120,
        "y": 100,
        "wires": [
            [
                "e03464546451ac49"
            ]
        ]
    },
    {
        "id": "e03464546451ac49",
        "type": "delay",
        "z": "0a240ace5f73b97b",
        "name": "",
        "pauseType": "delay",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 360,
        "y": 100,
        "wires": [
            [
                "4ead270d32eb384d"
            ]
        ]
    },
    {
        "id": "1d65b486bac7ea2f",
        "type": "comment",
        "z": "0a240ace5f73b97b",
        "name": "Wait for all data before polling ",
        "info": "Wait a second for all the data to be parsed by HA",
        "x": 380,
        "y": 40,
        "wires": []
    },
    {
        "id": "63ed731a41f823e9",
        "type": "comment",
        "z": "0a240ace5f73b97b",
        "name": "Rate limit",
        "info": "Per https://documenter.getpostman.com/view/7396339/SWTK5a8w, the desired update rate is once ever 5 second, but no greater.",
        "x": 840,
        "y": 40,
        "wires": []
    },
    {
        "id": "4ead270d32eb384d",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "abrp.utc",
                "pt": "msg",
                "to": "0",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 530,
        "y": 100,
        "wires": [
            [
                "abd7d01f161fbb41"
            ]
        ]
    },
    {
        "id": "59e29f544e2021e1",
        "type": "credentials",
        "z": "0a240ace5f73b97b",
        "name": "token",
        "props": [
            {
                "value": "token",
                "type": "msg"
            }
        ],
        "x": 330,
        "y": 1120,
        "wires": [
            [
                "16454682fa7ca495"
            ]
        ]
    },
    {
        "id": "16454682fa7ca495",
        "type": "credentials",
        "z": "0a240ace5f73b97b",
        "name": "api_key",
        "props": [
            {
                "value": "api_key",
                "type": "msg"
            }
        ],
        "x": 480,
        "y": 1120,
        "wires": [
            [
                "5530d4dedffbb2c1"
            ]
        ]
    },
    {
        "id": "b1d22d718b934e36",
        "type": "function",
        "z": "0a240ace5f73b97b",
        "name": "Rate Limiter",
        "func": "var interval = (5000); // minimum interval between messages (ms)\ncontext.lastTime = context.lastTime || 0;\n\nvar now = Date.now();\n\nif (now-context.lastTime > interval) {\n  context.lastTime = now;\n  return msg;\n} else {\n  return null;\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 870,
        "y": 100,
        "wires": [
            [
                "14022a8a7c8ddd12",
                "7f5bd5c5cdd0048e"
            ]
        ]
    },
    {
        "id": "cfe681d3b9c224e6",
        "type": "api-current-state",
        "z": "0a240ace5f73b97b",
        "name": "",
        "server": "a32a31f29e50c3e6",
        "version": 3,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "entity_id": "binary_sensor.rivian_energy_storage_charger_status_vehicle_charger_status",
        "state_type": "str",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "charger_status",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 700,
        "y": 620,
        "wires": [
            [
                "f2325791a7154198",
                "c28447f3c67b3e41"
            ],
            [
                "c28447f3c67b3e41"
            ]
        ]
    },
    {
        "id": "c4716e5dedb1f833",
        "type": "change",
        "z": "0a240ace5f73b97b",
        "name": "abrp.is_dcfc flase",
        "rules": [
            {
                "t": "set",
                "p": "abrp.is_dcfc",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 700,
        "wires": [
            [
                "2bbdf70f71bf9e1f"
            ]
        ]
    },
    {
        "id": "7f5bd5c5cdd0048e",
        "type": "debug",
        "z": "0a240ace5f73b97b",
        "name": "debug 2",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1140,
        "y": 60,
        "wires": []
    },
    {
        "id": "f2325791a7154198",
        "type": "debug",
        "z": "0a240ace5f73b97b",
        "name": "debug 3",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1140,
        "y": 500,
        "wires": []
    },
    {
        "id": "c28447f3c67b3e41",
        "type": "function",
        "z": "0a240ace5f73b97b",
        "name": "infer DCFC",
        "func": "msg.abrp.is_dcfc = (msg.charger_status.attributes.value != \"chrgr_sts_connected_charging\");\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1150,
        "y": 620,
        "wires": [
            [
                "2bbdf70f71bf9e1f"
            ]
        ]
    },
    {
        "id": "a32a31f29e50c3e6",
        "type": "server",
        "name": "Home Assistant",
        "version": 5,
        "addon": false,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": true,
        "cacheJson": true,
        "heartbeat": false,
        "heartbeatInterval": "30",
        "areaSelector": "friendlyName",
        "deviceSelector": "friendlyName",
        "entitySelector": "friendlyName",
        "statusSeparator": ": ",
        "statusYear": "hidden",
        "statusMonth": "short",
        "statusDay": "numeric",
        "statusHourCycle": "default",
        "statusTimeFormat": "h:m",
        "enableGlobalContextStore": false
    }
]

Hey awesome stuff you have done here!quick question. Where do I get my Tokens and API key? I have pasted your code into Node red but getting credentials error.... I am no smart person...

Rivian R1T R1S Rivian ABRP integration working (if you're motivated 🙂) 1678468168999
 
OP
OP

mindstormsguy

Well-Known Member
Joined
Jan 3, 2021
Threads
10
Messages
318
Reaction score
639
Location
Seattle area
Vehicles
Some
It looks like you need to install the credentials node: https://flows.nodered.org/node/node-red-contrib-credentials. (You should be able to do this from the GUI, you don't need to use the command line).

Once you do that, you'll need to enter your API key, and the unique identifier for your specific vehicle on ABRP. You can find the instruction here to get your API key: https://documenter.getpostman.com/view/7396339/SWTK5a8w

For the unique ID for your Rivian, go to ABRP, settings for your vehicle, over-the-air livedata...and I can't give specific instructions past this point since mine is already linked. But you should be able to find a unique ID for your vehicle in here. (This is so when Node sends the data to ABRP, they know which vehicle to associate it to).
 

Sponsored

Aag12

Well-Known Member
First Name
B
Joined
Mar 17, 2022
Threads
27
Messages
315
Reaction score
384
Location
Denver
Vehicles
Na
It looks like you need to install the credentials node: https://flows.nodered.org/node/node-red-contrib-credentials. (You should be able to do this from the GUI, you don't need to use the command line).

Once you do that, you'll need to enter your API key, and the unique identifier for your specific vehicle on ABRP. You can find the instruction here to get your API key: https://documenter.getpostman.com/view/7396339/SWTK5a8w

For the unique ID for your Rivian, go to ABRP, settings for your vehicle, over-the-air livedata...and I can't give specific instructions past this point since mine is already linked. But you should be able to find a unique ID for your vehicle in here. (This is so when Node sends the data to ABRP, they know which vehicle to associate it to).
So for us dumb dumbs, are there anything we can do to make the app more accurate?

I find that abrp is not good predicting usage for elevation changes
 

TheIglu

Well-Known Member
First Name
Clayton
Joined
Apr 6, 2022
Threads
23
Messages
300
Reaction score
418
Location
North Central MA
Vehicles
2022 Rivian R1T
Occupation
IT
The outage at Rivian.com and on the Rivian app are because I tried to set this up today.

Because, of course.
 

TheIglu

Well-Known Member
First Name
Clayton
Joined
Apr 6, 2022
Threads
23
Messages
300
Reaction score
418
Location
North Central MA
Vehicles
2022 Rivian R1T
Occupation
IT
Ok, now that the Rivian.com side of things is fixed....

I have my Token from ABRP. Waiting on an API Key from Iternio.

Home assistant/HACS/Rivian integration/Node Red installed.
 

TheIglu

Well-Known Member
First Name
Clayton
Joined
Apr 6, 2022
Threads
23
Messages
300
Reaction score
418
Location
North Central MA
Vehicles
2022 Rivian R1T
Occupation
IT
No response on the API key...

Did you all hear back fairly quickly on that?
 

J3t3r

Member
First Name
Matthew
Joined
Apr 12, 2023
Threads
2
Messages
10
Reaction score
9
Location
Asheville
Vehicles
Limestone R1T, Taycan 4S, 2500 Sprinter 4x4
Rivian R1T R1S Rivian ABRP integration working (if you're motivated 🙂) 25FFDD36-1531-4776-A85A-703B601B831A

What’s the difference here between 105, 135 and 180 ?

and with your integration of Rivian API you are getting real-time data from your truck versus “stock” specs of your the vehicle. I had a Taycan with OBII port dongle that would integrate to ABRP but it sounds like Rivian doesn’t release enough relevant information like speed and battery temp to the OBII.

I’d really like to see a software update that showed more range and efficiency info in the cockpit
 

Sponsored

godfodder0901

Well-Known Member
First Name
Jared
Joined
Mar 12, 2019
Threads
24
Messages
3,391
Reaction score
6,404
Location
Washington
Vehicles
2004 Honda Civic EX, 2022 Rivian R1T LE
25FFDD36-1531-4776-A85A-703B601B831A.png

What’s the difference here between 105, 135 and 180 ?

and with your integration of Rivian API you are getting real-time data from your truck versus “stock” specs of your the vehicle. I had a Taycan with OBII port dongle that would integrate to ABRP but it sounds like Rivian doesn’t release enough relevant information like speed and battery temp to the OBII.

I’d really like to see a software update that showed more range and efficiency info in the cockpit
Those are battery sizes. 135 is large, 180 is max, and 105 is the yet to be announced small pack.
 

jerseyff

Well-Known Member
First Name
Darren
Joined
Aug 3, 2020
Threads
12
Messages
539
Reaction score
719
Location
McDonald, TN
Vehicles
R1T; mazdaspeed3
Occupation
IT
For the unique ID for your Rivian, go to ABRP, settings for your vehicle, over-the-air livedata...and I can't give specific instructions past this point since mine is already linked. But you should be able to find a unique ID for your vehicle in here. (This is so when Node sends the data to ABRP, they know which vehicle to associate it to).
Your Vehicles > Live data > Link Generic and the token will be displayed in a popup.
 

TheIglu

Well-Known Member
First Name
Clayton
Joined
Apr 6, 2022
Threads
23
Messages
300
Reaction score
418
Location
North Central MA
Vehicles
2022 Rivian R1T
Occupation
IT
Anyone willing to write a step by step how-to for this, from the point of having HA working with the Rivian API data already being available, to the point where ABRP has the data?

Basically, I have HA working. I can see all my Rivian data in the HA dashboard, but I never got a response from the ABRP people with an API key. Did anyone else hear back from them, or what are you using?

I have my individual ABRP account integration identifier, but that's something else entirely, right?
 
Last edited:
OP
OP

mindstormsguy

Well-Known Member
Joined
Jan 3, 2021
Threads
10
Messages
318
Reaction score
639
Location
Seattle area
Vehicles
Some
If you find a how-to for installing Node-RED on you platform of choice, that’s basically all you need. Once that’s installed, you load the json I shared earlier, and enter your API key. You will need that API key though, yes. There’s the unique I’d for your vehicle on your account, and then there’s the API key. You need both.
 

TheIglu

Well-Known Member
First Name
Clayton
Joined
Apr 6, 2022
Threads
23
Messages
300
Reaction score
418
Location
North Central MA
Vehicles
2022 Rivian R1T
Occupation
IT
Well then I'm still stuck without that API key. Perhaps I'll email Iternio again.
Sponsored

 
 




Top