{'fraction_non_alphanumeric': 0.021722265321955005, 'fraction_numerical': 0.0031031807602792862, 'mean_word_length': 5.515151515151516, '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}}
Building virtual sensors and actuators over logical neighborhoods

Recent trends in wireless sensor network (WSN) applications exhibit increasing degrees of decentralization. This is particularly true of scenarios where the data reported by sensors is used to control actuators affecting the environment. Implementing this control loop in a decentralized fashion is much more complex than in mainstream, single-sink, sense-only applications.In this paper we describe virtual nodes, a programming abstraction simplifying the development of decentralized WSN applications. The data acquired by a set of sensors can be collected, processed according to an application-provided aggregation function, and then perceived as the reading of a single virtual sensor. Dually, a virtual actuator provides a single entry point for distributing commands to a set of real actuator nodes. The set of physical nodes to be abstracted into a virtual one is specified using logical neighborhoods [11, 12]. Using virtual nodes, the programmer focuses on the application logic, rather than on low-level implementation details. We present the programming language constructs supporting virtual nodes, exemplify their use, and show that they can be implemented by making efficient use of communication resources.