GoingElectric

Dacia ist mit der Renault API ansprechbar

9 Beiträge

Dacia ist mit der Renault API ansprechbar

JLorenz86
18.12.2021 09:23
Hallo zusammen,

die folgende Node-Red Bibliothek funktioniert ohne Probleme mit dem Spring:

https://flows.nodered.org/node/node-red-contrib-renault-ze

Damit lässt sich das Auto in die Hausautomatisierung einbinden. Bisher habe ich nur das Auslesen getestet, das Steuern noch nicht.
Anzeige

Re: Dacia ist mit der Renault API ansprechbar

matzzz
24.03.2022 21:14
Hallo,
hat schon jemand Erfahrung mit dem api Befehle senden gemacht?
Zb Ladung pausieren oder Heizung einschalten.

Re: Dacia ist mit der Renault API ansprechbar

JLorenz86
30.03.2022 15:31
Nicht wirklich.
Ich habe es nur einmal kurz probiert und nicht hinbekommen.

Re: Dacia ist mit der Renault API ansprechbar

-db-
30.03.2022 19:34
Ist es denn vorgesehen, dass man die Klimaanlage per App steuern kann?

/Daniel
Renault Zoe R90 Z.E. 40 Intense seit 02/2018 | Renault Megane E-Tech Electric EV60 Equilibre seit 12/2022
Wallbox: Easee Home | PHP-Skript für Renault Zoe/MeganE: ZoePHP | Tipp Kartendienst: ChargeFinder

Re: Dacia ist mit der Renault API ansprechbar

JLorenz86
18.07.2022 10:50
Hallo zusammen,

Ich habe mich in den letzen Tagen nochmal intensiv mit der Steuerung des Dacia Spring über NodeRed, genauer mit dem Modul „node-red-contrib-renault-ze“ auseinandergesetzt.

In der aktuellen Version (1.3.2) des Paketes funktioniert bisher nur die Steuerung der Klimaanlage (an/aus). Positiv dabei ist auf jeden Fall, dass durch das Aktivieren der Klimaanlage das Fahrzeug aufgeweckt wird und auch nach einer längeren Ladepause mit dem Laden beginnt.

Wem das ausreicht, der kann den folgenden NodeRed-Flow benutzen:
original.jpeg

Code: Alles auswählen

