]> git.giorgioravera.it Git - mercedes_me_api.git/commitdiff
Fixed configuration validation (#21)
authorGiorgio Ravera <giorgio.ravera@gmail.com>
Tue, 29 Dec 2020 14:42:02 +0000 (15:42 +0100)
committerGitHub Actions <41898282+github-actions[bot]@users.noreply.github.com>
Tue, 29 Dec 2020 14:44:29 +0000 (14:44 +0000)
README.md
config.py
custom_components/mercedesmeapi/__init__.py
custom_components/mercedesmeapi/config.py
info.md

index 5625ba3b793a934770b10d0a3d647d471b3d0150..be823efb90628fa36673ec4180e0ab6eec7be523 100644 (file)
--- a/README.md
+++ b/README.md
@@ -45,8 +45,8 @@ mercedesmeapi:
   client_id: <**INSERT_YOUR_CLIENT_ID**>
   client_secret: <**INSERT_YOUR_CLIENT_SECRET**>
   vehicle_id: <**INSERT_YOUR_VEHICLE_ID**>
-  enable_resources_file: <**ENABLE (True) OR DISABLE (False) RESOURCES - OPTIONAL **>
-  scan_interval: <** TIME PERIOD (NUMBER OF SECONDS) TO REFRESH RESOURCES - OPTIONAL **>
+  enable_resources_file: <**ENABLE (true) OR DISABLE (false) RESOURCES - OPTIONAL (DEFAULT DISABLED)**>
+  scan_interval: <** TIME PERIOD (NUMBER OF SECONDS) TO REFRESH RESOURCES - OPTIONAL**>
 ```
 2) Actually it's not possible to retrieve the token from scratch. Please use the other script to retrieve the first token and copy it into hacs folder (.mercedesme_token)
 
@@ -64,7 +64,7 @@ To use this script it's necessary to perform the following instructions:
 CLIENT_ID=<**INSERT_YOUR_CLIENT_ID**>
 CLIENT_SECRET=<**INSERT_YOUR_CLIENT_SECRET**>
 VEHICLE_ID=<**INSERT_YOUR_VEHICLE_ID**>
-ENABLE_RESOURCES_FILE: <**ENABLE (True) OR DISABLE (False) RESOURCES - OPTIONAL **>
+ENABLE_RESOURCES_FILE: <**ENABLE (true) OR DISABLE (false) RESOURCES - (DEFAULT DISABLED)**>
 ```
 
 where CLIENT_ID and CLIENT_SECRET referring to the application information that can be found in [Mercedes Developer Console](https://developer.mercedes-benz.com/console) and VEHICLE_ID is the VIN of your car.
index ebca0dc9096db1f9b7e3062bb59b576e894a9e0b..b449f97cfab922d5371d05b392c4465df18c9311 100644 (file)
--- a/config.py
+++ b/config.py
@@ -25,11 +25,6 @@ class MercedesMeConfig:
     ########################
     def __init__(self):
         self.config_file = CONFIG_FILE
-        self.client_id = ""
-        self.client_secret = ""
-        self.vin = ""
-        self.enable_resources_file = True
-        self.token = ""
 
     ########################
     # Read Configuration
@@ -63,19 +58,10 @@ class MercedesMeConfig:
             return False
         # Enable Resources File (optional)
         valueFromFile = f.get(CONF_ENABLE_RESOURCES_FILE)
-        if not valueFromFile:
-            _LOGGER.error(
-                f"No {CONF_ENABLE_RESOURCES_FILE} found in the configuration, using default value ({self.enable_resources_file})"
-            )
+        if (valueFromFile == "true") | (valueFromFile == "True"):
+            self.enable_resources_file = True
         else:
-            if valueFromFile == "True":
-                self.enable_resources_file = True
-            elif valueFromFile == "False":
-                self.enable_resources_file = False
-            else:
-                _LOGGER.error(
-                    f"Wrong {CONF_ENABLE_RESOURCES_FILE} value found in the configuration ({valueFromFile}), using default value ({self.enable_resources_file})"
-                )
+            self.enable_resources_file = False
         # Read Token
         self.token = MercedesMeOauth(self.client_id, self.client_secret)
         if not self.token.ReadToken():
index 19d4e0e584b594e86d32ddb3c58bcd7b63e4d81d..ad3ca8c52b0c9650e7d055389b19868af23734b4 100644 (file)
@@ -8,12 +8,38 @@ https://github.com/xraver/mercedes_me_api/
 """
 from datetime import timedelta
 import logging
+import voluptuous as vol
+
+from homeassistant.const import (
+    CONF_SCAN_INTERVAL,
+#    LENGTH_KILOMETERS,
+#    LENGTH_MILES,
+)
+from homeassistant.helpers import discovery, config_validation as cv
 
 from .config import MercedesMeConfig
 from .oauth import MercedesMeOauth
 from .resources import MercedesMeResources
 from .const import *
 
+# Config Schema
+CONFIG_SCHEMA = vol.Schema (
+    {
+        DOMAIN: vol.Schema (
+            {
+                vol.Required(CONF_CLIENT_ID): cv.string,
+                vol.Required(CONF_CLIENT_SECRET): cv.string,
+                vol.Required(CONF_VEHICLE_ID): cv.string,
+                vol.Optional(CONF_ENABLE_RESOURCES_FILE, default=False): cv.boolean,
+                vol.Optional(CONF_SCAN_INTERVAL, default=30): vol.All(
+                    cv.positive_int, vol.Clamp(min=120)
+                ),
+            }
+        )
+    },
+    extra=vol.ALLOW_EXTRA,
+)
+
 # Logger
 _LOGGER = logging.getLogger(__name__)
 
index 7043cc2fcb228eb51019feba8ba5cc49e79f78eb..312f7f2626cd329e55d29aa8c9252fe9b910c313 100644 (file)
@@ -7,7 +7,6 @@ For more details about this component, please refer to the documentation at
 https://github.com/xraver/mercedes_me_api/
 """
 import logging
-import voluptuous as vol
 
 from homeassistant.const import (
     CONF_SCAN_INTERVAL,
@@ -15,30 +14,12 @@ from homeassistant.const import (
 #    LENGTH_MILES,
 )
 
-from homeassistant.helpers import discovery, config_validation as cv
-
-from .oauth import MercedesMeOauth
 from .const import *
+from .oauth import MercedesMeOauth
 
 # Logger
 _LOGGER = logging.getLogger(__name__)
 
-CONFIG_SCHEMA = vol.Schema (
-    {
-        DOMAIN: vol.Schema (
-            {
-                vol.Required(CONF_CLIENT_ID): cv.string,
-                vol.Required(CONF_CLIENT_SECRET): cv.string,
-                vol.Required(CONF_VEHICLE_ID): cv.string,
-                vol.Optional(CONF_ENABLE_RESOURCES_FILE, default=True): cv.boolean,
-                vol.Optional(CONF_SCAN_INTERVAL, default=30): vol.All(
-                    cv.positive_int, vol.Clamp(min=60)
-                ),
-            }
-        )
-    },
-    extra=vol.ALLOW_EXTRA,
-)
 
 class MercedesMeConfig:
 
@@ -48,35 +29,22 @@ class MercedesMeConfig:
     def __init__(self, hass, config):
         # Home Assistant structures
         self.hass = hass
-        self.config = config
-        self.client_id = ""
-        self.client_secret = ""
-        self.vin = ""
-        self.enable_resources_file = True
-        self.token = ""
+        self.config = config[DOMAIN]
 
     ########################
     # Read Configuration
     ########################
     def ReadConfig(self):
-        needToRefresh = False
-
-        config = self.config[DOMAIN]
         # Client ID
-        self.client_id = config[CONF_CLIENT_ID]
+        self.client_id = self.config.get(CONF_CLIENT_ID)
         # Client Secret
-        self.client_secret = config[CONF_CLIENT_SECRET]
+        self.client_secret = self.config.get(CONF_CLIENT_SECRET)
         # Vehicle ID
-        self.vin = config[CONF_VEHICLE_ID]
+        self.vin = self.config.get(CONF_VEHICLE_ID)
         # Enable Resources File (optional)
-        if (config[CONF_ENABLE_RESOURCES_FILE] == True):
-            self.enable_resources_file = True
-        elif(config[CONF_ENABLE_RESOURCES_FILE] == False):
-            self.enable_resources_file = False        
-        else:
-            _LOGGER.error(f"Wrong {CONF_ENABLE_RESOURCES_FILE} value found in configuration ({config[CONF_ENABLE_RESOURCES_FILE]}), using default value ({self.enable_resources_file})")
+        self.enable_resources_file = self.config.get(CONF_ENABLE_RESOURCES_FILE)
         # Scan Interval (optional)
-        self.scan_interval = config[CONF_SCAN_INTERVAL]
+        self.scan_interval = self.config.get(CONF_SCAN_INTERVAL)
         # Read Token
         self.token = MercedesMeOauth(self.hass, self.client_id, self.client_secret)
         if not self.token.ReadToken():
diff --git a/info.md b/info.md
index ad14e9a8c8cc2de3443eeb38009f6aca8c451ce6..4632a6a5aaa00d04bdb8ec3c934afd7c8ec25f3f 100644 (file)
--- a/info.md
+++ b/info.md
@@ -45,8 +45,8 @@ mercedesmeapi:
   client_id: <**INSERT_YOUR_CLIENT_ID**>
   client_secret: <**INSERT_YOUR_CLIENT_SECRET**>
   vehicle_id: <**INSERT_YOUR_VEHICLE_ID**>
-  enable_resources_file: <**ENABLE (True) OR DISABLE (False) RESOURCES - OPTIONAL **>
-  scan_interval: <** TIME PERIOD (NUMBER OF SECONDS) TO REFRESH RESOURCES - OPTIONAL **>
+  enable_resources_file: <**ENABLE (true) OR DISABLE (false) RESOURCES - OPTIONAL (DEFAULT DISABLED)**>
+  scan_interval: <** TIME PERIOD (NUMBER OF SECONDS) TO REFRESH RESOURCES - OPTIONAL**>
 ```
 2) Actually it's not possible to retrieve the token from scratch. Please use the other script to retrieve the first token and copy it into hacs folder (.mercedesme_token)