{'fraction_non_alphanumeric': 0.02931152010906612, 'fraction_numerical': 0.0, 'mean_word_length': 5.168067226890757, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
IoT-DDL: Device Description Language for a Programmable IoT

The variety and scope of available Internet of Things (IoT) devices is constantly increasing, along with the number of manufacturers that offer these things. As these numbers increase, so does the fragmentation of these ecosystems; either through incompatible means of communication and operation, or through the innate dependencies of a device’s ecosystem (things with similar programming interfaces may be tied to different "clouds", rendering them static and unable to form external interactions). We argue that the future of IoT depends on the ability of things to work together, and to be dynamic and reprogrammable to create exciting and opportune applications; but that to achieve this, things must share some level of common ground. To this end, we introduce the Internet of Things Device Description Language (IoT-DDL) to harness these commonalities while minimizing friction and new requirements on existing thing functionality. IoT-DDL, a human- and machine-readable schema, is designed to reflect these shareable capabilities while providing a common structure that things can use to self-discover and share their entities, services, and cloud-based extensions within a smart space. In this paper, we present an overview of the IoT-DDL, along with rationale and examples for its parts. We also introduce a tool to ease the creation of IoT-DDL files for thing vendors, developers, and end users.