import json
import sys
import time
from spotflow_device import DeviceClient

if len(sys.argv) < 2:
    print("Usage: python configure_devices.py <Device ID>")
    sys.exit(1)

device_id = sys.argv[1]

# Connect to the Platform

client = DeviceClient.start(device_id=device_id, provisioning_token="<Your Provisioning Token>", db=f"spotf_{device_id}.db")

# Show all changes in configuration

desired_properties_version = None

while True:
    desired_properties = client.get_desired_properties_if_newer(desired_properties_version)
    if desired_properties is not None:
        print(f"[{client.device_id}] Received Desired Properties of version {desired_properties.version}:")
        print(json.dumps(desired_properties.values))

        desired_properties_version = desired_properties.version

        print(f"[{client.device_id}] Updating Reported Properties")
        client.update_reported_properties(desired_properties.values)
    
    time.sleep(1)
