diff --git a/clearblade/cloud/iot_v1/__init__.py b/clearblade/cloud/iot_v1/__init__.py index 3b736104..86561049 100644 --- a/clearblade/cloud/iot_v1/__init__.py +++ b/clearblade/cloud/iot_v1/__init__.py @@ -34,4 +34,12 @@ "ListDeviceRegistryPager", "ListDeviceRegistriesAsyncPager", "ListDevicesPager", - "ListDevicesAsyncPager") + "ListDevicesAsyncPager", + "MqttState", + "HtttState", + "LogLevel", + "GatewayType", + "GatewayAuthMethod", + "PublicKeyCertificateFormat", + "PublicKeyFormat" + ) diff --git a/clearblade/cloud/iot_v1/device_types.py b/clearblade/cloud/iot_v1/device_types.py index 528aa652..94ac4ed4 100644 --- a/clearblade/cloud/iot_v1/device_types.py +++ b/clearblade/cloud/iot_v1/device_types.py @@ -1,5 +1,5 @@ from typing import List - +from .resources import GatewayType, LogLevel from .utils import get_value @@ -9,17 +9,16 @@ class Device(): """ # TODO: find a better way to construct the Device object. I dont like so much parameter in a constructor - def __init__(self, id: str = None, name: str = None, num_id: str = None, + def __init__(self, id: str, num_id: str = None, credentials: list = [], last_heartbeat_time: str = None, last_event_time: str = None, last_state_time: str = None, last_config_ack_time: str = None, last_config_send_time: str = None, blocked: bool = False, - last_error_time: str = None, last_error_status_code: dict = {"code":None, "message":""}, + last_error_time: str = None, last_error_status_code: dict = None, config: dict = {"cloudUpdateTime":None, "version":""} , state: dict = {"updateTime":None, "binaryData":None}, - log_level: str = "NONE", meta_data: dict = {}, gateway_config : dict = {}) -> None: + log_level: str = LogLevel.NONE, meta_data: dict = {}, gateway_config : dict = {"gatewayType": GatewayType.NON_GATEWAY}) -> None: self._id = id - self._name = name self._num_id = num_id self._credentials = credentials self._last_heartbeat_time = last_heartbeat_time @@ -38,7 +37,7 @@ def __init__(self, id: str = None, name: str = None, num_id: str = None, @staticmethod def from_json(json): - return Device(id=json['id'], name=json['name'], num_id=json['numId'], + return Device(id=json['id'], num_id=json['numId'], credentials=json['credentials'], last_heartbeat_time=json['lastHeartbeatTime'], last_event_time=json['lastEventTime'], last_state_time=json['lastStateTime'], last_config_ack_time=json['lastConfigAckTime'], last_config_send_time=json['lastConfigSendTime'], @@ -51,10 +50,6 @@ def from_json(json): def id(self): return self._id - @property - def name(self): - return self._name - @property def num_id(self): return self._num_id @@ -63,6 +58,10 @@ def num_id(self): def credentials(self): return self._credentials + @credentials.setter + def credentials(self, credentials): + self._credentials = credentials + @property def last_error_status(self): return self._last_error_status_code @@ -78,15 +77,27 @@ def state(self): @property def log_level(self): return self._log_level + + @log_level.setter + def log_level(self, log_level): + self._log_level = log_level @property def meta_data(self): return self._meta_data + @meta_data.setter + def meta_data(self, meta_data): + self._meta_data = meta_data + @property def gateway_config(self): return self._gateway_config + @gateway_config.setter + def gateway_config(self, gateway_config): + self._gateway_config = gateway_config + @property def log_level(self): return self._log_level @@ -94,18 +105,26 @@ def log_level(self): @property def last_heartbeat_time(self): return self._last_heartbeat_time + + @property + def blocked(self): + return self._blocked + + @blocked.setter + def blocked(self, blocked): + self._blocked = blocked # classes to mock googles request & response class DeviceState(): - def __init__(self, updated_time: str = None, binary_data:str = None) -> None: - self._updated_time = updated_time + def __init__(self, update_time: str = None, binary_data:str = None) -> None: + self._update_time = update_time self._binary_data = binary_data @property - def updated_time(self): - return self._updated_time + def update_time(self): + return self._update_time @property def binary_data(self): @@ -113,7 +132,7 @@ def binary_data(self): @staticmethod def from_json(response_json): - return DeviceState(updated_time=get_value(response_json, 'updateTime'), + return DeviceState(update_time=get_value(response_json, 'updateTime'), binary_data=get_value(response_json, 'binaryData')) diff --git a/clearblade/cloud/iot_v1/devices.py b/clearblade/cloud/iot_v1/devices.py index 20d62c1d..b79e8407 100644 --- a/clearblade/cloud/iot_v1/devices.py +++ b/clearblade/cloud/iot_v1/devices.py @@ -30,10 +30,10 @@ def _prepare_for_send_command(self, return params,body def _create_device_body(self, device: Device) : - return {'id':device.name, 'name':device.name, + return {'id':device.id, 'credentials':device.credentials, 'lastErrorStatus':device.last_error_status, 'config':device.config, 'state':device.state, - 'loglevel':device.log_level, 'metadata':device.meta_data, + 'logLevel':device.log_level, 'metadata':device.meta_data, 'gatewayConfig':device.gateway_config} def _create_device_from_response(self, json_response) -> Device : diff --git a/clearblade/cloud/iot_v1/registry.py b/clearblade/cloud/iot_v1/registry.py index b8a869fc..900defbb 100644 --- a/clearblade/cloud/iot_v1/registry.py +++ b/clearblade/cloud/iot_v1/registry.py @@ -21,7 +21,7 @@ def _create_registry_body(self, registry: DeviceRegistry) : if registry.event_notification_configs: registry_json['eventNotificationConfigs']=registry.event_notification_configs if registry.log_level: - registry_json['loglevel']=registry.log_level + registry_json['logLevel']=registry.log_level return registry_json def _prepare_params_for_registry_list(self, request:ListDeviceRegistriesRequest): diff --git a/clearblade/cloud/iot_v1/registry_types.py b/clearblade/cloud/iot_v1/registry_types.py index 979e11d4..1e65a278 100644 --- a/clearblade/cloud/iot_v1/registry_types.py +++ b/clearblade/cloud/iot_v1/registry_types.py @@ -1,4 +1,5 @@ from .utils import get_value +from .resources import HttpState, MqttState, LogLevel class EventNotificationConfig: def __init__(self, pub_sub_topic_name, subfolder_matches=None) -> None: @@ -17,9 +18,9 @@ class DeviceRegistry: def __init__(self, id:str = None, name:str = None, eventNotificationConfigs:list = [], stateNotificationConfig:dict = {'pubsubTopicName': ''}, - mqttConfig:dict = {'mqttEnabledState':'MQTT_ENABLED'}, - httpConfig:dict = {'httpEnabledState':'HTTP_ENABLED'}, - logLevel:str = None, credentials:list = []) -> None: + mqttConfig:dict = {'mqttEnabledState': MqttState.MQTT_ENABLED}, + httpConfig:dict = {'httpEnabledState': HttpState.HTTP_ENABLED}, + logLevel:str = LogLevel.NONE, credentials:list = []) -> None: self._id = id self._name = name self._event_notification_configs = eventNotificationConfigs diff --git a/clearblade/cloud/iot_v1/resources.py b/clearblade/cloud/iot_v1/resources.py index 56ee03e1..0989f754 100644 --- a/clearblade/cloud/iot_v1/resources.py +++ b/clearblade/cloud/iot_v1/resources.py @@ -3,21 +3,21 @@ class MqttState(): r"""Indicates whether an MQTT connection is enabled or disabled. See the field description for details. """ - MQTT_STATE_UNSPECIFIED = 0 - MQTT_ENABLED = 1 - MQTT_DISABLED = 2 + MQTT_STATE_UNSPECIFIED = "MQTT_STATE_UNSPECIFIED" + MQTT_ENABLED = "MQTT_ENABLED" + MQTT_DISABLED = "MQTT_DISABLED" class HttpState(): r"""Indicates whether DeviceService (HTTP) is enabled or disabled for the registry. See the field description for details. """ - HTTP_STATE_UNSPECIFIED = 0 - HTTP_ENABLED = 1 - HTTP_DISABLED = 2 + HTTP_STATE_UNSPECIFIED = "HTTP_STATE_UNSPECIFIED" + HTTP_ENABLED = "HTTP_ENABLED" + HTTP_DISABLED = "HTTP_DISABLED" -class LogLevel(): +class LogLevel: r"""**Beta Feature** The logging verbosity for device activity. Specifies which events @@ -25,18 +25,18 @@ class LogLevel(): only events that terminate in errors will be logged. LogLevel is inclusive; enabling INFO logging will also enable ERROR logging. """ - LOG_LEVEL_UNSPECIFIED = 0 - NONE = 10 - ERROR = 20 - INFO = 30 - DEBUG = 40 + LOG_LEVEL_UNSPECIFIED = "LOG_LEVEL_UNSPECIFIED" + NONE = "NONE" + ERROR = "ERROR" + INFO = "INFO" + DEBUG = "DEBUG" -class GatewayType(): +class GatewayType: r"""Gateway type.""" - GATEWAY_TYPE_UNSPECIFIED = 0 - GATEWAY = 1 - NON_GATEWAY = 2 + GATEWAY_TYPE_UNSPECIFIED = "GATEWAY_TYPE_UNSPECIFIED" + GATEWAY = "GATEWAY" + NON_GATEWAY = "NON_GATEWAY" class GatewayAuthMethod(): @@ -44,16 +44,16 @@ class GatewayAuthMethod(): determines how Cloud IoT Core authorizes/authenticate devices to access the gateway. """ - GATEWAY_AUTH_METHOD_UNSPECIFIED = 0 - ASSOCIATION_ONLY = 1 - DEVICE_AUTH_TOKEN_ONLY = 2 - ASSOCIATION_AND_DEVICE_AUTH_TOKEN = 3 + GATEWAY_AUTH_METHOD_UNSPECIFIED = "GATEWAY_AUTH_METHOD_UNSPECIFIED" + ASSOCIATION_ONLY = "ASSOCIATION_ONLY" + DEVICE_AUTH_TOKEN_ONLY = "DEVICE_AUTH_TOKEN_ONLY" + ASSOCIATION_AND_DEVICE_AUTH_TOKEN = "ASSOCIATION_AND_DEVICE_AUTH_TOKEN" class PublicKeyCertificateFormat(): r"""The supported formats for the public key.""" - UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT = 0 - X509_CERTIFICATE_PEM = 1 + UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT = "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT" + X509_CERTIFICATE_PEM = "X509_CERTIFICATE_PEM" class PublicKeyFormat: diff --git a/samples/clearblade/create_device_async.py b/samples/clearblade/create_device_async.py index 730eac54..3ddc4a82 100644 --- a/samples/clearblade/create_device_async.py +++ b/samples/clearblade/create_device_async.py @@ -12,7 +12,7 @@ async def sample_create_device_async(): "asia-east1", "test-asia-east1") - device = iot_v1.Device(id="Python_SDK", name="Python_SDK") + device = iot_v1.Device(id="Python_SDK") request = iot_v1.CreateDeviceRequest(parent=parent, device=device) response = await async_client.create_device(request) diff --git a/samples/clearblade/create_device_registry_async.py b/samples/clearblade/create_device_registry_async.py index 7c353319..2b08b6f1 100644 --- a/samples/clearblade/create_device_registry_async.py +++ b/samples/clearblade/create_device_registry_async.py @@ -8,10 +8,10 @@ async def sample_create_device_registry(): # Create a client client = iot_v1.DeviceManagerAsyncClient() - registry = iot_v1.DeviceRegistry(id='test-registry', name='test-registry', - mqttConfig={'mqttEnabledState':'MQTT_ENABLED'}, - httpConfig={'httpEnabledState':'HTTP_ENABLED'}, - logLevel='ERROR', + registry = iot_v1.DeviceRegistry(id='rajas-dummy-registry', + mqttConfig={'mqttEnabledState':iot_v1.resources.MqttState.MQTT_ENABLED}, + httpConfig={'httpEnabledState':iot_v1.resources.HttpState.HTTP_ENABLED}, + logLevel=iot_v1.resources.LogLevel.ERROR, eventNotificationConfigs=[{'pubsubTopicName':'projects/ingressdevelopmentenv/topics/deleting'}] ) diff --git a/samples/clearblade/create_device_registry_sync.py b/samples/clearblade/create_device_registry_sync.py index 5f2981d1..d3b361f5 100644 --- a/samples/clearblade/create_device_registry_sync.py +++ b/samples/clearblade/create_device_registry_sync.py @@ -9,10 +9,9 @@ def sample_create_device_registry(): registry = iot_v1.DeviceRegistry( id='test-registry', - name='test-registry', - mqttConfig={'mqttEnabledState':'MQTT_ENABLED'}, - httpConfig={'httpEnabledState':'HTTP_ENABLED'}, - logLevel='ERROR', + mqttConfig={'mqttEnabledState':iot_v1.MqttState.MQTT_ENABLED}, + httpConfig={'httpEnabledState':iot_v1.HttpState.HTTP_ENABLED}, + logLevel=iot_v1.LogLevel.NONE, eventNotificationConfigs=[{'pubsubTopicName':'projects/api-project-320446546234/topics/deleting'}] ) diff --git a/samples/clearblade/create_device_sync.py b/samples/clearblade/create_device_sync.py index f5725e0a..e8fe6587 100644 --- a/samples/clearblade/create_device_sync.py +++ b/samples/clearblade/create_device_sync.py @@ -10,7 +10,11 @@ def sample_create_device(): "us-central1", "test-registry") - device = iot_v1.Device(id="Python_11", name="Python_11") + device = iot_v1.Device( + id="Python_12", + gateway_config={"gatewayType": iot_v1.GatewayType.NON_GATEWAY}, + log_level=iot_v1.LogLevel.ERROR) + request = iot_v1.CreateDeviceRequest(parent=parent, device=device) response = client.create_device(request) diff --git a/samples/clearblade/create_device_sync_es256.py b/samples/clearblade/create_device_sync_es256.py index 9efd4975..ed5ff357 100644 --- a/samples/clearblade/create_device_sync_es256.py +++ b/samples/clearblade/create_device_sync_es256.py @@ -18,11 +18,10 @@ def create_device_in_dev_iot(name, keyFile): device = iot_v1.Device( id="my_test_device", - name=name, credentials=[ { "publicKey": { - "format": "ES256_PEM", + "format": iot_v1.PublicKeyFormat.ES256_PEM, "key": public_key, } }]) diff --git a/samples/clearblade/create_device_sync_rs256.py b/samples/clearblade/create_device_sync_rs256.py index f74fc194..306a29e0 100644 --- a/samples/clearblade/create_device_sync_rs256.py +++ b/samples/clearblade/create_device_sync_rs256.py @@ -10,15 +10,14 @@ def create_device_in_dev_iot(name, keyFile): parent = client.registry_path( "api-project-320446546234", - "asia-east1", - "test-asia-east1") + "us-central1", + "test-registry") with io.open(keyFile) as f: public_key = f.read() device = iot_v1.Device( - id="python_sdk_device_dummy", - name=name, + id=name, credentials=[ { "publicKey": { @@ -32,4 +31,5 @@ def create_device_in_dev_iot(name, keyFile): device_name = "python_sdk_device_dummy" key_path = "../api-client/manager/resources/ec_public.pem" +os.environ["CLEARBLADE_CONFIGURATION"] = "/Users/rajas/Downloads/test-credentials.json" create_device_in_dev_iot(device_name, key_path) diff --git a/samples/clearblade/update_device_async.py b/samples/clearblade/update_device_async.py index f19c1dc1..ba340abc 100644 --- a/samples/clearblade/update_device_async.py +++ b/samples/clearblade/update_device_async.py @@ -12,7 +12,7 @@ async def sample_update_device_async(): "us-central1", "test-registry") - device = iot_v1.Device(id="test-dev-1", blocked=True, log_level='NONE') + device = iot_v1.Device(id="test-dev-1", blocked=True, log_level=iot_v1.LogLevel.ERROR) request = iot_v1.UpdateDeviceRequest( parent=registry_path, diff --git a/samples/clearblade/update_device_sync.py b/samples/clearblade/update_device_sync.py index 2018d3c8..2816a536 100644 --- a/samples/clearblade/update_device_sync.py +++ b/samples/clearblade/update_device_sync.py @@ -11,7 +11,7 @@ def sample_update_device(): "us-central1", "test-registry") - device = iot_v1.Device(id="test-dev-1", blocked=True, log_level='NONE') + device = iot_v1.Device(id="python_11", blocked=True, log_level=iot_v1.LogLevel.ERROR) request = iot_v1.UpdateDeviceRequest( parent=registry_path, @@ -24,5 +24,5 @@ def sample_update_device(): print(response) -os.environ["CLEARBLADE_CONFIGURATION"] = "/Users/DummyUser/Downloads/test-credentials.json" +os.environ["CLEARBLADE_CONFIGURATION"] = "/Users/rajas/Downloads/test-credentials.json" sample_update_device()