[{"id":"68b8e9bd.83893","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"59626aad.9580fc","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"battery-status","payloadType":"str","x":260,"y":360,"wires":[["b8d6343e.5fccc"]]},{"id":"46cb231e.ef0a6c","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"cockpit","x":290,"y":320,"wires":[["b8d6343e.5fccc"]]},{"id":"6566300f.c3f59","type":"debug","z":"68b8e9bd.83893","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":750,"y":360,"wires":[]},{"id":"978748a3.b211d8","type":"function","z":"68b8e9bd.83893","name":"Auwecken mit Klima","func":"//Wenn Aufwecken angefordert, zunächst Klima einschalten\nif (msg.payload == \"aufwecken\")\n    return [{\"topic\": \"set-hvac-state\", \"payload\": 21}];\n    \n//Wenn Klima ein vom Auto bestätigt wird, wieder ausschalten\nif ((msg.topic == \"set-hvac-state\") && (msg.payload.data.attributes.action == \"start\"))\n    return [{\"topic\": \"set-hvac-state\", \"payload\": null}];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":520,"y":220,"wires":[["b8d6343e.5fccc"]]},{"id":"755b25a7.55762c","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"aufwecken","payloadType":"str","x":280,"y":220,"wires":[["978748a3.b211d8"]]},{"id":"b8d6343e.5fccc","type":"renault-ze","z":"68b8e9bd.83893","name":"Baby Dacia","x":570,"y":360,"wires":[["6566300f.c3f59","978748a3.b211d8"]]}]
Wer in der aktuellen Version (1.3.2) das Laden steuern möchte, muss die Datei ZEServices.js editieren. Diese Datei liegt im Verzeichnis des Nodes „node-red-contrib-renault-ze“. Bei mir läuft NodeRed auf einem RaspberryPi und die Datei liegt im Verzeichnis „~/.node-red/node_modules/node-red-contrib-renault-ze“

Zunächst sucht ihr die Funktion

Code: Alles auswählen

createPath(accountId, vin, version = 1) {
        return "/commerce/v1/accounts/" + accountId + "/kamereon/kca/car-adapter/v" + version + "/cars/" + vin;
    }
Unmittelbar dahinter fügt ihr eine neue Funktion ein:

Code: Alles auswählen

createPathDacia(accountId, vin, version = 1) {
        return "/commerce/v1/accounts/" + accountId + "/kamereon/kcm/v1/vehicles/" + vin;
}
Danach sucht ihr nach der Funktion setChargeState und wandelt sie wie folgt ab:

Code: Alles auswählen

    setChargeState(charging, accountId, vin, country) {
        return __awaiter(this, void 0, void 0, function* () {
            let data = {
                "data": {
                    "type": "ChargePauseResume",
                    "attributes": {
                        "action": charging ? "resume" : "pause"
                    }
                }
            };
            return this.postJSON(data, this.createPathDacia(accountId, vin) + "/charge/pause-resume", country);
      }
Jetzt könnt ihr den folgenden Flow benutzten, der auch das Laden starten und beenden kann.
edit.jpeg

Code: Alles auswählen

[{"id":"69ff5346.3297d4","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"battery-status","payloadType":"str","x":320,"y":280,"wires":[["610850ca.56c028"]]},{"id":"9c34f8a.0291f88","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"cockpit","x":350,"y":240,"wires":[["610850ca.56c028"]]},{"id":"b2eac83e.9ddc68","type":"debug","z":"68b8e9bd.83893","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":750,"y":360,"wires":[]},{"id":"610850ca.56c028","type":"renault-ze","z":"68b8e9bd.83893","name":"Baby Dacia","x":570,"y":360,"wires":[["b2eac83e.9ddc68"]]},{"id":"b3e4a9d8.6f24d","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"set-charge-state","payload":"true","payloadType":"bool","x":300,"y":320,"wires":[["610850ca.56c028"]]},{"id":"c8c511f7.33db98","type":"inject","z":"68b8e9bd.83893","name":"","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"set-charge-state","payload":"false","payloadType":"bool","x":300,"y":360,"wires":[["610850ca.56c028"]]}]
Ich habe bei GitHub bereits einen Pull Request angelegt, damit die Funktion in der nächsten Version des Paketes implementiert werden kann. Sobald das erfolgt ist, stelle ich hier einen neuen Beitrag ein und erkläre die Funktion mit dem neuen Node.
Anzeige

Re: Dacia ist mit der Renault API ansprechbar

jackanddexter
28.08.2022 17:26
JLorenz86 hat geschrieben:
Ich habe bei GitHub bereits einen Pull Request angelegt, damit die Funktion in der nächsten Version des Paketes implementiert werden kann. Sobald das erfolgt ist, stelle ich hier einen neuen Beitrag ein und erkläre die Funktion mit dem neuen Node.
Hallöchen,

ich bekomme es nicht zum Laufen... Ich habe den von dir geposteten Flow jetzt so geändert, dass ich mit "set-charge-pause" steuere, so habe ich jedenfalls den git pull verstanden.

Dann bekomme ich aber

Code: Alles auswählen

errorCode: "err.func.404"
errorMessage: "{"timestamp":"2022-08-28T15:25:55.871+0000","status":404,"error":"Not Found","message":"No message available",

Re: Dacia ist mit der Renault API ansprechbar

JLorenz86
17.09.2022 11:09
Hi,

vor wenigen Tagen wurde das Release 1.4.1 veröffentlicht. Damit funktioniert es jetzt ohne Änderungen im Quellcode.

Topic muss "set-charge-pause" sein. Value muss boolean true oder false sein. True unterbricht das Laden, false startet das Laden.

Re: Dacia ist mit der Renault API ansprechbar

makro01
07.10.2022 13:15
Moin,
bin auf deinen ost gestoßen und hab ihn gleich mal umgesetzt
läuft soweit auch und die daten kommen auch alle an.
So nun die Spezialaufgabe.
Ich bekomme es nicht hin aus den Abfragen "cockpit" und "battery-status"
die Werte mit Datum am anfang dann Kliometer und Level der Battary sowie Restweite in eine Excel zu schreiben.
es erscheint entweder nur ein wert oder die letzten 2
aber bekomme es nicht hinn alle werte in eine Zeile weg zu schreiben.
Möchte geren ein überblick wieviel ich täglich fahre und was die Batterie macht.
Vorallem wenn es jetzt ja wieder kälter wird.

hat da jemand ne lösung/Idee aufbau ist der Node von JLoren86

cu Makro

Re: Dacia ist mit der Renault API ansprechbar

Mousenray
11.03.2023 21:29
Hallo JLorenz86,

ich möchte diesen wert mode = "always_charging" an das Auto senden, was muss ich in dem inject schreiben:

setChargeMode(mode, accountId, vin, country) {
return __awaiter(this, void 0, void 0, function* () {
if (mode == "always")
mode = "always_charging";
if (mode == "schedule")
mode = "schedule_mode";
let data = {
"data": {
"type": "ChargeMode",
"attributes": {
"action": mode
}
}
};
return this.postJSON(data, this.createPath(accountId, vin) + "/actions/charge-mode", country);

Danke
Anzeige

Registrieren
Anmelden