NEWS
Neuer Adapter ioBroker.evcc
-
@micklafisch
Ja, läuft im Bridge Modus. Allerdings habe ich den Port eingegeben. Allerdings 7070 auf 7070.
Direkter Aufruf über den Browser mit xx.xx.xx.xx:7070 funktioniert ja auch.
Wird für Iobroker evt. noch ein anderer Port benötigt?Bri mir sieht es so aus:
-
erstmal vielen Dank für den Adapter.
Wäre es möglich, dass du einen neuen Datenpunkt für die Fahrzeugauswahl anlegst?
Ich habe in der evcc.yaml 2 Fahrzeuge angelegt und würde diese gerne über iobroker auswählen.
In der evcc Oberfläche sind die Fahrzeuge auswählbar.Viele Grüße
-
@k_o_bold wenn das mitgegeben wird. Hab halt nur einen Wagen. Besten debug log auf github posten dann geht es nicht unter
-
-
gelöscht
-
@newan sagte in Neuer Adapter ioBroker.evcc:
@frana120500 Er holt die Daten über rest. Kannst auch zurückschreiben, also Start,stop etc.
Wie ich ja schrieb, wenn einer mqtt nutzt und zufrieden ist, ist es ok da wird nicht viel mehr passieren.
Hier könnten wir aber noch weitere Funktionen anbauen wenn Bedarf bestehtHallo,
ich habe den Adapter erfolgreich Installiert, sehe die EVCC Stats in Objekte.
Soweit alles gut.Nun möchte ich folgende Werte über ioBroker zurückschreiben (in der evcc.yaml verändern):
bufferSoC --> den finde ich gar nicht in Objekte?
prioritySoCWenn ich den Wert für prioritySoC in ioBroker/Objekte verändere werden diese nach einer Zeit wieder
auf die Ursprungswerte der evcc.yaml zurückgesetzt.Kann prioritySoC überhaupt über ioBroker in EVCC verändert werden?
Gruß
-
Das ist das API aus der evcc Dok. Da kann man sofort sehen, was prinzipiell geändert werden kann oder nicht.
REST API GET /api/state: evcc state (static configuration and dynamic state as JSON object) GET /api/health: evcc health check POST /api/buffersoc/<soc>: battery buffer SoC in % POST /api/prioritysoc/<soc>: battery priority SoC in % POST /api/residualpower/<power>: grid residual power in W POST /api/smartcostlimit/<cost>: smart charging cost limit (previously known as "cheap" tariff) GET /api/tariff/<type>: list of prices (grid/feedin/planner) GET /api/sessions[?format=csv&lang=<lang>]: charging sessions GET /api/telemetry: telemetry enabled status POST /api/telemetry/<status>: enable/disable telemetry (true/false) Loadpoint POST /api/loadpoints/<id>/mode/<mode>: charge mode (off/pv/minpv/now) POST /api/loadpoints/<id>/minsoc/<soc>: minimum SoC in % POST /api/loadpoints/<id>/target/soc/<soc>: target SoC in % POST /api/loadpoints/<id>/target/energy/<energy>: target energy in kWh POST /api/loadpoints/<id>/target/time/<time>: target time in RFC3339 / ISO format ** DELETE /api/loadpoints/<id>/target/time: disable target charging GET /api/loadpoints/<id>/target/plan[?targetTime=<time>]: charging plan details POST /api/loadpoints/<id>/phases/<phases>: enabled phases (0=auto/1=1p/3=3p) POST /api/loadpoints/<id>/mincurrent/<current>: current minCurrent value in A POST /api/loadpoints/<id>/maxcurrent/<current>: current maxCurrent value in A POST /api/loadpoints/<id>/enable/threshold/<threshold>: threshold value in W POST /api/loadpoints/<id>/disable/threshold/<threshold>: threshold value in W POST /api/loadpoints/<id>/vehicle/<vehicleId>: set currently selected vehicle
-
@marty56 Hi! Ich versuche auch targetsoc und minsoc über die VIS im ioBroker zu verändern. Nach kurzer Zeit wird aber wieder der Wert aus der evcc.yaml übernommen!?
VG -
Neue Version online mit fix für Soc
-
Hallo,
leider kann ich EVCC nicht mehr mit dem Wert evcc.0.loadpoint.2.control.off steuern.
Ausschalten geht noch aber es kann nicht mehr eingeschaltet werden.
Auch nicht über den Wert evcc.0.loadpoint.2.control.pv.Loadpoint bleibt aus
Info:
EVCC Version 0.117.3
Adapter 0.0.7 -
Geht auch mit der Adapter Version 0.0.8 nicht.
Man kann ein paar mal hin und her schalten aber irgendwann funktioniert die Schalterstellung nicht mehr richtig.Das Objekt Stop charging ist "true" denoch wird mit PV geladen.
-
@Newan das Beste wäre, wenn es in control ein Datenpunkt Mode geben würde, der ein String ist und mit dem ivcc Parameter, pv, minpv, now und off beschrieben werden könnte. Diese "Button-datenpunkte" finde ich persönlich suboptimal
-
@marty56 Hab das immer so in meinen Adaptern gelöst und funktioniert hier wunderbar.
-
@solarmaxe Gerade getestet mit der neusten Evcc, und hier funktioniert es ohne Probleme?
-
Das ist auch mehr eine Geschmacksache.
Der Nutzer liest die Dokumentation von EVCC und dem Rest API und versucht dann zu verstehen, wie deine Adapter Datenpunkte funktionieren.
Und diese Buttons kommen so erst einmal nicht im Rest API vor und erzeugt eine vermeidbare Komplexität. Zumal dann doch der Datenpunkt "mode" in dem control Verzeichnis auftaucht, der dann aber wiederum nicht schreibbar ist.
Der Normalfall ist, dass man ein Objekt setzt und dann genau dasselbe Objekt lesen kann und damit auch prüfen.Das finde ich "hinten durch die Brust ins Auge". Aber wie gesagt, ist das Geschmacksache. Es gibt halt einfache Lösungen und komplexe.
Aber ich habe mich durchgewühlt und mir meine Script Workaround dazu jetzt gebaut.
Wäre noch schön, wenn mehr Rest API Calls unterstützt würden. Am besten alle. Dann ersparst Du Dir und deinen Nutzern langwierige Anfragen iund Diskussion von Use Cases im Issue Tracker.
-
@marty56
Ja wenn du erwartest, es gerne hättest, das das Full supported ist, dann wäre ich dir dankbar eine komplette Dokumentation zu schreiben.
Mir fehlt einfach die Zeit für sowas. Ich hab den Adapter entwickelt für mich und natürlich euch alle daran mitwirken. Ne OneManShow war nie mein Ziel! -
@newan
Dazu reichen meine Kenntnis leider nicht aus.Ich hatte auch nur gehofft in Deinem Interesse zu handeln mit den Vorschlägen und wollte Dich nicht negativ kritisieren.
Wenn das so rüber gekommen ist, bitte ich um Verzeihung. -
@marty56 Nein soweit alles gut, aber kommt so rüber als ob du es erwartest. Es ist halt Freizeit, und Zeit ist endlich.
Das was du rausgefunden hast kannst du einfach als Text verfassen, hier posten und ich nehme es als Doku gerne auf. Wäre ich dir Dankbar für.
Wenn du etwas liest hast du ganz schnell git drauf und kann PullRequest für die Doku erstellen. Kein Hexenwerk -
Ok, vielleicht mach ich auch was falsch.
Wie schaltest du wenn du von PV auf aus schalten willst.In Control stelle ich pv auf false und off auf True.
Das geht ein paarmal gut, nur irgendwann funktioniert das nicht mehr.
PV ist dann im EVCC an obwohl in control off auf true ist.
In Control werden auch die Objekte nicht aktualisiert. Evcc GUI zeigt PV und in dem Objekt steht immer noch false.
-
@newan Danke fürs Feedback.
Ich habe versucht den Adapter für variable Tarife mit Tibber zu nutzen. Leider fehlen dafür im Adapter einige Datenpunkte, die im EVCC Rest APi vorkommen.Ich sehe ja ein, dass Du nur das implementierst, was Du selber nutzt. Aber es wäre wirklich schön, wenn Du einfach das JSON für den Rest API call, /api/state zur Verfügung stellen würdest. Das wäre vermutlich kein großer Auswand für Dich.
Außerdem sollten noch die Datenpunkte, die den "Planner" unterstützen vorhanden sein. Das sind
- http://evcc:7070/api/loadpoints/1/target/time, mit POST und DELETE
- http://evcc:7070/api/smartcostlimit/'
Ich habe die fehlenden Funktionen jetzt für mich "hingefummelt". Leider kann ich aufgrund meiner mangelnden Kompetenz die Sachen nicht selber in den Adapter integrieren
const axios = require('axios'); //--------- EVCC Ladestatistik abrufen --------------- function get_last_session() { (async () => { var call = 'http://evcc:7070/api/state/' axios.get(call, {timeout: 3000}).then( response => { set(path_alias + "EVCC.sessionPrice",response.data.result.loadpoints[0].sessionPrice) set(path_alias + "EVCC.sessionPricePerKWh",response.data.result.loadpoints[0].sessionPricePerKWh) set(path_alias + "EVCC.sessionSolarPercentage",response.data.result.loadpoints[0].sessionSolarPercentage) }).catch(error => { log("Error Axios:(get_last_session) " + error.message,"error") }); })(); } //------ Zeit für den EVCC Planer für Loadpoint 1 setzen ---------- on({ id: path_alias + "EVCC.target_time", change: "any"}, function (obj) { log("setze Planner Target Time:" + obj.state.val); (async () => { var call = 'http://evcc:7070/api/loadpoints/1/target/time/'+ obj.state.val axios.post(call, {timeout: 8000}).then( () => { log("EVCC Successfully updated") }).catch(error => { log('Error Access EVCC:(set target time)' + error.message,"error") }); })(); }); //------ smarcostlimit für den EVCC Planer setzen ---------- on({ id: path_alias + "EVCC.smartcostlimit", change: "any"}, function (obj) { log("setze smartcostlimit:" + obj.state.val); (async () => { var call = 'http://evcc:7070/api/smartcostlimit/'+ obj.state.val axios.post(call, {timeout: 8000}).then( () => { log("EVCC Successfully updated") }).catch(error => { log('Error Access EVCC: (set smartcost limit)' + error.message,"error") }); })(); }); //------ Planungszeit löschen ---------- on({ id: path_alias + "EVCC.target_time_disable", change: "any"}, function (obj) { log("Lade Planung gelöscht") if (obj.state.val == true) { (async () => { var call = 'http://evcc:7070/api/loadpoints/1/target/time' axios.delete(call, {timeout: 8000}).then( () => { log("EVCC Successfully updated") }).catch(error => { log('Error Access EVCC:(delete planning time)' + error.message,"error") }); })(); } });