Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
19a9835
Update publish_docs_to_wiki.yml
MartinRinas Jun 28, 2023
07abf0b
Merge branch 'openWB:master' into master
MartinRinas Sep 29, 2023
1ae671a
Merge branch 'openWB:master' into master
MartinRinas Oct 2, 2023
2646d1a
Merge branch 'openWB:master' into master
MartinRinas Oct 12, 2023
f8944c5
Merge branch 'openWB:master' into master
MartinRinas Oct 15, 2023
e83795f
Merge branch 'openWB:master' into master
MartinRinas Oct 17, 2023
c4a0d32
Merge branch 'openWB:master' into master
MartinRinas Oct 20, 2023
14694d4
Merge branch 'openWB:master' into master
MartinRinas Oct 26, 2023
8afa5c2
Merge branch 'openWB:master' into master
MartinRinas Dec 20, 2023
6be1634
Merge branch 'openWB:master' into master
MartinRinas Jan 19, 2024
b6074a1
Merge branch 'openWB:master' into master
MartinRinas Feb 1, 2024
6f581a8
fems: support multiple and single segment regex rqeuests (#1397)
LKuemmel Feb 1, 2024
719a191
one connect to server for all components
LKuemmel Jan 16, 2024
0387eed
0.1s sleep between readings
LKuemmel Jan 22, 2024
e033d36
fix self.data --> self._data in fems/bat.py
dj3mu Feb 1, 2024
5773c81
Duo+RFID: fix matching if other cp is plugged
LKuemmel Feb 2, 2024
fd411b4
Revert "fix rct crashes"
LKuemmel Feb 2, 2024
9577b56
RCT: 0.5s sleep between server connections
LKuemmel Feb 2, 2024
e360cb8
build UI
LKuemmel Feb 2, 2024
59e83fa
Calculate_soc_tronity (#1398)
MartinRinas Feb 2, 2024
c32d6d8
Merge branch 'master' of https://github.com/openWB/core
MartinRinas Feb 10, 2024
909fb3f
Merge branch 'master' of https://github.com/openWB/core
MartinRinas Feb 19, 2024
3aa4283
Merge branch 'master' of https://github.com/openWB/core
MartinRinas Mar 1, 2024
9d9c7b3
Merge branch 'master' of https://github.com/openWB/core
MartinRinas Mar 5, 2024
17dcaea
Merge branch 'openWB:master' into master
MartinRinas Apr 2, 2024
65e9b0e
Merge branch 'openWB:master' into master
MartinRinas Apr 3, 2024
9d78bd5
Merge branch 'openWB:master' into master
MartinRinas Jun 1, 2024
d936545
Merge branch 'openWB:master' into master
MartinRinas Jun 25, 2024
13cc4de
Merge branch 'openWB:master' into master
MartinRinas Oct 8, 2024
068bf56
Merge branch 'openWB:master' into master
MartinRinas Dec 13, 2024
27cde5d
Merge branch 'openWB:master' into master
MartinRinas Dec 18, 2024
68261e6
Merge branch 'master' of https://github.com/MartinRinas/core
MartinRinas Dec 20, 2024
baccc10
Merge branch 'openWB:master' into master
MartinRinas Dec 28, 2024
1f4d639
add timestamp patter
MartinRinas Dec 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/publish_docs_to_wiki.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ on:

env:
USER_TOKEN: ${{ secrets.WIKI_ACTION_TOKEN }} # This is the repository secret
USER_NAME: LKuemmel # Enter the username of your (bot) account
USER_EMAIL: lena.kuemmel@openwb.de # Enter the e-mail of your (bot) account
USER_NAME: MartinRinas # Enter the username of your (bot) account
USER_EMAIL: martrin@microsoft.com # Enter the e-mail of your (bot) account
OWNER: ${{ github.event.repository.owner.name }} # This is the repository owner
REPOSITORY_NAME: ${{ github.event.repository.name }} # This is the repository name

Expand Down
2 changes: 2 additions & 0 deletions packages/modules/vehicles/json/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ def __init__(
url: Optional[str] = None,
soc_pattern: Optional[str] = None,
range_pattern: Optional[str] = None,
timestamp_pattern: Optional[str] = None,
timeout: Optional[int] = None,
calculate_soc: bool = False
):
self.url = url
self.soc_pattern = soc_pattern
self.range_pattern = range_pattern
self.timestamp_pattern = timestamp_pattern
self.timeout = timeout
self.calculate_soc = calculate_soc

Expand Down
37 changes: 31 additions & 6 deletions packages/modules/vehicles/json/soc.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,70 @@
from modules.common.configurable_vehicle import ConfigurableVehicle
from modules.vehicles.json.config import JsonSocSetup, JsonSocConfiguration
from typing import Any, Dict
from datetime import datetime


log = logging.getLogger(__name__)


def extract_to_epoch(input_string: str) -> float:
# If already an integer, return it
if isinstance(input_string, int) or isinstance(input_string, float):
return int(input_string)

# Try parsing as UTC formatted time
try:
dt = datetime.strptime(input_string, "%Y-%m-%dT%H:%M:%SZ")
return int(dt.timestamp())
except ValueError:
log.exception(f"Kein UTC formatiertes Datum in '{input_string}' gefunden.")
return None


def parse_data(data: Dict[str, Any], pattern: str) -> float:
log.debug(f"parse_data: data='{data}' pattern='{pattern}'")

if pattern == "":
raise ValueError("Please provide pattern to parse data")
raise ValueError("Kein Pattern zum extrahieren der Daten definiert. Bitte in der Konfiguration aktualisieren.")

result = jq.compile(pattern).input(data).first()
if result is None:
raise ValueError(f"Pattern {pattern} did not match any data in {data}")
raise ValueError(f"Pattern {pattern} hat keine Ergebnisse in '{data}' geliefert.")

log.debug(f"result='{result}'")
return float(result)


def fetch_soc(config: JsonSocSetup) -> CarState:
url = config.configuration.url
soc_pattern = config.configuration.soc_pattern
range_pattern = config.configuration.range_pattern
timestamp_pattern = config.configuration.timestamp_pattern
timeout = config.configuration.timeout if isinstance(config.configuration.timeout, int) else None

if url is None or url == "":
log.warning("url not defined, set soc to 0")
log.warning("URL nicht definiert, setze SOC auf 0")
return CarState(0, 0)
else:
raw_data: Dict[str, Any] = req.get_http_session().get(url, timeout=timeout).json()

soc = parse_data(raw_data, soc_pattern)

if range_pattern is None or range_pattern == "":
log.warning("range_pattern not defined, set range to 0")
range = 0
log.debug("Kein Pattern für Range angegeben, setze Range auf None.")
range = None
else:
range = int(parse_data(raw_data, range_pattern))

return CarState(soc, range)
if timestamp_pattern is None or timestamp_pattern == "":
log.debug("Kein Pattern für Timestamp angegeben, setze Timestamp auf None.")
timestamp = None
else:
log.debug(f"timestamp_pattern='{timestamp_pattern}'")
timestamp = parse_data(raw_data, timestamp_pattern)
timestamp = extract_to_epoch(timestamp)

return CarState(soc=soc, range=range, soc_timestamp=timestamp)


def create_vehicle(vehicle_config: JsonSocSetup, vehicle: int):
Expand Down