Initial commit

This commit is contained in:
2025-12-15 13:01:11 +01:00
commit a409072428
10 changed files with 250 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
.idea
.venv
build
ArielleCollect.egg-info
View File
+26
View File
@@ -0,0 +1,26 @@
[build-system]
requires = [
"setuptools>=61.0",
]
build-backend = "setuptools.build_meta"
[project]
name = "ArielleCollect"
description = "Application for collect data from Arielle (id.3)"
dynamic = ["version"]
requires-python = ">=3.9"
authors = [
{ name = "Jens Ahrensfeld" }
]
dependencies = [
"CarConnectivity[all] @ git+https://github.com/tillsteinbach/CarConnectivity.git@main"
]
readme = "README.md"
[project.scripts]
post_install = "arielle_collect.post_install:main"
[tool.setuptools]
package-dir = {"" = "src"}
packages = ["arielle_collect"]
+3
View File
@@ -0,0 +1,3 @@
build
ArielleCollect.egg-info
View File
+91
View File
@@ -0,0 +1,91 @@
"""
This script is an example showing how to retrieve all vehicles from the account using the CarConnectivity library.
Functions:
main: The main function that sets up argument parsing, logging, and retrieves vehicle data.
Usage:
python all_cars.py <config> [--tokenstorefile TOKENSTOREFILE] [-v] [--logging-format LOGGING_FORMAT] [--logging-date-format LOGGING_DATE_FORMAT]
Arguments:
config: Path to the configuration file.
--tokenstorefile: File to store tokenstore (default: /tmp/tokenstore).
-v, --verbose: Logging level (verbosity).
--logging-format: Logging format configured for python logging (default: %(asctime)s:%(levelname)s:%(message)s).
--logging-date-format: Logging date format configured for python logging (default: %Y-%m-%dT%H:%M:%S%z).
Logging Levels:
DEBUG, INFO, WARNING, ERROR, CRITICAL
Example:
python all_cars.py config.json --tokenstorefile /path/to/tokenstore -v
"""
from __future__ import annotations
from typing import TYPE_CHECKING
import argparse
import json
import os
import tempfile
import logging
from carconnectivity import carconnectivity
if TYPE_CHECKING:
from typing import List, Optional
from carconnectivity.garage import Garage
LOG_LEVELS: List[str] = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
DEFAULT_LOG_LEVEL = "ERROR"
LOG: logging.Logger = logging.getLogger("carconnectivity-example")
# pylint: disable=duplicate-code
def main() -> None:
""" Simple example showing how to retrieve all vehicles from the account """
parser = argparse.ArgumentParser(
prog='allCars',
description='Example retrieving all cars in all configured connectors'
)
parser.add_argument('config', help='Path to the configuration file')
default_temp: str = os.path.join(tempfile.gettempdir(), 'tokenstore')
parser.add_argument('--tokenstorefile', help=f'file to store tokenstore (default: {default_temp})', default=default_temp)
logging_group = parser.add_argument_group('Logging')
logging_group.add_argument('-v', '--verbose', action="append_const", help='Logging level (verbosity)', const=-1,)
logging_group.add_argument('--logging-format', dest='logging_format', help='Logging format configured for python logging '
'(default: %%(asctime)s:%%(module)s:%%(message)s)', default='%(asctime)s:%(levelname)s:%(message)s')
logging_group.add_argument('--logging-date-format', dest='logging_date_format', help='Logging format configured for python logging '
'(default: %%Y-%%m-%%dT%%H:%%M:%%S%%z)', default='%Y-%m-%dT%H:%M:%S%z')
args = parser.parse_args()
log_level: int = LOG_LEVELS.index(DEFAULT_LOG_LEVEL)
for adjustment in args.verbose or ():
log_level = min(len(LOG_LEVELS) - 1, max(log_level + adjustment, 0))
logging.basicConfig(level=LOG_LEVELS[log_level], format=args.logging_format, datefmt=args.logging_date_format)
print('# read CarConnectivity configuration')
with open(args.config, 'r', encoding='utf-8') as config_file:
config_dict = json.load(config_file)
print('# Login')
car_connectivity = carconnectivity.CarConnectivity(config=config_dict, tokenstore_file=args.tokenstorefile)
print('# fetch data')
car_connectivity.fetch_all()
print('# getData')
garage: Optional[Garage] = car_connectivity.get_garage()
if garage is not None:
print('# list all vehicles')
for vehicle in garage.list_vehicles():
print(f'# {vehicle}')
print('# Shutdown')
car_connectivity.shutdown()
print('# done')
if __name__ == '__main__':
main()
+28
View File
@@ -0,0 +1,28 @@
{
"carConnectivity": {
"connectors": [
{
"type": "volkswagen",
"config": {
"interval": 180,
"force_enable_access": true,
"username": "alex.thoni@gmx.de",
"password": "Arielle2024!"
}
}
],
"plugins": [
{
"type": "webui",
"disabled": false,
"config": {
"interval": 30,
"username": "jens",
"password": "jens",
"log_level": "debug",
"port": 8087
}
}
]
}
}
View File
+7
View File
@@ -0,0 +1,7 @@
#import patch
#pset = patch.fromfile(unified_diff_filename)
#pset.apply()
print("Post install executed")
+90
View File
@@ -0,0 +1,90 @@
"""
This script is an example showing how to retrieve all vehicles from the account using the CarConnectivity library.
Functions:
main: The main function that sets up argument parsing, logging, and retrieves vehicle data.
Usage:
python all_cars.py <config> [--tokenstorefile TOKENSTOREFILE] [-v] [--logging-format LOGGING_FORMAT] [--logging-date-format LOGGING_DATE_FORMAT]
Arguments:
config: Path to the configuration file.
--tokenstorefile: File to store tokenstore (default: /tmp/tokenstore).
-v, --verbose: Logging level (verbosity).
--logging-format: Logging format configured for python logging (default: %(asctime)s:%(levelname)s:%(message)s).
--logging-date-format: Logging date format configured for python logging (default: %Y-%m-%dT%H:%M:%S%z).
Logging Levels:
DEBUG, INFO, WARNING, ERROR, CRITICAL
Example:
python all_cars.py config.json --tokenstorefile /path/to/tokenstore -v
"""
from __future__ import annotations
import time
from typing import TYPE_CHECKING
import argparse
import json
import os
import tempfile
import logging
from carconnectivity import carconnectivity
if TYPE_CHECKING:
from typing import List, Optional
from carconnectivity.garage import Garage
LOG_LEVELS: List[str] = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
DEFAULT_LOG_LEVEL = "ERROR"
LOG: logging.Logger = logging.getLogger("carconnectivity-example")
# pylint: disable=duplicate-code
def main() -> None:
""" Simple example showing how to retrieve all vehicles from the account """
parser = argparse.ArgumentParser(
prog='allCars',
description='Example retrieving all cars in all configured connectors'
)
parser.add_argument('config', help='Path to the configuration file')
default_temp: str = os.path.join(tempfile.gettempdir(), 'tokenstore')
parser.add_argument('--tokenstorefile', help=f'file to store tokenstore (default: {default_temp})', default=default_temp)
logging_group = parser.add_argument_group('Logging')
logging_group.add_argument('-v', '--verbose', action="append_const", help='Logging level (verbosity)', const=-1,)
logging_group.add_argument('--logging-format', dest='logging_format', help='Logging format configured for python logging '
'(default: %%(asctime)s:%%(module)s:%%(message)s)', default='%(asctime)s:%(levelname)s:%(message)s')
logging_group.add_argument('--logging-date-format', dest='logging_date_format', help='Logging format configured for python logging '
'(default: %%Y-%%m-%%dT%%H:%%M:%%S%%z)', default='%Y-%m-%dT%H:%M:%S%z')
args = parser.parse_args()
log_level: int = LOG_LEVELS.index(DEFAULT_LOG_LEVEL)
for adjustment in args.verbose or ():
log_level = min(len(LOG_LEVELS) - 1, max(log_level + adjustment, 0))
logging.basicConfig(level=LOG_LEVELS[log_level], format=args.logging_format, datefmt=args.logging_date_format)
print('# read CarConnectivity configuration')
with open(args.config, 'r', encoding='utf-8') as config_file:
config_dict = json.load(config_file)
print('# Login')
car_connectivity = carconnectivity.CarConnectivity(config=config_dict, tokenstore_file=args.tokenstorefile)
print('# startup')
car_connectivity.startup()
while True:
time.sleep(1)
car_connectivity.shutdown()
print('# done')
if __name__ == '__main__':
main()