diff --git a/devices/protocols/Meross/xaal/meross/gw.py b/devices/protocols/Meross/xaal/meross/gw.py
index 4ba5b2b70bd7be0296d5f1f3f69c1c326e3c5841..7d373af346d3bbfb9af01c89b8a535334362c33f 100644
--- a/devices/protocols/Meross/xaal/meross/gw.py
+++ b/devices/protocols/Meross/xaal/meross/gw.py
@@ -38,15 +38,21 @@ class GW(object):
         self.cfg = cfg
     
     async def setup(self):
-        config = self.cfg.get('config',{})
-        login = config.get('login',None)
-        passwd = config.get('password',None)
+        config = self.cfg.get('config', {})
+        login = config.get('login', None)
+        passwd = config.get('password', None)
+        region = config.get('region', 'eu')
+        
         if not login or not passwd:
             logger.warning('No email or password in configuration file')
             return
+        if region not in ['eu', 'ap', 'us']:
+            logger.warning('Please select the right region: eu / ap / us')
+            return
 
+        base_url = "https://iotx-%s.meross.com" % region
         logger.info("Meross devices discovery")
-        self.client = await MerossHttpClient.async_from_user_password(email=login, password=passwd)
+        self.client = await MerossHttpClient.async_from_user_password(api_base_url=base_url, email=login, password=passwd)
         self.manager = MerossManager(http_client=self.client)
         # from meross_iot.manager import TransportMode
         # self.manager.default_transport_mode = TransportMode.LAN_HTTP_FIRST