Seite 1 von 2
SoC: OVMS
Verfasst: Fr Sep 06, 2024 5:34 pm
von rleidner
Hier wird bei Fragen und Problemen zum SoC-Modul OVMS geholfen.
Aktueller Stand:
2.x: PR:
https://github.com/openWB/core/pull/1996 (in 2.1.6 RC1 und Master merged)
1.9: PR:
https://github.com/snaptec/openWB/pull/2855 (in 1.9.304.0 Nightly ab 2024-11-14 merged)
Das OVMS-Modul im Fahrzeug sendet je nach Ausführung die Daten über Mobilnetz und/oder WLAN an den OVMS-Server (z.B. ovms.dexters-web.de).
Die OVMS Smartphone-Apps (Android/ios) verbinden sich mit dem gewählten OVMS-Server.
Das SoC-Modul holt die Daten auch vom selben OVMS Server.
Folgende Daten werden bei der Konfiguration benötigt:
- Server URL
- User Id des Accounts im OVMS-Server
- Passwort des Accounts
- VehicleId des Fahrzeuges (wird bei der Einrichtung des OVMS-Moduls vergeben)
- Abfrage-Intervall wenn nicht geladen wird
- Abfrage-Intervall wenn geladen wird.
Re: SoC: OVMS
Verfasst: Mi Sep 11, 2024 7:14 am
von Stevie_AN
Hallo,
also eigentlich sendet das OVMS den SoC über MQTT ja bereits raus. Man müsste somit nur irgendwie der OpenWB klar machen, dass der ankommende Topic "ovms//*vehicleid*/metric/v/b/soc" als "openWB/set/lp/1/%Soc" verstanden werden soll.
ICH kann das leider nicht. Darum hab ich das über NodeRed lösen müssen.
WENN wir der OpenWB also beibringen wollen, dass sie den SoC vom OVMS richtig interpretieren soll, dann würde ich das nicht über Dexter's Server machen, sondern direkt im lokalen Netz regeln.
Und da bietet sich für mich halt MQTT an.
Re: SoC: OVMS
Verfasst: Mi Sep 11, 2024 9:17 am
von rleidner
Stevie_AN hat geschrieben: ↑Mi Sep 11, 2024 7:14 am
Hallo,
also eigentlich sendet das OVMS den SoC über MQTT ja bereits raus. Man müsste somit nur irgendwie der OpenWB klar machen, dass der ankommende Topic "ovms//*vehicleid*/metric/v/b/soc" als "openWB/set/lp/1/%Soc" verstanden werden soll.
ICH kann das leider nicht. Darum hab ich das über NodeRed lösen müssen.
WENN wir der OpenWB also beibringen wollen, dass sie den SoC vom OVMS richtig interpretieren soll, dann würde ich das nicht über Dexter's Server machen, sondern direkt im lokalen Netz regeln.
Und da bietet sich für mich halt MQTT an.
Danke für den Hinweis - ich bin normalerweise auch für MQTT.
Mein OVMS-Modul published über MQTT auf einen lokalen Broker (nicht der in der openWB).
Von dort mache ich einiges in Node-Red wie logging diverser Daten in InfluxDB oder Starten der Klimatisierung im smart wenn die 12V-Batterie-Spannung zu niedrig wird.
SoC/Range an die openWB weiterzureichen ist dann kein grosser Aufwand mehr.
Warum ich es dann doch über OVMS-Server gelöst habe:
Ich wollte die Daten aus dem OVMS auch, wenn das Fahrzeug unterwegs ist - deshalb über den OVMS-Server.
Ich habe das Modul hauptsächlich implementiert, weil zum Jahresende die smartEQ Cloud abgeschaltet wird und ich wollte einen gleichwertigen Ersatz.
BTW, falls Du es nicht gesehen hast:
Ohne spezielles SoC-Modul und Node-Red ginge es wohl lokal auch:
https://forum.openwb.de/viewtopic.php?p=7186#p7186
Re: SoC: OVMS
Verfasst: Mi Sep 11, 2024 10:59 am
von Stevie_AN
Ja, diese Lösung über den HTTP-Soc hatte ich am Anfang auch genau so eingerichtet. Es wäre natürlich interessant, ob man das OVMS-Script
Code: Alles auswählen
/**
/**
* Module plugin: openWB soc
* Version 1.0
*
* Dependencies:
* - OVMS firmware >= 3.2.008-266
*
* Installation:
* - Save as /store/scripts/lib/openwbsoc.js
* - Add to /store/scripts/ovmsmain.js: openwbsoc = require("lib/openwbsoc");
* - Issue "script reload"
*
*/
// Get state of charge:
function getSoc() {
var soc = OvmsMetrics.Value(["v.b.soc"]);
if ( soc )
print(Math.floor(soc));
else print(0);
}
// API exports:
exports.get = getSoc;
...so abändern kann, dass es auf dem V3-Server den SoC auf den Broker der OpenWB mit dem passenden Topic schickt?
Re: SoC: OVMS
Verfasst: Mi Sep 11, 2024 11:30 am
von rleidner
Stevie_AN hat geschrieben: ↑Mi Sep 11, 2024 10:59 am
...so abändern kann, dass es auf dem V3-Server den SoC auf den Broker der OpenWB mit dem passenden Topic schickt?
Da sehe ich keine einfache Lösung; ich denke dazu müsste man die OVMS Firmware um eine generische mqtt-publish Funktion erweitern.
Re: SoC: OVMS
Verfasst: So Dez 01, 2024 11:07 am
von hengsti
Vielen Dank erstmal für das Modul.
Mit dem Update 2.1.6 kam das OVMS-Modul hinzu, welches ich gleich nutzen wollte. Leider erhalte ich eine Fehlermeldung und habe keinen Plan was falsch sein soll.
Re: SoC: OVMS
Verfasst: So Dez 01, 2024 11:22 am
von rleidner
Hmm, ich nehme an Du hast in der Konfiguration des Moduls alles richtig eingetragen.
Was steht im SOC-Log? (Einstellungen - System - Fehlersuche - SoC-Log), evtl. den Debug Level mal auf Info stellen und den SoC im Desktop manuell abrufen (Kreispfeil).
Log eines Abrufs hier als Code Block posten (Button </>)
Re: SoC: OVMS
Verfasst: So Dez 01, 2024 11:49 am
von hengsti
https://paste.openwb.de/Sy3B0IdtD9X4iyv
Code: Alles auswählen
2024-12-01 12:41:42,687 - {modules.common.configurable_vehicle:56} - {DEBUG:fetch soc_ev1} - Vehicle Instance <class 'modules.vehicles.ovms.config.OVMS'>
2024-12-01 12:41:42,688 - {modules.common.configurable_vehicle:57} - {DEBUG:fetch soc_ev1} - Calculated SoC-State CalculatedSocState(imported_start=None, manual_soc=None, soc_start=80)
2024-12-01 12:41:42,688 - {modules.common.configurable_vehicle:58} - {DEBUG:fetch soc_ev1} - Vehicle Update Data VehicleUpdateData(plug_state=False, charge_state=False, imported=None, battery_capacity=32000, efficiency=92, soc_from_cp=None, timestamp_soc_from_cp=None)
2024-12-01 12:41:42,688 - {modules.common.configurable_vehicle:59} - {DEBUG:fetch soc_ev1} - General Config GeneralVehicleConfig(use_soc_from_cp=False, request_interval_charging=180, request_interval_not_charging=1800, request_only_plugged=False)
2024-12-01 12:41:42,689 - {modules.common.component_context:26} - {DEBUG:fetch soc_ev1} - Update Komponente ['OVMS']
2024-12-01 12:41:42,689 - {asyncio:59} - {DEBUG:fetch soc_ev1} - Using selector: EpollSelector
2024-12-01 12:41:42,697 - {urllib3.connectionpool:973} - {DEBUG:fetch soc_ev1} - Starting new HTTPS connection (1): dexters-web.de:6869
2024-12-01 12:41:42,697 - {urllib3.connectionpool:973} - {DEBUG:fetch soc_ev1} - Starting new HTTPS connection (1): dexters-web.de:6869
2024-12-01 12:41:42,858 - {urllib3.connectionpool:452} - {DEBUG:fetch soc_ev1} - https://dexters-web.de:6869 "POST /api/token?username=xxx&password=0F%26t5w8PRE HTTP/1.1" 201 165
2024-12-01 12:41:42,858 - {urllib3.connectionpool:452} - {DEBUG:fetch soc_ev1} - https://dexters-web.de:6869 "POST /api/token?username=xxx&password=0F%26t5w8PRE HTTP/1.1" 201 165
2024-12-01 12:41:42,861 - {modules.common.req:32} - {DEBUG:fetch soc_ev1} - Get-Response: {"application":"owb-ovms-2.x-vh1","owner":"xxx","permit":"auth","purpose":"get soc","token":"c824e9bef323e8566c4b2a0b7f9a0ea2cb166ef996ee79063ce8e579602b42cd"}
2024-12-01 12:41:42,862 - {modules.vehicles.ovms.api:52} - {DEBUG:fetch soc_ev1} - create_token status_code=201
2024-12-01 12:41:42,863 - {modules.vehicles.ovms.api:54} - {DEBUG:fetch soc_ev1} - create_token response={
"application": "owb-ovms-2.x-vh1",
"owner": "xxx",
"permit": "auth",
"purpose": "get soc",
"token": "c824e9bef323e8566c4b2a0b7f9a0ea2cb166ef996ee79063ce8e579602b42cd"
}
2024-12-01 12:41:42,865 - {modules.common.fault_state:49} - {ERROR:fetch soc_ev1} - OVMS: FaultState FaultStateLevel.ERROR, FaultStr <class 'AttributeError'> ("'api' object has no attribute 'confDict'",), Traceback:
Traceback (most recent call last):
File "/var/www/html/openWB/packages/modules/common/configurable_vehicle.py", line 66, in update
car_state = self._get_carstate_by_source(vehicle_update_data, source)
File "/var/www/html/openWB/packages/modules/common/configurable_vehicle.py", line 110, in _get_carstate_by_source
return self.__component_updater(vehicle_update_data)
File "/var/www/html/openWB/packages/modules/vehicles/ovms/soc.py", line 24, in updater
return fetch(vehicle_update_data, vehicle_config, vehicle)
File "/var/www/html/openWB/packages/modules/vehicles/ovms/soc.py", line 18, in fetch
soc, range, soc_ts = api.fetch_soc(config, vehicle)
File "/var/www/html/openWB/packages/modules/vehicles/ovms/api.py", line 190, in fetch_soc
soc, range, soc_ts = loop.run_until_complete(a._fetch_soc(conf, vehicle))
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/var/www/html/openWB/packages/modules/vehicles/ovms/api.py", line 143, in _fetch_soc
self.token = self.create_token()
File "/var/www/html/openWB/packages/modules/vehicles/ovms/api.py", line 56, in create_token
log.debug("create_token confDict=" + dumps(self.confDict, indent=4))
AttributeError: 'api' object has no attribute 'confDict'
Re: SoC: OVMS
Verfasst: So Dez 01, 2024 12:09 pm
von rleidner
Danke für die Rückmeldung.
Da ist noch ein Fehler wenn das Modul neu konfiguriert wird.
Das hatte ich leider bei mir lange nicht mehr getestet.
Ich behebe das und melde mich, wenn es ein PR gibt (dann aber erst mal im Zweig master).
Re: SoC: OVMS
Verfasst: So Dez 01, 2024 12:12 pm
von hengsti
Okay. Vielen Dank für deine Mühe.