multiple evolutions
This commit is contained in:
64
Python/azure_iot_hub_thingspro_api_call.py
Normal file
64
Python/azure_iot_hub_thingspro_api_call.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from azure.iot.hub import IoTHubRegistryManager
|
||||
from azure.iot.hub.protocol.models import QuerySpecification, Module
|
||||
from azure.iot.hub.models import CloudToDeviceMethod, CloudToDeviceMethodResult
|
||||
from dotenv import load_dotenv
|
||||
from isight_device import iSightDevice
|
||||
|
||||
import json
|
||||
import os
|
||||
import pandas as pd
|
||||
|
||||
load_dotenv()
|
||||
|
||||
CONNECTION_STRING = str(os.getenv("CONNECTION_STRING_INOX_PROD"))
|
||||
if CONNECTION_STRING == "":
|
||||
print("Provide a connection string for the Iot Hub before running the script!")
|
||||
exit(13)
|
||||
|
||||
registry_manager = IoTHubRegistryManager.from_connection_string(CONNECTION_STRING)
|
||||
query_spec = QuerySpecification(query="SELECT * FROM devices WHERE IS_DEFINED(tags.site) AND capabilities.iotEdge = true ")
|
||||
|
||||
query_result = registry_manager.query_iot_hub(query_spec)
|
||||
|
||||
devices = []
|
||||
for item in query_result.items:
|
||||
devices.append(iSightDevice(str(item.device_id), str(item.tags['site']), int(item.tags['number']), str(item.tags['version'])))
|
||||
|
||||
devices.sort(key = lambda d: (d.site, d.number))
|
||||
|
||||
rows = []
|
||||
|
||||
for device in devices:
|
||||
print(device, end="\t")
|
||||
current_device_modules = registry_manager.get_modules(device.deviceId)
|
||||
for module in current_device_modules:
|
||||
if (module.module_id == "thingspro-agent"):
|
||||
device.setModule(module)
|
||||
method_name = "thingspro-api-v1"
|
||||
payload = {
|
||||
"method": "GET",
|
||||
"path": "/device/general"
|
||||
}
|
||||
module_id = "thingspro-agent"
|
||||
try:
|
||||
direct_method = CloudToDeviceMethod(method_name = method_name, payload = payload)
|
||||
response = registry_manager.invoke_device_module_method(device_id = device.deviceId, module_id = module_id, direct_method_request = direct_method)
|
||||
#print(response)
|
||||
#print(json.dumps(response.payload, indent = 2))
|
||||
hostname = response.payload['data']['hostName']
|
||||
serial = response.payload['data']['serialNumber']
|
||||
version = response.payload['data']['firmwareVersion']
|
||||
description = response.payload['data']['description']
|
||||
print(hostname + " " + serial + " " + version + " " + description)
|
||||
rows.append({
|
||||
"hostname": hostname,
|
||||
"site": device.getSite(),
|
||||
"number": device.getNumber(),
|
||||
"cloud_version": device.getVersion(),
|
||||
"device_version": version
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
|
||||
df = pd.DataFrame(rows)
|
||||
df.to_excel("thingspro-version.xlsx", index=False)
|
||||
Reference in New Issue
Block a user