Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Styre Tesla ladestrøm fra Home Assistant


Anbefalte innlegg

Jeg har en Tesla Model Y og en Tesla Wall Connector laderobot.  Og jeg har lyst til å prøve meg på å optimalisere strømtrekket i boligen basert på Schedy og stigvi sin løsning for prediktiv reduksjon av strømtrekk (https://www.hjemmeautomasjon.no/forums/topic/6036-ny-effekt-tariff-hva-nå/).

 

 

Jeg har installert integrasjonen til TWC og HACS-integrasjonen til Teslaen.  Men jeg kan ikke finne noen vei hvor jeg kan sette ladestrøm tilsvarende i Tesla-appen.  Noen som vet hvordan dette kan gjøres?

Endret av ØysteinHJ
Lenke til kommentar
Del på andre sider

1 hour ago, ØysteinHJ said:

Jeg har en Tesla Model Y og en Tesla Wall Connector laderobot.  Og jeg har lyst til å prøve meg på å optimalisere strømtrekket i boligen basert på Schedy og stigvi sin løsning for prediktiv reduksjon av strømtrekk (https://www.hjemmeautomasjon.no/forums/topic/6036-ny-effekt-tariff-hva-nå/).

 

 

Jeg har installert integrasjonen til TWC og HACS-integrasjonen til Teslaen.  Men jeg kan ikke finne noen vei hvor jeg kan sette ladestrøm tilsvarende i Tesla-appen.  Noen som vet hvordan dette kan gjøres?

Standard Tesla-app kan ikke sette ladestrømmen. Må gjøres i bilen. Tesla-API har sikkert denne muligheten.

Lenke til kommentar
Del på andre sider

42 minutes ago, stigvi said:

Njaaa, dette er vel en Gen2-lader..?  Ser ikke ut til at den kan brukes med Gen3-ladere: https://github.com/dracoventions/TWCManager

 

Men virker jo uansett overkill å lage et eget API for setting av ladestrøm når laderen allerede har et offisielt API.  Det bare overrasket meg at hverken TWC-integrasjonen eller Tesla HACS-integrasjonen inkluderte setting av ladestrøm.  Sitter og blar i APIet til Tesla nå for å se om jeg ser referanser til ladestrøm: https://www.teslaapi.io/

Lenke til kommentar
Del på andre sider

10 hours ago, OlavT said:

Standard Tesla-app kan ikke sette ladestrømmen.

Jovisst kan den den. 🙂  Men spørs om jeg ikke må dra frem Wireshark for å se hva som blir sendt når jeg setter strømtrekk fra appen.

 

IMG_2762.thumb.PNG.e40b1e73517778c9035adf6ba09d9917.PNG

 

 

 

Lenke til kommentar
Del på andre sider

15 minutes ago, stigvi said:

Det vil forundre meg stort om ladeboksen/appen og Tesla skyen (Amazon?) ikke kommuniserer over en kryptert forbindelse

Tja, det er jo bare HTTP requests.  Så jeg burde være i stand til å se URLen til kallene i hvert fall.

Lenke til kommentar
Del på andre sider

Anbefaler deg å opprette en diskusjon/feature request på GitHub. 
 

ser i apien at det skal være mulig å sette amps direkte til bilen hvertfall. 
 

Sitat

 

POST /api/1/vehicles/{id}/command/set_charging_amps
Sets the charge amps limit to a custom value.

 

Parameters
Parameter
Example
Description
charging_amps
32

 

  • Like 1
Lenke til kommentar
Del på andre sider

35 minutes ago, ØysteinHJ said:

Jovisst kan den den. 🙂  Men spørs om jeg ikke må dra frem Wireshark for å se hva som blir sendt når jeg setter strømtrekk fra appen.

 

IMG_2762.thumb.PNG.e40b1e73517778c9035adf6ba09d9917.PNG

 

 

 

Mulig det er avhengig av versjon på sw i bilen. Min 2016 S70D har ikke det valget.

Lenke til kommentar
Del på andre sider

On 08/07/2022 at 09:08, Kim123 said:

Anbefaler deg å opprette en diskusjon/feature request på GitHub. 
 

ser i apien at det skal være mulig å sette amps direkte til bilen hvertfall. 
 

 

Will do.  Og takk for tipset om API.  Om ikke annet så burde jeg i hvert fall kunne bruke det API-endepunktet fra Home Assistant.

Lenke til kommentar
Del på andre sider

Jeg har også en MY og Tesla lader v3, og jeg kan sette ladestrøm fra app, og fra API (https://github.com/mseminatore/TeslaJS).

 

Jeg prøver nå å få totalt strømtrekk i huset til 9500W max, så laderen skal få det som gjenstår av 9500W når alt annet i huset tar sitt... Og dermed regne ut ampere tilgjengelig for lader, og sende det til bilen.

Hvor ofte er det hensiktsmessig å sende oppdatert tilgjengelig strøm til bilen? Jeg får jo oppdatert husets strømtrekk hvert 10.sekund, men det føles veldig ofte. Noen som vet hvor ofte f.eks Tibber oppdaterer bilene når man har integrasjon mot elbillader?

 

Grunnen til 9,5kW er jo å komme under 10kW grensen til LOS, som jo øker nettleie med nesten 375kr.

 

edit:

Satte oppdatering til 30sek nå foreløpig, og det fungerer selvfølgelig fint. Det betyr jo at jeg kan trekke mer enn 10kW i opptil 30sek, men det kan jo også gå andre veien, så jevner vel seg ut til å bli lavere snitt enn 10kW uansett. Kunne kanskje satt opp til 1min.

 

Satte også opp grensen til 9,6kW, og 100W hysterese.

Endret av mongojarle
Lenke til kommentar
Del på andre sider

TeslaJS... interessant.. Hvilket hjemmeautomasjonssystem er det du integrerer dette i, og hvordan?

 

EDIT: Ser at man faktisk kan justere ampere via HACS integrasjonen for Tesla. Godt gjemt...

https://github.com/alandtse/tesla/discussions/85#discussion-3646150

..og charging rate i ampere skal også være tilgjengelig via sensor

https://github.com/alandtse/tesla/issues/86#issuecomment-950630178

 

...huff, da fant man nesten et alibi for å bestille ams leser til en tusenlapp også

Endret av picnic84
Lenke til kommentar
Del på andre sider

15 hours ago, picnic84 said:

TeslaJS... interessant.. Hvilket hjemmeautomasjonssystem er det du integrerer dette i, og hvordan?

 

EDIT: Ser at man faktisk kan justere ampere via HACS integrasjonen for Tesla. Godt gjemt...

https://github.com/alandtse/tesla/discussions/85#discussion-3646150

..og charging rate i ampere skal også være tilgjengelig via sensor

https://github.com/alandtse/tesla/issues/86#issuecomment-950630178

 

...huff, da fant man nesten et alibi for å bestille ams leser til en tusenlapp også

Tja, du kan vel implementere det hvor du vil da, men jeg bruker NodeRed og da bare denne noden, som igjen bruker TeslaJS: https://flows.nodered.org/node/node-red-contrib-tesla

 

Nå har jeg forresten gjort det så jeg regner ut inneværende times gjennomsnitt strømforbruk. Så hvis jeg starter lading midt i en time, så kan jeg guffe på med max ladehastighet til snittet nærmer seg 10kW grensen, for så å sette ned strømtrekket på laderen først da. Dette for å utnytte timer med lav strømpris maksimalt (og lade raskest).

Lenke til kommentar
Del på andre sider

Lyst til å dele denne flowen for styring av ladeeffekt i NodeRed?  

Mitt mål er samme, holde meg under 10kW hos Agder Energi. Tenker å styre Easee-boksen istedenfor bilen, men logikken blir jo tilsvarende.

 

Mvh,

Knut

Lenke til kommentar
Del på andre sider

Jeg har også Agder Energi.

 

Har jo endel spesifikt til mitt oppsett for å få dette til å fungere her. Bruker status fra Teslamate for å starte logikken når bilen lader (https://github.com/adriankumpf/teslamate). Så leser jeg ut gjennomsnitt forbruk fra InfluxDB, og leser ut momentan-forbruk fra HAN til MQTT adapteret, lagret i nodered som en global variabel (AMSleser.no). Så henter jeg spenningen til laderen direkte fra laderen som jeg henter til flow variabler fra InfluxDB.

 

Her er alt i hvertfall:

Spoiler

[
    {
        "id": "379113ea02e97e88",
        "type": "mqtt in",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "topic": "teslamate/cars/1/state",
        "qos": "1",
        "datatype": "auto",
        "broker": "",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 160,
        "y": 380,
        "wires": [
            [
                "b816cee23a4ebaf7"
            ]
        ]
    },
    {
        "id": "b816cee23a4ebaf7",
        "type": "rbe",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "septopics": true,
        "property": "payload",
        "topi": "topic",
        "x": 150,
        "y": 420,
        "wires": [
            [
                "54a71ea954e0696f"
            ]
        ]
    },
    {
        "id": "54a71ea954e0696f",
        "type": "switch",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "property": "chargeCurrentAuto",
        "propertyType": "flow",
        "rules": [
            {
                "t": "true"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 270,
        "y": 420,
        "wires": [
            [
                "1fd01889170ed76d"
            ]
        ]
    },
    {
        "id": "1fd01889170ed76d",
        "type": "switch",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "charging",
                "vt": "str"
            },
            {
                "t": "neq",
                "v": "charging",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 390,
        "y": 420,
        "wires": [
            [
                "8bdd449d77c68dae"
            ],
            [
                "6550cce8913244af"
            ]
        ]
    },
    {
        "id": "6550cce8913244af",
        "type": "change",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "reset",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 360,
        "y": 460,
        "wires": [
            [
                "51b59363e15fa13b"
            ]
        ]
    },
    {
        "id": "c4c605e5f7e0749c",
        "type": "ui_switch",
        "z": "6d532fdb2fbe2a2d",
        "name": "amps auto",
        "label": "",
        "tooltip": "Charging current auto, also disables manual changes",
        "group": "56e3f7e8.beb4e8",
        "order": 4,
        "width": 1,
        "height": 1,
        "passthru": false,
        "decouple": "false",
        "topic": "chrgcurntauto",
        "topicType": "str",
        "style": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "onicon": "fa-magic",
        "oncolor": "white",
        "offvalue": "false",
        "offvalueType": "bool",
        "officon": "fa-magic",
        "offcolor": "gray",
        "animate": true,
        "className": "",
        "x": 130,
        "y": 500,
        "wires": [
            [
                "ac186d288849e54b"
            ]
        ]
    },
    {
        "id": "ac186d288849e54b",
        "type": "function",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "func": "if (msg.payload == true) {\n    flow.set('chargeCurrentAuto', true)\n    msg.enabled = false;\n} else {\n    flow.set('chargeCurrentAuto', false)\n    msg.enabled = true;\n}\ndelete msg.payload;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 280,
        "y": 500,
        "wires": [
            [
                "d29cd4f5c730d6b2"
            ]
        ]
    },
    {
        "id": "d29cd4f5c730d6b2",
        "type": "ui_slider",
        "z": "6d532fdb2fbe2a2d",
        "name": "Charging A setpoint",
        "label": "",
        "tooltip": "Set maximum charging current",
        "group": "56e3f7e8.beb4e8",
        "order": 3,
        "width": 7,
        "height": 1,
        "passthru": false,
        "outs": "end",
        "topic": "current",
        "topicType": "str",
        "min": "5",
        "max": "28",
        "step": "1",
        "className": "",
        "x": 450,
        "y": 500,
        "wires": [
            [
                "a614b7b19e6c6093"
            ]
        ]
    },
    {
        "id": "a614b7b19e6c6093",
        "type": "change",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "command",
                "pt": "msg",
                "to": "setChargingAmps",
                "tot": "str"
            },
            {
                "t": "move",
                "p": "payload",
                "pt": "msg",
                "to": "commandArgs.amps",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 640,
        "y": 500,
        "wires": [
            [
                "58189fee87b3d64d"
            ]
        ]
    },
    {
        "id": "51b59363e15fa13b",
        "type": "delay",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "pauseType": "delay",
        "timeout": "30",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 560,
        "y": 460,
        "wires": [
            [
                "8bdd449d77c68dae"
            ]
        ]
    },
    {
        "id": "8bdd449d77c68dae",
        "type": "influxdb in",
        "z": "6d532fdb2fbe2a2d",
        "influxdb": "",
        "name": "poweraverage",
        "query": "SELECT mean(\"value\") FROM \"technical\" WHERE (\"area\" = 'electricity' AND \"type\" = 'realtimePower') AND time > now() - 1h GROUP BY time(60m)",
        "rawOutput": false,
        "precision": "",
        "retentionPolicy": "",
        "org": "organisation",
        "x": 560,
        "y": 420,
        "wires": [
            [
                "51b59363e15fa13b",
                "743111551270fafd"
            ]
        ]
    },
    {
        "id": "743111551270fafd",
        "type": "function",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "func": "let powerUse = global.get('realtimePower');\nlet powerUseAvg = msg.payload['1'].mean;\nlet chargerCurrent = flow.get('chargerCurrent');\nlet chargerVoltage = flow.get('chargerVoltage');\nlet chargePower = 0;\nlet chargeAmp = 0;\nlet tesla = {};\n\n// if the house average for this hour is less than limit, set max amps\n// else... max allowed power draw of house - how much is actually used\n// convert watt to amps for three phase, take the voltage at charger + 3% safety factor.\nif (powerUseAvg < 9600) {\n    chargePower = 28;\n} else {\n    chargePower = 9750 - powerUse           // 9750W = 24,4A\n    chargeAmp = Math.floor(chargePower / ((chargerVoltage * 1.03) * Math.sqrt(3)) + chargerCurrent)\n}\n\n// minimum charging amps car allows is 5A\nif (chargeAmp < 5) {\n    chargeAmp = 5;\n}\n\nmsg.powerUseAvg = powerUseAvg;\nmsg.chargerVoltage = chargerVoltage * 1.03;\nmsg.chargerCurrent = chargerCurrent;\nmsg.powerUse = powerUse;\nmsg.chargePower = chargePower;\nmsg.chargeAmp = chargeAmp;\n\n// if new charge amp is equal to previous charge amp, do not send anything\n// OR... if the difference in available wattage is +-100W, do not bother to update amps to car.\n// OR... if charge current auto not selected (then the HMI-slider will select chargecurrent)\nif ((chargeAmp == chargerCurrent) || (Math.abs(chargePower) < 100)) {\n    return [msg, null];\n}\n\n\n\ntesla.command = 'setChargingAmps';\ntesla.commandArgs = {'amps': chargeAmp};\nreturn [msg, tesla];",
        "outputs": 2,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 740,
        "y": 420,
        "wires": [
            [
                "cdc9b580d777c9f0"
            ],
            [
                "58189fee87b3d64d"
            ]
        ],
        "outputLabels": [
            "Logging",
            "Tesla"
        ]
    },
    {
        "id": "58189fee87b3d64d",
        "type": "tesla-api",
        "z": "6d532fdb2fbe2a2d",
        "teslaConfig": "",
        "command": "",
        "name": "",
        "vehicleID": "",
        "autoWakeUp": true,
        "x": 840,
        "y": 300,
        "wires": [
            [
                "70e132e81558ec3d"
            ]
        ]
    },
    {
        "id": "18e3ec61a1513302",
        "type": "mqtt in",
        "z": "6d532fdb2fbe2a2d",
        "name": "",
        "topic": "teslamate/cars/1/charger_actual_current",
        "qos": "1",
        "datatype": "auto",
        "broker": "",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 200,
        "y": 540,
        "wires": [
            [
                "d29cd4f5c730d6b2"
            ]
        ]
    },
    {
        "id": "56e3f7e8.beb4e8",
        "type": "ui_group",
        "name": "Charging",
        "tab": "adafd97a.aa3488",
        "order": 1,
        "disp": true,
        "width": "8",
        "collapse": false,
        "className": ""
    },
    {
        "id": "adafd97a.aa3488",
        "type": "ui_tab",
        "name": "Tesla",
        "icon": "fa-car",
        "disabled": false,
        "hidden": false
    }
]

 

Alt som har med lading av bilen å gjøre ser slik ut... Begynner å bli rimelig uoversiktlig.

 

Screenshot 2022-07-17 154600.png

Screenshot 2022-07-17 155034.png

Endret av mongojarle
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.